diff --git a/.htaccess b/.htaccess
index e2bbc23..fffb651 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,18 +1,11 @@
-DirectoryIndex index.php index.html
-Options -Indexes
-Options -MultiViews
-
+# BEGIN WordPress
+
RewriteEngine On
-
-# 0) Serve existing files/directories as-is
-RewriteCond %{REQUEST_FILENAME} -f [OR]
-RewriteCond %{REQUEST_FILENAME} -d
-RewriteRule ^ - [L]
-
-# 1) Internal map: /page or /page/ -> /page.php (if such PHP file exists)
-RewriteCond %{REQUEST_FILENAME}.php -f
-RewriteRule ^(.+?)/?$ $1.php [L]
-
-# 2) Optional: strip trailing slash for non-directories (keeps .php links working)
+RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+RewriteBase /
+RewriteRule ^index\.php$ - [L]
+RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
-RewriteRule ^(.+)/$ $1 [R=301,L]
+RewriteRule . /index.php [L]
+
+# END WordPress
diff --git a/admin_credentials.txt b/admin_credentials.txt
new file mode 100644
index 0000000..f33524b
--- /dev/null
+++ b/admin_credentials.txt
@@ -0,0 +1,4 @@
+WordPress Admin Credentials:
+URL: http://localhost/wp-admin
+Username: admin
+Password: Ln3WyHUT8AsKEQ1E
diff --git a/assets/images/pexels/pexels-12289987.jpg b/assets/images/pexels/pexels-12289987.jpg
new file mode 100644
index 0000000..fe8b648
Binary files /dev/null and b/assets/images/pexels/pexels-12289987.jpg differ
diff --git a/assets/images/pexels/pexels-33986791.jpg b/assets/images/pexels/pexels-33986791.jpg
new file mode 100644
index 0000000..62caa15
Binary files /dev/null and b/assets/images/pexels/pexels-33986791.jpg differ
diff --git a/assets/images/pexels/pexels-7332390.jpg b/assets/images/pexels/pexels-7332390.jpg
new file mode 100644
index 0000000..061a6ae
Binary files /dev/null and b/assets/images/pexels/pexels-7332390.jpg differ
diff --git a/assets/images/pexels/pexels-7867913.jpg b/assets/images/pexels/pexels-7867913.jpg
new file mode 100644
index 0000000..3718210
Binary files /dev/null and b/assets/images/pexels/pexels-7867913.jpg differ
diff --git a/assets/pasted-20260123-164159-ca1b506a.jpg b/assets/pasted-20260123-164159-ca1b506a.jpg
new file mode 100644
index 0000000..c592309
Binary files /dev/null and b/assets/pasted-20260123-164159-ca1b506a.jpg differ
diff --git a/assets/vm-shot-2026-01-23T16-41-36-431Z.jpg b/assets/vm-shot-2026-01-23T16-41-36-431Z.jpg
new file mode 100644
index 0000000..c592309
Binary files /dev/null and b/assets/vm-shot-2026-01-23T16-41-36-431Z.jpg differ
diff --git a/wp-content/mu-plugins/portfolio-cpt.php b/wp-content/mu-plugins/portfolio-cpt.php
new file mode 100644
index 0000000..22d2385
--- /dev/null
+++ b/wp-content/mu-plugins/portfolio-cpt.php
@@ -0,0 +1,31 @@
+ [
+ 'name' => 'Projects',
+ 'singular_name' => 'Project',
+ ],
+ 'public' => true,
+ 'has_archive' => true,
+ 'rewrite' => ['slug' => 'projects'],
+ 'supports' => ['title', 'editor', 'thumbnail', 'excerpt'],
+ 'show_in_rest' => true,
+ 'menu_icon' => 'dashicons-portfolio',
+ ]);
+
+ register_taxonomy('project_category', 'project', [
+ 'labels' => [
+ 'name' => 'Project Categories',
+ 'singular_name' => 'Project Category',
+ ],
+ 'hierarchical' => true,
+ 'show_in_rest' => true,
+ 'rewrite' => ['slug' => 'project-category'],
+ ]);
+});
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/class-pfg-admin.php b/wp-content/plugins/portfolio-filter-gallery/admin/class-pfg-admin.php
new file mode 100644
index 0000000..d56b2b5
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/class-pfg-admin.php
@@ -0,0 +1,913 @@
+plugin_name = $plugin_name;
+ $this->version = $version;
+ }
+
+ /**
+ * Initialize hooks for admin functionality.
+ */
+ public function init() {
+ // Register meta boxes
+ add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
+
+ // Register save hook
+ add_action( 'save_post', array( $this, 'save_post' ), 10, 2 );
+
+ // Enqueue scripts and styles
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_styles' ) );
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
+
+ // Duplicate gallery feature (Premium)
+ add_filter( 'post_row_actions', array( $this, 'add_duplicate_action' ), 10, 2 );
+ add_action( 'admin_action_pfg_duplicate_gallery', array( $this, 'duplicate_gallery' ) );
+ }
+
+ /**
+ * Register the stylesheets for the admin area.
+ *
+ * @param string $hook Current admin page hook.
+ */
+ public function enqueue_styles( $hook ) {
+ global $post_type;
+
+ // Only load on our plugin pages
+ if ( $post_type !== 'awl_filter_gallery' && strpos( $hook, 'pfg' ) === false ) {
+ return;
+ }
+
+ // WordPress color picker
+ wp_enqueue_style( 'wp-color-picker' );
+
+ // Main admin styles
+ wp_enqueue_style(
+ 'pfg-admin',
+ PFG_PLUGIN_URL . 'admin/css/pfg-admin.css',
+ array(),
+ $this->version
+ );
+ }
+
+ /**
+ * Register the JavaScript for the admin area.
+ *
+ * @param string $hook Current admin page hook.
+ */
+ public function enqueue_scripts( $hook ) {
+ global $post_type, $post;
+
+ // Only load on our plugin pages
+ if ( $post_type !== 'awl_filter_gallery' && strpos( $hook, 'pfg' ) === false ) {
+ return;
+ }
+
+ // WordPress dependencies
+ wp_enqueue_media();
+ wp_enqueue_script( 'jquery-ui-sortable' );
+ wp_enqueue_script( 'wp-color-picker' );
+
+ // Main admin script
+ wp_enqueue_script(
+ 'pfg-admin',
+ PFG_PLUGIN_URL . 'admin/js/pfg-admin.js',
+ array( 'jquery', 'jquery-ui-sortable', 'wp-color-picker' ),
+ $this->version,
+ true
+ );
+
+ // Localize script
+ wp_localize_script(
+ 'pfg-admin',
+ 'pfgAdmin',
+ array(
+ 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
+ 'nonce' => PFG_Security::create_nonce( 'admin_action' ),
+ 'galleryId' => $post ? $post->ID : 0,
+ 'i18n' => array(
+ 'confirmDelete' => __( 'Are you sure you want to delete this item?', 'portfolio-filter-gallery' ),
+ 'confirmDeleteAll' => __( 'Are you sure you want to delete all selected items?', 'portfolio-filter-gallery' ),
+ 'selectImages' => __( 'Select Images', 'portfolio-filter-gallery' ),
+ 'useSelected' => __( 'Use Selected', 'portfolio-filter-gallery' ),
+ 'saving' => __( 'Saving...', 'portfolio-filter-gallery' ),
+ 'saved' => __( 'Saved!', 'portfolio-filter-gallery' ),
+ 'error' => __( 'An error occurred. Please try again.', 'portfolio-filter-gallery' ),
+ ),
+ )
+ );
+ }
+
+ /**
+ * Register the custom post type for galleries.
+ */
+ public function register_post_type() {
+ $labels = array(
+ 'name' => _x( 'Portfolio Galleries', 'Post Type General Name', 'portfolio-filter-gallery' ),
+ 'singular_name' => _x( 'Portfolio Gallery', 'Post Type Singular Name', 'portfolio-filter-gallery' ),
+ 'menu_name' => __( 'Portfolio Gallery', 'portfolio-filter-gallery' ),
+ 'name_admin_bar' => __( 'Portfolio Gallery', 'portfolio-filter-gallery' ),
+ 'archives' => __( 'Gallery Archives', 'portfolio-filter-gallery' ),
+ 'attributes' => __( 'Gallery Attributes', 'portfolio-filter-gallery' ),
+ 'all_items' => __( 'All Galleries', 'portfolio-filter-gallery' ),
+ 'add_new_item' => __( 'Add New Gallery', 'portfolio-filter-gallery' ),
+ 'add_new' => __( 'Add New', 'portfolio-filter-gallery' ),
+ 'new_item' => __( 'New Gallery', 'portfolio-filter-gallery' ),
+ 'edit_item' => __( 'Edit Gallery', 'portfolio-filter-gallery' ),
+ 'update_item' => __( 'Update Gallery', 'portfolio-filter-gallery' ),
+ 'view_item' => __( 'View Gallery', 'portfolio-filter-gallery' ),
+ 'view_items' => __( 'View Galleries', 'portfolio-filter-gallery' ),
+ 'search_items' => __( 'Search Gallery', 'portfolio-filter-gallery' ),
+ 'not_found' => __( 'Not found', 'portfolio-filter-gallery' ),
+ 'not_found_in_trash' => __( 'Not found in Trash', 'portfolio-filter-gallery' ),
+ );
+
+ $args = array(
+ 'label' => __( 'Portfolio Gallery', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Create filterable portfolio galleries', 'portfolio-filter-gallery' ),
+ 'labels' => $labels,
+ 'supports' => array( 'title' ),
+ 'hierarchical' => false,
+ 'public' => false,
+ 'show_ui' => true,
+ 'show_in_menu' => true,
+ 'menu_position' => 25,
+ 'menu_icon' => 'dashicons-format-gallery',
+ 'show_in_admin_bar' => true,
+ 'show_in_nav_menus' => false,
+ 'can_export' => true,
+ 'has_archive' => false,
+ 'exclude_from_search' => true,
+ 'publicly_queryable' => false,
+ 'capability_type' => 'post',
+ 'show_in_rest' => true, // Enable Gutenberg support
+ );
+
+ register_post_type( 'awl_filter_gallery', $args );
+ }
+
+ /**
+ * Add meta boxes.
+ */
+ public function add_meta_boxes() {
+ add_meta_box(
+ 'pfg-gallery-images',
+ __( 'Gallery Images', 'portfolio-filter-gallery' ),
+ array( $this, 'render_images_meta_box' ),
+ 'awl_filter_gallery',
+ 'normal',
+ 'high'
+ );
+
+ add_meta_box(
+ 'pfg-gallery-settings',
+ __( 'Gallery Settings', 'portfolio-filter-gallery' ),
+ array( $this, 'render_settings_meta_box' ),
+ 'awl_filter_gallery',
+ 'normal',
+ 'high'
+ );
+
+ add_meta_box(
+ 'pfg-shortcode',
+ __( 'Shortcode', 'portfolio-filter-gallery' ),
+ array( $this, 'render_shortcode_meta_box' ),
+ 'awl_filter_gallery',
+ 'side',
+ 'high'
+ );
+ }
+
+ /**
+ * Render images meta box.
+ *
+ * @param WP_Post $post Current post object.
+ */
+ public function render_images_meta_box( $post ) {
+ $gallery = new PFG_Gallery( $post->ID );
+ $images = $gallery->get_images();
+ $filters = $this->get_filters();
+
+ // Output nonce field for save verification
+ wp_nonce_field( 'pfg_save_gallery', '_pfg_nonce' );
+
+ include PFG_PLUGIN_PATH . 'admin/views/meta-box-images.php';
+ }
+
+ /**
+ * Render settings meta box.
+ *
+ * @param WP_Post $post Current post object.
+ */
+ public function render_settings_meta_box( $post ) {
+ $gallery = new PFG_Gallery( $post->ID );
+ $settings = $gallery->get_settings();
+ $defaults = $gallery->get_defaults();
+
+ include PFG_PLUGIN_PATH . 'admin/views/meta-box-settings.php';
+ }
+
+ /**
+ * Render shortcode meta box.
+ *
+ * @param WP_Post $post Current post object.
+ */
+ public function render_shortcode_meta_box( $post ) {
+ ?>
+
+
+
+ [PFG id="ID ); ?>"]
+
+
+
+
+
+
+
+ [portfolio_gallery id="ID ); ?>"]
+
+
+
+
+
+
+ 'layout_type',
+ 'columns' => 'columns_lg',
+ 'gap' => 'gap',
+ 'show_filters' => 'filters_enabled',
+ 'show_all_button' => 'show_all_button',
+ 'all_button_text' => 'all_button_text',
+ 'filter_position' => 'filters_position',
+ 'filters_style' => 'filters_style',
+ 'show_search' => 'search_enabled',
+ 'search_placeholder'=> 'search_placeholder',
+ 'multi_level_filters' => 'multi_level_filters',
+ 'filter_logic' => 'filter_logic',
+ 'show_logic_toggle' => 'show_logic_toggle',
+ 'show_filter_colors' => 'show_filter_colors',
+ 'enable_lightbox' => 'lightbox',
+ 'hover_effect' => 'hover_effect',
+ 'show_title_overlay'=> 'show_title',
+ 'border_radius' => 'border_radius',
+ 'overlay_color' => 'overlay_color',
+ 'overlay_opacity' => 'overlay_opacity',
+ 'primary_color' => 'primary_color',
+ 'filter_active_color' => 'filter_active_color',
+ 'lazy_loading' => 'lazy_loading',
+ 'title_position' => 'title_position',
+ 'show_categories' => 'show_categories',
+ 'caption_bg_color' => 'caption_bg_color',
+ 'caption_text_color'=> 'caption_text_color',
+ 'template' => 'template',
+ // Pagination settings (Premium)
+ 'pagination_enabled'=> 'pagination_enabled',
+ 'pagination_type' => 'pagination_type',
+ 'items_per_page' => 'items_per_page',
+ // URL Deep Linking
+ 'deep_linking' => 'deep_linking',
+ 'url_param_name' => 'url_param_name',
+ // Shuffle & Default Filter
+ 'shuffle_images' => 'shuffle_images',
+ 'default_filter' => 'default_filter',
+ // Sort, Direction, URL Target
+ 'sort_by_title' => 'sort_by_title',
+ 'direction' => 'direction',
+ 'url_target' => 'url_target',
+ // Filter Count
+ 'show_filter_count' => 'show_filter_count',
+ 'filter_count_style'=> 'filter_count_style',
+ // Justified layout
+ 'justified_row_height' => 'justified_row_height',
+ 'justified_last_row' => 'justified_last_row',
+ // Packed layout
+ 'packed_min_size' => 'packed_min_size',
+ // Lightbox caption settings
+ 'lightbox_title' => 'lightbox_title',
+ 'lightbox_description' => 'lightbox_description',
+ // Image size
+ 'image_size' => 'image_size',
+ // WooCommerce settings
+ 'source' => 'source',
+ 'woo_categories' => 'woo_categories',
+ 'woo_orderby' => 'woo_orderby',
+ 'woo_order' => 'woo_order',
+ 'woo_limit' => 'woo_limit',
+ 'woo_show_price' => 'woo_show_price',
+ 'woo_show_sale_badge' => 'woo_show_sale_badge',
+ 'woo_show_title' => 'woo_show_title',
+ 'woo_link_target' => 'woo_link_target',
+ // Watermark settings (Premium)
+ 'watermark_enabled' => 'watermark_enabled',
+ 'watermark_type' => 'watermark_type',
+ 'watermark_text' => 'watermark_text',
+ 'watermark_image' => 'watermark_image',
+ 'watermark_position' => 'watermark_position',
+ 'watermark_opacity' => 'watermark_opacity',
+ 'watermark_size' => 'watermark_size',
+ 'watermark_image_size' => 'watermark_image_size',
+ );
+
+ // Set each setting
+ foreach ( $field_map as $form_key => $schema_key ) {
+ if ( isset( $settings[ $form_key ] ) ) {
+ $value = $settings[ $form_key ];
+ // Handle lightbox specially - convert boolean to type
+ if ( $form_key === 'enable_lightbox' ) {
+ $value = $value ? 'built-in' : 'none';
+ }
+ $gallery->set_setting( $schema_key, $value );
+ } else {
+ // Handle unchecked checkboxes for boolean fields
+ $schema = PFG_Gallery::get_schema();
+ if ( isset( $schema[ $schema_key ] ) && $schema[ $schema_key ]['type'] === 'bool' ) {
+ $gallery->set_setting( $schema_key, false );
+ }
+ // Handle lightbox specifically when checkbox is unchecked
+ if ( $form_key === 'enable_lightbox' ) {
+ $gallery->set_setting( 'lightbox', 'none' );
+ }
+ }
+ }
+
+ // Set responsive column values (use single column value for all breakpoints for now)
+ if ( isset( $settings['columns'] ) ) {
+ $cols = absint( $settings['columns'] );
+ $gallery->set_setting( 'columns_xl', $cols );
+ $gallery->set_setting( 'columns_lg', $cols );
+ $gallery->set_setting( 'columns_md', max( 2, floor( $cols / 2 ) ) );
+ $gallery->set_setting( 'columns_sm', 1 );
+ }
+
+ $gallery->save();
+
+ // Save images
+ $this->save_images( $post_id );
+
+ // Also save in legacy format for backward compatibility
+ $this->save_legacy_format( $post_id, $gallery );
+ }
+
+ /**
+ * Save gallery images.
+ *
+ * @param int $post_id Post ID.
+ */
+ protected function save_images( $post_id ) {
+ // Check if source is WooCommerce - if so, don't modify media library images
+ $settings = isset( $_POST['pfg_settings'] ) ? wp_unslash( $_POST['pfg_settings'] ) : array();
+ $source = isset( $settings['source'] ) ? sanitize_key( $settings['source'] ) : 'media';
+
+ // If source is WooCommerce, preserve existing media library images
+ if ( $source === 'woocommerce' ) {
+ return; // Don't modify images when using WooCommerce source
+ }
+
+ $images = array();
+
+ // Check for JSON-serialized data first (bypasses max_input_vars limit)
+ if ( isset( $_POST['pfg_images_json'] ) && ! empty( $_POST['pfg_images_json'] ) ) {
+ $json_data = wp_unslash( $_POST['pfg_images_json'] );
+ $raw_images = json_decode( $json_data, true );
+
+ if ( is_array( $raw_images ) && ! empty( $raw_images ) ) {
+ foreach ( $raw_images as $image ) {
+ if ( empty( $image['id'] ) ) {
+ continue;
+ }
+
+ $filters = isset( $image['filters'] ) ? $image['filters'] : '';
+ // Use sanitize_text_field instead of sanitize_key to preserve Unicode filter slugs (Japanese, Chinese, etc.)
+ if ( is_string( $filters ) ) {
+ $filters = array_filter( array_map( 'sanitize_text_field', explode( ',', $filters ) ) );
+ } elseif ( is_array( $filters ) ) {
+ $filters = array_filter( array_map( 'sanitize_text_field', $filters ) );
+ } else {
+ $filters = array();
+ }
+
+ $images[] = array(
+ 'id' => absint( $image['id'] ),
+ 'title' => isset( $image['title'] ) ? sanitize_text_field( $image['title'] ) : '',
+ 'description' => isset( $image['description'] ) ? sanitize_textarea_field( $image['description'] ) : '',
+ 'link' => isset( $image['link'] ) ? esc_url_raw( $image['link'] ) : '',
+ 'type' => isset( $image['type'] ) ? sanitize_key( $image['type'] ) : 'image',
+ 'filters' => $filters,
+ 'product_id' => isset( $image['product_id'] ) ? absint( $image['product_id'] ) : 0,
+ 'product_name' => isset( $image['product_name'] ) ? sanitize_text_field( $image['product_name'] ) : '',
+ 'original_id' => isset( $image['original_id'] ) ? absint( $image['original_id'] ) : absint( $image['id'] ),
+ );
+ }
+
+ update_post_meta( $post_id, '_pfg_images', $images );
+ return;
+ }
+ }
+
+ // Fallback: If no JSON data, check for individual fields (backwards compatibility)
+ // If pfg_images is not set at all, check if we should clear images
+ if ( ! isset( $_POST['pfg_images'] ) ) {
+ // Only clear if this is a gallery post being saved with our nonce
+ if ( isset( $_POST['_pfg_nonce'] ) ) {
+ update_post_meta( $post_id, '_pfg_images', array() );
+ // Also clear legacy format to prevent fallback
+ $legacy_key = 'awl_filter_gallery' . $post_id;
+ $legacy = get_post_meta( $post_id, $legacy_key, true );
+ if ( is_array( $legacy ) ) {
+ $legacy['image-ids'] = array();
+ $legacy['image_title'] = array();
+ $legacy['image_desc'] = array();
+ $legacy['image-link'] = array();
+ $legacy['slide-type'] = array();
+ $legacy['filters'] = array();
+ $legacy['filter-image'] = array();
+ update_post_meta( $post_id, $legacy_key, $legacy );
+ }
+ }
+ return;
+ }
+
+ $raw_images = wp_unslash( $_POST['pfg_images'] );
+
+ if ( is_array( $raw_images ) ) {
+ foreach ( $raw_images as $image ) {
+ if ( empty( $image['id'] ) ) {
+ continue;
+ }
+
+ $images[] = array(
+ 'id' => absint( $image['id'] ),
+ 'title' => isset( $image['title'] ) ? sanitize_text_field( $image['title'] ) : '',
+ 'description' => isset( $image['description'] ) ? sanitize_textarea_field( $image['description'] ) : '',
+ 'link' => isset( $image['link'] ) ? esc_url_raw( $image['link'] ) : '',
+ 'type' => isset( $image['type'] ) ? sanitize_key( $image['type'] ) : 'image',
+ 'filters' => isset( $image['filters'] ) ? array_filter( array_map( 'sanitize_text_field', explode( ',', $image['filters'] ) ) ) : array(),
+ 'product_id' => isset( $image['product_id'] ) ? absint( $image['product_id'] ) : 0,
+ 'product_name' => isset( $image['product_name'] ) ? sanitize_text_field( $image['product_name'] ) : '',
+ 'original_id' => isset( $image['original_id'] ) ? absint( $image['original_id'] ) : absint( $image['id'] ),
+ );
+ }
+ }
+
+ update_post_meta( $post_id, '_pfg_images', $images );
+ }
+
+ /**
+ * Save in legacy format for backward compatibility.
+ *
+ * @param int $post_id Post ID.
+ * @param PFG_Gallery $gallery Gallery object.
+ */
+ protected function save_legacy_format( $post_id, $gallery ) {
+ $settings = $gallery->get_settings();
+ $images = $gallery->get_images();
+
+ // Map column values to legacy Bootstrap classes
+ $col_lg_map = array( 1 => 'col-lg-12', 2 => 'col-lg-6', 3 => 'col-lg-4', 4 => 'col-lg-3', 5 => 'col-lg-2', 6 => 'col-lg-2' );
+ $col_md_map = array( 1 => 'col-sm-12', 2 => 'col-sm-6', 3 => 'col-sm-4', 4 => 'col-sm-3', 5 => 'col-sm-2', 6 => 'col-sm-2' );
+ $col_sm_map = array( 1 => 'col-xs-12', 2 => 'col-xs-6', 3 => 'col-xs-4', 4 => 'col-xs-3', 5 => 'col-xs-2', 6 => 'col-xs-2' );
+
+ // Map lightbox values
+ $lightbox_map = array( 'none' => 0, 'built-in' => 4, 'bootstrap' => 5 );
+ $lightbox_val = isset( $lightbox_map[ $settings['lightbox'] ] ) ? $lightbox_map[ $settings['lightbox'] ] : 4;
+
+ // Transform to legacy format
+ $legacy = array(
+ 'image-ids' => array(),
+ 'image_title' => array(),
+ 'image_desc' => array(),
+ 'image-link' => array(),
+ 'slide-type' => array(),
+ 'filters' => array(),
+ 'filter-image' => array(),
+ 'gal_size' => 'medium',
+ 'col_large_desktops' => isset( $col_lg_map[ $settings['columns_xl'] ] ) ? $col_lg_map[ $settings['columns_xl'] ] : 'col-lg-3',
+ 'col_desktops' => isset( $col_lg_map[ $settings['columns_lg'] ] ) ? $col_lg_map[ $settings['columns_lg'] ] : 'col-lg-3',
+ 'col_tablets' => isset( $col_md_map[ $settings['columns_md'] ] ) ? $col_md_map[ $settings['columns_md'] ] : 'col-sm-4',
+ 'col_phones' => isset( $col_sm_map[ $settings['columns_sm'] ] ) ? $col_sm_map[ $settings['columns_sm'] ] : 'col-xs-6',
+ 'no_spacing' => $settings['gap'] == 0 ? 1 : 0,
+ 'gallery_direction' => $settings['direction'],
+ 'title_thumb' => $settings['show_title'] ? 'show' : 'hide',
+ 'image_numbering' => $settings['show_numbering'] ? 1 : 0,
+ 'gray_scale' => $settings['grayscale'] ? 1 : 0,
+ 'image_hover_effect_four' => $settings['hover_effect'] !== 'none' ? 'hvr-box-shadow-outset' : 'none',
+ 'thumb_border' => $settings['border_width'] > 0 ? 'yes' : 'no',
+ 'hide_filters' => $settings['filters_enabled'] ? 0 : 1,
+ 'filter_position' => $settings['filters_position'],
+ 'all_txt' => $settings['all_button_text'],
+ 'sort_filter_order' => $settings['sort_filters'] ? 1 : 0,
+ 'filter_bg' => $settings['filter_bg_color'],
+ 'filter_title_color' => $settings['filter_text_color'],
+ 'light-box' => $lightbox_val,
+ 'url_target' => $settings['url_target'],
+ 'search_box' => $settings['search_enabled'] ? 1 : 0,
+ 'search_txt' => $settings['search_placeholder'],
+ 'sort_by_title' => $settings['sort_by_title'] ? 'asc' : 'no',
+ 'custom-css' => $settings['custom_css'],
+ 'bootstrap_disable' => 'no',
+ 'show_image_count' => $settings['show_image_count'] ? 1 : 0,
+ );
+
+ // Add images to legacy format
+ foreach ( $images as $image ) {
+ $image_id = $image['id'];
+
+ $legacy['image-ids'][] = $image_id;
+ $legacy['image_title'][] = $image['title'];
+ $legacy['image_desc'][] = isset( $image['description'] ) ? $image['description'] : '';
+ $legacy['image-link'][] = isset( $image['link'] ) ? $image['link'] : '';
+ $legacy['slide-type'][] = isset( $image['type'] ) ? $image['type'] : 'image';
+
+ // Add filters for this image
+ if ( ! empty( $image['filters'] ) ) {
+ $legacy['filters'][ $image_id ] = $image['filters'];
+
+ // Build the filter-image reverse mapping
+ foreach ( $image['filters'] as $filter_id ) {
+ if ( ! isset( $legacy['filter-image'][ $filter_id ] ) ) {
+ $legacy['filter-image'][ $filter_id ] = array();
+ }
+ $legacy['filter-image'][ $filter_id ][] = $image_id;
+ }
+ }
+ }
+
+ $legacy_key = 'awl_filter_gallery' . $post_id;
+ update_post_meta( $post_id, $legacy_key, $legacy );
+ }
+
+ /**
+ * Get all filters.
+ *
+ * @return array
+ */
+ public function get_filters() {
+ // Try new format first
+ $filters = get_option( 'pfg_filters', array() );
+
+ if ( ! empty( $filters ) ) {
+ return $filters;
+ }
+
+ // Fall back to legacy format
+ $legacy = get_option( 'awl_portfolio_filter_gallery_categories', array() );
+ $result = array();
+
+ foreach ( $legacy as $id => $name ) {
+ // Handle non-Latin characters in slug generation
+ $slug = sanitize_title( $name );
+ // If empty OR URL-encoded (contains %xx hex), use Unicode-aware slug
+ if ( empty( $slug ) || preg_match( '/%[0-9a-f]{2}/i', $slug ) ) {
+ // Keep Unicode letters and numbers, use mb_strtolower for proper UTF-8 handling
+ $slug = mb_strtolower( preg_replace( '/[^\p{L}\p{N}]+/ui', '-', $name ), 'UTF-8' );
+ $slug = trim( $slug, '-' );
+ if ( empty( $slug ) ) {
+ $slug = 'filter-' . substr( md5( $name ), 0, 8 );
+ }
+ }
+
+ $result[] = array(
+ 'id' => sanitize_key( $id ) ?: 'filter' . substr( md5( $name ), 0, 8 ),
+ 'name' => sanitize_text_field( $name ),
+ 'slug' => $slug,
+ );
+ }
+
+ return $result;
+ }
+
+ /**
+ * Add admin menu pages.
+ */
+ public function add_menu_pages() {
+ add_submenu_page(
+ 'edit.php?post_type=awl_filter_gallery',
+ __( 'Filters', 'portfolio-filter-gallery' ),
+ __( 'Filters', 'portfolio-filter-gallery' ),
+ 'edit_posts',
+ 'pfg-filters',
+ array( $this, 'render_filters_page' )
+ );
+
+ add_submenu_page(
+ 'edit.php?post_type=awl_filter_gallery',
+ __( 'Settings', 'portfolio-filter-gallery' ),
+ __( 'Settings', 'portfolio-filter-gallery' ),
+ 'manage_options',
+ 'pfg-settings',
+ array( $this, 'render_settings_page' )
+ );
+
+ add_submenu_page(
+ 'edit.php?post_type=awl_filter_gallery',
+ __( 'Docs', 'portfolio-filter-gallery' ),
+ __( 'Docs', 'portfolio-filter-gallery' ),
+ 'edit_posts',
+ 'pfg-docs',
+ array( $this, 'render_docs_page' )
+ );
+
+ // Upgrade to Pro - only show if not premium
+ if ( ! defined( 'PFG_PREMIUM' ) || ! PFG_PREMIUM ) {
+ add_submenu_page(
+ 'edit.php?post_type=awl_filter_gallery',
+ __( 'Upgrade to Pro', 'portfolio-filter-gallery' ),
+ '★ ' . __( 'Upgrade to Pro', 'portfolio-filter-gallery' ) . ' ',
+ 'manage_options',
+ 'https://awplife.com/wordpress-plugins/portfolio-filter-gallery-wordpress-plugin/'
+ );
+ }
+ }
+
+ /**
+ * Render filters management page.
+ */
+ public function render_filters_page() {
+ $filters = $this->get_filters();
+ include PFG_PLUGIN_PATH . 'admin/views/page-filters.php';
+ }
+
+ /**
+ * Render global settings page.
+ */
+ public function render_settings_page() {
+ include PFG_PLUGIN_PATH . 'admin/views/page-settings.php';
+ }
+
+ /**
+ * Render documentation page.
+ */
+ public function render_docs_page() {
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $value ) {
+ $new_columns[ $key ] = $value;
+ if ( $key === 'title' ) {
+ $new_columns['shortcode'] = __( 'Shortcode', 'portfolio-filter-gallery' );
+ $new_columns['images'] = __( 'Images', 'portfolio-filter-gallery' );
+ }
+ }
+
+ return $new_columns;
+ }
+
+ /**
+ * Render custom column content.
+ *
+ * @param string $column Column name.
+ * @param int $post_id Post ID.
+ */
+ public function render_column_content( $column, $post_id ) {
+ switch ( $column ) {
+ case 'shortcode':
+ echo '[PFG id="' . esc_attr( $post_id ) . '"]';
+ break;
+
+ case 'images':
+ $gallery = new PFG_Gallery( $post_id );
+ $images = $gallery->get_images();
+ echo '' . count( $images ) . ' ';
+ break;
+ }
+ }
+
+ /**
+ * Add duplicate action link to gallery row actions.
+ *
+ * @param array $actions Existing row actions.
+ * @param WP_Post $post The post object.
+ * @return array Modified row actions.
+ */
+ public function add_duplicate_action( $actions, $post ) {
+ if ( $post->post_type !== 'awl_filter_gallery' ) {
+ return $actions;
+ }
+
+ if ( ! current_user_can( 'edit_posts' ) ) {
+ return $actions;
+ }
+
+ $duplicate_url = wp_nonce_url(
+ admin_url( 'admin.php?action=pfg_duplicate_gallery&gallery_id=' . $post->ID ),
+ 'pfg_duplicate_gallery_' . $post->ID
+ );
+
+ $actions['duplicate'] = sprintf(
+ ' %s ',
+ esc_url( $duplicate_url ),
+ esc_attr__( 'Duplicate this gallery', 'portfolio-filter-gallery' ),
+ esc_html__( 'Duplicate', 'portfolio-filter-gallery' )
+ );
+
+ return $actions;
+ }
+
+ /**
+ * Handle gallery duplication.
+ */
+ public function duplicate_gallery() {
+ // Verify request
+ if ( ! isset( $_GET['gallery_id'] ) || ! isset( $_GET['_wpnonce'] ) ) {
+ wp_die( esc_html__( 'Invalid request.', 'portfolio-filter-gallery' ) );
+ }
+
+ $gallery_id = absint( $_GET['gallery_id'] );
+
+ // Verify nonce
+ if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'pfg_duplicate_gallery_' . $gallery_id ) ) {
+ wp_die( esc_html__( 'Security check failed.', 'portfolio-filter-gallery' ) );
+ }
+
+ // Check permissions
+ if ( ! current_user_can( 'edit_posts' ) ) {
+ wp_die( esc_html__( 'You do not have permission to duplicate galleries.', 'portfolio-filter-gallery' ) );
+ }
+
+ // Get original gallery
+ $original = get_post( $gallery_id );
+ if ( ! $original || $original->post_type !== 'awl_filter_gallery' ) {
+ wp_die( esc_html__( 'Gallery not found.', 'portfolio-filter-gallery' ) );
+ }
+
+ // Create duplicate post
+ $new_gallery = array(
+ 'post_title' => sprintf(
+ /* translators: %s: Original gallery title */
+ __( '%s (Copy)', 'portfolio-filter-gallery' ),
+ $original->post_title
+ ),
+ 'post_status' => 'draft',
+ 'post_type' => 'awl_filter_gallery',
+ 'post_author' => get_current_user_id(),
+ 'post_content' => $original->post_content,
+ 'post_excerpt' => $original->post_excerpt,
+ );
+
+ $new_id = wp_insert_post( $new_gallery );
+
+ if ( is_wp_error( $new_id ) ) {
+ wp_die( esc_html__( 'Failed to duplicate gallery.', 'portfolio-filter-gallery' ) );
+ }
+
+ // Copy all post meta
+ $meta_keys = get_post_custom_keys( $gallery_id );
+ if ( ! empty( $meta_keys ) ) {
+ foreach ( $meta_keys as $meta_key ) {
+ // Skip internal WordPress meta
+ if ( strpos( $meta_key, '_edit_' ) === 0 ) {
+ continue;
+ }
+
+ $meta_values = get_post_meta( $gallery_id, $meta_key );
+ foreach ( $meta_values as $meta_value ) {
+ add_post_meta( $new_id, $meta_key, $meta_value );
+ }
+ }
+ }
+
+ // Redirect to edit the new gallery
+ wp_safe_redirect( admin_url( 'post.php?action=edit&post=' . $new_id ) );
+ exit;
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/class-pfg-ajax-handler.php b/wp-content/plugins/portfolio-filter-gallery/admin/class-pfg-ajax-handler.php
new file mode 100644
index 0000000..6aa4dd5
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/class-pfg-ajax-handler.php
@@ -0,0 +1,1236 @@
+ __( 'Security check failed.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ if ( ! current_user_can( 'edit_posts' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $gallery_id = isset( $_POST['gallery_id'] ) ? absint( $_POST['gallery_id'] ) : 0;
+ $source = isset( $_POST['source'] ) ? sanitize_key( $_POST['source'] ) : 'media';
+
+ ob_start();
+
+ if ( $source === 'woocommerce' && PFG_WooCommerce::is_active() && PFG_Features::is_premium() ) {
+ // Fetch WooCommerce products
+ $gallery = new PFG_Gallery( $gallery_id );
+ $settings = $gallery->get_settings();
+
+ $woo_args = array(
+ 'categories' => isset( $settings['woo_categories'] ) ? $settings['woo_categories'] : array(),
+ 'orderby' => isset( $settings['woo_orderby'] ) ? $settings['woo_orderby'] : 'date',
+ 'order' => isset( $settings['woo_order'] ) ? strtoupper( $settings['woo_order'] ) : 'DESC',
+ 'limit' => isset( $settings['woo_limit'] ) ? intval( $settings['woo_limit'] ) : -1,
+ 'image_size' => isset( $settings['image_size'] ) ? $settings['image_size'] : 'medium',
+ );
+
+ $products = PFG_WooCommerce::get_products( $woo_args );
+
+ if ( empty( $products ) ) {
+ echo '';
+ echo '
';
+ echo '
' . esc_html__( 'No products found. Add products in WooCommerce or adjust category settings.', 'portfolio-filter-gallery' ) . '
';
+ echo '
';
+ } else {
+ foreach ( $products as $product ) {
+ echo '';
+ echo '
';
+
+ if ( ! empty( $product['product']['on_sale'] ) ) {
+ echo '
';
+ esc_html_e( 'Sale', 'portfolio-filter-gallery' );
+ echo ' ';
+ }
+
+ echo '
';
+ echo '' . esc_html( $product['title'] ) . ' ';
+ echo '' . wp_kses_post( $product['product']['price'] ) . ' ';
+ if ( ! empty( $product['filters'] ) ) {
+ echo '' . esc_html( implode( ', ', array_slice( $product['filters'], 0, 2 ) ) ) . ' ';
+ }
+ echo '
';
+ echo '
';
+ }
+ }
+ } else {
+ // Media Library images - include hidden inputs so images can be saved
+ $gallery = new PFG_Gallery( $gallery_id );
+ $images = $gallery->get_images();
+
+ if ( empty( $images ) ) {
+ echo '';
+ echo '
';
+ echo '
' . esc_html__( 'No images yet. Add images using the button below.', 'portfolio-filter-gallery' ) . '
';
+ echo '
';
+ } else {
+ foreach ( $images as $index => $img ) {
+ $attachment_id = $img['id'];
+ $thumb_url = wp_get_attachment_image_url( $attachment_id, 'thumbnail' );
+ $title = ! empty( $img['title'] ) ? $img['title'] : get_the_title( $attachment_id );
+ $image_filters = isset( $img['filters'] ) && is_array( $img['filters'] ) ? $img['filters'] : array();
+
+ echo '';
+ echo '
';
+
+ // Action buttons
+ echo '
';
+ echo '';
+ echo ' ';
+ echo ' ';
+ echo '';
+ echo ' ';
+ echo ' ';
+ echo '
';
+
+ echo '
';
+ echo '
' . esc_html( substr( $title, 0, 30 ) ) . '
';
+ echo '
';
+
+ // Hidden inputs for form submission
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+ echo '
';
+
+ echo '
';
+ }
+ }
+ }
+
+ $html = ob_get_clean();
+
+ wp_send_json_success( array( 'html' => $html ) );
+ }
+
+ /**
+ * Get products for import into gallery.
+ */
+ public function get_products_for_import() {
+ // Verify nonce
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'pfg_admin_nonce' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Security check failed.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ if ( ! current_user_can( 'edit_posts' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ if ( ! class_exists( 'WooCommerce' ) ) {
+ wp_send_json_error( array( 'message' => __( 'WooCommerce is not active.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $search = isset( $_POST['search'] ) ? sanitize_text_field( $_POST['search'] ) : '';
+
+ // Query products
+ $args = array(
+ 'post_type' => 'product',
+ 'post_status' => 'publish',
+ 'posts_per_page' => 50,
+ 'orderby' => 'date',
+ 'order' => 'DESC',
+ );
+
+ if ( ! empty( $search ) ) {
+ $args['s'] = $search;
+ }
+
+ $products = get_posts( $args );
+
+ ob_start();
+
+ if ( empty( $products ) ) {
+ echo '';
+ esc_html_e( 'No products found.', 'portfolio-filter-gallery' );
+ echo '
';
+ } else {
+ foreach ( $products as $product_post ) {
+ $product = wc_get_product( $product_post->ID );
+ if ( ! $product ) continue;
+
+ $image_id = $product->get_image_id();
+ $thumbnail = $image_id ? wp_get_attachment_image_url( $image_id, 'thumbnail' ) : wc_placeholder_img_src( 'thumbnail' );
+ $title = $product->get_name();
+
+ echo 'ID ) . '" ';
+ echo 'data-image-id="' . esc_attr( $image_id ) . '" ';
+ echo 'data-title="' . esc_attr( $title ) . '" ';
+ echo 'data-thumbnail="' . esc_url( $thumbnail ) . '">';
+ echo '
';
+ echo '
' . esc_html( $title ) . '
';
+ echo '
';
+ }
+ }
+
+ $html = ob_get_clean();
+
+ wp_send_json_success( array( 'html' => $html ) );
+ }
+
+ /**
+ * Search products for linking in Edit Image modal.
+ */
+ public function search_products() {
+ // Verify nonce
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'pfg_admin_nonce' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Security check failed.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ if ( ! current_user_can( 'edit_posts' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ if ( ! class_exists( 'WooCommerce' ) ) {
+ wp_send_json_error( array( 'message' => __( 'WooCommerce is not active.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $search = isset( $_POST['search'] ) ? sanitize_text_field( $_POST['search'] ) : '';
+
+ if ( empty( $search ) || strlen( $search ) < 2 ) {
+ wp_send_json_success( array( 'products' => array() ) );
+ }
+
+ // Query products
+ $args = array(
+ 'post_type' => 'product',
+ 'post_status' => 'publish',
+ 'posts_per_page' => 10,
+ 'orderby' => 'title',
+ 'order' => 'ASC',
+ 's' => $search,
+ );
+
+ $products_query = get_posts( $args );
+ $products = array();
+
+ foreach ( $products_query as $product_post ) {
+ $product = wc_get_product( $product_post->ID );
+ if ( ! $product ) continue;
+
+ $image_id = $product->get_image_id();
+ $thumbnail = $image_id ? wp_get_attachment_image_url( $image_id, 'thumbnail' ) : wc_placeholder_img_src( 'thumbnail' );
+
+ $products[] = array(
+ 'id' => $product_post->ID,
+ 'name' => $product->get_name(),
+ 'price' => $product->get_price_html(),
+ 'image' => $thumbnail,
+ );
+ }
+
+ wp_send_json_success( array( 'products' => $products ) );
+ }
+
+ /**
+ * Fetch video thumbnail from YouTube or Vimeo and import to Media Library.
+ */
+ public function fetch_video_thumbnail() {
+ // Verify nonce
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'pfg_admin_nonce' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Security check failed.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ if ( ! current_user_can( 'upload_files' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $video_url = isset( $_POST['video_url'] ) ? esc_url_raw( $_POST['video_url'] ) : '';
+ $gallery_id = isset( $_POST['gallery_id'] ) ? absint( $_POST['gallery_id'] ) : 0;
+
+ if ( empty( $video_url ) ) {
+ wp_send_json_error( array( 'message' => __( 'No video URL provided.', 'portfolio-filter-gallery' ) ) );
+ }
+
+ // Parse video URL to get thumbnail
+ $thumbnail_url = $this->get_video_thumbnail_url( $video_url );
+
+ if ( ! $thumbnail_url ) {
+ wp_send_json_error( array( 'message' => __( 'Could not detect video platform. Supported: YouTube, Vimeo.', 'portfolio-filter-gallery' ) ) );
+ }
+
+ // Download and import to Media Library
+ require_once ABSPATH . 'wp-admin/includes/media.php';
+ require_once ABSPATH . 'wp-admin/includes/file.php';
+ require_once ABSPATH . 'wp-admin/includes/image.php';
+
+ // Download the image
+ $tmp = download_url( $thumbnail_url );
+
+ if ( is_wp_error( $tmp ) ) {
+ wp_send_json_error( array( 'message' => __( 'Failed to download thumbnail.', 'portfolio-filter-gallery' ) ) );
+ }
+
+ // Prepare file array
+ $file_array = array(
+ 'name' => 'video-thumbnail-' . time() . '.jpg',
+ 'tmp_name' => $tmp,
+ );
+
+ // Upload to Media Library
+ $attachment_id = media_handle_sideload( $file_array, $gallery_id );
+
+ // Clean up temp file
+ if ( file_exists( $tmp ) ) {
+ @unlink( $tmp );
+ }
+
+ if ( is_wp_error( $attachment_id ) ) {
+ wp_send_json_error( array( 'message' => $attachment_id->get_error_message() ) );
+ }
+
+ // Get the attachment URL
+ $attachment_url = wp_get_attachment_image_url( $attachment_id, 'medium' );
+
+ wp_send_json_success( array(
+ 'attachment_id' => $attachment_id,
+ 'thumbnail_url' => $attachment_url,
+ ) );
+ }
+
+ /**
+ * Extract thumbnail URL from video URL.
+ *
+ * @param string $url Video URL.
+ * @return string|false Thumbnail URL or false if not supported.
+ */
+ private function get_video_thumbnail_url( $url ) {
+ // YouTube
+ if ( preg_match( '/youtube\.com\/watch\?v=([a-zA-Z0-9_-]+)/i', $url, $matches ) ||
+ preg_match( '/youtu\.be\/([a-zA-Z0-9_-]+)/i', $url, $matches ) ||
+ preg_match( '/youtube\.com\/embed\/([a-zA-Z0-9_-]+)/i', $url, $matches ) ) {
+ $video_id = $matches[1];
+ // Try maxresdefault first, fall back to hqdefault
+ $max_res = "https://img.youtube.com/vi/{$video_id}/maxresdefault.jpg";
+ $hq = "https://img.youtube.com/vi/{$video_id}/hqdefault.jpg";
+
+ // Check if maxres exists (returns 120x90 placeholder if not)
+ $response = wp_remote_head( $max_res );
+ if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ) {
+ return $max_res;
+ }
+ return $hq;
+ }
+
+ // Vimeo
+ if ( preg_match( '/vimeo\.com\/(\d+)/i', $url, $matches ) ) {
+ $video_id = $matches[1];
+ $api_url = "https://vimeo.com/api/v2/video/{$video_id}.json";
+
+ $response = wp_remote_get( $api_url );
+ if ( ! is_wp_error( $response ) ) {
+ $body = json_decode( wp_remote_retrieve_body( $response ), true );
+ if ( ! empty( $body[0]['thumbnail_large'] ) ) {
+ return $body[0]['thumbnail_large'];
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Get attachment URL by ID.
+ */
+ public function get_attachment_url() {
+ // Verify nonce
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'pfg_admin_nonce' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Security check failed.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $attachment_id = isset( $_POST['attachment_id'] ) ? absint( $_POST['attachment_id'] ) : 0;
+
+ if ( ! $attachment_id ) {
+ wp_send_json_error( array( 'message' => __( 'No attachment ID provided.', 'portfolio-filter-gallery' ) ) );
+ }
+
+ $url = wp_get_attachment_image_url( $attachment_id, 'medium' );
+
+ if ( ! $url ) {
+ wp_send_json_error( array( 'message' => __( 'Attachment not found.', 'portfolio-filter-gallery' ) ) );
+ }
+
+ wp_send_json_success( array( 'url' => $url ) );
+ }
+
+ /**
+ * Delete video thumbnail from media library (on revert to original).
+ * This prevents duplicate thumbnails from accumulating.
+ */
+ public function delete_video_thumbnail() {
+ // Verify nonce
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'pfg_admin_nonce' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Security check failed.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ if ( ! current_user_can( 'delete_posts' ) ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $attachment_id = isset( $_POST['attachment_id'] ) ? absint( $_POST['attachment_id'] ) : 0;
+
+ if ( ! $attachment_id ) {
+ wp_send_json_error( array( 'message' => __( 'No attachment ID provided.', 'portfolio-filter-gallery' ) ) );
+ }
+
+ // Check if this attachment is a video thumbnail created by our plugin
+ // We only delete attachments that have name starting with 'video-thumbnail-'
+ $attachment = get_post( $attachment_id );
+ if ( ! $attachment || $attachment->post_type !== 'attachment' ) {
+ wp_send_json_error( array( 'message' => __( 'Attachment not found.', 'portfolio-filter-gallery' ) ) );
+ }
+
+ // Verify it's a video thumbnail (by filename pattern)
+ $file = get_attached_file( $attachment_id );
+ $filename = basename( $file );
+
+ // Only delete if it matches our video thumbnail naming pattern
+ if ( strpos( $filename, 'video-thumbnail-' ) !== 0 ) {
+ // Don't delete - it might be user's original image
+ wp_send_json_success( array( 'deleted' => false, 'message' => __( 'Not a video thumbnail.', 'portfolio-filter-gallery' ) ) );
+ return;
+ }
+
+ // Delete the attachment permanently
+ $deleted = wp_delete_attachment( $attachment_id, true );
+
+ if ( $deleted ) {
+ wp_send_json_success( array( 'deleted' => true, 'message' => __( 'Thumbnail deleted.', 'portfolio-filter-gallery' ) ) );
+ } else {
+ wp_send_json_error( array( 'message' => __( 'Failed to delete thumbnail.', 'portfolio-filter-gallery' ) ) );
+ }
+ }
+
+ /**
+ * Add a new filter.
+ */
+ public function add_filter() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to manage filters.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $name = PFG_Security::get_post( 'name', '', 'text' );
+ $parent_id = PFG_Security::get_post( 'parent_id', '', 'key' );
+ $color = PFG_Security::get_post( 'color', '#94a3b8', 'text' );
+
+ if ( empty( $name ) ) {
+ wp_send_json_error( array( 'message' => __( 'Filter name is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $filters = get_option( 'pfg_filters', array() );
+
+
+ // Generate unique ID - handle non-Latin characters
+ $id_base = sanitize_key( $name );
+ // If sanitize_key returned empty (non-Latin chars), use a hash-based ID
+ if ( empty( $id_base ) ) {
+ $id_base = 'filter' . substr( md5( $name ), 0, 8 );
+ }
+ $id = $id_base . '_' . uniqid();
+
+ // Generate base slug from name - handle non-Latin characters
+ $base_slug = sanitize_title( $name );
+ // If sanitize_title returned empty OR URL-encoded (contains %xx hex), use Unicode-aware slug
+ // sanitize_title() converts Japanese to %e6%97%a5... which we don't want
+ if ( empty( $base_slug ) || preg_match( '/%[0-9a-f]{2}/i', $base_slug ) ) {
+ // Create a slug preserving Unicode characters - use mb_strtolower for proper UTF-8 handling
+ $base_slug = mb_strtolower( preg_replace( '/[^\p{L}\p{N}]+/ui', '-', $name ), 'UTF-8' );
+ $base_slug = trim( $base_slug, '-' );
+ // If still empty, use a hash-based fallback
+ if ( empty( $base_slug ) ) {
+ $base_slug = 'filter-' . substr( md5( $name ), 0, 8 );
+ }
+ }
+ $slug = $base_slug;
+
+ // Check for duplicate slugs and generate unique one
+ $existing_slugs = array_column( $filters, 'slug' );
+ if ( in_array( $slug, $existing_slugs, true ) ) {
+ $counter = 2;
+ while ( in_array( $base_slug . '-' . $counter, $existing_slugs, true ) ) {
+ $counter++;
+ }
+ $slug = $base_slug . '-' . $counter;
+ }
+
+ $new_filter = array(
+ 'id' => $id,
+ 'name' => $name,
+ 'slug' => $slug,
+ 'parent' => $parent_id,
+ 'color' => sanitize_hex_color( $color ),
+ 'order' => count( $filters ),
+ );
+
+ $filters[] = $new_filter;
+ update_option( 'pfg_filters', $filters );
+
+ // Also update legacy format for backward compatibility
+ $this->sync_legacy_filters( $filters );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Filter added successfully.', 'portfolio-filter-gallery' ),
+ 'filter' => $new_filter,
+ ) );
+ }
+
+ /**
+ * Delete a filter.
+ */
+ public function delete_filter() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_delete_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to delete filters.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $filter_id = PFG_Security::get_post( 'filter_id', '', 'key' );
+
+ if ( empty( $filter_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Filter ID is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $filters = get_option( 'pfg_filters', array() );
+ $updated = array();
+
+ foreach ( $filters as $filter ) {
+ if ( $filter['id'] !== $filter_id ) {
+ $updated[] = $filter;
+ }
+ }
+
+ // Reindex order
+ foreach ( $updated as $index => &$filter ) {
+ $filter['order'] = $index;
+ }
+
+ update_option( 'pfg_filters', $updated );
+
+ // Also update legacy format
+ $this->sync_legacy_filters( $updated );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Filter deleted successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Delete all filters.
+ */
+ public function delete_all_filters() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_delete_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to delete filters.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ // Clear all filters
+ update_option( 'pfg_filters', array() );
+
+ // Also clear legacy format
+ update_option( 'awl_portfolio_filter_gallery_categories', array() );
+
+ wp_send_json_success( array(
+ 'message' => __( 'All filters deleted successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Update a filter.
+ */
+ public function update_filter() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to manage filters.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $filter_id = PFG_Security::get_post( 'filter_id', '', 'key' );
+ $name = PFG_Security::get_post( 'name', '', 'text' );
+
+ if ( empty( $filter_id ) || empty( $name ) ) {
+ wp_send_json_error( array( 'message' => __( 'Filter ID and name are required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $filters = get_option( 'pfg_filters', array() );
+
+ foreach ( $filters as &$filter ) {
+ if ( $filter['id'] === $filter_id ) {
+ $filter['name'] = $name;
+ // Note: slug is now managed separately via update_filter_slug
+ break;
+ }
+ }
+
+ update_option( 'pfg_filters', $filters );
+
+ // Also update legacy format
+ $this->sync_legacy_filters( $filters );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Filter updated successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Reorder filters.
+ */
+ public function reorder_filters() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to manage filters.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $order = isset( $_POST['order'] ) ? array_map( 'sanitize_key', (array) $_POST['order'] ) : array();
+
+ if ( empty( $order ) ) {
+ wp_send_json_error( array( 'message' => __( 'Order data is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $filters = get_option( 'pfg_filters', array() );
+ $reordered = array();
+
+ foreach ( $order as $index => $filter_id ) {
+ foreach ( $filters as $filter ) {
+ if ( $filter['id'] === $filter_id ) {
+ $filter['order'] = $index;
+ $reordered[] = $filter;
+ break;
+ }
+ }
+ }
+
+ update_option( 'pfg_filters', $reordered );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Filters reordered successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Update filter parent.
+ */
+ public function update_filter_parent() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to manage filters.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $filter_id = PFG_Security::get_post( 'filter_id', '', 'key' );
+ $parent_id = PFG_Security::get_post( 'parent_id', '', 'key' );
+
+ if ( empty( $filter_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Filter ID is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $filters = get_option( 'pfg_filters', array() );
+
+ foreach ( $filters as &$filter ) {
+ if ( $filter['id'] === $filter_id ) {
+ $filter['parent'] = $parent_id;
+ break;
+ }
+ }
+
+ update_option( 'pfg_filters', $filters );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Filter parent updated successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Update filter color.
+ */
+ public function update_filter_color() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to manage filters.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $filter_id = PFG_Security::get_post( 'filter_id', '', 'key' );
+ $color = PFG_Security::get_post( 'color', '#94a3b8', 'text' );
+
+ if ( empty( $filter_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Filter ID is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $filters = get_option( 'pfg_filters', array() );
+
+ foreach ( $filters as &$filter ) {
+ if ( $filter['id'] === $filter_id ) {
+ $filter['color'] = sanitize_hex_color( $color );
+ break;
+ }
+ }
+
+ update_option( 'pfg_filters', $filters );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Filter color updated successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Update filter slug.
+ */
+ public function update_filter_slug() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'Permission denied.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $filter_id = isset( $_POST['filter_id'] ) ? sanitize_key( $_POST['filter_id'] ) : '';
+ // Use sanitize_text_field instead of sanitize_key to preserve Unicode characters (Japanese, Chinese, etc.)
+ $slug = isset( $_POST['slug'] ) ? sanitize_text_field( wp_unslash( $_POST['slug'] ) ) : '';
+
+ if ( empty( $filter_id ) || empty( $slug ) ) {
+ wp_send_json_error( array( 'message' => __( 'Filter ID and slug are required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $filters = get_option( 'pfg_filters', array() );
+ $updated = false;
+
+ foreach ( $filters as &$filter ) {
+ if ( $filter['id'] === $filter_id ) {
+ $filter['slug'] = $slug;
+ $updated = true;
+ break;
+ }
+ }
+
+ if ( ! $updated ) {
+ wp_send_json_error( array( 'message' => __( 'Filter not found.', 'portfolio-filter-gallery' ) ), 404 );
+ }
+
+ update_option( 'pfg_filters', $filters );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Filter slug updated successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Handle image upload.
+ */
+ public function upload_images() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to upload images.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $gallery_id = PFG_Security::get_post( 'gallery_id', 0, 'int' );
+ $image_ids = isset( $_POST['image_ids'] ) ? array_map( 'absint', (array) $_POST['image_ids'] ) : array();
+
+ if ( empty( $gallery_id ) || empty( $image_ids ) ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery ID and images are required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $gallery = new PFG_Gallery( $gallery_id );
+ $images = $gallery->get_images();
+ $new_images = array(); // Track only newly added images
+
+ foreach ( $image_ids as $image_id ) {
+ // Check if image already exists
+ $exists = false;
+ foreach ( $images as $img ) {
+ if ( $img['id'] === $image_id ) {
+ $exists = true;
+ break;
+ }
+ }
+
+ if ( ! $exists ) {
+ $attachment = get_post( $image_id );
+ $new_image = array(
+ 'id' => $image_id,
+ 'title' => $attachment ? $attachment->post_title : '',
+ 'description' => $attachment ? $attachment->post_content : '',
+ 'link' => '',
+ 'type' => 'image',
+ 'filters' => array(),
+ );
+ $images[] = $new_image;
+ $new_images[] = $new_image;
+ }
+ }
+
+ update_post_meta( $gallery_id, '_pfg_images', $images );
+
+ // Return only newly added images to prevent duplication in JS
+ wp_send_json_success( array(
+ 'message' => __( 'Images added successfully.', 'portfolio-filter-gallery' ),
+ 'images' => $this->prepare_images_for_output( $new_images ),
+ ) );
+ }
+
+ /**
+ * Handle drag and drop file upload.
+ */
+ public function upload_dropped_files() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to upload images.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $gallery_id = PFG_Security::get_post( 'gallery_id', 0, 'int' );
+
+ if ( empty( $gallery_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery ID is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ if ( empty( $_FILES['files'] ) ) {
+ wp_send_json_error( array( 'message' => __( 'No files were uploaded.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ // Include required files for media handling
+ require_once ABSPATH . 'wp-admin/includes/image.php';
+ require_once ABSPATH . 'wp-admin/includes/file.php';
+ require_once ABSPATH . 'wp-admin/includes/media.php';
+
+ $gallery = new PFG_Gallery( $gallery_id );
+ $images = $gallery->get_images();
+ $new_images = array();
+ $upload_count = 0;
+
+ // Handle multiple files
+ $files = $_FILES['files'];
+ $file_count = count( $files['name'] );
+
+ for ( $i = 0; $i < $file_count; $i++ ) {
+ // Check if valid image
+ $file_type = wp_check_filetype( $files['name'][ $i ] );
+ if ( ! in_array( $file_type['ext'], array( 'jpg', 'jpeg', 'png', 'gif', 'webp' ), true ) ) {
+ continue;
+ }
+
+ // Prepare file array for single upload
+ $_FILES['upload_file'] = array(
+ 'name' => $files['name'][ $i ],
+ 'type' => $files['type'][ $i ],
+ 'tmp_name' => $files['tmp_name'][ $i ],
+ 'error' => $files['error'][ $i ],
+ 'size' => $files['size'][ $i ],
+ );
+
+ // Upload to media library
+ $attachment_id = media_handle_upload( 'upload_file', 0 );
+
+ if ( ! is_wp_error( $attachment_id ) ) {
+ $attachment = get_post( $attachment_id );
+ $new_image = array(
+ 'id' => $attachment_id,
+ 'title' => $attachment ? $attachment->post_title : '',
+ 'description' => $attachment ? $attachment->post_content : '',
+ 'link' => '',
+ 'type' => 'image',
+ 'filters' => array(),
+ );
+ $images[] = $new_image;
+ $new_images[] = $new_image;
+ $upload_count++;
+ }
+ }
+
+ if ( $upload_count === 0 ) {
+ wp_send_json_error( array( 'message' => __( 'No valid images were uploaded.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ update_post_meta( $gallery_id, '_pfg_images', $images );
+
+ wp_send_json_success( array(
+ /* translators: %d is the number of images uploaded */
+ 'message' => sprintf( _n( '%d image uploaded successfully.', '%d images uploaded successfully.', $upload_count, 'portfolio-filter-gallery' ), $upload_count ),
+ 'images' => $this->prepare_images_for_output( $new_images ),
+ ) );
+ }
+
+ /**
+ * Remove an image from gallery.
+ */
+ public function remove_image() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to remove images.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $gallery_id = PFG_Security::get_post( 'gallery_id', 0, 'int' );
+ $image_id = PFG_Security::get_post( 'image_id', 0, 'int' );
+
+ if ( empty( $gallery_id ) || empty( $image_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery ID and image ID are required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $gallery = new PFG_Gallery( $gallery_id );
+ $images = $gallery->get_images();
+ $updated = array();
+
+ foreach ( $images as $image ) {
+ if ( $image['id'] !== $image_id ) {
+ $updated[] = $image;
+ }
+ }
+
+ update_post_meta( $gallery_id, '_pfg_images', $updated );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Image removed successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Reorder images.
+ */
+ public function reorder_images() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to reorder images.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $gallery_id = PFG_Security::get_post( 'gallery_id', 0, 'int' );
+ $order = isset( $_POST['order'] ) ? array_map( 'absint', (array) $_POST['order'] ) : array();
+
+ if ( empty( $gallery_id ) || empty( $order ) ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery ID and order data are required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $gallery = new PFG_Gallery( $gallery_id );
+ $images = $gallery->get_images();
+ $reordered = array();
+
+ foreach ( $order as $image_id ) {
+ foreach ( $images as $image ) {
+ if ( $image['id'] === $image_id ) {
+ $reordered[] = $image;
+ break;
+ }
+ }
+ }
+
+ update_post_meta( $gallery_id, '_pfg_images', $reordered );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Images reordered successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Update single image data.
+ */
+ public function update_image() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to update images.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $gallery_id = PFG_Security::get_post( 'gallery_id', 0, 'int' );
+ $image_id = PFG_Security::get_post( 'image_id', 0, 'int' );
+
+ if ( empty( $gallery_id ) || empty( $image_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery ID and image ID are required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $gallery = new PFG_Gallery( $gallery_id );
+ $images = $gallery->get_images();
+
+ foreach ( $images as &$image ) {
+ if ( $image['id'] === $image_id ) {
+ $image['title'] = PFG_Security::get_post( 'title', $image['title'], 'text' );
+ $image['description'] = PFG_Security::get_post( 'description', $image['description'], 'textarea' );
+ $image['link'] = PFG_Security::get_post( 'link', $image['link'], 'url' );
+ $image['type'] = PFG_Security::get_post( 'type', $image['type'], 'key' );
+
+ if ( isset( $_POST['filters'] ) ) {
+ $image['filters'] = array_map( 'sanitize_key', (array) $_POST['filters'] );
+ }
+
+ break;
+ }
+ }
+
+ update_post_meta( $gallery_id, '_pfg_images', $images );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Image updated successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Save gallery via AJAX.
+ */
+ public function save_gallery() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ $gallery_id = PFG_Security::get_post( 'gallery_id', 0, 'int' );
+
+ if ( empty( $gallery_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery ID is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ if ( ! PFG_Security::can_edit_gallery( $gallery_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to edit this gallery.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $gallery = new PFG_Gallery( $gallery_id );
+ $schema = PFG_Gallery::get_schema();
+
+ foreach ( $schema as $key => $config ) {
+ if ( isset( $_POST[ $key ] ) ) {
+ $gallery->set_setting( $key, wp_unslash( $_POST[ $key ] ) );
+ } elseif ( $config['type'] === 'bool' ) {
+ // Unchecked checkboxes don't send values, so explicitly set to false
+ $gallery->set_setting( $key, false );
+ }
+ }
+
+ $gallery->save();
+
+ wp_send_json_success( array(
+ 'message' => __( 'Gallery saved successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ }
+
+ /**
+ * Duplicate a gallery.
+ */
+ public function duplicate_gallery() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ $gallery_id = PFG_Security::get_post( 'gallery_id', 0, 'int' );
+
+ if ( empty( $gallery_id ) ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery ID is required.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ if ( ! PFG_Security::can_manage_galleries() ) {
+ wp_send_json_error( array( 'message' => __( 'You do not have permission to duplicate galleries.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $original = get_post( $gallery_id );
+
+ if ( ! $original ) {
+ wp_send_json_error( array( 'message' => __( 'Gallery not found.', 'portfolio-filter-gallery' ) ), 404 );
+ }
+
+ // Create duplicate post
+ $new_id = wp_insert_post( array(
+ 'post_type' => 'awl_filter_gallery',
+ 'post_title' => $original->post_title . ' ' . __( '(Copy)', 'portfolio-filter-gallery' ),
+ 'post_status' => 'publish',
+ ) );
+
+ if ( is_wp_error( $new_id ) ) {
+ wp_send_json_error( array( 'message' => $new_id->get_error_message() ), 500 );
+ }
+
+ // Copy meta data
+ $gallery = new PFG_Gallery( $gallery_id );
+ $settings = $gallery->get_settings();
+ $images = $gallery->get_images();
+
+ $new_gallery = new PFG_Gallery( $new_id );
+ foreach ( $settings as $key => $value ) {
+ $new_gallery->set_setting( $key, $value );
+ }
+ $new_gallery->save();
+
+ update_post_meta( $new_id, '_pfg_images', $images );
+
+ wp_send_json_success( array(
+ 'message' => __( 'Gallery duplicated successfully.', 'portfolio-filter-gallery' ),
+ 'new_id' => $new_id,
+ 'edit_link' => get_edit_post_link( $new_id, 'raw' ),
+ ) );
+ }
+
+ /**
+ * Run migration.
+ */
+ public function run_migration() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::is_admin() ) {
+ wp_send_json_error( array( 'message' => __( 'Only administrators can run migrations.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $migrator = new PFG_Migrator();
+ $migrator->maybe_migrate();
+
+ wp_send_json_success( array(
+ 'message' => __( 'Migration completed successfully.', 'portfolio-filter-gallery' ),
+ 'status' => $migrator->get_status(),
+ ) );
+ }
+
+ /**
+ * Restore from backup.
+ */
+ public function restore_backup() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::is_admin() ) {
+ wp_send_json_error( array( 'message' => __( 'Only administrators can restore backups.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $backup_file = PFG_Security::get_post( 'backup_file', '', 'text' );
+
+ if ( empty( $backup_file ) ) {
+ $backup_file = get_option( 'pfg_last_backup', '' );
+ }
+
+ if ( empty( $backup_file ) ) {
+ wp_send_json_error( array( 'message' => __( 'No backup file specified.', 'portfolio-filter-gallery' ) ), 400 );
+ }
+
+ $migrator = new PFG_Migrator();
+ $result = $migrator->restore_backup( $backup_file );
+
+ if ( $result ) {
+ wp_send_json_success( array(
+ 'message' => __( 'Backup restored successfully.', 'portfolio-filter-gallery' ),
+ ) );
+ } else {
+ wp_send_json_error( array( 'message' => __( 'Failed to restore backup.', 'portfolio-filter-gallery' ) ), 500 );
+ }
+ }
+
+ /**
+ * Get migration status.
+ */
+ public function get_migration_status() {
+ PFG_Security::verify_ajax_nonce( 'admin_action' );
+
+ if ( ! PFG_Security::is_admin() ) {
+ wp_send_json_error( array( 'message' => __( 'Only administrators can view migration status.', 'portfolio-filter-gallery' ) ), 403 );
+ }
+
+ $migrator = new PFG_Migrator();
+
+ wp_send_json_success( $migrator->get_status() );
+ }
+
+ /**
+ * Sync filters to legacy format.
+ *
+ * @param array $filters New format filters.
+ */
+ protected function sync_legacy_filters( $filters ) {
+ $legacy = array();
+
+ foreach ( $filters as $filter ) {
+ $legacy[ $filter['id'] ] = $filter['name'];
+ }
+
+ update_option( 'awl_portfolio_filter_gallery_categories', $legacy );
+ }
+
+ /**
+ * Prepare images for JSON output.
+ *
+ * @param array $images Images array.
+ * @return array
+ */
+ protected function prepare_images_for_output( $images ) {
+ $output = array();
+
+ foreach ( $images as $image ) {
+ $thumbnail = wp_get_attachment_image_src( $image['id'], 'thumbnail' );
+ $medium = wp_get_attachment_image_src( $image['id'], 'medium' );
+
+ $output[] = array_merge( $image, array(
+ 'thumbnail' => $thumbnail ? $thumbnail[0] : '',
+ 'medium' => $medium ? $medium[0] : '',
+ ) );
+ }
+
+ return $output;
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/css/pfg-admin.css b/wp-content/plugins/portfolio-filter-gallery/admin/css/pfg-admin.css
new file mode 100644
index 0000000..af057bd
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/css/pfg-admin.css
@@ -0,0 +1,1228 @@
+/**
+ * Portfolio Filter Gallery - Admin Styles
+ * Modern, clean admin UI
+ *
+ * @package Portfolio_Filter_Gallery
+ * @version 2.0.0
+ */
+
+/* ==========================================================================
+ CSS Variables
+ ========================================================================== */
+
+:root {
+ --pfg-primary: #3858e9;
+ --pfg-primary-hover: #2945c9;
+ --pfg-primary-light: rgba(56, 88, 233, 0.1);
+ --pfg-success: #10b981;
+ --pfg-warning: #f59e0b;
+ --pfg-error: #ef4444;
+ --pfg-text: #1e293b;
+ --pfg-text-muted: #64748b;
+ --pfg-text-light: #94a3b8;
+ --pfg-bg: #f8fafc;
+ --pfg-card-bg: #ffffff;
+ --pfg-border: #e2e8f0;
+ --pfg-border-light: #f1f5f9;
+ --pfg-radius: 8px;
+ --pfg-radius-lg: 12px;
+ --pfg-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ --pfg-shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.1);
+ --pfg-transition: 0.2s ease;
+}
+
+/* ==========================================================================
+ General Layout
+ ========================================================================== */
+
+.meta-box-sortables select {
+ max-width: fit-content !important;
+}
+
+.pfg-admin-wrap {
+ max-width: 1400px;
+ margin: 20px auto;
+ padding: 0 20px;
+}
+
+.pfg-admin-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 30px;
+ padding-bottom: 20px;
+ border-bottom: 1px solid var(--pfg-border);
+}
+
+.pfg-admin-title {
+ font-size: 24px;
+ font-weight: 600;
+ color: var(--pfg-text);
+ margin: 0;
+}
+
+.pfg-admin-subtitle {
+ color: var(--pfg-text-muted);
+ font-size: 14px;
+ margin-top: 5px;
+}
+
+/* ==========================================================================
+ Cards
+ ========================================================================== */
+
+.pfg-card {
+ background: var(--pfg-card-bg);
+ border-radius: var(--pfg-radius-lg);
+ box-shadow: var(--pfg-shadow);
+ padding: 24px;
+ margin-bottom: 20px;
+}
+
+.pfg-card-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 20px;
+ padding-bottom: 15px;
+ border-bottom: 1px solid var(--pfg-border-light);
+}
+
+.pfg-card-title {
+ font-size: 16px;
+ font-weight: 600;
+ color: var(--pfg-text);
+ margin: 0;
+}
+
+.pfg-card-description {
+ color: var(--pfg-text-muted);
+ font-size: 13px;
+ margin-top: 4px;
+}
+
+/* ==========================================================================
+ Tabs
+ ========================================================================== */
+
+.pfg-tabs {
+ display: flex;
+ gap: 4px;
+ border-bottom: 1px solid var(--pfg-border);
+ margin-bottom: 24px;
+}
+
+.pfg-tab {
+ padding: 12px 20px;
+ border: none;
+ background: transparent;
+ color: var(--pfg-text-muted);
+ font-size: 14px;
+ font-weight: 500;
+ cursor: pointer;
+ border-bottom: 2px solid transparent;
+ margin-bottom: -1px;
+ transition: all var(--pfg-transition);
+}
+
+.pfg-tab:hover {
+ color: var(--pfg-text);
+}
+
+.pfg-tab.active,
+.pfg-tab:focus {
+ color: var(--pfg-primary);
+ border-bottom-color: var(--pfg-primary);
+ outline: none;
+}
+
+.pfg-tab-content {
+ display: none;
+}
+
+.pfg-tab-content.active {
+ display: block;
+}
+
+/* ==========================================================================
+ Form Elements
+ ========================================================================== */
+
+.pfg-form-row {
+ display: grid;
+ grid-template-columns: 200px 1fr;
+ gap: 20px;
+ align-items: start;
+ padding: 16px 0;
+ border-bottom: 1px solid var(--pfg-border-light);
+}
+
+.pfg-form-row:last-child {
+ border-bottom: none;
+}
+
+.pfg-form-label {
+ font-weight: 500;
+ color: var(--pfg-text);
+ padding-top: 8px;
+}
+
+.pfg-form-label small {
+ display: block;
+ font-weight: 400;
+ color: var(--pfg-text-muted);
+ font-size: 12px;
+ margin-top: 4px;
+}
+
+.pfg-input,
+.pfg-select,
+.pfg-textarea {
+ width: 100%;
+ max-width: 400px;
+ padding: 10px 14px;
+ border: 1px solid var(--pfg-border);
+ border-radius: var(--pfg-radius);
+ font-size: 14px;
+ color: var(--pfg-text);
+ background: var(--pfg-card-bg);
+ transition: border-color var(--pfg-transition), box-shadow var(--pfg-transition);
+}
+
+.pfg-input:focus,
+.pfg-select:focus,
+.pfg-textarea:focus {
+ outline: none;
+ border-color: var(--pfg-primary);
+ box-shadow: 0 0 0 3px var(--pfg-primary-light);
+}
+
+.pfg-textarea {
+ min-height: 100px;
+ resize: vertical;
+}
+
+.pfg-select {
+ appearance: none;
+ background-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"%3E%3Cpath fill="%2364748b" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"/%3E%3C/svg%3E');
+ background-repeat: no-repeat;
+ background-position: right 12px center;
+ background-size: 16px;
+ padding-right: 40px;
+}
+
+/* Toggle switch */
+.pfg-toggle {
+ position: relative;
+ display: inline-block;
+ width: 48px;
+ height: 26px;
+}
+
+.pfg-toggle input {
+ opacity: 0;
+ width: 0;
+ height: 0;
+}
+
+.pfg-toggle-slider {
+ position: absolute;
+ cursor: pointer;
+ inset: 0;
+ background: var(--pfg-border);
+ border-radius: 26px;
+ transition: background var(--pfg-transition);
+}
+
+.pfg-toggle-slider::before {
+ content: '';
+ position: absolute;
+ height: 20px;
+ width: 20px;
+ left: 3px;
+ bottom: 3px;
+ background: white;
+ border-radius: 50%;
+ transition: transform var(--pfg-transition);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
+}
+
+.pfg-toggle input:checked + .pfg-toggle-slider {
+ background: var(--pfg-primary);
+}
+
+.pfg-toggle input:checked + .pfg-toggle-slider::before {
+ transform: translateX(22px);
+}
+
+.pfg-toggle input:focus + .pfg-toggle-slider {
+ box-shadow: 0 0 0 3px var(--pfg-primary-light);
+}
+
+/* Color picker */
+.pfg-color-picker {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+.pfg-color-preview {
+ width: 36px;
+ height: 36px;
+ border-radius: var(--pfg-radius);
+ border: 1px solid var(--pfg-border);
+ cursor: pointer;
+}
+
+/* Range slider */
+.pfg-range {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+}
+
+.pfg-range input[type="range"] {
+ flex: 1;
+ max-width: 200px;
+ height: 6px;
+ border-radius: 3px;
+ background: var(--pfg-border);
+ appearance: none;
+}
+
+.pfg-range input[type="range"]::-webkit-slider-thumb {
+ appearance: none;
+ width: 18px;
+ height: 18px;
+ border-radius: 50%;
+ background: var(--pfg-primary);
+ cursor: pointer;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+}
+
+.pfg-range-value {
+ min-width: 40px;
+ text-align: center;
+ font-size: 14px;
+ color: var(--pfg-text-muted);
+}
+
+/* ==========================================================================
+ Buttons
+ ========================================================================== */
+
+.pfg-btn {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ padding: 10px 18px;
+ border: none;
+ border-radius: var(--pfg-radius);
+ font-size: 14px;
+ font-weight: 500;
+ cursor: pointer;
+ transition: all var(--pfg-transition);
+}
+
+.pfg-btn-primary {
+ background: var(--pfg-primary);
+ color: white;
+}
+
+.pfg-btn-primary:hover {
+ background: var(--pfg-primary-hover);
+}
+
+.pfg-btn-secondary {
+ background: var(--pfg-bg);
+ color: var(--pfg-text);
+ border: 1px solid var(--pfg-border);
+}
+
+.pfg-btn-secondary:hover {
+ background: var(--pfg-border-light);
+}
+
+.pfg-btn-success {
+ background: var(--pfg-success);
+ color: white;
+}
+
+.pfg-btn-danger {
+ background: var(--pfg-error);
+ color: white;
+}
+
+.pfg-btn:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+.pfg-btn .dashicons {
+ font-size: 16px;
+ width: 16px;
+ height: 16px;
+}
+
+/* ==========================================================================
+ Image Grid (Gallery Editor)
+ ========================================================================== */
+
+.pfg-image-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
+ gap: 16px;
+ margin-top: 20px;
+}
+
+.pfg-image-item {
+ position: relative;
+ background: var(--pfg-bg);
+ border-radius: var(--pfg-radius);
+ overflow: hidden;
+ cursor: move;
+ transition: transform var(--pfg-transition), box-shadow var(--pfg-transition);
+}
+
+.pfg-image-item:hover {
+ transform: translateY(-2px);
+ box-shadow: var(--pfg-shadow-lg);
+}
+
+.pfg-image-item.ui-sortable-helper {
+ box-shadow: var(--pfg-shadow-lg);
+ transform: rotate(2deg);
+}
+
+.pfg-image-thumb {
+ aspect-ratio: 1;
+ width: 100%;
+ object-fit: cover;
+}
+
+.pfg-image-actions {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ display: flex;
+ gap: 4px;
+ opacity: 0;
+ transition: opacity var(--pfg-transition);
+}
+
+.pfg-image-item:hover .pfg-image-actions {
+ opacity: 1;
+}
+
+.pfg-image-action {
+ width: 28px;
+ height: 28px;
+ border: none;
+ border-radius: 50%;
+ background: rgba(255, 255, 255, 0.9);
+ color: var(--pfg-text);
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition: background var(--pfg-transition);
+}
+
+.pfg-image-action:hover {
+ background: white;
+}
+
+.pfg-image-action.pfg-image-delete:hover {
+ background: var(--pfg-error);
+ color: white;
+}
+
+.pfg-image-info {
+ padding: 12px;
+}
+
+.pfg-image-title {
+ font-size: 13px;
+ font-weight: 500;
+ color: var(--pfg-text);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin: 0 0 4px;
+}
+
+.pfg-image-filters {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 4px;
+}
+
+.pfg-image-filter-tag {
+ padding: 2px 8px;
+ background: var(--pfg-primary-light);
+ color: var(--pfg-primary);
+ font-size: 11px;
+ font-weight: 500;
+ border-radius: 4px;
+}
+
+/* Upload area */
+.pfg-upload-area {
+ border: 2px dashed var(--pfg-border);
+ border-radius: var(--pfg-radius-lg);
+ padding: 40px;
+ text-align: center;
+ cursor: pointer;
+ transition: border-color var(--pfg-transition), background var(--pfg-transition);
+}
+
+.pfg-upload-area:hover {
+ border-color: var(--pfg-primary);
+ background: var(--pfg-primary-light);
+}
+
+.pfg-upload-area.pfg-dragover {
+ border-color: var(--pfg-primary);
+ background: var(--pfg-primary-light);
+ border-style: solid;
+ box-shadow: 0 0 0 4px rgba(56, 88, 233, 0.2);
+}
+
+.pfg-upload-area.pfg-uploading {
+ opacity: 0.7;
+ pointer-events: none;
+}
+
+.pfg-upload-icon {
+ font-size: 48px;
+ color: var(--pfg-text-light);
+ margin-bottom: 15px;
+}
+
+.pfg-upload-text {
+ font-size: 16px;
+ color: var(--pfg-text);
+ margin-bottom: 5px;
+}
+
+.pfg-upload-hint {
+ font-size: 13px;
+ color: var(--pfg-text-muted);
+}
+
+/* Upload actions button container */
+.pfg-upload-actions {
+ display: flex;
+ gap: 12px;
+ margin: 20px 0;
+ padding: 0 15px;
+}
+
+/* Empty state styling */
+.pfg-no-images {
+ text-align: center;
+ padding: 40px 20px;
+ color: var(--pfg-text-muted);
+}
+
+.pfg-no-images .dashicons {
+ font-size: 48px;
+ width: 48px;
+ height: 48px;
+ color: var(--pfg-border);
+ display: block;
+ margin: 0 auto 15px;
+}
+
+.pfg-no-images p {
+ margin: 0;
+ font-size: 14px;
+ color: var(--pfg-text-muted);
+}
+
+/* ==========================================================================
+ Shortcode Box
+ ========================================================================== */
+
+.pfg-shortcode-box {
+ background: var(--pfg-bg);
+ border-radius: var(--pfg-radius);
+ padding: 15px;
+}
+
+.pfg-shortcode-wrapper {
+ display: flex;
+ gap: 10px;
+ margin: 10px 0;
+}
+
+.pfg-shortcode-wrapper code {
+ flex: 1;
+ padding: 10px 14px;
+ background: white;
+ border: 1px solid var(--pfg-border);
+ border-radius: var(--pfg-radius);
+ font-size: 13px;
+ color: var(--pfg-primary);
+}
+
+.pfg-copy-shortcode {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ white-space: nowrap;
+}
+
+.pfg-shortcode-note {
+ font-size: 12px;
+ color: var(--pfg-text-muted);
+ margin: 10px 0 0;
+}
+
+.pfg-shortcode-note code {
+ background: white;
+ padding: 2px 6px;
+ border-radius: 4px;
+ font-size: 11px;
+}
+
+/* ==========================================================================
+ Filters Page
+ ========================================================================== */
+
+.pfg-filters-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.pfg-filter-item {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+ padding: 15px;
+ background: var(--pfg-card-bg);
+ border: 1px solid var(--pfg-border);
+ border-radius: var(--pfg-radius);
+ margin-bottom: 10px;
+ cursor: move;
+}
+
+.pfg-filter-item:hover {
+ border-color: var(--pfg-primary);
+}
+
+.pfg-filter-drag {
+ color: var(--pfg-text-light);
+ cursor: move;
+}
+
+.pfg-filter-name-input {
+ flex: 1;
+ padding: 8px 12px;
+ border: 1px solid var(--pfg-border);
+ border-radius: var(--pfg-radius);
+ font-size: 14px;
+}
+
+.pfg-filter-slug {
+ color: var(--pfg-text-muted);
+ font-size: 12px;
+ min-width: 120px;
+}
+
+.pfg-filter-delete {
+ color: var(--pfg-text-light);
+ cursor: pointer;
+ transition: color var(--pfg-transition);
+}
+
+.pfg-filter-delete:hover {
+ color: var(--pfg-error);
+}
+
+/* ==========================================================================
+ Notices
+ ========================================================================== */
+
+.pfg-notice {
+ padding: 15px 20px;
+ border-radius: var(--pfg-radius);
+ margin-bottom: 20px;
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+}
+
+.pfg-notice-info {
+ background: #eff6ff;
+ border: 1px solid #bfdbfe;
+ color: #1e40af;
+}
+
+.pfg-notice-success {
+ background: #ecfdf5;
+ border: 1px solid #a7f3d0;
+ color: #065f46;
+}
+
+.pfg-notice-warning {
+ background: #fffbeb;
+ border: 1px solid #fcd34d;
+ color: #92400e;
+}
+
+.pfg-notice-error {
+ background: #fef2f2;
+ border: 1px solid #fecaca;
+ color: #991b1b;
+}
+
+.pfg-notice-icon {
+ flex-shrink: 0;
+}
+
+.pfg-notice-content {
+ flex: 1;
+}
+
+.pfg-notice-title {
+ font-weight: 600;
+ margin-bottom: 4px;
+}
+
+/* ==========================================================================
+ Responsive
+ ========================================================================== */
+
+@media (max-width: 782px) {
+ .pfg-admin-wrap {
+ padding: 0 10px;
+ }
+
+ .pfg-form-row {
+ grid-template-columns: 1fr;
+ gap: 8px;
+ }
+
+ .pfg-form-label {
+ padding-top: 0;
+ }
+
+ .pfg-image-grid {
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
+ }
+
+ .pfg-tabs {
+ overflow-x: auto;
+ }
+
+ .pfg-tab {
+ white-space: nowrap;
+ }
+}
+
+/* ==========================================================================
+ Pro Badge & Locked Settings (Freemium)
+ ========================================================================== */
+
+/* Pro badge */
+.pfg-pro-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: 3px;
+ padding: 2px 8px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: #fff;
+ font-size: 10px;
+ font-weight: 700;
+ text-transform: uppercase;
+ border-radius: 4px;
+ letter-spacing: 0.5px;
+ vertical-align: middle;
+ margin-left: 8px;
+}
+
+.pfg-pro-badge-link {
+ text-decoration: none;
+}
+
+.pfg-pro-badge-link:hover .pfg-pro-badge {
+ background: linear-gradient(135deg, #764ba2 0%, #667eea 100%);
+ box-shadow: 0 2px 8px rgba(102, 126, 234, 0.4);
+}
+
+/* Locked setting row */
+.pfg-setting-locked {
+ position: relative;
+}
+
+.pfg-setting-locked th {
+ color: var(--pfg-text-muted);
+}
+
+/* Locked input wrapper */
+.pfg-locked-input {
+ position: relative;
+}
+
+.pfg-input-disabled input,
+.pfg-input-disabled select,
+.pfg-input-disabled textarea,
+.pfg-input-disabled .pfg-toggle-slider {
+ opacity: 0.5;
+ pointer-events: none;
+ cursor: not-allowed;
+}
+
+/* Locked overlay */
+.pfg-locked-overlay {
+ position: absolute;
+ inset: 0;
+ background: rgba(255, 255, 255, 0.9);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: var(--pfg-radius);
+ z-index: 10;
+ opacity: 0;
+ transition: opacity var(--pfg-transition);
+}
+
+.pfg-locked-input:hover .pfg-locked-overlay {
+ opacity: 1;
+}
+
+.pfg-locked-content {
+ text-align: center;
+ padding: 15px;
+}
+
+.pfg-locked-content .dashicons {
+ font-size: 24px;
+ width: 24px;
+ height: 24px;
+ color: var(--pfg-text-muted);
+ margin-bottom: 8px;
+}
+
+.pfg-locked-content p {
+ margin: 0 0 10px;
+ font-size: 13px;
+ color: var(--pfg-text);
+}
+
+.pfg-upgrade-btn {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
+ border: none !important;
+ color: #fff !important;
+ font-weight: 600;
+ padding: 8px 16px;
+ border-radius: var(--pfg-radius);
+ font-size: 12px;
+}
+
+.pfg-upgrade-btn:hover {
+ background: linear-gradient(135deg, #764ba2 0%, #667eea 100%) !important;
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
+}
+
+/* Premium feature section */
+.pfg-premium-section {
+ position: relative;
+ border: 2px dashed var(--pfg-border);
+ border-radius: var(--pfg-radius-lg);
+ padding: 20px;
+ margin: 20px 0;
+}
+
+.pfg-premium-section::before {
+ content: 'PREMIUM';
+ position: absolute;
+ top: -10px;
+ left: 20px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: #fff;
+ padding: 2px 10px;
+ font-size: 10px;
+ font-weight: 700;
+ border-radius: 4px;
+}
+
+.pfg-premium-section.pfg-locked {
+ opacity: 0.7;
+}
+
+.pfg-premium-section.pfg-locked::after {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background: rgba(255, 255, 255, 0.5);
+ border-radius: var(--pfg-radius-lg);
+ pointer-events: none;
+}
+
+/* Upsell banner */
+.pfg-upsell-banner {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: #fff;
+ padding: 20px;
+ border-radius: var(--pfg-radius-lg);
+ margin: 20px 0;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 20px;
+}
+
+.pfg-upsell-content h3 {
+ margin: 0 0 5px;
+ font-size: 18px;
+ font-weight: 600;
+}
+
+.pfg-upsell-content p {
+ margin: 0;
+ opacity: 0.9;
+ font-size: 14px;
+}
+
+.pfg-upsell-btn {
+ background: #fff;
+ color: #667eea;
+ padding: 12px 24px;
+ border-radius: var(--pfg-radius);
+ font-weight: 600;
+ text-decoration: none;
+ white-space: nowrap;
+ transition: all var(--pfg-transition);
+}
+
+.pfg-upsell-btn:hover {
+ background: #f8fafc;
+ color: #764ba2;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
+}
+
+/* Tab with Pro badge */
+.pfg-tab .pfg-pro-badge {
+ margin-left: 6px;
+ padding: 1px 5px;
+ font-size: 8px;
+}
+
+/* ==========================================================================
+ Filter Checkbox Hierarchy Styles (Edit Image Modal)
+ ========================================================================== */
+
+.pfg-filter-checkboxes {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ padding: 10px;
+ background: #f8fafc;
+ border-radius: 8px;
+ border: 1px solid #e2e8f0;
+ max-height: 250px;
+ overflow-y: auto;
+}
+
+.pfg-checkbox-label {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ padding: 6px 12px;
+ background: white;
+ border: 1px solid #e2e8f0;
+ border-radius: 6px;
+ cursor: pointer;
+ font-size: 13px;
+ color: #475569;
+ transition: all 0.2s ease;
+ white-space: nowrap;
+}
+
+.pfg-checkbox-label:hover {
+ border-color: var(--pfg-primary);
+ background: var(--pfg-primary-light);
+}
+
+.pfg-checkbox-label input[type="checkbox"] {
+ width: 14px;
+ height: 14px;
+ margin: 0;
+ cursor: pointer;
+}
+
+.pfg-checkbox-label input[type="checkbox"]:checked + .pfg-filter-dot {
+ box-shadow: 0 0 0 2px rgba(56, 88, 233, 0.3);
+}
+
+.pfg-filter-dot {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ flex-shrink: 0;
+ transition: all 0.2s ease;
+}
+
+.pfg-tree-connector {
+ color: #94a3b8;
+ font-size: 12px;
+ margin-right: 2px;
+}
+
+.pfg-filter-name {
+ color: inherit;
+}
+
+/* Children group container */
+.pfg-filter-children-group {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 6px;
+ padding: 8px 0;
+ margin-top: 4px;
+}
+
+/* =====================================
+ Tree-style Filter Checkboxes
+ ===================================== */
+
+/* Container for tree items */
+.pfg-tree-filter-item {
+ display: block;
+}
+
+/* Each filter row */
+.pfg-tree-filter-row {
+ display: flex;
+ align-items: center;
+ padding: 2px 0;
+}
+
+/* Checkbox label - wraps all content */
+.pfg-tree-checkbox-label {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ cursor: pointer;
+ padding: 4px 8px;
+ border-radius: 4px;
+ transition: all 0.15s ease;
+ font-size: 13px;
+ color: #475569;
+}
+
+.pfg-tree-checkbox-label:hover {
+ background: #f1f5f9;
+}
+
+.pfg-tree-checkbox-label:has(input:checked) {
+ background: var(--pfg-primary-light, #eef2ff);
+ color: var(--pfg-primary, #3858e9);
+}
+
+/* Custom checkbox styling */
+.pfg-tree-checkbox-label input[type="checkbox"] {
+ width: 14px;
+ height: 14px;
+ margin: 0;
+ cursor: pointer;
+ accent-color: var(--pfg-primary, #3858e9);
+}
+
+/* Toggle button (+/-) for parents */
+.pfg-tree-toggle {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 16px;
+ height: 16px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #64748b;
+ background: #e2e8f0;
+ border-radius: 3px;
+ cursor: pointer;
+ transition: all 0.15s ease;
+ flex-shrink: 0;
+}
+
+.pfg-tree-toggle:hover {
+ background: var(--pfg-primary-light, #eef2ff);
+ color: var(--pfg-primary, #3858e9);
+}
+
+/* Spacer when no toggle - hide it completely */
+.pfg-tree-toggle-spacer {
+ display: none;
+}
+
+/* Toggle icons using ::before - direct child only to avoid affecting nested */
+.pfg-filter-collapsible-group[data-expanded="false"] > .pfg-tree-filter-row .pfg-tree-toggle::before,
+.pfg-filter-collapsible-group[data-expanded="false"] > div > .pfg-tree-filter-row .pfg-tree-toggle::before {
+ content: "+";
+}
+
+.pfg-filter-collapsible-group[data-expanded="true"] > .pfg-tree-filter-row .pfg-tree-toggle::before,
+.pfg-filter-collapsible-group[data-expanded="true"] > div > .pfg-tree-filter-row .pfg-tree-toggle::before {
+ content: "−";
+}
+
+/* Default state for toggle */
+.pfg-tree-toggle::before {
+ content: "−";
+ font-size: 14px;
+}
+
+.pfg-tree-toggle {
+ font-size: 0; /* Hide any text content */
+}
+
+/* Hide children when collapsed */
+.pfg-filter-collapsible-group[data-expanded="false"] .pfg-collapsible-content {
+ display: none;
+}
+
+/* Tree connector */
+.pfg-tree-connector {
+ color: #94a3b8;
+ font-size: 12px;
+ margin-right: 2px;
+ flex-shrink: 0;
+}
+
+/* Color dot */
+.pfg-tree-dot {
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ flex-shrink: 0;
+}
+
+/* Filter name */
+.pfg-tree-filter-name {
+ color: inherit;
+}
+
+/* Children container */
+.pfg-tree-children {
+ display: block;
+}
+
+/* Collapsible content transition */
+.pfg-collapsible-content {
+ overflow: hidden;
+ transition: all 0.2s ease-out;
+}
+
+/* Legacy compatibility - keep old classes working */
+.pfg-filter-collapsible-group {
+ display: block;
+}
+
+.pfg-collapse-toggle {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 16px;
+ height: 16px;
+ font-size: 8px;
+ color: #94a3b8;
+ background: #f1f5f9;
+ border-radius: 3px;
+ cursor: pointer;
+ transition: all 0.2s ease;
+ margin-right: 4px;
+}
+
+.pfg-collapse-toggle:hover {
+ background: var(--pfg-primary-light, #eef2ff);
+ color: var(--pfg-primary, #3858e9);
+}
+
+/* Collapsed state - rotate arrow */
+.pfg-filter-collapsible-group[data-expanded="false"] .pfg-collapse-toggle {
+ transform: rotate(-90deg);
+}
+
+/* Parent filter styling */
+.pfg-checkbox-label.pfg-parent-filter {
+ font-weight: 500;
+}
+
+/* Child filter styling */
+.pfg-checkbox-label.pfg-child-filter {
+ font-size: 12px;
+ padding: 5px 10px;
+}
+
+/* Checked state */
+.pfg-checkbox-label:has(input:checked) {
+ background: var(--pfg-primary-light);
+ border-color: var(--pfg-primary);
+ color: var(--pfg-primary);
+}
+
+/* Editable slug field styling */
+.pfg-col-slug input.pfg-editable-slug {
+ width: 100%;
+ padding: 6px 10px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ font-size: 12px;
+ font-family: 'Monaco', 'Consolas', monospace;
+ color: var(--pfg-primary);
+ background: transparent;
+ transition: all 0.2s ease;
+}
+
+.pfg-col-slug input.pfg-editable-slug:hover {
+ background: #f1f5f9;
+}
+
+.pfg-col-slug input.pfg-editable-slug:focus {
+ background: white;
+ border-color: var(--pfg-primary);
+ outline: none;
+ box-shadow: 0 0 0 3px rgba(56, 88, 233, 0.1);
+}
+
+/* Duplicate slug warning */
+.pfg-col-slug input.pfg-editable-slug.pfg-slug-warning {
+ border-color: #f59e0b;
+ background: #fffbeb;
+}
+
+.pfg-col-slug input.pfg-editable-slug.pfg-slug-duplicate {
+ border-color: #ef4444;
+ background: #fef2f2;
+}
+
+/* ==========================================================================
+ Disabled Form Rows (Layout-dependent settings)
+ ========================================================================== */
+
+.pfg-form-row.pfg-row-disabled {
+ opacity: 0.5;
+ pointer-events: none;
+ position: relative;
+}
+
+.pfg-form-row.pfg-row-disabled::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: transparent;
+ cursor: not-allowed;
+}
+
+.pfg-form-row.pfg-row-disabled select,
+.pfg-form-row.pfg-row-disabled input {
+ cursor: not-allowed;
+ background-color: #f1f5f9;
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/js/pfg-admin.js b/wp-content/plugins/portfolio-filter-gallery/admin/js/pfg-admin.js
new file mode 100644
index 0000000..c60337b
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/js/pfg-admin.js
@@ -0,0 +1,654 @@
+/**
+ * Portfolio Filter Gallery - Admin JavaScript
+ *
+ * @package Portfolio_Filter_Gallery
+ * @version 2.0.0
+ */
+
+(function($) {
+ 'use strict';
+
+ /**
+ * Admin gallery editor functionality
+ */
+ const PFGAdmin = {
+
+ /**
+ * Initialize
+ */
+ init: function() {
+ this.bindEvents();
+ this.initTabs();
+ this.initSortable();
+ this.initColorPickers();
+ this.initRangeSliders();
+ this.initMediaUploader();
+ },
+
+ /**
+ * Bind event handlers
+ */
+ bindEvents: function() {
+ // Copy shortcode
+ $(document).on('click', '.pfg-copy-shortcode', this.copyShortcode);
+
+ // Delete image
+ $(document).on('click', '.pfg-image-delete', this.deleteImage);
+
+ // Edit image
+ $(document).on('click', '.pfg-image-edit', this.editImage);
+
+ // Toggle settings
+ $(document).on('change', '.pfg-toggle input', this.handleToggle);
+
+ // Filter actions
+ $(document).on('click', '.pfg-add-filter', this.addFilter);
+ $(document).on('click', '.pfg-filter-delete', this.deleteFilter);
+ $(document).on('blur', '.pfg-filter-name-input', this.updateFilter);
+ },
+
+ /**
+ * Initialize tabs
+ */
+ initTabs: function() {
+ $('.pfg-tab').on('click', function(e) {
+ e.preventDefault();
+
+ const $this = $(this);
+ const target = $this.data('tab');
+
+ // Update tab buttons
+ $this.siblings().removeClass('active');
+ $this.addClass('active');
+
+ // Update tab content
+ $this.closest('.pfg-tabs-wrapper').find('.pfg-tab-content').removeClass('active');
+ $('#' + target).addClass('active');
+ });
+ },
+
+ /**
+ * Initialize sortable image grid
+ */
+ initSortable: function() {
+ if (!$.fn.sortable) return;
+
+ $('.pfg-image-grid').sortable({
+ items: '.pfg-image-item',
+ cursor: 'move',
+ opacity: 0.8,
+ placeholder: 'pfg-image-placeholder',
+ tolerance: 'pointer',
+ update: function(event, ui) {
+ PFGAdmin.updateImageOrder();
+ }
+ });
+
+ // Filters list
+ $('.pfg-filters-list').sortable({
+ items: '.pfg-filter-item',
+ handle: '.pfg-filter-drag',
+ cursor: 'move',
+ opacity: 0.8,
+ update: function(event, ui) {
+ PFGAdmin.updateFilterOrder();
+ }
+ });
+ },
+
+ initColorPickers: function() {
+ if (!$.fn.wpColorPicker) return;
+
+ $('.pfg-color-input').wpColorPicker({
+ change: function(event, ui) {
+ // Update the input value when color is changed via drag
+ $(this).val(ui.color.toCSS()).trigger('change');
+ },
+ clear: function() {
+ $(this).trigger('change');
+ }
+ });
+ },
+
+ /**
+ * Initialize range sliders
+ */
+ initRangeSliders: function() {
+ $('.pfg-range input[type="range"]').on('input', function() {
+ const $this = $(this);
+ const value = $this.val();
+ const suffix = $this.data('suffix') || '';
+
+ $this.closest('.pfg-range').find('.pfg-range-value').text(value + suffix);
+ });
+ },
+
+ /**
+ * Initialize media uploader
+ */
+ initMediaUploader: function() {
+ let mediaFrame;
+
+ $(document).on('click', '.pfg-upload-area, .pfg-add-images', function(e) {
+ e.preventDefault();
+
+ if (mediaFrame) {
+ mediaFrame.open();
+ return;
+ }
+
+ mediaFrame = wp.media({
+ title: pfgAdmin.i18n.selectImages,
+ button: {
+ text: pfgAdmin.i18n.useSelected
+ },
+ multiple: true,
+ library: {
+ type: 'image'
+ }
+ });
+
+ mediaFrame.on('select', function() {
+ const selection = mediaFrame.state().get('selection');
+ const imageIds = [];
+
+ selection.each(function(attachment) {
+ imageIds.push(attachment.id);
+ });
+
+ if (imageIds.length) {
+ PFGAdmin.uploadImages(imageIds);
+ }
+ });
+
+ mediaFrame.open();
+ });
+
+ // Initialize drag and drop file upload
+ this.initDragDropUpload();
+ },
+
+ /**
+ * Initialize drag and drop file upload
+ */
+ initDragDropUpload: function() {
+ const $uploadArea = $('.pfg-upload-area');
+
+ if (!$uploadArea.length) return;
+
+ // Prevent default behavior for drag events on the whole document
+ $(document).on('dragover dragleave drop', function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ });
+
+ // Highlight upload area on drag over
+ $uploadArea.on('dragover dragenter', function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ $(this).addClass('pfg-dragover');
+ });
+
+ // Remove highlight on drag leave
+ $uploadArea.on('dragleave dragend drop', function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ $(this).removeClass('pfg-dragover');
+ });
+
+ // Handle file drop
+ $uploadArea.on('drop', function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ $(this).removeClass('pfg-dragover');
+
+ const files = e.originalEvent.dataTransfer.files;
+
+ if (files.length > 0) {
+ PFGAdmin.uploadDroppedFiles(files);
+ }
+ });
+ },
+
+ /**
+ * Upload dropped files via AJAX
+ */
+ uploadDroppedFiles: function(files) {
+ const $grid = $('.pfg-image-grid');
+ const $uploadArea = $('.pfg-upload-area');
+
+ // Show loading state
+ $uploadArea.addClass('pfg-uploading');
+ $uploadArea.find('.pfg-upload-text').text('Uploading...');
+
+ // Create FormData object
+ const formData = new FormData();
+ formData.append('action', 'pfg_upload_dropped_files');
+ formData.append('security', pfgAdmin.nonce);
+ formData.append('gallery_id', pfgAdmin.galleryId);
+
+ // Add all image files
+ let imageCount = 0;
+ for (let i = 0; i < files.length; i++) {
+ if (files[i].type.match(/^image\//)) {
+ formData.append('files[]', files[i]);
+ imageCount++;
+ }
+ }
+
+ if (imageCount === 0) {
+ PFGAdmin.showNotice('error', 'Please drop only image files.');
+ PFGAdmin.resetUploadArea();
+ return;
+ }
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: formData,
+ processData: false,
+ contentType: false,
+ beforeSend: function() {
+ $grid.addClass('pfg-loading');
+ },
+ success: function(response) {
+ if (response.success) {
+ PFGAdmin.refreshImageGrid(response.data.images);
+ PFGAdmin.showNotice('success', response.data.message || 'Images uploaded successfully!');
+ } else {
+ PFGAdmin.showNotice('error', response.data.message || 'Upload failed.');
+ }
+ },
+ error: function() {
+ PFGAdmin.showNotice('error', 'Upload failed. Please try again.');
+ },
+ complete: function() {
+ $grid.removeClass('pfg-loading');
+ PFGAdmin.resetUploadArea();
+ }
+ });
+ },
+
+ /**
+ * Reset upload area after upload
+ */
+ resetUploadArea: function() {
+ const $uploadArea = $('.pfg-upload-area');
+ $uploadArea.removeClass('pfg-uploading');
+ $uploadArea.find('.pfg-upload-text').text('Drag & drop images here or click to upload');
+ },
+
+ /**
+ * Upload images via AJAX
+ */
+ uploadImages: function(imageIds) {
+ const $grid = $('.pfg-image-grid');
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: {
+ action: 'pfg_upload_images',
+ security: pfgAdmin.nonce,
+ gallery_id: pfgAdmin.galleryId,
+ image_ids: imageIds
+ },
+ beforeSend: function() {
+ $grid.addClass('pfg-loading');
+ },
+ success: function(response) {
+ if (response.success) {
+ PFGAdmin.refreshImageGrid(response.data.images);
+ } else {
+ PFGAdmin.showNotice('error', response.data.message);
+ }
+ },
+ error: function() {
+ PFGAdmin.showNotice('error', pfgAdmin.i18n.error);
+ },
+ complete: function() {
+ $grid.removeClass('pfg-loading');
+ }
+ });
+ },
+
+ /**
+ * Delete image
+ */
+ deleteImage: function(e) {
+ e.preventDefault();
+
+ if (!confirm(pfgAdmin.i18n.confirmDelete)) {
+ return;
+ }
+
+ const $item = $(this).closest('.pfg-image-item');
+ const imageId = $item.data('id');
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: {
+ action: 'pfg_remove_image',
+ security: pfgAdmin.nonce,
+ gallery_id: pfgAdmin.galleryId,
+ image_id: imageId
+ },
+ success: function(response) {
+ if (response.success) {
+ $item.fadeOut(300, function() {
+ $(this).remove();
+ });
+ } else {
+ PFGAdmin.showNotice('error', response.data.message);
+ }
+ }
+ });
+ },
+
+ /**
+ * Edit image (open modal)
+ */
+ editImage: function(e) {
+ e.preventDefault();
+
+ const $item = $(this).closest('.pfg-image-item');
+ const imageId = $item.data('id');
+
+ // TODO: Open edit modal with image details
+ console.log('Edit image:', imageId);
+ },
+
+ /**
+ * Update image order
+ */
+ updateImageOrder: function() {
+ const order = [];
+
+ $('.pfg-image-item').each(function() {
+ order.push($(this).data('id'));
+ });
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: {
+ action: 'pfg_reorder_images',
+ security: pfgAdmin.nonce,
+ gallery_id: pfgAdmin.galleryId,
+ order: order
+ }
+ });
+ },
+
+ /**
+ * Copy shortcode to clipboard
+ */
+ copyShortcode: function(e) {
+ e.preventDefault();
+
+ const $btn = $(this);
+ const $code = $($btn.data('clipboard-target'));
+ const text = $code.text();
+
+ // Try modern clipboard API first, fallback to execCommand
+ if (navigator.clipboard && navigator.clipboard.writeText) {
+ navigator.clipboard.writeText(text).then(function() {
+ PFGAdmin.showCopySuccess($btn);
+ }).catch(function() {
+ PFGAdmin.fallbackCopy(text, $btn);
+ });
+ } else {
+ PFGAdmin.fallbackCopy(text, $btn);
+ }
+ },
+
+ /**
+ * Fallback copy using execCommand for non-HTTPS
+ */
+ fallbackCopy: function(text, $btn) {
+ const textArea = document.createElement('textarea');
+ textArea.value = text;
+ textArea.style.position = 'fixed';
+ textArea.style.left = '-9999px';
+ document.body.appendChild(textArea);
+ textArea.focus();
+ textArea.select();
+
+ try {
+ document.execCommand('copy');
+ PFGAdmin.showCopySuccess($btn);
+ } catch (err) {
+ console.error('Copy failed:', err);
+ }
+
+ document.body.removeChild(textArea);
+ },
+
+ /**
+ * Show copy success feedback
+ */
+ showCopySuccess: function($btn) {
+ const originalHtml = $btn.html();
+ $btn.text('Copied!');
+
+ setTimeout(function() {
+ $btn.html(' Copy');
+ }, 2000);
+ },
+
+ /**
+ * Handle toggle change
+ */
+ handleToggle: function() {
+ const $toggle = $(this);
+ const $related = $($toggle.data('toggle-related'));
+
+ if ($toggle.is(':checked')) {
+ $related.slideDown(200);
+ } else {
+ $related.slideUp(200);
+ }
+ },
+
+ /**
+ * Add new filter
+ */
+ addFilter: function(e) {
+ e.preventDefault();
+
+ const $input = $('.pfg-new-filter-input');
+ const name = $input.val().trim();
+
+ if (!name) {
+ $input.focus();
+ return;
+ }
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: {
+ action: 'pfg_add_filter',
+ security: pfgAdmin.nonce,
+ name: name
+ },
+ success: function(response) {
+ if (response.success) {
+ location.reload();
+ } else {
+ PFGAdmin.showNotice('error', response.data.message);
+ }
+ }
+ });
+ },
+
+ /**
+ * Delete filter
+ */
+ deleteFilter: function(e) {
+ e.preventDefault();
+
+ if (!confirm(pfgAdmin.i18n.confirmDelete)) {
+ return;
+ }
+
+ const $item = $(this).closest('.pfg-filter-item');
+ const filterId = $item.data('id');
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: {
+ action: 'pfg_delete_filter',
+ security: pfgAdmin.nonce,
+ filter_id: filterId
+ },
+ success: function(response) {
+ if (response.success) {
+ $item.fadeOut(300, function() {
+ $(this).remove();
+ });
+ } else {
+ PFGAdmin.showNotice('error', response.data.message);
+ }
+ }
+ });
+ },
+
+ /**
+ * Update filter name
+ */
+ updateFilter: function() {
+ const $input = $(this);
+ const $item = $input.closest('.pfg-filter-item');
+ const filterId = $item.data('id');
+ const name = $input.val().trim();
+
+ if (!name) {
+ return;
+ }
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: {
+ action: 'pfg_update_filter',
+ security: pfgAdmin.nonce,
+ filter_id: filterId,
+ name: name
+ }
+ });
+ },
+
+ /**
+ * Update filter order
+ */
+ updateFilterOrder: function() {
+ const order = [];
+
+ $('.pfg-filter-item').each(function() {
+ order.push($(this).data('id'));
+ });
+
+ $.ajax({
+ url: pfgAdmin.ajaxUrl,
+ type: 'POST',
+ data: {
+ action: 'pfg_reorder_filters',
+ security: pfgAdmin.nonce,
+ order: order
+ }
+ });
+ },
+
+ /**
+ * Refresh image grid
+ */
+ refreshImageGrid: function(images) {
+ const $grid = $('.pfg-image-grid');
+
+ // Remove "no images" message if present
+ $grid.find('.pfg-no-images').remove();
+
+ // Get current highest index
+ let currentIndex = $('.pfg-image-item').length;
+
+ images.forEach(function(image) {
+ const html = PFGAdmin.getImageItemHtml(image, currentIndex);
+ $grid.append(html);
+ currentIndex++;
+ });
+
+ // Show bulk actions bar if we have images
+ if ($('.pfg-image-item').length > 0) {
+ $('#pfg-bulk-actions').css('display', 'flex');
+ }
+ },
+
+ /**
+ * Get image item HTML
+ */
+ getImageItemHtml: function(image, index) {
+ if (typeof index === 'undefined') {
+ index = $('.pfg-image-item').length;
+ }
+ return `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `;
+ },
+
+ /**
+ * Show admin notice
+ */
+ showNotice: function(type, message) {
+ const $notice = $(`
+
+ ${message}
+
+ `);
+
+ $('.pfg-admin-wrap').prepend($notice);
+
+ setTimeout(function() {
+ $notice.fadeOut(300, function() {
+ $(this).remove();
+ });
+ }, 5000);
+ }
+ };
+
+ // Initialize on document ready
+ $(document).ready(function() {
+ PFGAdmin.init();
+ });
+
+ // Expose to global scope
+ window.PFGAdmin = PFGAdmin;
+
+})(jQuery);
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-images.php b/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-images.php
new file mode 100644
index 0000000..b401173
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-images.php
@@ -0,0 +1,1508 @@
+ID;
+$gallery = new PFG_Gallery( $gallery_id );
+$settings = $gallery->get_settings();
+$source = isset( $settings['source'] ) ? $settings['source'] : 'media';
+
+// Check if this is a WooCommerce gallery
+$is_woo_gallery = ( $source === 'woocommerce' && PFG_WooCommerce::is_active() && pfg_is_premium() );
+
+if ( $is_woo_gallery ) {
+ // Fetch WooCommerce products
+ $woo_args = array(
+ 'categories' => isset( $settings['woo_categories'] ) ? $settings['woo_categories'] : array(),
+ 'orderby' => isset( $settings['woo_orderby'] ) ? $settings['woo_orderby'] : 'date',
+ 'order' => isset( $settings['woo_order'] ) ? strtoupper( $settings['woo_order'] ) : 'DESC',
+ 'limit' => isset( $settings['woo_limit'] ) ? intval( $settings['woo_limit'] ) : -1,
+ );
+ $products = PFG_WooCommerce::get_products( $woo_args );
+ $images = array(); // Not used for WooCommerce
+} else {
+ // Regular media library images
+ $images = $gallery->get_images();
+ $products = array();
+}
+
+// Get filters - use new format first, then legacy
+$filters = get_option( 'pfg_filters', array() );
+
+if ( empty( $filters ) ) {
+ // Legacy fallback
+ $legacy_filters = get_option( 'awl_portfolio_filter_gallery_categories', array() );
+ foreach ( $legacy_filters as $id => $name ) {
+ if ( is_string( $name ) ) {
+ $filters[] = array(
+ 'id' => sanitize_key( $id ),
+ 'name' => $name,
+ 'slug' => sanitize_title( $name ),
+ 'parent' => '',
+ );
+ }
+ }
+}
+
+// Build hierarchical tree for display
+function pfg_build_filter_tree_for_images( $filters, $parent_id = '' ) {
+ $tree = array();
+ foreach ( $filters as $filter ) {
+ $filter_parent = isset( $filter['parent'] ) ? $filter['parent'] : '';
+ if ( $filter_parent === $parent_id ) {
+ $filter['children'] = pfg_build_filter_tree_for_images( $filters, $filter['id'] );
+ $tree[] = $filter;
+ }
+ }
+ return $tree;
+}
+
+// Render hierarchical filter checkboxes with tree structure matching hierarchy preview
+function pfg_render_filter_checkboxes( $filters, $depth = 0, $is_first_child = true ) {
+ $html = '';
+
+ foreach ( $filters as $filter ) {
+ // Skip 'all' filter - images are automatically included in 'All' view
+ if ( strtolower( $filter['slug'] ) === 'all' ) {
+ continue;
+ }
+
+ $has_children = ! empty( $filter['children'] );
+ $color = isset( $filter['color'] ) && $filter['color'] ? $filter['color'] : '#94a3b8';
+
+ // Wrapper for each filter item
+ $html .= '';
+
+ // Collapsible group wrapper if has children
+ if ( $has_children ) {
+ $html .= '
';
+ }
+
+ // Main filter row
+ $html .= '
';
+
+ // 1. Checkbox (first) - include data-parent for JS child detection
+ $parent_id = isset( $filter['parent'] ) ? $filter['parent'] : '';
+ $html .= '';
+ $html .= ' ';
+
+ // 2. Collapse toggle (+/-) for parents
+ if ( $has_children ) {
+ $html .= '− ';
+ } else {
+ // Spacer for alignment when no toggle
+ $html .= ' ';
+ }
+
+ // 3. Tree connector for child items
+ if ( $depth > 0 ) {
+ $html .= '└ ';
+ }
+
+ // 4. Color dot
+ $html .= ' ';
+
+ // 5. Filter name
+ $html .= '' . esc_html( $filter['name'] ) . ' ';
+ $html .= ' ';
+ $html .= '
'; // Close row
+
+ // Recursively render children
+ if ( $has_children ) {
+ $html .= '
';
+ $html .= pfg_render_filter_checkboxes( $filter['children'], $depth + 1, true );
+ $html .= '
';
+ $html .= '
'; // Close collapsible group
+ }
+
+ $html .= '
'; // Close item
+ }
+ return $html;
+}
+
+$filter_tree = pfg_build_filter_tree_for_images( $filters );
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-settings.php b/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-settings.php
new file mode 100644
index 0000000..65a20ab
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-settings.php
@@ -0,0 +1,1408 @@
+ID;
+$gallery = new PFG_Gallery( $gallery_id );
+$settings = $gallery->get_settings();
+
+// Get templates - use PFG_Templates if available, otherwise use default
+if ( class_exists( 'PFG_Templates' ) ) {
+ $templates = PFG_Templates::get_all();
+} else {
+ // Default templates fallback
+ $templates = array(
+ 'default' => array( 'name' => __( 'Default', 'portfolio-filter-gallery' ) ),
+ 'minimal' => array( 'name' => __( 'Minimal', 'portfolio-filter-gallery' ) ),
+ 'modern' => array( 'name' => __( 'Modern', 'portfolio-filter-gallery' ) ),
+ );
+}
+?>
+
+
+
+
+
+
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-shortcode.php b/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-shortcode.php
new file mode 100644
index 0000000..a1081fd
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/views/meta-box-shortcode.php
@@ -0,0 +1,132 @@
+ID;
+?>
+
+
+
+
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/views/page-filters.php b/wp-content/plugins/portfolio-filter-gallery/admin/views/page-filters.php
new file mode 100644
index 0000000..56f39a0
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/views/page-filters.php
@@ -0,0 +1,1264 @@
+ $name ) {
+ if ( is_string( $name ) ) {
+ // Generate Unicode-aware slug for non-Latin characters
+ $slug = sanitize_title( $name );
+ // If sanitize_title returned URL-encoded (contains %xx hex), use Unicode-aware slug
+ if ( empty( $slug ) || preg_match( '/%[0-9a-f]{2}/i', $slug ) ) {
+ $slug = mb_strtolower( preg_replace( '/[^\p{L}\p{N}]+/ui', '-', $name ), 'UTF-8' );
+ $slug = trim( $slug, '-' );
+ if ( empty( $slug ) ) {
+ $slug = 'filter-' . substr( md5( $name ), 0, 8 );
+ }
+ }
+ $all_filters[] = array(
+ 'id' => sanitize_key( $id ),
+ 'name' => $name,
+ 'slug' => $slug,
+ 'parent' => '',
+ 'color' => '',
+ 'order' => count( $all_filters ),
+ );
+ }
+ }
+ // Save to new format if we migrated
+ if ( ! empty( $all_filters ) ) {
+ update_option( 'pfg_filters', $all_filters );
+ }
+}
+
+/**
+ * Build hierarchical filter tree.
+ */
+function pfg_build_filter_tree( $filters, $parent_id = '' ) {
+ $tree = array();
+ foreach ( $filters as $filter ) {
+ $filter_parent = isset( $filter['parent'] ) ? $filter['parent'] : '';
+ if ( $filter_parent === $parent_id ) {
+ $filter['children'] = pfg_build_filter_tree( $filters, $filter['id'] );
+ $tree[] = $filter;
+ }
+ }
+ return $tree;
+}
+
+/**
+ * Generate hierarchical dropdown options HTML.
+ */
+function pfg_render_parent_options( $filters, $exclude_id = '', $selected_id = '', $depth = 0 ) {
+ $html = '';
+ foreach ( $filters as $filter ) {
+ if ( $filter['id'] === $exclude_id ) {
+ continue; // Don't allow selecting self as parent
+ }
+
+ $indent = str_repeat( '— ', $depth );
+ $prefix = $depth > 0 ? '└ ' : '';
+ $is_selected = ( $filter['id'] === $selected_id ) ? ' selected' : '';
+
+ $html .= '';
+ $html .= esc_html( $indent . $prefix . $filter['name'] );
+ $html .= ' ';
+
+ // Render children
+ if ( ! empty( $filter['children'] ) ) {
+ $html .= pfg_render_parent_options( $filter['children'], $exclude_id, $selected_id, $depth + 1 );
+ }
+ }
+ return $html;
+}
+
+// Build hierarchical tree for dropdown
+$filter_tree = pfg_build_filter_tree( $all_filters );
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 ? ' style="margin-left: ' . ($depth * 16) . 'px"' : '';
+ $prefix = $depth > 0 ? '
└ ' : '';
+ echo '
';
+ echo $prefix;
+ echo ' ';
+ echo '' . esc_html( $filter['name'] ) . ' ';
+ echo '
';
+ if ( ! empty( $filter['children'] ) ) {
+ pfg_render_hierarchy_tree( $filter['children'], $depth + 1 );
+ }
+ }
+ }
+ pfg_render_hierarchy_tree( $filter_tree );
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/views/page-settings.php b/wp-content/plugins/portfolio-filter-gallery/admin/views/page-settings.php
new file mode 100644
index 0000000..1b178c4
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/views/page-settings.php
@@ -0,0 +1,245 @@
+ false,
+ 'load_fontawesome' => false,
+ 'disable_lazy_load' => false,
+ 'lightbox_library' => 'ld-lightbox', // Default to LD Lightbox for Free version
+ 'custom_css' => '',
+ 'delete_data_uninstall' => false,
+);
+$settings = wp_parse_args( $settings, $defaults );
+
+// Handle form submission
+if ( isset( $_POST['pfg_save_global_settings'] ) ) {
+ if ( wp_verify_nonce( $_POST['_pfg_global_nonce'] ?? '', 'pfg_global_settings' ) && current_user_can( 'manage_options' ) ) {
+ $new_settings = array(
+ 'load_bootstrap' => isset( $_POST['load_bootstrap'] ),
+ 'load_fontawesome' => isset( $_POST['load_fontawesome'] ),
+ 'disable_lazy_load' => isset( $_POST['disable_lazy_load'] ),
+ 'lightbox_library' => sanitize_key( $_POST['lightbox_library'] ?? 'built-in' ),
+ 'custom_css' => sanitize_textarea_field( $_POST['custom_css'] ?? '' ),
+ 'delete_data_uninstall' => isset( $_POST['delete_data_uninstall'] ),
+ );
+
+ update_option( 'pfg_global_settings', $new_settings );
+ $settings = $new_settings;
+
+ echo '' . esc_html__( 'Settings saved successfully.', 'portfolio-filter-gallery' ) . '
';
+ }
+}
+?>
+
+
+
+
diff --git a/wp-content/plugins/portfolio-filter-gallery/admin/views/setup-wizard.php b/wp-content/plugins/portfolio-filter-gallery/admin/views/setup-wizard.php
new file mode 100644
index 0000000..30c410d
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/admin/views/setup-wizard.php
@@ -0,0 +1,357 @@
+ array(
+ 'title' => __( 'Welcome to Portfolio Filter Gallery!', 'portfolio-filter-gallery' ),
+ 'icon' => 'dashicons-images-alt2',
+ ),
+ 2 => array(
+ 'title' => __( 'Create Your First Gallery', 'portfolio-filter-gallery' ),
+ 'icon' => 'dashicons-plus-alt',
+ ),
+ 3 => array(
+ 'title' => __( 'Set Up Filters', 'portfolio-filter-gallery' ),
+ 'icon' => 'dashicons-filter',
+ ),
+ 4 => array(
+ 'title' => __( 'You\'re All Set!', 'portfolio-filter-gallery' ),
+ 'icon' => 'dashicons-yes-alt',
+ ),
+);
+?>
+
+
+>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wp-content/plugins/portfolio-filter-gallery/blocks/class-pfg-block.php b/wp-content/plugins/portfolio-filter-gallery/blocks/class-pfg-block.php
new file mode 100644
index 0000000..ba2d67b
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/blocks/class-pfg-block.php
@@ -0,0 +1,240 @@
+ array( $this, 'render_block' ),
+ ) );
+ } else {
+ // Fallback manual registration
+ register_block_type( $this->namespace . '/' . $this->block_name, array(
+ 'editor_script' => 'pfg-block-editor',
+ 'editor_style' => 'pfg-block-editor-style',
+ 'render_callback' => array( $this, 'render_block' ),
+ 'attributes' => array(
+ 'galleryId' => array(
+ 'type' => 'number',
+ 'default' => 0,
+ ),
+ 'showTitle' => array(
+ 'type' => 'boolean',
+ 'default' => false,
+ ),
+ 'className' => array(
+ 'type' => 'string',
+ 'default' => '',
+ ),
+ 'columnsOverride' => array(
+ 'type' => 'number',
+ 'default' => 0,
+ ),
+ 'hoverEffectOverride' => array(
+ 'type' => 'string',
+ 'default' => '',
+ ),
+ 'showFiltersOverride' => array(
+ 'type' => 'string',
+ 'default' => '',
+ ),
+ ),
+ ) );
+ }
+ }
+
+ /**
+ * Enqueue editor assets.
+ */
+ public function enqueue_editor_assets() {
+ global $post_type;
+
+ // Don't load block editor assets when editing gallery posts (they have their own editor)
+ // This prevents conflicts with the gallery post type editor
+ if ( $post_type === 'awl_filter_gallery' ) {
+ return;
+ }
+
+ // Only load on post types that support the block editor
+ $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : null;
+ if ( $screen && ! $screen->is_block_editor ) {
+ return;
+ }
+
+ // Get all galleries for the dropdown
+ $galleries = $this->get_galleries();
+
+ // Editor script - register with error handling
+ if ( ! wp_script_is( 'pfg-block-editor', 'registered' ) ) {
+ wp_register_script(
+ 'pfg-block-editor',
+ PFG_PLUGIN_URL . 'blocks/js/block.js',
+ array( 'wp-blocks', 'wp-element', 'wp-editor', 'wp-components', 'wp-i18n', 'wp-block-editor' ),
+ PFG_VERSION,
+ true
+ );
+ }
+
+ // Pass galleries to script
+ wp_localize_script( 'pfg-block-editor', 'pfgBlockData', array(
+ 'galleries' => $galleries,
+ 'pluginUrl' => PFG_PLUGIN_URL,
+ 'isPremium' => PFG_Features::is_premium(),
+ 'upgradeUrl' => PFG_Features::get_upgrade_url( 'gutenberg-block' ),
+ 'strings' => array(
+ 'title' => __( 'Portfolio Filter Gallery', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Display a filterable portfolio gallery.', 'portfolio-filter-gallery' ),
+ 'selectGallery' => __( 'Select a Gallery', 'portfolio-filter-gallery' ),
+ 'noGalleries' => __( 'No galleries found. Create one first.', 'portfolio-filter-gallery' ),
+ 'createGallery' => __( 'Create Gallery', 'portfolio-filter-gallery' ),
+ 'showTitle' => __( 'Show gallery title', 'portfolio-filter-gallery' ),
+ 'editGallery' => __( 'Edit Gallery Settings', 'portfolio-filter-gallery' ),
+ 'previewNote' => __( 'Gallery will be displayed on the frontend.', 'portfolio-filter-gallery' ),
+ ),
+ ) );
+
+ // Enqueue the script
+ wp_enqueue_script( 'pfg-block-editor' );
+
+ // Editor styles
+ wp_enqueue_style(
+ 'pfg-block-editor-style',
+ PFG_PLUGIN_URL . 'blocks/css/editor.css',
+ array( 'wp-edit-blocks' ),
+ PFG_VERSION
+ );
+ }
+
+ /**
+ * Render the block on the frontend.
+ *
+ * @param array $attributes Block attributes.
+ * @return string Block HTML.
+ */
+ public function render_block( $attributes ) {
+ $gallery_id = isset( $attributes['galleryId'] ) ? absint( $attributes['galleryId'] ) : 0;
+ $show_title = isset( $attributes['showTitle'] ) ? $attributes['showTitle'] : false;
+ $class_name = isset( $attributes['className'] ) ? $attributes['className'] : '';
+ $columns_override = isset( $attributes['columnsOverride'] ) ? absint( $attributes['columnsOverride'] ) : 0;
+ $hover_override = isset( $attributes['hoverEffectOverride'] ) ? sanitize_text_field( $attributes['hoverEffectOverride'] ) : '';
+ $show_filters_override = isset( $attributes['showFiltersOverride'] ) ? sanitize_text_field( $attributes['showFiltersOverride'] ) : '';
+
+ if ( ! $gallery_id ) {
+ return '' . esc_html__( 'Please select a gallery.', 'portfolio-filter-gallery' ) . '
';
+ }
+
+ // Check if gallery exists
+ $gallery = get_post( $gallery_id );
+ if ( ! $gallery || $gallery->post_type !== 'awl_filter_gallery' ) {
+ return '' . esc_html__( 'Gallery not found.', 'portfolio-filter-gallery' ) . '
';
+ }
+
+ // Build shortcode with optional overrides
+ $shortcode_atts = array( 'id' => $gallery_id );
+
+ if ( $columns_override > 0 ) {
+ $shortcode_atts['columns'] = $columns_override;
+ }
+ if ( ! empty( $hover_override ) ) {
+ $shortcode_atts['hover_effect'] = $hover_override;
+ }
+ if ( $show_filters_override !== '' ) {
+ $shortcode_atts['show_filters'] = ( $show_filters_override === 'true' ) ? '1' : '0';
+ }
+
+ // Build shortcode string
+ $shortcode_parts = array();
+ foreach ( $shortcode_atts as $key => $value ) {
+ $shortcode_parts[] = sprintf( '%s="%s"', $key, esc_attr( $value ) );
+ }
+ $shortcode = '[PFG ' . implode( ' ', $shortcode_parts ) . ']';
+
+ // Output
+ $output = '';
+
+ if ( $class_name ) {
+ $output .= '';
+ }
+
+ if ( $show_title ) {
+ $output .= '
' . esc_html( $gallery->post_title ) . ' ';
+ }
+
+ $output .= do_shortcode( $shortcode );
+
+ if ( $class_name ) {
+ $output .= '';
+ }
+
+ return $output;
+ }
+
+ /**
+ * Get all galleries for block dropdown.
+ *
+ * @return array
+ */
+ private function get_galleries() {
+ $galleries = array();
+
+ $query = new WP_Query( array(
+ 'post_type' => 'awl_filter_gallery',
+ 'posts_per_page' => -1,
+ 'post_status' => 'publish',
+ 'orderby' => 'title',
+ 'order' => 'ASC',
+ ) );
+
+ if ( $query->have_posts() ) {
+ while ( $query->have_posts() ) {
+ $query->the_post();
+ $galleries[] = array(
+ 'id' => get_the_ID(),
+ 'title' => get_the_title(),
+ );
+ }
+ wp_reset_postdata();
+ }
+
+ return $galleries;
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/blocks/css/editor.css b/wp-content/plugins/portfolio-filter-gallery/blocks/css/editor.css
new file mode 100644
index 0000000..60098e1
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/blocks/css/editor.css
@@ -0,0 +1,95 @@
+/**
+ * Portfolio Filter Gallery - Block Editor Styles
+ *
+ * @package Portfolio_Filter_Gallery
+ * @version 2.0.0
+ */
+
+/* Block placeholder */
+.wp-block-portfolio-filter-gallery-gallery .components-placeholder {
+ min-height: 200px;
+}
+
+.wp-block-portfolio-filter-gallery-gallery .components-placeholder__label svg {
+ fill: currentColor;
+ margin-right: 8px;
+}
+
+/* Block preview */
+.pfg-block-preview {
+ background: #f8fafc;
+ border: 1px solid #e2e8f0;
+ border-radius: 8px;
+ padding: 20px;
+ min-height: 200px;
+}
+
+.pfg-block-header {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding-bottom: 15px;
+ border-bottom: 1px solid #e2e8f0;
+ margin-bottom: 15px;
+ font-weight: 600;
+ color: #1e293b;
+}
+
+.pfg-block-header svg {
+ width: 20px;
+ height: 20px;
+ fill: #3858e9;
+}
+
+.pfg-block-gallery-title {
+ margin: 0 0 15px;
+ font-size: 16px;
+ color: #1e293b;
+}
+
+.pfg-block-gallery-preview {
+ background: white;
+ border: 2px dashed #cbd5e1;
+ border-radius: 8px;
+ padding: 30px;
+ text-align: center;
+}
+
+.pfg-block-gallery-icon {
+ margin-bottom: 10px;
+}
+
+.pfg-block-gallery-icon .dashicons {
+ font-size: 40px;
+ width: 40px;
+ height: 40px;
+ color: #94a3b8;
+}
+
+.pfg-block-gallery-preview p {
+ margin: 0 0 5px;
+ font-weight: 600;
+ color: #475569;
+}
+
+.pfg-block-gallery-preview small {
+ color: #94a3b8;
+ font-size: 12px;
+}
+
+/* Error and placeholder messages */
+.pfg-block-placeholder,
+.pfg-block-error {
+ padding: 20px;
+ text-align: center;
+ background: #f8fafc;
+ border: 1px dashed #e2e8f0;
+ border-radius: 8px;
+ color: #64748b;
+}
+
+.pfg-block-error {
+ border-color: #fecaca;
+ background: #fef2f2;
+ color: #991b1b;
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/blocks/js/block.js b/wp-content/plugins/portfolio-filter-gallery/blocks/js/block.js
new file mode 100644
index 0000000..eb883f0
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/blocks/js/block.js
@@ -0,0 +1,283 @@
+/**
+ * Portfolio Filter Gallery - Gutenberg Block
+ *
+ * @package Portfolio_Filter_Gallery
+ * @version 2.0.0
+ */
+
+(function() {
+ 'use strict';
+
+ // Wait for DOM and WordPress to be ready
+ if (typeof wp === 'undefined' || typeof wp.blocks === 'undefined') {
+ return;
+ }
+
+ // Check if block data exists
+ if (typeof pfgBlockData === 'undefined') {
+ return;
+ }
+
+ var blocks = wp.blocks;
+ var element = wp.element;
+ var blockEditor = wp.blockEditor;
+ var components = wp.components;
+ var i18n = wp.i18n;
+
+ var registerBlockType = blocks.registerBlockType;
+ var createElement = element.createElement;
+ var Fragment = element.Fragment;
+ var InspectorControls = blockEditor.InspectorControls;
+ var useBlockProps = blockEditor.useBlockProps;
+ var PanelBody = components.PanelBody;
+ var SelectControl = components.SelectControl;
+ var ToggleControl = components.ToggleControl;
+ var RangeControl = components.RangeControl;
+ var Button = components.Button;
+ var Placeholder = components.Placeholder;
+ var __ = i18n.__;
+
+ // Get data passed from PHP
+ var data = pfgBlockData;
+ var galleries = data.galleries || [];
+ var strings = data.strings || {};
+
+ // Block icon
+ var blockIcon = createElement('svg', {
+ xmlns: 'http://www.w3.org/2000/svg',
+ viewBox: '0 0 24 24',
+ width: 24,
+ height: 24
+ }, createElement('path', {
+ fill: 'currentColor',
+ d: 'M3 3v8h8V3H3zm6 6H5V5h4v4zm-6 4v8h8v-8H3zm6 6H5v-4h4v4zm4-16v8h8V3h-8zm6 6h-4V5h4v4zm-6 4v8h8v-8h-8zm6 6h-4v-4h4v4z'
+ }));
+
+ // Gallery options for dropdown
+ var galleryOptions = [
+ { label: strings.selectGallery || 'Select a Gallery', value: 0 }
+ ];
+
+ for (var i = 0; i < galleries.length; i++) {
+ galleryOptions.push({
+ label: galleries[i].title,
+ value: galleries[i].id
+ });
+ }
+
+ // Find gallery by id
+ function findGallery(id) {
+ for (var i = 0; i < galleries.length; i++) {
+ if (galleries[i].id === id) {
+ return galleries[i];
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Register the block
+ */
+ registerBlockType('portfolio-filter-gallery/gallery', {
+ title: strings.title || 'Portfolio Filter Gallery',
+ description: strings.description || 'Display a filterable portfolio gallery.',
+ icon: blockIcon,
+ category: 'widgets',
+ keywords: ['gallery', 'portfolio', 'filter', 'masonry', 'grid'],
+ supports: {
+ align: ['wide', 'full'],
+ html: false
+ },
+ attributes: {
+ galleryId: {
+ type: 'number',
+ default: 0
+ },
+ showTitle: {
+ type: 'boolean',
+ default: false
+ },
+ columnsOverride: {
+ type: 'number',
+ default: 0 // 0 = use gallery default
+ },
+ hoverEffectOverride: {
+ type: 'string',
+ default: '' // '' = use gallery default
+ },
+ showFiltersOverride: {
+ type: 'string',
+ default: '' // '' = use gallery default, 'true'/'false' = override
+ }
+ },
+
+ /**
+ * Edit component
+ */
+ edit: function(props) {
+ var attributes = props.attributes;
+ var setAttributes = props.setAttributes;
+ var galleryId = attributes.galleryId;
+ var showTitle = attributes.showTitle;
+ var columnsOverride = attributes.columnsOverride;
+ var hoverEffectOverride = attributes.hoverEffectOverride;
+ var showFiltersOverride = attributes.showFiltersOverride;
+ var blockProps = useBlockProps();
+
+ // Hover effect options
+ var hoverOptions = [
+ { label: __('Use Gallery Default', 'portfolio-filter-gallery'), value: '' },
+ { label: __('None', 'portfolio-filter-gallery'), value: 'none' },
+ { label: __('Zoom', 'portfolio-filter-gallery'), value: 'zoom' },
+ { label: __('Fade', 'portfolio-filter-gallery'), value: 'fade' },
+ { label: __('Slide Up', 'portfolio-filter-gallery'), value: 'slide-up' },
+ { label: __('Blur', 'portfolio-filter-gallery'), value: 'blur' }
+ ];
+
+ // Show filters options
+ var showFiltersOptions = [
+ { label: __('Use Gallery Default', 'portfolio-filter-gallery'), value: '' },
+ { label: __('Show Filters', 'portfolio-filter-gallery'), value: 'true' },
+ { label: __('Hide Filters', 'portfolio-filter-gallery'), value: 'false' }
+ ];
+
+ // Find selected gallery
+ var selectedGallery = findGallery(galleryId);
+
+ // If no gallery selected, show placeholder
+ if (!galleryId) {
+ return createElement(Fragment, null,
+ createElement(InspectorControls, null,
+ createElement(PanelBody, { title: __('Gallery Settings', 'portfolio-filter-gallery') },
+ createElement(SelectControl, {
+ label: strings.selectGallery,
+ value: galleryId,
+ options: galleryOptions,
+ onChange: function(value) {
+ setAttributes({ galleryId: parseInt(value, 10) });
+ }
+ })
+ )
+ ),
+ createElement('div', blockProps,
+ createElement(Placeholder, {
+ icon: blockIcon,
+ label: strings.title,
+ instructions: galleries.length > 0
+ ? strings.selectGallery
+ : strings.noGalleries
+ },
+ galleries.length > 0
+ ? createElement(SelectControl, {
+ value: galleryId,
+ options: galleryOptions,
+ onChange: function(value) {
+ setAttributes({ galleryId: parseInt(value, 10) });
+ }
+ })
+ : createElement(Button, {
+ variant: 'primary',
+ href: 'post-new.php?post_type=awl_filter_gallery',
+ target: '_blank'
+ }, strings.createGallery)
+ )
+ )
+ );
+ }
+
+ // Gallery selected - show preview
+ return createElement(Fragment, null,
+ createElement(InspectorControls, null,
+ createElement(PanelBody, { title: __('Gallery Settings', 'portfolio-filter-gallery') },
+ createElement(SelectControl, {
+ label: strings.selectGallery,
+ value: galleryId,
+ options: galleryOptions,
+ onChange: function(value) {
+ setAttributes({ galleryId: parseInt(value, 10) });
+ }
+ }),
+ createElement(ToggleControl, {
+ label: strings.showTitle,
+ checked: showTitle,
+ onChange: function(value) {
+ setAttributes({ showTitle: value });
+ }
+ }),
+ createElement(Button, {
+ variant: 'secondary',
+ href: 'post.php?post=' + galleryId + '&action=edit',
+ target: '_blank',
+ style: { marginTop: '10px' }
+ }, strings.editGallery)
+ ),
+ // Quick Settings Panel
+ createElement(PanelBody, {
+ title: __('Quick Settings', 'portfolio-filter-gallery'),
+ initialOpen: false
+ },
+ createElement('p', {
+ style: { fontSize: '12px', color: '#757575', marginTop: 0 }
+ }, __('Override gallery defaults for this block only.', 'portfolio-filter-gallery')),
+ createElement(RangeControl, {
+ label: __('Columns', 'portfolio-filter-gallery'),
+ value: columnsOverride,
+ onChange: function(value) {
+ setAttributes({ columnsOverride: value });
+ },
+ min: 0,
+ max: 6,
+ help: columnsOverride === 0 ? __('Using gallery default', 'portfolio-filter-gallery') : ''
+ }),
+ createElement(SelectControl, {
+ label: __('Hover Effect', 'portfolio-filter-gallery'),
+ value: hoverEffectOverride,
+ options: hoverOptions,
+ onChange: function(value) {
+ setAttributes({ hoverEffectOverride: value });
+ }
+ }),
+ createElement(SelectControl, {
+ label: __('Show Filters', 'portfolio-filter-gallery'),
+ value: showFiltersOverride,
+ options: showFiltersOptions,
+ onChange: function(value) {
+ setAttributes({ showFiltersOverride: value });
+ }
+ })
+ )
+ ),
+ createElement('div', Object.assign({}, blockProps, {
+ className: (blockProps.className || '') + ' pfg-block-preview'
+ }),
+ createElement('div', { className: 'pfg-block-header' },
+ blockIcon,
+ createElement('span', null, strings.title)
+ ),
+ showTitle && selectedGallery && createElement('h3', {
+ className: 'pfg-block-gallery-title'
+ }, selectedGallery.title),
+ createElement('div', { className: 'pfg-block-gallery-preview' },
+ createElement('div', { className: 'pfg-block-gallery-icon' },
+ createElement('span', { className: 'dashicons dashicons-format-gallery' })
+ ),
+ createElement('p', null,
+ selectedGallery
+ ? selectedGallery.title
+ : __('Gallery', 'portfolio-filter-gallery')
+ ),
+ createElement('small', null, strings.previewNote)
+ )
+ )
+ );
+ },
+
+ /**
+ * Save - rendered on server
+ */
+ save: function() {
+ return null; // Server-side rendering
+ }
+ });
+
+})();
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/YouTubePopUp.css b/wp-content/plugins/portfolio-filter-gallery/css/YouTubePopUp.css
new file mode 100644
index 0000000..0f6dae0
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/YouTubePopUp.css
@@ -0,0 +1,158 @@
+@charset "UTF-8";
+
+/*
+ Name: YouTubePopUp
+ Description: jQuery plugin to display YouTube or Vimeo video in PopUp, responsive and retina, easy to use.
+ Version: 1.0.1
+ Plugin URL: http://wp-time.com/youtube-popup-jquery-plugin/
+ Written By: Qassim Hassan
+ Twitter: @QQQHZ
+ Websites: wp-time.com | qass.im | wp-plugins.in
+ Dual licensed under the MIT and GPL licenses:
+ http://www.opensource.org/licenses/mit-license.php
+ http://www.gnu.org/licenses/gpl.html
+ Copyright (c) 2016 - Qassim Hassan
+*/
+
+.YouTubePopUp-Wrap{
+ position:fixed;
+ width:100%;
+ height:100%;
+ background-color:#000;
+ background-color:rgba(0,0,0,0.8);
+ top:0;
+ left:0;
+ z-index:9999999999999;
+}
+
+.YouTubePopUp-animation{
+ opacity: 0;
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-name: YouTubePopUp;
+ animation-name: YouTubePopUp;
+}
+
+@-webkit-keyframes YouTubePopUp {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes YouTubePopUp {
+ 0% {
+ opacity: 0;
+ }
+
+ 100% {
+ opacity: 1;
+ }
+}
+
+body.logged-in .YouTubePopUp-Wrap{ /* For WordPress */
+ top:32px;
+ z-index:99998;
+}
+
+.YouTubePopUp-Content{
+ max-width:940px;
+ display:block;
+ margin:0 auto;
+ height:100%;
+ position:relative;
+}
+
+.YouTubePopUp-Content iframe {
+ max-width: 100% !important;
+ width: 100% !important;
+ display: block !important;
+ height: 530px !important;
+ border: none !important;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ margin: auto 0;
+ animation-timing-function: ease-out;
+animation-duration: .3s;
+ transition:opacity .3s ease-out !important;
+ webkit-transition: opacity .3s ease-out;
+-moz-transition: opacity .3s ease-out;
+-ms-transition: opacity .3s ease-out;
+-o-transition: opacity .3s ease-out;
+}
+
+.YouTubePopUp-Hide{
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-name: YouTubePopUpHide;
+ animation-name: YouTubePopUpHide;
+}
+
+@-webkit-keyframes YouTubePopUpHide {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ }
+}
+
+@keyframes YouTubePopUpHide {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ }
+}
+
+.YouTubePopUp-Close{
+ position: absolute;
+top: 0;
+cursor: pointer;
+bottom: 552px;
+right: -30px;
+margin: auto 0;
+width: 50px;
+height: 50px;
+}
+
+.YouTubePopUp-Close:hover{
+ opacity:0.5;
+}
+
+@media all and (max-width: 768px) and (min-width: 10px){
+ .YouTubePopUp-Content{
+ max-width:90%;
+ }
+}
+
+@media all and (max-width: 600px) and (min-width: 10px){
+ .YouTubePopUp-Content iframe{
+ height:320px !important;
+ }
+
+ .YouTubePopUp-Close{
+ bottom:362px;
+ }
+}
+
+@media all and (max-width: 480px) and (min-width: 10px){
+ .YouTubePopUp-Content iframe{
+ height:220px !important;
+ }
+
+ .YouTubePopUp-Close{
+ bottom:262px;
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/awl-pfg-uploader.css b/wp-content/plugins/portfolio-filter-gallery/css/awl-pfg-uploader.css
new file mode 100644
index 0000000..f0ad982
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/awl-pfg-uploader.css
@@ -0,0 +1,163 @@
+/* Add New Image Slide CSS Admin */
+.new-images {
+ float:left;
+ overflow: hidden;
+ text-align: center;
+ cursor:pointer;
+ background-color: #496481;
+ border-bottom: 3px solid #2D3E50;
+ font-size: 20px;
+ color: #fff;
+ border-radius: 5px;
+ margin-left:20px;
+}
+
+.new-images .dashicons {
+ text-align: center !important;
+ margin-top: 16% !important;
+ padding-right: 60% !important;
+ font-size: 100px;
+}
+.new-images .add-text {
+ text-align: center !important;
+ font-size: 20px;
+ margin-top: 45% !important;
+ width: 100%;
+}
+
+/* All Slider Gallery CSS Admin */
+.sbox {
+ float:left;
+ width:100%;
+ /*margin-left: 20px;*/
+}
+
+.sbox .image {
+ margin: 0 4% 2% 0;
+ width:20%;
+ cursor:move;
+ float:left;
+ position:relative;
+}
+/* .image a {
+ position: absolute;
+ top: 5%;
+ text-decoration: none;
+} */
+.pw-edit-icon {
+ background-color: #0073AA;
+ right: 0px;
+}
+.pw-trash-icon {
+ background-color: #DA5855;
+ right: 10px;
+}
+.image a span {
+ color:#FFFFFF;
+}
+
+.sbox img {
+ width: 215px;
+ height: 170px;
+ display: block;
+ margin-bottom: 2px;
+}
+
+.new-image {
+ margin: 0 15px 15px 0;
+ width: 28%;
+ cursor: move;
+ float: left;
+ background-color: #24bbe4;
+ border-bottom: 3px solid #2D3E50;
+}
+
+/* For desktop: */
+@media (max-width:768px) {
+ .sbox .image {
+ margin: 0 15px 15px 0;
+ padding: 10px;
+ width:35%;
+ cursor:move;
+ float:left;
+ }
+ .sbox img {
+ width: 160px;
+ height: 160px;
+ }
+}
+/* For mobile phones: */
+@media (max-width:500px) {
+ .sbox .image {
+ margin: 0 15px 15px 0;
+ padding: 10px;
+ width:90%;
+ cursor:move;
+ float:left;
+ }
+ .sbox img {
+ width: 160px;
+ height: 160px;
+ }
+}
+
+/* Settings CSS */
+.input-text-wrap {
+ margin-top: 30px;
+ margin-left: 15px;
+}
+.input-text-wrap input[type=text] {
+ width: 50%;
+ border: 1px solid #3366FF;
+ border-left: 6px solid #3366FF;
+}
+.input-text-wrap input[type=radio] {
+ border: 1px solid #3366FF;
+ margin-bottom: 6px;
+}
+.input-text-wrap label {
+ font-size: 14px;
+ font-weight: bolder;
+}
+/* Delete All Slide Button */
+#remove-all-images, #sort-all-slides {
+ color: #FFF;
+ border-color: #D9534F;
+ background: #D9534F;
+ background-color: #D9534F;
+ -webkit-box-shadow: inset 0 1px 0 #d9534f, 0 1px 0 rgb(0 0 0 / 8%);
+ box-shadow: inset 0 1px 0 #d9534f, 0 1px 0 rgb(0 0 0 / 8%);
+ vertical-align: top;
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+
+#sort-all-slides {
+ right:130px !important;
+ color: #FFF !important;
+}
+#sort-all-slides button {
+ color: #FFF !important;
+}
+
+#remove-image {
+ color: #FFF;
+ border-color: #D9534F;
+ background: #D9534F;
+ background-color: #D9534F;
+ -webkit-box-shadow: inset 0 1px 0 #D9534F,0 1px 0 rgba(0,0,0,.08);
+ box-shadow: inset 0 1px 0 #D9534F,0 1px 0 rgba(0,0,0,.08);
+ vertical-align: top;
+}
+
+#sort-all-slides li {
+ color: #000;
+ padding: 0px 10px 0px 10px;
+ /* border-radius: 0; */
+ cursor: pointer;
+ font-size: 16px;
+}
+#sort-all-slides .dropdown-menu {
+ top:unset !important
+}
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/boot.css b/wp-content/plugins/portfolio-filter-gallery/css/boot.css
new file mode 100644
index 0000000..5b3a1ed
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/boot.css
@@ -0,0 +1,6 @@
+/*!
+ * Lightbox for Bootstrap 5 v1.8.3 (https://trvswgnr.github.io/bs5-lightbox/)
+ * Copyright 2023 Travis Aaron Wagner (https://github.com/trvswgnr/)
+ * Licensed under MIT (https://github.com/trvswgnr/bs5-lightbox/blob/main/LICENSE)
+ */!function(){"use strict";var t={d:function(e,s){for(var a in s)t.o(s,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:s[a]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}},e={};t.d(e,{default:function(){return i}});var s=window.bootstrap;const a={Modal:s.Modal,Carousel:s.Carousel};class o{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.hash=this.randomHash(),this.settings=Object.assign(Object.assign(Object.assign({},a.Modal.Default),a.Carousel.Default),{interval:!1,target:'[data-toggle="lightbox"]',gallery:"",size:"xl",constrain:!0}),this.settings=Object.assign(Object.assign({},this.settings),e),this.modalOptions=(()=>this.setOptionsFromSettings(a.Modal.Default))(),this.carouselOptions=(()=>this.setOptionsFromSettings(a.Carousel.Default))(),"string"==typeof t&&(this.settings.target=t,t=document.querySelector(this.settings.target)),this.el=t,this.type=t.dataset.type||"",this.src=this.getSrc(t),this.sources=this.getGalleryItems(),this.createCarousel(),this.createModal()}show(){document.body.appendChild(this.modalElement),this.modal.show()}hide(){this.modal.hide()}setOptionsFromSettings(t){return Object.keys(t).reduce(((t,e)=>Object.assign(t,{[e]:this.settings[e]})),{})}getSrc(t){let e=t.dataset.src||t.dataset.remote||t.href||"http://via.placeholder.com/1600x900";if("html"===t.dataset.type)return e;/\:\/\//.test(e)||(e=window.location.origin+e);const s=new URL(e);return(t.dataset.footer||t.dataset.caption)&&s.searchParams.set("caption",t.dataset.footer||t.dataset.caption),s.toString()}getGalleryItems(){let t;if(this.settings.gallery){if(Array.isArray(this.settings.gallery))return this.settings.gallery;t=this.settings.gallery}else this.el.dataset.gallery&&(t=this.el.dataset.gallery);return t?[...new Set(Array.from(document.querySelectorAll('[data-gallery="'.concat(t,'"]')),(t=>"".concat(t.dataset.type?t.dataset.type:"").concat(this.getSrc(t)))))]:["".concat(this.type?this.type:"").concat(this.src)]}getYoutubeId(t){if(!t)return!1;const e=t.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/);return!(!e||11!==e[2].length)&&e[2]}getYoutubeLink(t){const e=this.getYoutubeId(t);if(!e)return!1;const s=t.split("?");let a=s.length>1?"?"+s[1]:"";return"https://www.youtube.com/embed/".concat(e).concat(a)}getInstagramEmbed(t){if(/instagram/.test(t))return t+=/\/embed$/.test(t)?"":"/embed",'')}isEmbed(t){const e=new RegExp("("+o.allowedEmbedTypes.join("|")+")").test(t),s=/\.(png|jpe?g|gif|svg|webp)/i.test(t)||"image"===this.el.dataset.type;return e||!s}createCarousel(){const t=document.createElement("template"),e=o.allowedMediaTypes.join("|"),s=this.sources.map(((t,s)=>{t=t.replace(/\/$/,"");const a=new RegExp("^(".concat(e,")"),"i"),o=/^html/.test(t),i=/^image/.test(t);a.test(t)&&(t=t.replace(a,""));const n=this.settings.constrain?"mw-100 mh-100 h-auto w-auto m-auto top-0 end-0 bottom-0 start-0":"h-100 w-100",l=new URLSearchParams(t.split("?")[1]);let r="",c=t;if(l.get("caption")){try{c=new URL(t),c.searchParams.delete("caption"),c=c.toString()}catch(e){c=t}r=''.concat(l.get("caption"),"
")}let d=' '),h="";const u=this.getInstagramEmbed(t),m=this.getYoutubeLink(t);this.isEmbed(t)&&!i&&(m&&(t=m,h='title="YouTube video player" frameborder="0" allow="accelerometer autoplay clipboard-write encrypted-media gyroscope picture-in-picture"'),d=u||'")),o&&(d=t);return'\n\t\t\t\t\n\t\t\t\t\t').concat('
','\n\t\t\t\t\t
').concat(d,"
\n\t\t\t\t\t").concat(r,"\n\t\t\t\t
")})).join(""),i=this.sources.length<2?"":'\n\t\t\t\n\t\t\t\t \n\t\t\t\tPrevious \n\t\t\t \n\t\t\t\n\t\t\t\t \n\t\t\t\tNext \n\t\t\t ');let n="lightbox-carousel carousel slide";"fullscreen"===this.settings.size&&(n+=" position-absolute w-100 translate-middle top-50 start-50");const l='\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t').concat(s,"\n\t\t\t\t
\n\t\t\t\t").concat(i,"\n\t\t\t
");t.innerHTML=l.trim(),this.carouselElement=t.content.firstChild;const r=Object.assign(Object.assign({},this.carouselOptions),{keyboard:!1});this.carousel=new a.Carousel(this.carouselElement,r);const c=this.type&&"image"!==this.type?this.type+this.src:this.src;return this.carousel.to(this.findGalleryItemIndex(this.sources,c)),!0===this.carouselOptions.keyboard&&document.addEventListener("keydown",(t=>{if("ArrowLeft"===t.code){const t=document.getElementById("#lightboxCarousel-".concat(this.hash,"-prev"));return t&&t.click(),!1}if("ArrowRight"===t.code){const t=document.getElementById("#lightboxCarousel-".concat(this.hash,"-next"));return t&&t.click(),!1}})),this.carousel}findGalleryItemIndex(t,e){let s=0;for(const a of t){if(a.includes(e))return s;s++}return 0}createModal(){const t=document.createElement("template"),e='\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
').concat(' '," \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
");return t.innerHTML=e.trim(),this.modalElement=t.content.firstChild,this.modalElement.querySelector(".modal-body").appendChild(this.carouselElement),this.modalElement.addEventListener("hidden.bs.modal",(()=>this.modalElement.remove())),this.modalElement.querySelector("[data-bs-dismiss]").addEventListener("click",(()=>this.modal.hide())),this.modal=new a.Modal(this.modalElement,this.modalOptions),this.modal}randomHash(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;return Array.from({length:t},(()=>Math.floor(36*Math.random()).toString(36))).join("")}}o.allowedEmbedTypes=["embed","youtube","vimeo","instagram","url"],o.allowedMediaTypes=[...o.allowedEmbedTypes,"image","html"],o.defaultSelector='[data-toggle="lightbox"]',o.initialize=function(t){t.preventDefault();new o(this).show()},document.querySelectorAll(o.defaultSelector).forEach((t=>t.addEventListener("click",o.initialize))),"undefined"!=typeof window&&window.bootstrap&&(window.bootstrap.Lightbox=o);var i=o;window.Lightbox=e.default}();
+//# sourceMappingURL=index.bundle.min.js.map
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/bootstrap.css b/wp-content/plugins/portfolio-filter-gallery/css/bootstrap.css
new file mode 100644
index 0000000..ca09e19
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/bootstrap.css
@@ -0,0 +1,10967 @@
+@charset "UTF-8"; /*!
+ * Bootstrap v5.3.3 (https://getbootstrap.com/)
+ * Copyright 2011-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+/*
+:root,
+[data-bs-theme="light"] {
+ --bs-blue: #0d6efd;
+ --bs-indigo: #6610f2;
+ --bs-purple: #6f42c1;
+ --bs-pink: #d63384;
+ --bs-red: #dc3545;
+ --bs-orange: #fd7e14;
+ --bs-yellow: #ffc107;
+ --bs-green: #198754;
+ --bs-teal: #20c997;
+ --bs-cyan: #0dcaf0;
+ --bs-black: #000;
+ --bs-white: #fff;
+ --bs-gray: #6c757d;
+ --bs-gray-dark: #343a40;
+ --bs-gray-100: #f8f9fa;
+ --bs-gray-200: #e9ecef;
+ --bs-gray-300: #dee2e6;
+ --bs-gray-400: #ced4da;
+ --bs-gray-500: #adb5bd;
+ --bs-gray-600: #6c757d;
+ --bs-gray-700: #495057;
+ --bs-gray-800: #343a40;
+ --bs-gray-900: #212529;
+ --bs-primary: #0d6efd;
+ --bs-secondary: #6c757d;
+ --bs-success: #198754;
+ --bs-info: #0dcaf0;
+ --bs-warning: #ffc107;
+ --bs-danger: #dc3545;
+ --bs-light: #f8f9fa;
+ --bs-dark: #212529;
+ --bs-primary-rgb: 13, 110, 253;
+ --bs-secondary-rgb: 108, 117, 125;
+ --bs-success-rgb: 25, 135, 84;
+ --bs-info-rgb: 13, 202, 240;
+ --bs-warning-rgb: 255, 193, 7;
+ --bs-danger-rgb: 220, 53, 69;
+ --bs-light-rgb: 248, 249, 250;
+ --bs-dark-rgb: 33, 37, 41;
+ --bs-primary-text-emphasis: #052c65;
+ --bs-secondary-text-emphasis: #2b2f32;
+ --bs-success-text-emphasis: #0a3622;
+ --bs-info-text-emphasis: #055160;
+ --bs-warning-text-emphasis: #664d03;
+ --bs-danger-text-emphasis: #58151c;
+ --bs-light-text-emphasis: #495057;
+ --bs-dark-text-emphasis: #495057;
+ --bs-primary-bg-subtle: #cfe2ff;
+ --bs-secondary-bg-subtle: #e2e3e5;
+ --bs-success-bg-subtle: #d1e7dd;
+ --bs-info-bg-subtle: #cff4fc;
+ --bs-warning-bg-subtle: #fff3cd;
+ --bs-danger-bg-subtle: #f8d7da;
+ --bs-light-bg-subtle: #fcfcfd;
+ --bs-dark-bg-subtle: #ced4da;
+ --bs-primary-border-subtle: #9ec5fe;
+ --bs-secondary-border-subtle: #c4c8cb;
+ --bs-success-border-subtle: #a3cfbb;
+ --bs-info-border-subtle: #9eeaf9;
+ --bs-warning-border-subtle: #ffe69c;
+ --bs-danger-border-subtle: #f1aeb5;
+ --bs-light-border-subtle: #e9ecef;
+ --bs-dark-border-subtle: #adb5bd;
+ --bs-white-rgb: 255, 255, 255;
+ --bs-black-rgb: 0, 0, 0;
+ --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto,
+ "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif,
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas,
+ "Liberation Mono", "Courier New", monospace;
+ --bs-gradient: linear-gradient(
+ 180deg,
+ rgba(255, 255, 255, 0.15),
+ rgba(255, 255, 255, 0)
+ );
+ --bs-body-font-family: var(--bs-font-sans-serif);
+ --bs-body-font-size: 1rem;
+ --bs-body-font-weight: 400;
+ --bs-body-line-height: 1.5;
+ --bs-body-color: #212529;
+ --bs-body-color-rgb: 33, 37, 41;
+ --bs-body-bg: #fff;
+ --bs-body-bg-rgb: 255, 255, 255;
+ --bs-emphasis-color: #000;
+ --bs-emphasis-color-rgb: 0, 0, 0;
+ --bs-secondary-color: rgba(33, 37, 41, 0.75);
+ --bs-secondary-color-rgb: 33, 37, 41;
+ --bs-secondary-bg: #e9ecef;
+ --bs-secondary-bg-rgb: 233, 236, 239;
+ --bs-tertiary-color: rgba(33, 37, 41, 0.5);
+ --bs-tertiary-color-rgb: 33, 37, 41;
+ --bs-tertiary-bg: #f8f9fa;
+ --bs-tertiary-bg-rgb: 248, 249, 250;
+ --bs-heading-color: inherit;
+ --bs-link-color: #0d6efd;
+ --bs-link-color-rgb: 13, 110, 253;
+ --bs-link-decoration: underline;
+ --bs-link-hover-color: #0a58ca;
+ --bs-link-hover-color-rgb: 10, 88, 202;
+ --bs-code-color: #d63384;
+ --bs-highlight-color: #212529;
+ --bs-highlight-bg: #fff3cd;
+ --bs-border-width: 1px;
+ --bs-border-style: solid;
+ --bs-border-color: #dee2e6;
+ --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
+ --bs-border-radius: 0.375rem;
+ --bs-border-radius-sm: 0.25rem;
+ --bs-border-radius-lg: 0.5rem;
+ --bs-border-radius-xl: 1rem;
+ --bs-border-radius-xxl: 2rem;
+ --bs-border-radius-2xl: var(--bs-border-radius-xxl);
+ --bs-border-radius-pill: 50rem;
+ --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+ --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
+ --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
+ --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
+ --bs-focus-ring-width: 0.25rem;
+ --bs-focus-ring-opacity: 0.25;
+ --bs-focus-ring-color: rgba(13, 110, 253, 0.25);
+ --bs-form-valid-color: #198754;
+ --bs-form-valid-border-color: #198754;
+ --bs-form-invalid-color: #dc3545;
+ --bs-form-invalid-border-color: #dc3545;
+}
+[data-bs-theme="dark"] {
+ color-scheme: dark;
+ --bs-body-color: #dee2e6;
+ --bs-body-color-rgb: 222, 226, 230;
+ --bs-body-bg: #212529;
+ --bs-body-bg-rgb: 33, 37, 41;
+ --bs-emphasis-color: #fff;
+ --bs-emphasis-color-rgb: 255, 255, 255;
+ --bs-secondary-color: rgba(222, 226, 230, 0.75);
+ --bs-secondary-color-rgb: 222, 226, 230;
+ --bs-secondary-bg: #343a40;
+ --bs-secondary-bg-rgb: 52, 58, 64;
+ --bs-tertiary-color: rgba(222, 226, 230, 0.5);
+ --bs-tertiary-color-rgb: 222, 226, 230;
+ --bs-tertiary-bg: #2b3035;
+ --bs-tertiary-bg-rgb: 43, 48, 53;
+ --bs-primary-text-emphasis: #6ea8fe;
+ --bs-secondary-text-emphasis: #a7acb1;
+ --bs-success-text-emphasis: #75b798;
+ --bs-info-text-emphasis: #6edff6;
+ --bs-warning-text-emphasis: #ffda6a;
+ --bs-danger-text-emphasis: #ea868f;
+ --bs-light-text-emphasis: #f8f9fa;
+ --bs-dark-text-emphasis: #dee2e6;
+ --bs-primary-bg-subtle: #031633;
+ --bs-secondary-bg-subtle: #161719;
+ --bs-success-bg-subtle: #051b11;
+ --bs-info-bg-subtle: #032830;
+ --bs-warning-bg-subtle: #332701;
+ --bs-danger-bg-subtle: #2c0b0e;
+ --bs-light-bg-subtle: #343a40;
+ --bs-dark-bg-subtle: #1a1d20;
+ --bs-primary-border-subtle: #084298;
+ --bs-secondary-border-subtle: #41464b;
+ --bs-success-border-subtle: #0f5132;
+ --bs-info-border-subtle: #087990;
+ --bs-warning-border-subtle: #997404;
+ --bs-danger-border-subtle: #842029;
+ --bs-light-border-subtle: #495057;
+ --bs-dark-border-subtle: #343a40;
+ --bs-heading-color: inherit;
+ --bs-link-color: #6ea8fe;
+ --bs-link-hover-color: #8bb9fe;
+ --bs-link-color-rgb: 110, 168, 254;
+ --bs-link-hover-color-rgb: 139, 185, 254;
+ --bs-code-color: #e685b5;
+ --bs-highlight-color: #dee2e6;
+ --bs-highlight-bg: #664d03;
+ --bs-border-color: #495057;
+ --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
+ --bs-form-valid-color: #75b798;
+ --bs-form-valid-border-color: #75b798;
+ --bs-form-invalid-color: #ea868f;
+ --bs-form-invalid-border-color: #ea868f;
+}
+*,
+::after,
+::before {
+ box-sizing: border-box;
+}
+@media (prefers-reduced-motion: no-preference) {
+ :root {
+ scroll-behavior: smooth;
+ }
+}
+body {
+ margin: 0;
+ font-family: var(--bs-body-font-family);
+ font-size: var(--bs-body-font-size);
+ font-weight: var(--bs-body-font-weight);
+ line-height: var(--bs-body-line-height);
+ color: var(--bs-body-color);
+ text-align: var(--bs-body-text-align);
+ background-color: var(--bs-body-bg);
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: transparent;
+}
+hr {
+ margin: 1rem 0;
+ color: inherit;
+ border: 0;
+ border-top: var(--bs-border-width) solid;
+ opacity: 0.25;
+}
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+ font-weight: 500;
+ line-height: 1.2;
+ color: var(--bs-heading-color);
+}
+.h1,
+h1 {
+ font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+ .h1,
+ h1 {
+ font-size: 2.5rem;
+ }
+}
+.h2,
+h2 {
+ font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+ .h2,
+ h2 {
+ font-size: 2rem;
+ }
+}
+.h3,
+h3 {
+ font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+ .h3,
+ h3 {
+ font-size: 1.75rem;
+ }
+}
+.h4,
+h4 {
+ font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+ .h4,
+ h4 {
+ font-size: 1.5rem;
+ }
+}
+.h5,
+h5 {
+ font-size: 1.25rem;
+}
+.h6,
+h6 {
+ font-size: 1rem;
+}
+p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+abbr[title] {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ cursor: help;
+ -webkit-text-decoration-skip-ink: none;
+ text-decoration-skip-ink: none;
+}
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit;
+}
+ol,
+ul {
+ padding-left: 2rem;
+}
+dl,
+ol,
+ul {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+ol ol,
+ol ul,
+ul ol,
+ul ul {
+ margin-bottom: 0;
+}
+dt {
+ font-weight: 700;
+}
+dd {
+ margin-bottom: 0.5rem;
+ margin-left: 0;
+}
+blockquote {
+ margin: 0 0 1rem;
+}
+b,
+strong {
+ font-weight: bolder;
+}
+.small,
+small {
+ font-size: 0.875em;
+}
+.mark,
+mark {
+ padding: 0.1875em;
+ color: var(--bs-highlight-color);
+ background-color: var(--bs-highlight-bg);
+}
+sub,
+sup {
+ position: relative;
+ font-size: 0.75em;
+ line-height: 0;
+ vertical-align: baseline;
+}
+sub {
+ bottom: -0.25em;
+}
+sup {
+ top: -0.5em;
+}
+a:hover {
+ --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
+}
+a:not([href]):not([class]),
+a:not([href]):not([class]):hover {
+ color: inherit;
+ text-decoration: none;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: var(--bs-font-monospace);
+ font-size: 1em;
+}
+pre {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+ font-size: 0.875em;
+}
+pre code {
+ font-size: inherit;
+ color: inherit;
+ word-break: normal;
+}
+code {
+ font-size: 0.875em;
+ color: var(--bs-code-color);
+ word-wrap: break-word;
+}
+a > code {
+ color: inherit;
+}
+kbd {
+ padding: 0.1875rem 0.375rem;
+ font-size: 0.875em;
+ color: var(--bs-body-bg);
+ background-color: var(--bs-body-color);
+ border-radius: 0.25rem;
+}
+kbd kbd {
+ padding: 0;
+ font-size: 1em;
+}
+figure {
+ margin: 0 0 1rem;
+}
+img,
+svg {
+ vertical-align: middle;
+}
+table {
+ caption-side: bottom;
+ border-collapse: collapse;
+}
+caption {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ color: var(--bs-secondary-color);
+ text-align: left;
+}
+th {
+ text-align: inherit;
+ text-align: -webkit-match-parent;
+}
+tbody,
+td,
+tfoot,
+th,
+thead,
+tr {
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+}
+label {
+ display: inline-block;
+}
+button {
+ border-radius: 0;
+}
+button:focus:not(:focus-visible) {
+ outline: 0;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+button,
+select {
+ text-transform: none;
+}
+[role="button"] {
+ cursor: pointer;
+}
+select {
+ word-wrap: normal;
+}
+select:disabled {
+ opacity: 1;
+}
+[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not(
+ [type="week"]
+ ):not([type="time"])::-webkit-calendar-picker-indicator {
+ display: none !important;
+}
+[type="button"],
+[type="reset"],
+[type="submit"],
+button {
+ -webkit-appearance: button;
+}
+[type="button"]:not(:disabled),
+[type="reset"]:not(:disabled),
+[type="submit"]:not(:disabled),
+button:not(:disabled) {
+ cursor: pointer;
+}
+::-moz-focus-inner {
+ padding: 0;
+ border-style: none;
+}
+textarea {
+ resize: vertical;
+}
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+legend {
+ float: left;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 0.5rem;
+ font-size: calc(1.275rem + 0.3vw);
+ line-height: inherit;
+}
+@media (min-width: 1200px) {
+ legend {
+ font-size: 1.5rem;
+ }
+}
+legend + * {
+ clear: left;
+}
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-year-field {
+ padding: 0;
+}
+::-webkit-inner-spin-button {
+ height: auto;
+}
+[type="search"] {
+ -webkit-appearance: textfield;
+ outline-offset: -2px;
+}
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+::-webkit-color-swatch-wrapper {
+ padding: 0;
+}
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+::file-selector-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+output {
+ display: inline-block;
+}
+iframe {
+ border: 0;
+}
+summary {
+ display: list-item;
+ cursor: pointer;
+}
+progress {
+ vertical-align: baseline;
+}
+[hidden] {
+ display: none !important;
+}
+.lead {
+ font-size: 1.25rem;
+ font-weight: 300;
+}
+.display-1 {
+ font-size: calc(1.625rem + 4.5vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-1 {
+ font-size: 5rem;
+ }
+}
+.display-2 {
+ font-size: calc(1.575rem + 3.9vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-2 {
+ font-size: 4.5rem;
+ }
+}
+.display-3 {
+ font-size: calc(1.525rem + 3.3vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-3 {
+ font-size: 4rem;
+ }
+}
+.display-4 {
+ font-size: calc(1.475rem + 2.7vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-4 {
+ font-size: 3.5rem;
+ }
+}
+.display-5 {
+ font-size: calc(1.425rem + 2.1vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-5 {
+ font-size: 3rem;
+ }
+}
+.display-6 {
+ font-size: calc(1.375rem + 1.5vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-6 {
+ font-size: 2.5rem;
+ }
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline-item {
+ display: inline-block;
+}
+.list-inline-item:not(:last-child) {
+ margin-right: 0.5rem;
+}
+.initialism {
+ font-size: 0.875em;
+ text-transform: uppercase;
+}
+.blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+}
+.blockquote > :last-child {
+ margin-bottom: 0;
+}
+.blockquote-footer {
+ margin-top: -1rem;
+ margin-bottom: 1rem;
+ font-size: 0.875em;
+ color: #6c757d;
+}
+.blockquote-footer::before {
+ content: "— ";
+}*/
+.img-fluid {
+ max-width: 100%;
+ height: auto;
+}
+.img-thumbnail {
+ padding: 0.25rem;
+ background-color: var(--bs-body-bg);
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ max-width: 100%;
+ height: auto;
+} /*
+.figure {
+ display: inline-block;
+}
+.figure-img {
+ margin-bottom: 0.5rem;
+ line-height: 1;
+}
+.figure-caption {
+ font-size: 0.875em;
+ color: var(--bs-secondary-color);
+}
+:root {
+ --bs-breakpoint-xs: 0;
+ --bs-breakpoint-sm: 576px;
+ --bs-breakpoint-md: 768px;
+ --bs-breakpoint-lg: 992px;
+ --bs-breakpoint-xl: 1200px;
+ --bs-breakpoint-xxl: 1400px;
+}*/
+.row {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: calc(-1 * var(--bs-gutter-y));
+ margin-right: calc(-0.5 * var(--bs-gutter-x));
+ margin-left: calc(-0.5 * var(--bs-gutter-x));
+}
+/*.row > * {
+ flex-shrink: 0;
+ width: 100%;
+ max-width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
+ margin-top: var(--bs-gutter-y);
+}*/
+.col {
+ flex: 1 0 0%;
+}
+.row-cols-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+}
+.row-cols-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+}
+.row-cols-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+}
+.row-cols-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+}
+.row-cols-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+}
+.row-cols-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+}
+.row-cols-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+}
+.col-auto {
+ flex: 0 0 auto;
+ width: auto;
+}
+.col-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+}
+.col-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+}
+.col-3 {
+ flex: 0 0 auto;
+ width: 25%;
+}
+.col-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+}
+.col-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+}
+.col-6 {
+ flex: 0 0 auto;
+ width: 50%;
+}
+.col-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+}
+.col-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+}
+.col-9 {
+ flex: 0 0 auto;
+ width: 75%;
+}
+.col-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+}
+.col-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+}
+.col-12 {
+ flex: 0 0 auto;
+ width: 100%;
+}
+.offset-1 {
+ margin-left: 8.33333333%;
+}
+.offset-2 {
+ margin-left: 16.66666667%;
+}
+.offset-3 {
+ margin-left: 25%;
+}
+.offset-4 {
+ margin-left: 33.33333333%;
+}
+.offset-5 {
+ margin-left: 41.66666667%;
+}
+.offset-6 {
+ margin-left: 50%;
+}
+.offset-7 {
+ margin-left: 58.33333333%;
+}
+.offset-8 {
+ margin-left: 66.66666667%;
+}
+.offset-9 {
+ margin-left: 75%;
+}
+.offset-10 {
+ margin-left: 83.33333333%;
+}
+.offset-11 {
+ margin-left: 91.66666667%;
+}
+.g-0,
+.gx-0 {
+ --bs-gutter-x: 0;
+}
+.g-0,
+.gy-0 {
+ --bs-gutter-y: 0;
+}
+.g-1,
+.gx-1 {
+ --bs-gutter-x: 0.25rem;
+}
+.g-1,
+.gy-1 {
+ --bs-gutter-y: 0.25rem;
+}
+.g-2,
+.gx-2 {
+ --bs-gutter-x: 0.5rem;
+}
+.g-2,
+.gy-2 {
+ --bs-gutter-y: 0.5rem;
+}
+.g-3,
+.gx-3 {
+ --bs-gutter-x: 1rem;
+}
+.g-3,
+.gy-3 {
+ --bs-gutter-y: 1rem;
+}
+.g-4,
+.gx-4 {
+ --bs-gutter-x: 1.5rem;
+}
+.g-4,
+.gy-4 {
+ --bs-gutter-y: 1.5rem;
+}
+.g-5,
+.gx-5 {
+ --bs-gutter-x: 3rem;
+}
+.g-5,
+.gy-5 {
+ --bs-gutter-y: 3rem;
+}
+@media (min-width: 576px) {
+ .col-sm {
+ flex: 1 0 0%;
+ }
+ .row-cols-sm-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-sm-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-sm-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-sm-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-sm-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-sm-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-sm-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-sm-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-sm-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-sm-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-sm-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-sm-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-sm-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-sm-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-sm-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-sm-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-sm-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-sm-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-sm-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-sm-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-sm-0 {
+ margin-left: 0;
+ }
+ .offset-sm-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-sm-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-sm-3 {
+ margin-left: 25%;
+ }
+ .offset-sm-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-sm-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-sm-6 {
+ margin-left: 50%;
+ }
+ .offset-sm-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-sm-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-sm-9 {
+ margin-left: 75%;
+ }
+ .offset-sm-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-sm-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-sm-0,
+ .gx-sm-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-sm-0,
+ .gy-sm-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-sm-1,
+ .gx-sm-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-sm-1,
+ .gy-sm-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-sm-2,
+ .gx-sm-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-sm-2,
+ .gy-sm-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-sm-3,
+ .gx-sm-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-sm-3,
+ .gy-sm-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-sm-4,
+ .gx-sm-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-sm-4,
+ .gy-sm-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-sm-5,
+ .gx-sm-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-sm-5,
+ .gy-sm-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 768px) {
+ .col-md {
+ flex: 1 0 0%;
+ }
+ .row-cols-md-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-md-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-md-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-md-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-md-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-md-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-md-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-md-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-md-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-md-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-md-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-md-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-md-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-md-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-md-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-md-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-md-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-md-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-md-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-md-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-md-0 {
+ margin-left: 0;
+ }
+ .offset-md-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-md-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-md-3 {
+ margin-left: 25%;
+ }
+ .offset-md-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-md-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-md-6 {
+ margin-left: 50%;
+ }
+ .offset-md-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-md-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-md-9 {
+ margin-left: 75%;
+ }
+ .offset-md-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-md-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-md-0,
+ .gx-md-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-md-0,
+ .gy-md-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-md-1,
+ .gx-md-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-md-1,
+ .gy-md-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-md-2,
+ .gx-md-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-md-2,
+ .gy-md-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-md-3,
+ .gx-md-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-md-3,
+ .gy-md-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-md-4,
+ .gx-md-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-md-4,
+ .gy-md-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-md-5,
+ .gx-md-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-md-5,
+ .gy-md-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 992px) {
+ .col-lg {
+ flex: 1 0 0%;
+ }
+ .row-cols-lg-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-lg-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-lg-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-lg-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-lg-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-lg-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-lg-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-lg-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-lg-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-lg-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-lg-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-lg-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-lg-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-lg-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-lg-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-lg-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-lg-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-lg-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-lg-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-lg-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-lg-0 {
+ margin-left: 0;
+ }
+ .offset-lg-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-lg-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-lg-3 {
+ margin-left: 25%;
+ }
+ .offset-lg-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-lg-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-lg-6 {
+ margin-left: 50%;
+ }
+ .offset-lg-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-lg-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-lg-9 {
+ margin-left: 75%;
+ }
+ .offset-lg-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-lg-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-lg-0,
+ .gx-lg-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-lg-0,
+ .gy-lg-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-lg-1,
+ .gx-lg-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-lg-1,
+ .gy-lg-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-lg-2,
+ .gx-lg-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-lg-2,
+ .gy-lg-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-lg-3,
+ .gx-lg-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-lg-3,
+ .gy-lg-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-lg-4,
+ .gx-lg-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-lg-4,
+ .gy-lg-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-lg-5,
+ .gx-lg-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-lg-5,
+ .gy-lg-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 1200px) {
+ .col-xl {
+ flex: 1 0 0%;
+ }
+ .row-cols-xl-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-xl-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-xl-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-xl-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-xl-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-xl-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-xl-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-xl-0 {
+ margin-left: 0;
+ }
+ .offset-xl-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-xl-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-xl-3 {
+ margin-left: 25%;
+ }
+ .offset-xl-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-xl-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-xl-6 {
+ margin-left: 50%;
+ }
+ .offset-xl-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-xl-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-xl-9 {
+ margin-left: 75%;
+ }
+ .offset-xl-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-xl-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-xl-0,
+ .gx-xl-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-xl-0,
+ .gy-xl-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-xl-1,
+ .gx-xl-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-xl-1,
+ .gy-xl-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-xl-2,
+ .gx-xl-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-xl-2,
+ .gy-xl-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-xl-3,
+ .gx-xl-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-xl-3,
+ .gy-xl-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-xl-4,
+ .gx-xl-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-xl-4,
+ .gy-xl-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-xl-5,
+ .gx-xl-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-xl-5,
+ .gy-xl-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 1400px) {
+ .col-xxl {
+ flex: 1 0 0%;
+ }
+ .row-cols-xxl-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-xxl-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-xxl-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-xxl-3 > * {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .row-cols-xxl-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-xxl-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-xxl-6 > * {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xxl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xxl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xxl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xxl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xxl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xxl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xxl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xxl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xxl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xxl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xxl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xxl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xxl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-xxl-0 {
+ margin-left: 0;
+ }
+ .offset-xxl-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-xxl-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-xxl-3 {
+ margin-left: 25%;
+ }
+ .offset-xxl-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-xxl-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-xxl-6 {
+ margin-left: 50%;
+ }
+ .offset-xxl-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-xxl-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-xxl-9 {
+ margin-left: 75%;
+ }
+ .offset-xxl-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-xxl-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-xxl-0,
+ .gx-xxl-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-xxl-0,
+ .gy-xxl-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-xxl-1,
+ .gx-xxl-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-xxl-1,
+ .gy-xxl-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-xxl-2,
+ .gx-xxl-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-xxl-2,
+ .gy-xxl-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-xxl-3,
+ .gx-xxl-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-xxl-3,
+ .gy-xxl-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-xxl-4,
+ .gx-xxl-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-xxl-4,
+ .gy-xxl-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-xxl-5,
+ .gx-xxl-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-xxl-5,
+ .gy-xxl-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+
+.text-left {
+ text-align: left !important;
+}
+.text-right {
+ text-align: right !important;
+}
+.text-center {
+ text-align: center !important;
+}
+
+/*
+.table {
+ --bs-table-color-type: initial;
+ --bs-table-bg-type: initial;
+ --bs-table-color-state: initial;
+ --bs-table-bg-state: initial;
+ --bs-table-color: var(--bs-emphasis-color);
+ --bs-table-bg: var(--bs-body-bg);
+ --bs-table-border-color: var(--bs-border-color);
+ --bs-table-accent-bg: transparent;
+ --bs-table-striped-color: var(--bs-emphasis-color);
+ --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);
+ --bs-table-active-color: var(--bs-emphasis-color);
+ --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);
+ --bs-table-hover-color: var(--bs-emphasis-color);
+ --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);
+ width: 100%;
+ margin-bottom: 1rem;
+ vertical-align: top;
+ border-color: var(--bs-table-border-color);
+}
+.table > :not(caption) > * > * {
+ padding: 0.5rem 0.5rem;
+ color: var(
+ --bs-table-color-state,
+ var(--bs-table-color-type, var(--bs-table-color))
+ );
+ background-color: var(--bs-table-bg);
+ border-bottom-width: var(--bs-border-width);
+ box-shadow: inset 0 0 0 9999px
+ var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
+}
+.table > tbody {
+ vertical-align: inherit;
+}
+.table > thead {
+ vertical-align: bottom;
+}
+.table-group-divider {
+ border-top: calc(var(--bs-border-width) * 2) solid currentcolor;
+}
+.caption-top {
+ caption-side: top;
+}
+.table-sm > :not(caption) > * > * {
+ padding: 0.25rem 0.25rem;
+}
+.table-bordered > :not(caption) > * {
+ border-width: var(--bs-border-width) 0;
+}
+.table-bordered > :not(caption) > * > * {
+ border-width: 0 var(--bs-border-width);
+}
+.table-borderless > :not(caption) > * > * {
+ border-bottom-width: 0;
+}
+.table-borderless > :not(:first-child) {
+ border-top-width: 0;
+}
+.table-striped > tbody > tr:nth-of-type(odd) > * {
+ --bs-table-color-type: var(--bs-table-striped-color);
+ --bs-table-bg-type: var(--bs-table-striped-bg);
+}
+.table-striped-columns > :not(caption) > tr > :nth-child(2n) {
+ --bs-table-color-type: var(--bs-table-striped-color);
+ --bs-table-bg-type: var(--bs-table-striped-bg);
+}
+.table-active {
+ --bs-table-color-state: var(--bs-table-active-color);
+ --bs-table-bg-state: var(--bs-table-active-bg);
+}
+.table-hover > tbody > tr:hover > * {
+ --bs-table-color-state: var(--bs-table-hover-color);
+ --bs-table-bg-state: var(--bs-table-hover-bg);
+}
+.table-primary {
+ --bs-table-color: #000;
+ --bs-table-bg: #cfe2ff;
+ --bs-table-border-color: #a6b5cc;
+ --bs-table-striped-bg: #c5d7f2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #bacbe6;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfd1ec;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-secondary {
+ --bs-table-color: #000;
+ --bs-table-bg: #e2e3e5;
+ --bs-table-border-color: #b5b6b7;
+ --bs-table-striped-bg: #d7d8da;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #cbccce;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #d1d2d4;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-success {
+ --bs-table-color: #000;
+ --bs-table-bg: #d1e7dd;
+ --bs-table-border-color: #a7b9b1;
+ --bs-table-striped-bg: #c7dbd2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #bcd0c7;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #c1d6cc;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-info {
+ --bs-table-color: #000;
+ --bs-table-bg: #cff4fc;
+ --bs-table-border-color: #a6c3ca;
+ --bs-table-striped-bg: #c5e8ef;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #badce3;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfe2e9;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-warning {
+ --bs-table-color: #000;
+ --bs-table-bg: #fff3cd;
+ --bs-table-border-color: #ccc2a4;
+ --bs-table-striped-bg: #f2e7c3;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #e6dbb9;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #ece1be;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-danger {
+ --bs-table-color: #000;
+ --bs-table-bg: #f8d7da;
+ --bs-table-border-color: #c6acae;
+ --bs-table-striped-bg: #eccccf;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfc2c4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5c7ca;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-light {
+ --bs-table-color: #000;
+ --bs-table-bg: #f8f9fa;
+ --bs-table-border-color: #c6c7c8;
+ --bs-table-striped-bg: #ecedee;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfe0e1;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5e6e7;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-dark {
+ --bs-table-color: #fff;
+ --bs-table-bg: #212529;
+ --bs-table-border-color: #4d5154;
+ --bs-table-striped-bg: #2c3034;
+ --bs-table-striped-color: #fff;
+ --bs-table-active-bg: #373b3e;
+ --bs-table-active-color: #fff;
+ --bs-table-hover-bg: #323539;
+ --bs-table-hover-color: #fff;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+.table-responsive {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+}
+@media (max-width: 575.98px) {
+ .table-responsive-sm {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 767.98px) {
+ .table-responsive-md {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 991.98px) {
+ .table-responsive-lg {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 1199.98px) {
+ .table-responsive-xl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 1399.98px) {
+ .table-responsive-xxl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+.form-label {
+ margin-bottom: 0.5rem;
+}
+.col-form-label {
+ padding-top: calc(0.375rem + var(--bs-border-width));
+ padding-bottom: calc(0.375rem + var(--bs-border-width));
+ margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5;
+}
+.col-form-label-lg {
+ padding-top: calc(0.5rem + var(--bs-border-width));
+ padding-bottom: calc(0.5rem + var(--bs-border-width));
+ font-size: 1.25rem;
+}
+.col-form-label-sm {
+ padding-top: calc(0.25rem + var(--bs-border-width));
+ padding-bottom: calc(0.25rem + var(--bs-border-width));
+ font-size: 0.875rem;
+}
+.form-text {
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-secondary-color);
+}
+.form-control {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: var(--bs-body-bg);
+ background-clip: padding-box;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control {
+ transition: none;
+ }
+}
+.form-control[type="file"] {
+ overflow: hidden;
+}
+.form-control[type="file"]:not(:disabled):not([readonly]) {
+ cursor: pointer;
+}
+.form-control:focus {
+ color: var(--bs-body-color);
+ background-color: var(--bs-body-bg);
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-control::-webkit-date-and-time-value {
+ min-width: 85px;
+ height: 1.5em;
+ margin: 0;
+}
+.form-control::-webkit-datetime-edit {
+ display: block;
+ padding: 0;
+}
+.form-control::-moz-placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control::placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control:disabled {
+ background-color: var(--bs-secondary-bg);
+ opacity: 1;
+}
+.form-control::-webkit-file-upload-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ -webkit-transition: color 0.15s ease-in-out,
+ background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
+ box-shadow 0.15s ease-in-out;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+.form-control::file-selector-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control::-webkit-file-upload-button {
+ -webkit-transition: none;
+ transition: none;
+ }
+ .form-control::file-selector-button {
+ transition: none;
+ }
+}
+.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+ background-color: var(--bs-secondary-bg);
+}
+.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
+ background-color: var(--bs-secondary-bg);
+}
+.form-control-plaintext {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0;
+ margin-bottom: 0;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ background-color: transparent;
+ border: solid transparent;
+ border-width: var(--bs-border-width) 0;
+}
+.form-control-plaintext:focus {
+ outline: 0;
+}
+.form-control-plaintext.form-control-lg,
+.form-control-plaintext.form-control-sm {
+ padding-right: 0;
+ padding-left: 0;
+}
+.form-control-sm {
+ min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+.form-control-sm::-webkit-file-upload-button {
+ padding: 0.25rem 0.5rem;
+ margin: -0.25rem -0.5rem;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+.form-control-sm::file-selector-button {
+ padding: 0.25rem 0.5rem;
+ margin: -0.25rem -0.5rem;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+.form-control-lg {
+ min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+.form-control-lg::-webkit-file-upload-button {
+ padding: 0.5rem 1rem;
+ margin: -0.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem;
+}
+.form-control-lg::file-selector-button {
+ padding: 0.5rem 1rem;
+ margin: -0.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem;
+}
+textarea.form-control {
+ min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
+}
+textarea.form-control-sm {
+ min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+}
+textarea.form-control-lg {
+ min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+}
+.form-control-color {
+ width: 3rem;
+ height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
+ padding: 0.375rem;
+}
+.form-control-color:not(:disabled):not([readonly]) {
+ cursor: pointer;
+}
+.form-control-color::-moz-color-swatch {
+ border: 0 !important;
+ border-radius: var(--bs-border-radius);
+}
+.form-control-color::-webkit-color-swatch {
+ border: 0 !important;
+ border-radius: var(--bs-border-radius);
+}
+.form-control-color.form-control-sm {
+ height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+}
+.form-control-color.form-control-lg {
+ height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+}
+.form-select {
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
+ display: block;
+ width: 100%;
+ padding: 0.375rem 2.25rem 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: var(--bs-body-bg);
+ background-image: var(--bs-form-select-bg-img),
+ var(--bs-form-select-bg-icon, none);
+ background-repeat: no-repeat;
+ background-position: right 0.75rem center;
+ background-size: 16px 12px;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-select {
+ transition: none;
+ }
+}
+.form-select:focus {
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-select[multiple],
+.form-select[size]:not([size="1"]) {
+ padding-right: 0.75rem;
+ background-image: none;
+}
+.form-select:disabled {
+ background-color: var(--bs-secondary-bg);
+}
+.form-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 var(--bs-body-color);
+}
+.form-select-sm {
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ padding-left: 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+.form-select-lg {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+[data-bs-theme="dark"] .form-select {
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
+}
+.form-check {
+ display: block;
+ min-height: 1.5rem;
+ padding-left: 1.5em;
+ margin-bottom: 0.125rem;
+}
+.form-check .form-check-input {
+ float: left;
+ margin-left: -1.5em;
+}
+.form-check-reverse {
+ padding-right: 1.5em;
+ padding-left: 0;
+ text-align: right;
+}
+.form-check-reverse .form-check-input {
+ float: right;
+ margin-right: -1.5em;
+ margin-left: 0;
+}
+.form-check-input {
+ --bs-form-check-bg: var(--bs-body-bg);
+ flex-shrink: 0;
+ width: 1em;
+ height: 1em;
+ margin-top: 0.25em;
+ vertical-align: top;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: var(--bs-form-check-bg);
+ background-image: var(--bs-form-check-bg-image);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
+ print-color-adjust: exact;
+}
+.form-check-input[type="checkbox"] {
+ border-radius: 0.25em;
+}
+.form-check-input[type="radio"] {
+ border-radius: 50%;
+}
+.form-check-input:active {
+ filter: brightness(90%);
+}
+.form-check-input:focus {
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-check-input:checked {
+ background-color: #0d6efd;
+ border-color: #0d6efd;
+}
+.form-check-input:checked[type="checkbox"] {
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
+}
+.form-check-input:checked[type="radio"] {
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-check-input[type="checkbox"]:indeterminate {
+ background-color: #0d6efd;
+ border-color: #0d6efd;
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
+}
+.form-check-input:disabled {
+ pointer-events: none;
+ filter: none;
+ opacity: 0.5;
+}
+.form-check-input:disabled ~ .form-check-label,
+.form-check-input[disabled] ~ .form-check-label {
+ cursor: default;
+ opacity: 0.5;
+}
+.form-switch {
+ padding-left: 2.5em;
+}
+.form-switch .form-check-input {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");
+ width: 2em;
+ margin-left: -2.5em;
+ background-image: var(--bs-form-switch-bg);
+ background-position: left center;
+ border-radius: 2em;
+ transition: background-position 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-switch .form-check-input {
+ transition: none;
+ }
+}
+.form-switch .form-check-input:focus {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e");
+}
+.form-switch .form-check-input:checked {
+ background-position: right center;
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-switch.form-check-reverse {
+ padding-right: 2.5em;
+ padding-left: 0;
+}
+.form-switch.form-check-reverse .form-check-input {
+ margin-right: -2.5em;
+ margin-left: 0;
+}
+.form-check-inline {
+ display: inline-block;
+ margin-right: 1rem;
+}
+.btn-check {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.btn-check:disabled + .btn,
+.btn-check[disabled] + .btn {
+ pointer-events: none;
+ filter: none;
+ opacity: 0.65;
+}
+[data-bs-theme="dark"]
+ .form-switch
+ .form-check-input:not(:checked):not(:focus) {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
+}
+.form-range {
+ width: 100%;
+ height: 1.5rem;
+ padding: 0;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: transparent;
+}
+.form-range:focus {
+ outline: 0;
+}
+.form-range:focus::-webkit-slider-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range:focus::-moz-range-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range::-moz-focus-outer {
+ border: 0;
+}
+.form-range::-webkit-slider-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: -0.25rem;
+ -webkit-appearance: none;
+ appearance: none;
+ background-color: #0d6efd;
+ border: 0;
+ border-radius: 1rem;
+ -webkit-transition: background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
+ box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-webkit-slider-thumb {
+ -webkit-transition: none;
+ transition: none;
+ }
+}
+.form-range::-webkit-slider-thumb:active {
+ background-color: #b6d4fe;
+}
+.form-range::-webkit-slider-runnable-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: var(--bs-secondary-bg);
+ border-color: transparent;
+ border-radius: 1rem;
+}
+.form-range::-moz-range-thumb {
+ width: 1rem;
+ height: 1rem;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #0d6efd;
+ border: 0;
+ border-radius: 1rem;
+ -moz-transition: background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
+ box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-moz-range-thumb {
+ -moz-transition: none;
+ transition: none;
+ }
+}
+.form-range::-moz-range-thumb:active {
+ background-color: #b6d4fe;
+}
+.form-range::-moz-range-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: var(--bs-secondary-bg);
+ border-color: transparent;
+ border-radius: 1rem;
+}
+.form-range:disabled {
+ pointer-events: none;
+}
+.form-range:disabled::-webkit-slider-thumb {
+ background-color: var(--bs-secondary-color);
+}
+.form-range:disabled::-moz-range-thumb {
+ background-color: var(--bs-secondary-color);
+}
+.form-floating {
+ position: relative;
+}
+.form-floating > .form-control,
+.form-floating > .form-control-plaintext,
+.form-floating > .form-select {
+ height: calc(3.5rem + calc(var(--bs-border-width) * 2));
+ min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));
+ line-height: 1.25;
+}
+.form-floating > label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 2;
+ height: 100%;
+ padding: 1rem 0.75rem;
+ overflow: hidden;
+ text-align: start;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ pointer-events: none;
+ border: var(--bs-border-width) solid transparent;
+ transform-origin: 0 0;
+ transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-floating > label {
+ transition: none;
+ }
+}
+.form-floating > .form-control,
+.form-floating > .form-control-plaintext {
+ padding: 1rem 0.75rem;
+}
+.form-floating > .form-control-plaintext::-moz-placeholder,
+.form-floating > .form-control::-moz-placeholder {
+ color: transparent;
+}
+.form-floating > .form-control-plaintext::placeholder,
+.form-floating > .form-control::placeholder {
+ color: transparent;
+}
+.form-floating > .form-control-plaintext:not(:-moz-placeholder-shown),
+.form-floating > .form-control:not(:-moz-placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control-plaintext:focus,
+.form-floating > .form-control-plaintext:not(:placeholder-shown),
+.form-floating > .form-control:focus,
+.form-floating > .form-control:not(:placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control-plaintext:-webkit-autofill,
+.form-floating > .form-control:-webkit-autofill {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-select {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control-plaintext ~ label,
+.form-floating > .form-control:focus ~ label,
+.form-floating > .form-control:not(:placeholder-shown) ~ label,
+.form-floating > .form-select ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {
+ position: absolute;
+ inset: 1rem 0.375rem;
+ z-index: -1;
+ height: 1.5em;
+ content: "";
+ background-color: var(--bs-body-bg);
+ border-radius: var(--bs-border-radius);
+}
+.form-floating > .form-control-plaintext ~ label::after,
+.form-floating > .form-control:focus ~ label::after,
+.form-floating > .form-control:not(:placeholder-shown) ~ label::after,
+.form-floating > .form-select ~ label::after {
+ position: absolute;
+ inset: 1rem 0.375rem;
+ z-index: -1;
+ height: 1.5em;
+ content: "";
+ background-color: var(--bs-body-bg);
+ border-radius: var(--bs-border-radius);
+}
+.form-floating > .form-control:-webkit-autofill ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control-plaintext ~ label {
+ border-width: var(--bs-border-width) 0;
+}
+.form-floating > .form-control:disabled ~ label,
+.form-floating > :disabled ~ label {
+ color: #6c757d;
+}
+.form-floating > .form-control:disabled ~ label::after,
+.form-floating > :disabled ~ label::after {
+ background-color: var(--bs-secondary-bg);
+}
+.input-group {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+ width: 100%;
+}
+.input-group > .form-control,
+.input-group > .form-floating,
+.input-group > .form-select {
+ position: relative;
+ flex: 1 1 auto;
+ width: 1%;
+ min-width: 0;
+}
+.input-group > .form-control:focus,
+.input-group > .form-floating:focus-within,
+.input-group > .form-select:focus {
+ z-index: 5;
+}
+.input-group .btn {
+ position: relative;
+ z-index: 2;
+}
+.input-group .btn:focus {
+ z-index: 5;
+}
+.input-group-text {
+ display: flex;
+ align-items: center;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--bs-tertiary-bg);
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+}
+.input-group-lg > .btn,
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text {
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+.input-group-sm > .btn,
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+ padding-right: 3rem;
+}
+.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n + 3),
+.input-group:not(.has-validation)
+ > .form-floating:not(:last-child)
+ > .form-control,
+.input-group:not(.has-validation)
+ > .form-floating:not(:last-child)
+ > .form-select,
+.input-group:not(.has-validation)
+ > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(
+ .form-floating
+ ) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group.has-validation > .dropdown-toggle:nth-last-child(n + 4),
+.input-group.has-validation
+ > .form-floating:nth-last-child(n + 3)
+ > .form-control,
+.input-group.has-validation
+ > .form-floating:nth-last-child(n + 3)
+ > .form-select,
+.input-group.has-validation
+ > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(
+ .form-floating
+ ) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group
+ > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(
+ .valid-feedback
+ ):not(.invalid-tooltip):not(.invalid-feedback) {
+ margin-left: calc(var(--bs-border-width) * -1);
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.input-group > .form-floating:not(:first-child) > .form-control,
+.input-group > .form-floating:not(:first-child) > .form-select {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.valid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-form-valid-color);
+}
+.valid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-success);
+ border-radius: var(--bs-border-radius);
+}
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip,
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip {
+ display: block;
+}
+.form-control.is-valid,
+.was-validated .form-control:valid {
+ border-color: var(--bs-form-valid-border-color);
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.form-control.is-valid:focus,
+.was-validated .form-control:valid:focus {
+ border-color: var(--bs-form-valid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+.was-validated textarea.form-control:valid,
+textarea.form-control.is-valid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right
+ calc(0.375em + 0.1875rem);
+}
+.form-select.is-valid,
+.was-validated .form-select:valid {
+ border-color: var(--bs-form-valid-border-color);
+}
+.form-select.is-valid:not([multiple]):not([size]),
+.form-select.is-valid:not([multiple])[size="1"],
+.was-validated .form-select:valid:not([multiple]):not([size]),
+.was-validated .form-select:valid:not([multiple])[size="1"] {
+ --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ padding-right: 4.125rem;
+ background-position: right 0.75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.form-select.is-valid:focus,
+.was-validated .form-select:valid:focus {
+ border-color: var(--bs-form-valid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+.form-control-color.is-valid,
+.was-validated .form-control-color:valid {
+ width: calc(3rem + calc(1.5em + 0.75rem));
+}
+.form-check-input.is-valid,
+.was-validated .form-check-input:valid {
+ border-color: var(--bs-form-valid-border-color);
+}
+.form-check-input.is-valid:checked,
+.was-validated .form-check-input:valid:checked {
+ background-color: var(--bs-form-valid-color);
+}
+.form-check-input.is-valid:focus,
+.was-validated .form-check-input:valid:focus {
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+.form-check-input.is-valid ~ .form-check-label,
+.was-validated .form-check-input:valid ~ .form-check-label {
+ color: var(--bs-form-valid-color);
+}
+.form-check-inline .form-check-input ~ .valid-feedback {
+ margin-left: 0.5em;
+}
+.input-group > .form-control:not(:focus).is-valid,
+.input-group > .form-floating:not(:focus-within).is-valid,
+.input-group > .form-select:not(:focus).is-valid,
+.was-validated .input-group > .form-control:not(:focus):valid,
+.was-validated .input-group > .form-floating:not(:focus-within):valid,
+.was-validated .input-group > .form-select:not(:focus):valid {
+ z-index: 3;
+}
+.invalid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-form-invalid-color);
+}
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-danger);
+ border-radius: var(--bs-border-radius);
+}
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip,
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip {
+ display: block;
+}
+.form-control.is-invalid,
+.was-validated .form-control:invalid {
+ border-color: var(--bs-form-invalid-border-color);
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.form-control.is-invalid:focus,
+.was-validated .form-control:invalid:focus {
+ border-color: var(--bs-form-invalid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+.was-validated textarea.form-control:invalid,
+textarea.form-control.is-invalid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right
+ calc(0.375em + 0.1875rem);
+}
+.form-select.is-invalid,
+.was-validated .form-select:invalid {
+ border-color: var(--bs-form-invalid-border-color);
+}
+.form-select.is-invalid:not([multiple]):not([size]),
+.form-select.is-invalid:not([multiple])[size="1"],
+.was-validated .form-select:invalid:not([multiple]):not([size]),
+.was-validated .form-select:invalid:not([multiple])[size="1"] {
+ --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+ padding-right: 4.125rem;
+ background-position: right 0.75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.form-select.is-invalid:focus,
+.was-validated .form-select:invalid:focus {
+ border-color: var(--bs-form-invalid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+.form-control-color.is-invalid,
+.was-validated .form-control-color:invalid {
+ width: calc(3rem + calc(1.5em + 0.75rem));
+}
+.form-check-input.is-invalid,
+.was-validated .form-check-input:invalid {
+ border-color: var(--bs-form-invalid-border-color);
+}
+.form-check-input.is-invalid:checked,
+.was-validated .form-check-input:invalid:checked {
+ background-color: var(--bs-form-invalid-color);
+}
+.form-check-input.is-invalid:focus,
+.was-validated .form-check-input:invalid:focus {
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+.form-check-input.is-invalid ~ .form-check-label,
+.was-validated .form-check-input:invalid ~ .form-check-label {
+ color: var(--bs-form-invalid-color);
+}
+.form-check-inline .form-check-input ~ .invalid-feedback {
+ margin-left: 0.5em;
+}
+.input-group > .form-control:not(:focus).is-invalid,
+.input-group > .form-floating:not(:focus-within).is-invalid,
+.input-group > .form-select:not(:focus).is-invalid,
+.was-validated .input-group > .form-control:not(:focus):invalid,
+.was-validated .input-group > .form-floating:not(:focus-within):invalid,
+.was-validated .input-group > .form-select:not(:focus):invalid {
+ z-index: 4;
+}
+.btn {
+ --bs-btn-padding-x: 0.75rem;
+ --bs-btn-padding-y: 0.375rem;
+ --bs-btn-font-family: ;
+ --bs-btn-font-size: 1rem;
+ --bs-btn-font-weight: 400;
+ --bs-btn-line-height: 1.5;
+ --bs-btn-color: var(--bs-body-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-width: var(--bs-border-width);
+ --bs-btn-border-color: transparent;
+ --bs-btn-border-radius: var(--bs-border-radius);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),
+ 0 1px 1px rgba(0, 0, 0, 0.075);
+ --bs-btn-disabled-opacity: 0.65;
+ --bs-btn-focus-box-shadow: 0 0 0 0.25rem
+ rgba(var(--bs-btn-focus-shadow-rgb), 0.5);
+ display: inline-block;
+ padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
+ font-family: var(--bs-btn-font-family);
+ font-size: var(--bs-btn-font-size);
+ font-weight: var(--bs-btn-font-weight);
+ line-height: var(--bs-btn-line-height);
+ color: var(--bs-btn-color);
+ text-align: center;
+ text-decoration: none;
+ vertical-align: middle;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
+ border-radius: var(--bs-btn-border-radius);
+ background-color: var(--bs-btn-bg);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .btn {
+ transition: none;
+ }
+}
+.btn:hover {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+}
+.btn-check + .btn:hover {
+ color: var(--bs-btn-color);
+ background-color: var(--bs-btn-bg);
+ border-color: var(--bs-btn-border-color);
+}
+.btn:focus-visible {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+ outline: 0;
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn-check:focus-visible + .btn {
+ border-color: var(--bs-btn-hover-border-color);
+ outline: 0;
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn-check:checked + .btn,
+.btn.active,
+.btn.show,
+.btn:first-child:active,
+:not(.btn-check) + .btn:active {
+ color: var(--bs-btn-active-color);
+ background-color: var(--bs-btn-active-bg);
+ border-color: var(--bs-btn-active-border-color);
+}
+.btn-check:checked + .btn:focus-visible,
+.btn.active:focus-visible,
+.btn.show:focus-visible,
+.btn:first-child:active:focus-visible,
+:not(.btn-check) + .btn:active:focus-visible {
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn-check:checked:focus-visible + .btn {
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn.disabled,
+.btn:disabled,
+fieldset:disabled .btn {
+ color: var(--bs-btn-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-btn-disabled-bg);
+ border-color: var(--bs-btn-disabled-border-color);
+ opacity: var(--bs-btn-disabled-opacity);
+}
+.btn-primary {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #0d6efd;
+ --bs-btn-border-color: #0d6efd;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #0b5ed7;
+ --bs-btn-hover-border-color: #0a58ca;
+ --bs-btn-focus-shadow-rgb: 49, 132, 253;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #0a58ca;
+ --bs-btn-active-border-color: #0a53be;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #0d6efd;
+ --bs-btn-disabled-border-color: #0d6efd;
+}
+.btn-secondary {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #6c757d;
+ --bs-btn-border-color: #6c757d;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #5c636a;
+ --bs-btn-hover-border-color: #565e64;
+ --bs-btn-focus-shadow-rgb: 130, 138, 145;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #565e64;
+ --bs-btn-active-border-color: #51585e;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #6c757d;
+ --bs-btn-disabled-border-color: #6c757d;
+}
+.btn-success {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #198754;
+ --bs-btn-border-color: #198754;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #157347;
+ --bs-btn-hover-border-color: #146c43;
+ --bs-btn-focus-shadow-rgb: 60, 153, 110;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #146c43;
+ --bs-btn-active-border-color: #13653f;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #198754;
+ --bs-btn-disabled-border-color: #198754;
+}
+.btn-info {
+ --bs-btn-color: #000;
+ --bs-btn-bg: #0dcaf0;
+ --bs-btn-border-color: #0dcaf0;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #31d2f2;
+ --bs-btn-hover-border-color: #25cff2;
+ --bs-btn-focus-shadow-rgb: 11, 172, 204;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #3dd5f3;
+ --bs-btn-active-border-color: #25cff2;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #000;
+ --bs-btn-disabled-bg: #0dcaf0;
+ --bs-btn-disabled-border-color: #0dcaf0;
+}
+.btn-warning {
+ --bs-btn-color: #000;
+ --bs-btn-bg: #ffc107;
+ --bs-btn-border-color: #ffc107;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #ffca2c;
+ --bs-btn-hover-border-color: #ffc720;
+ --bs-btn-focus-shadow-rgb: 217, 164, 6;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #ffcd39;
+ --bs-btn-active-border-color: #ffc720;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #000;
+ --bs-btn-disabled-bg: #ffc107;
+ --bs-btn-disabled-border-color: #ffc107;
+}
+.btn-danger {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #dc3545;
+ --bs-btn-border-color: #dc3545;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #bb2d3b;
+ --bs-btn-hover-border-color: #b02a37;
+ --bs-btn-focus-shadow-rgb: 225, 83, 97;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #b02a37;
+ --bs-btn-active-border-color: #a52834;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #dc3545;
+ --bs-btn-disabled-border-color: #dc3545;
+}
+.btn-light {
+ --bs-btn-color: #000;
+ --bs-btn-bg: #f8f9fa;
+ --bs-btn-border-color: #f8f9fa;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #d3d4d5;
+ --bs-btn-hover-border-color: #c6c7c8;
+ --bs-btn-focus-shadow-rgb: 211, 212, 213;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #c6c7c8;
+ --bs-btn-active-border-color: #babbbc;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #000;
+ --bs-btn-disabled-bg: #f8f9fa;
+ --bs-btn-disabled-border-color: #f8f9fa;
+}
+.btn-dark {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #212529;
+ --bs-btn-border-color: #212529;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #424649;
+ --bs-btn-hover-border-color: #373b3e;
+ --bs-btn-focus-shadow-rgb: 66, 70, 73;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #4d5154;
+ --bs-btn-active-border-color: #373b3e;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #212529;
+ --bs-btn-disabled-border-color: #212529;
+}
+.btn-outline-primary {
+ --bs-btn-color: #0d6efd;
+ --bs-btn-border-color: #0d6efd;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #0d6efd;
+ --bs-btn-hover-border-color: #0d6efd;
+ --bs-btn-focus-shadow-rgb: 13, 110, 253;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #0d6efd;
+ --bs-btn-active-border-color: #0d6efd;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #0d6efd;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #0d6efd;
+ --bs-gradient: none;
+}
+.btn-outline-secondary {
+ --bs-btn-color: #6c757d;
+ --bs-btn-border-color: #6c757d;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #6c757d;
+ --bs-btn-hover-border-color: #6c757d;
+ --bs-btn-focus-shadow-rgb: 108, 117, 125;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #6c757d;
+ --bs-btn-active-border-color: #6c757d;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #6c757d;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #6c757d;
+ --bs-gradient: none;
+}
+.btn-outline-success {
+ --bs-btn-color: #198754;
+ --bs-btn-border-color: #198754;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #198754;
+ --bs-btn-hover-border-color: #198754;
+ --bs-btn-focus-shadow-rgb: 25, 135, 84;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #198754;
+ --bs-btn-active-border-color: #198754;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #198754;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #198754;
+ --bs-gradient: none;
+}
+.btn-outline-info {
+ --bs-btn-color: #0dcaf0;
+ --bs-btn-border-color: #0dcaf0;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #0dcaf0;
+ --bs-btn-hover-border-color: #0dcaf0;
+ --bs-btn-focus-shadow-rgb: 13, 202, 240;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #0dcaf0;
+ --bs-btn-active-border-color: #0dcaf0;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #0dcaf0;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #0dcaf0;
+ --bs-gradient: none;
+}
+.btn-outline-warning {
+ --bs-btn-color: #ffc107;
+ --bs-btn-border-color: #ffc107;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #ffc107;
+ --bs-btn-hover-border-color: #ffc107;
+ --bs-btn-focus-shadow-rgb: 255, 193, 7;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #ffc107;
+ --bs-btn-active-border-color: #ffc107;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #ffc107;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #ffc107;
+ --bs-gradient: none;
+}
+.btn-outline-danger {
+ --bs-btn-color: #dc3545;
+ --bs-btn-border-color: #dc3545;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #dc3545;
+ --bs-btn-hover-border-color: #dc3545;
+ --bs-btn-focus-shadow-rgb: 220, 53, 69;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #dc3545;
+ --bs-btn-active-border-color: #dc3545;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #dc3545;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #dc3545;
+ --bs-gradient: none;
+}
+.btn-outline-light {
+ --bs-btn-color: #f8f9fa;
+ --bs-btn-border-color: #f8f9fa;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #f8f9fa;
+ --bs-btn-hover-border-color: #f8f9fa;
+ --bs-btn-focus-shadow-rgb: 248, 249, 250;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #f8f9fa;
+ --bs-btn-active-border-color: #f8f9fa;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #f8f9fa;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #f8f9fa;
+ --bs-gradient: none;
+}
+.btn-outline-dark {
+ --bs-btn-color: #212529;
+ --bs-btn-border-color: #212529;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #212529;
+ --bs-btn-hover-border-color: #212529;
+ --bs-btn-focus-shadow-rgb: 33, 37, 41;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #212529;
+ --bs-btn-active-border-color: #212529;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #212529;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #212529;
+ --bs-gradient: none;
+}
+.btn-link {
+ --bs-btn-font-weight: 400;
+ --bs-btn-color: var(--bs-link-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-color: transparent;
+ --bs-btn-hover-color: var(--bs-link-hover-color);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-active-color: var(--bs-link-hover-color);
+ --bs-btn-active-border-color: transparent;
+ --bs-btn-disabled-color: #6c757d;
+ --bs-btn-disabled-border-color: transparent;
+ --bs-btn-box-shadow: 0 0 0 #000;
+ --bs-btn-focus-shadow-rgb: 49, 132, 253;
+ text-decoration: underline;
+}
+.btn-link:focus-visible {
+ color: var(--bs-btn-color);
+}
+.btn-link:hover {
+ color: var(--bs-btn-hover-color);
+}
+.btn-group-lg > .btn,
+.btn-lg {
+ --bs-btn-padding-y: 0.5rem;
+ --bs-btn-padding-x: 1rem;
+ --bs-btn-font-size: 1.25rem;
+ --bs-btn-border-radius: var(--bs-border-radius-lg);
+}
+.btn-group-sm > .btn,
+.btn-sm {
+ --bs-btn-padding-y: 0.25rem;
+ --bs-btn-padding-x: 0.5rem;
+ --bs-btn-font-size: 0.875rem;
+ --bs-btn-border-radius: var(--bs-border-radius-sm);
+}
+.fade {
+ transition: opacity 0.15s linear;
+}
+@media (prefers-reduced-motion: reduce) {
+ .fade {
+ transition: none;
+ }
+}
+.fade:not(.show) {
+ opacity: 0;
+}
+.collapse:not(.show) {
+ display: none;
+}
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ transition: height 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing {
+ transition: none;
+ }
+}
+.collapsing.collapse-horizontal {
+ width: 0;
+ height: auto;
+ transition: width 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing.collapse-horizontal {
+ transition: none;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle;
+}
+.btn-group-vertical > .btn,
+.btn-group > .btn {
+ position: relative;
+ flex: 1 1 auto;
+}
+.btn-group-vertical > .btn-check:checked + .btn,
+.btn-group-vertical > .btn-check:focus + .btn,
+.btn-group-vertical > .btn.active,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn-check:checked + .btn,
+.btn-group > .btn-check:focus + .btn,
+.btn-group > .btn.active,
+.btn-group > .btn:active,
+.btn-group > .btn:focus,
+.btn-group > .btn:hover {
+ z-index: 1;
+}
+.btn-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+}
+.btn-toolbar .input-group {
+ width: auto;
+}
+.btn-group {
+ border-radius: var(--bs-border-radius);
+}
+.btn-group > .btn-group:not(:first-child),
+.btn-group > :not(.btn-check:first-child) + .btn {
+ margin-left: calc(var(--bs-border-width) * -1);
+}
+.btn-group > .btn-group:not(:last-child) > .btn,
+.btn-group > .btn.dropdown-toggle-split:first-child,
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:not(:first-child) > .btn,
+.btn-group > .btn:nth-child(n + 3),
+.btn-group > :not(.btn-check) + .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.dropdown-toggle-split {
+ padding-right: 0.5625rem;
+ padding-left: 0.5625rem;
+}
+.dropdown-toggle-split::after,
+.dropend .dropdown-toggle-split::after,
+.dropup .dropdown-toggle-split::after {
+ margin-left: 0;
+}
+.dropstart .dropdown-toggle-split::before {
+ margin-right: 0;
+}
+.btn-group-sm > .btn + .dropdown-toggle-split,
+.btn-sm + .dropdown-toggle-split {
+ padding-right: 0.375rem;
+ padding-left: 0.375rem;
+}
+.btn-group-lg > .btn + .dropdown-toggle-split,
+.btn-lg + .dropdown-toggle-split {
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+}
+.btn-group-vertical {
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group {
+ width: 100%;
+}
+.btn-group-vertical > .btn-group:not(:first-child),
+.btn-group-vertical > .btn:not(:first-child) {
+ margin-top: calc(var(--bs-border-width) * -1);
+}
+.btn-group-vertical > .btn-group:not(:last-child) > .btn,
+.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:not(:first-child) > .btn,
+.btn-group-vertical > .btn ~ .btn {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.nav {
+ --bs-nav-link-padding-x: 1rem;
+ --bs-nav-link-padding-y: 0.5rem;
+ --bs-nav-link-font-weight: ;
+ --bs-nav-link-color: var(--bs-link-color);
+ --bs-nav-link-hover-color: var(--bs-link-hover-color);
+ --bs-nav-link-disabled-color: var(--bs-secondary-color);
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.nav-link {
+ display: block;
+ padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
+ font-size: var(--bs-nav-link-font-size);
+ font-weight: var(--bs-nav-link-font-weight);
+ color: var(--bs-nav-link-color);
+ text-decoration: none;
+ background: 0 0;
+ border: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .nav-link {
+ transition: none;
+ }
+}
+.nav-link:focus,
+.nav-link:hover {
+ color: var(--bs-nav-link-hover-color);
+}
+.nav-link:focus-visible {
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.nav-link.disabled,
+.nav-link:disabled {
+ color: var(--bs-nav-link-disabled-color);
+ pointer-events: none;
+ cursor: default;
+}
+.nav-tabs {
+ --bs-nav-tabs-border-width: var(--bs-border-width);
+ --bs-nav-tabs-border-color: var(--bs-border-color);
+ --bs-nav-tabs-border-radius: var(--bs-border-radius);
+ --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg)
+ var(--bs-secondary-bg) var(--bs-border-color);
+ --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);
+ --bs-nav-tabs-link-active-bg: var(--bs-body-bg);
+ --bs-nav-tabs-link-active-border-color: var(--bs-border-color)
+ var(--bs-border-color) var(--bs-body-bg);
+ border-bottom: var(--bs-nav-tabs-border-width) solid
+ var(--bs-nav-tabs-border-color);
+}
+.nav-tabs .nav-link {
+ margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));
+ border: var(--bs-nav-tabs-border-width) solid transparent;
+ border-top-left-radius: var(--bs-nav-tabs-border-radius);
+ border-top-right-radius: var(--bs-nav-tabs-border-radius);
+}
+.nav-tabs .nav-link:focus,
+.nav-tabs .nav-link:hover {
+ isolation: isolate;
+ border-color: var(--bs-nav-tabs-link-hover-border-color);
+}
+.nav-tabs .nav-item.show .nav-link,
+.nav-tabs .nav-link.active {
+ color: var(--bs-nav-tabs-link-active-color);
+ background-color: var(--bs-nav-tabs-link-active-bg);
+ border-color: var(--bs-nav-tabs-link-active-border-color);
+}
+.nav-pills {
+ --bs-nav-pills-border-radius: var(--bs-border-radius);
+ --bs-nav-pills-link-active-color: #fff;
+ --bs-nav-pills-link-active-bg: #0d6efd;
+}
+.nav-pills .nav-link {
+ border-radius: var(--bs-nav-pills-border-radius);
+}
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+ color: var(--bs-nav-pills-link-active-color);
+ background-color: var(--bs-nav-pills-link-active-bg);
+}
+.nav-underline {
+ --bs-nav-underline-gap: 1rem;
+ --bs-nav-underline-border-width: 0.125rem;
+ --bs-nav-underline-link-active-color: var(--bs-emphasis-color);
+ gap: var(--bs-nav-underline-gap);
+}
+.nav-underline .nav-link {
+ padding-right: 0;
+ padding-left: 0;
+ border-bottom: var(--bs-nav-underline-border-width) solid transparent;
+}
+.nav-underline .nav-link:focus,
+.nav-underline .nav-link:hover {
+ border-bottom-color: currentcolor;
+}
+.nav-underline .nav-link.active,
+.nav-underline .show > .nav-link {
+ font-weight: 700;
+ color: var(--bs-nav-underline-link-active-color);
+ border-bottom-color: currentcolor;
+}
+.nav-fill .nav-item,
+.nav-fill > .nav-link {
+ flex: 1 1 auto;
+ text-align: center;
+}
+.nav-justified .nav-item,
+.nav-justified > .nav-link {
+ flex-basis: 0;
+ flex-grow: 1;
+ text-align: center;
+}
+.nav-fill .nav-item .nav-link,
+.nav-justified .nav-item .nav-link {
+ width: 100%;
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.card {
+ --bs-card-spacer-y: 1rem;
+ --bs-card-spacer-x: 1rem;
+ --bs-card-title-spacer-y: 0.5rem;
+ --bs-card-title-color: ;
+ --bs-card-subtitle-color: ;
+ --bs-card-border-width: var(--bs-border-width);
+ --bs-card-border-color: var(--bs-border-color-translucent);
+ --bs-card-border-radius: var(--bs-border-radius);
+ --bs-card-box-shadow: ;
+ --bs-card-inner-border-radius: calc(
+ var(--bs-border-radius) - (var(--bs-border-width))
+ );
+ --bs-card-cap-padding-y: 0.5rem;
+ --bs-card-cap-padding-x: 1rem;
+ --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);
+ --bs-card-cap-color: ;
+ --bs-card-height: ;
+ --bs-card-color: ;
+ --bs-card-bg: var(--bs-body-bg);
+ --bs-card-img-overlay-padding: 1rem;
+ --bs-card-group-margin: 0.75rem;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ height: var(--bs-card-height);
+ color: var(--bs-body-color);
+ word-wrap: break-word;
+ background-color: var(--bs-card-bg);
+ background-clip: border-box;
+ border: var(--bs-card-border-width) solid var(--bs-card-border-color);
+ border-radius: var(--bs-card-border-radius);
+}
+.card > hr {
+ margin-right: 0;
+ margin-left: 0;
+}
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
+}
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: var(--bs-card-inner-border-radius);
+ border-top-right-radius: var(--bs-card-inner-border-radius);
+}
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: var(--bs-card-inner-border-radius);
+ border-bottom-left-radius: var(--bs-card-inner-border-radius);
+}
+.card > .card-header + .list-group,
+.card > .list-group + .card-footer {
+ border-top: 0;
+}
+.card-body {
+ flex: 1 1 auto;
+ padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
+ color: var(--bs-card-color);
+}
+.card-title {
+ margin-bottom: var(--bs-card-title-spacer-y);
+ color: var(--bs-card-title-color);
+}
+.card-subtitle {
+ margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));
+ margin-bottom: 0;
+ color: var(--bs-card-subtitle-color);
+}
+.card-text:last-child {
+ margin-bottom: 0;
+}
+.card-link + .card-link {
+ margin-left: var(--bs-card-spacer-x);
+}
+.card-header {
+ padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
+ margin-bottom: 0;
+ color: var(--bs-card-cap-color);
+ background-color: var(--bs-card-cap-bg);
+ border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
+}
+.card-header:first-child {
+ border-radius: var(--bs-card-inner-border-radius)
+ var(--bs-card-inner-border-radius) 0 0;
+}
+.card-footer {
+ padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
+ color: var(--bs-card-cap-color);
+ background-color: var(--bs-card-cap-bg);
+ border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
+}
+.card-footer:last-child {
+ border-radius: 0 0 var(--bs-card-inner-border-radius)
+ var(--bs-card-inner-border-radius);
+}
+.card-header-tabs {
+ margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
+ margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));
+ margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
+ border-bottom: 0;
+}
+.card-header-tabs .nav-link.active {
+ background-color: var(--bs-card-bg);
+ border-bottom-color: var(--bs-card-bg);
+}
+.card-header-pills {
+ margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
+ margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
+}
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: var(--bs-card-img-overlay-padding);
+ border-radius: var(--bs-card-inner-border-radius);
+}
+.card-img,
+.card-img-bottom,
+.card-img-top {
+ width: 100%;
+}
+.card-img,
+.card-img-top {
+ border-top-left-radius: var(--bs-card-inner-border-radius);
+ border-top-right-radius: var(--bs-card-inner-border-radius);
+}
+.card-img,
+.card-img-bottom {
+ border-bottom-right-radius: var(--bs-card-inner-border-radius);
+ border-bottom-left-radius: var(--bs-card-inner-border-radius);
+}
+.card-group > .card {
+ margin-bottom: var(--bs-card-group-margin);
+}
+@media (min-width: 576px) {
+ .card-group {
+ display: flex;
+ flex-flow: row wrap;
+ }
+ .card-group > .card {
+ flex: 1 0 0%;
+ margin-bottom: 0;
+ }
+ .card-group > .card + .card {
+ margin-left: 0;
+ border-left: 0;
+ }
+ .card-group > .card:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-header,
+ .card-group > .card:not(:last-child) .card-img-top {
+ border-top-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-footer,
+ .card-group > .card:not(:last-child) .card-img-bottom {
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-header,
+ .card-group > .card:not(:first-child) .card-img-top {
+ border-top-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-footer,
+ .card-group > .card:not(:first-child) .card-img-bottom {
+ border-bottom-left-radius: 0;
+ }
+}
+.accordion {
+ --bs-accordion-color: var(--bs-body-color);
+ --bs-accordion-bg: var(--bs-body-bg);
+ --bs-accordion-transition: color 0.15s ease-in-out,
+ background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,
+ box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
+ --bs-accordion-border-color: var(--bs-border-color);
+ --bs-accordion-border-width: var(--bs-border-width);
+ --bs-accordion-border-radius: var(--bs-border-radius);
+ --bs-accordion-inner-border-radius: calc(
+ var(--bs-border-radius) - (var(--bs-border-width))
+ );
+ --bs-accordion-btn-padding-x: 1.25rem;
+ --bs-accordion-btn-padding-y: 1rem;
+ --bs-accordion-btn-color: var(--bs-body-color);
+ --bs-accordion-btn-bg: var(--bs-accordion-bg);
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");
+ --bs-accordion-btn-icon-width: 1.25rem;
+ --bs-accordion-btn-icon-transform: rotate(-180deg);
+ --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");
+ --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-accordion-body-padding-x: 1.25rem;
+ --bs-accordion-body-padding-y: 1rem;
+ --bs-accordion-active-color: var(--bs-primary-text-emphasis);
+ --bs-accordion-active-bg: var(--bs-primary-bg-subtle);
+}
+.accordion-button {
+ position: relative;
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);
+ font-size: 1rem;
+ color: var(--bs-accordion-btn-color);
+ text-align: left;
+ background-color: var(--bs-accordion-btn-bg);
+ border: 0;
+ border-radius: 0;
+ overflow-anchor: none;
+ transition: var(--bs-accordion-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .accordion-button {
+ transition: none;
+ }
+}
+.accordion-button:not(.collapsed) {
+ color: var(--bs-accordion-active-color);
+ background-color: var(--bs-accordion-active-bg);
+ box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0
+ var(--bs-accordion-border-color);
+}
+.accordion-button:not(.collapsed)::after {
+ background-image: var(--bs-accordion-btn-active-icon);
+ transform: var(--bs-accordion-btn-icon-transform);
+}
+.accordion-button::after {
+ flex-shrink: 0;
+ width: var(--bs-accordion-btn-icon-width);
+ height: var(--bs-accordion-btn-icon-width);
+ margin-left: auto;
+ content: "";
+ background-image: var(--bs-accordion-btn-icon);
+ background-repeat: no-repeat;
+ background-size: var(--bs-accordion-btn-icon-width);
+ transition: var(--bs-accordion-btn-icon-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .accordion-button::after {
+ transition: none;
+ }
+}
+.accordion-button:hover {
+ z-index: 2;
+}
+.accordion-button:focus {
+ z-index: 3;
+ outline: 0;
+ box-shadow: var(--bs-accordion-btn-focus-box-shadow);
+}
+.accordion-header {
+ margin-bottom: 0;
+}
+.accordion-item {
+ color: var(--bs-accordion-color);
+ background-color: var(--bs-accordion-bg);
+ border: var(--bs-accordion-border-width) solid
+ var(--bs-accordion-border-color);
+}
+.accordion-item:first-of-type {
+ border-top-left-radius: var(--bs-accordion-border-radius);
+ border-top-right-radius: var(--bs-accordion-border-radius);
+}
+.accordion-item:first-of-type > .accordion-header .accordion-button {
+ border-top-left-radius: var(--bs-accordion-inner-border-radius);
+ border-top-right-radius: var(--bs-accordion-inner-border-radius);
+}
+.accordion-item:not(:first-of-type) {
+ border-top: 0;
+}
+.accordion-item:last-of-type {
+ border-bottom-right-radius: var(--bs-accordion-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-border-radius);
+}
+.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed {
+ border-bottom-right-radius: var(--bs-accordion-inner-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-inner-border-radius);
+}
+.accordion-item:last-of-type > .accordion-collapse {
+ border-bottom-right-radius: var(--bs-accordion-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-border-radius);
+}
+.accordion-body {
+ padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);
+}
+.accordion-flush > .accordion-item {
+ border-right: 0;
+ border-left: 0;
+ border-radius: 0;
+}
+.accordion-flush > .accordion-item:first-child {
+ border-top: 0;
+}
+.accordion-flush > .accordion-item:last-child {
+ border-bottom: 0;
+}
+.accordion-flush > .accordion-item > .accordion-header .accordion-button,
+.accordion-flush
+ > .accordion-item
+ > .accordion-header
+ .accordion-button.collapsed {
+ border-radius: 0;
+}
+.accordion-flush > .accordion-item > .accordion-collapse {
+ border-radius: 0;
+}
+[data-bs-theme="dark"] .accordion-button::after {
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+.breadcrumb {
+ --bs-breadcrumb-padding-x: 0;
+ --bs-breadcrumb-padding-y: 0;
+ --bs-breadcrumb-margin-bottom: 1rem;
+ --bs-breadcrumb-bg: ;
+ --bs-breadcrumb-border-radius: ;
+ --bs-breadcrumb-divider-color: var(--bs-secondary-color);
+ --bs-breadcrumb-item-padding-x: 0.5rem;
+ --bs-breadcrumb-item-active-color: var(--bs-secondary-color);
+ display: flex;
+ flex-wrap: wrap;
+ padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
+ margin-bottom: var(--bs-breadcrumb-margin-bottom);
+ font-size: var(--bs-breadcrumb-font-size);
+ list-style: none;
+ background-color: var(--bs-breadcrumb-bg);
+ border-radius: var(--bs-breadcrumb-border-radius);
+}
+.breadcrumb-item + .breadcrumb-item {
+ padding-left: var(--bs-breadcrumb-item-padding-x);
+}
+.breadcrumb-item + .breadcrumb-item::before {
+ float: left;
+ padding-right: var(--bs-breadcrumb-item-padding-x);
+ color: var(--bs-breadcrumb-divider-color);
+ content: var(--bs-breadcrumb-divider, "/");
+}
+.breadcrumb-item.active {
+ color: var(--bs-breadcrumb-item-active-color);
+}
+.pagination {
+ --bs-pagination-padding-x: 0.75rem;
+ --bs-pagination-padding-y: 0.375rem;
+ --bs-pagination-font-size: 1rem;
+ --bs-pagination-color: var(--bs-link-color);
+ --bs-pagination-bg: var(--bs-body-bg);
+ --bs-pagination-border-width: var(--bs-border-width);
+ --bs-pagination-border-color: var(--bs-border-color);
+ --bs-pagination-border-radius: var(--bs-border-radius);
+ --bs-pagination-hover-color: var(--bs-link-hover-color);
+ --bs-pagination-hover-bg: var(--bs-tertiary-bg);
+ --bs-pagination-hover-border-color: var(--bs-border-color);
+ --bs-pagination-focus-color: var(--bs-link-hover-color);
+ --bs-pagination-focus-bg: var(--bs-secondary-bg);
+ --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-pagination-active-color: #fff;
+ --bs-pagination-active-bg: #0d6efd;
+ --bs-pagination-active-border-color: #0d6efd;
+ --bs-pagination-disabled-color: var(--bs-secondary-color);
+ --bs-pagination-disabled-bg: var(--bs-secondary-bg);
+ --bs-pagination-disabled-border-color: var(--bs-border-color);
+ display: flex;
+ padding-left: 0;
+ list-style: none;
+}
+.page-link {
+ position: relative;
+ display: block;
+ padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);
+ font-size: var(--bs-pagination-font-size);
+ color: var(--bs-pagination-color);
+ text-decoration: none;
+ background-color: var(--bs-pagination-bg);
+ border: var(--bs-pagination-border-width) solid
+ var(--bs-pagination-border-color);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .page-link {
+ transition: none;
+ }
+}
+.page-link:hover {
+ z-index: 2;
+ color: var(--bs-pagination-hover-color);
+ background-color: var(--bs-pagination-hover-bg);
+ border-color: var(--bs-pagination-hover-border-color);
+}
+.page-link:focus {
+ z-index: 3;
+ color: var(--bs-pagination-focus-color);
+ background-color: var(--bs-pagination-focus-bg);
+ outline: 0;
+ box-shadow: var(--bs-pagination-focus-box-shadow);
+}
+.active > .page-link,
+.page-link.active {
+ z-index: 3;
+ color: var(--bs-pagination-active-color);
+ background-color: var(--bs-pagination-active-bg);
+ border-color: var(--bs-pagination-active-border-color);
+}
+.disabled > .page-link,
+.page-link.disabled {
+ color: var(--bs-pagination-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-pagination-disabled-bg);
+ border-color: var(--bs-pagination-disabled-border-color);
+}
+.page-item:not(:first-child) .page-link {
+ margin-left: calc(var(--bs-border-width) * -1);
+}
+.page-item:first-child .page-link {
+ border-top-left-radius: var(--bs-pagination-border-radius);
+ border-bottom-left-radius: var(--bs-pagination-border-radius);
+}
+.page-item:last-child .page-link {
+ border-top-right-radius: var(--bs-pagination-border-radius);
+ border-bottom-right-radius: var(--bs-pagination-border-radius);
+}
+.pagination-lg {
+ --bs-pagination-padding-x: 1.5rem;
+ --bs-pagination-padding-y: 0.75rem;
+ --bs-pagination-font-size: 1.25rem;
+ --bs-pagination-border-radius: var(--bs-border-radius-lg);
+}
+.pagination-sm {
+ --bs-pagination-padding-x: 0.5rem;
+ --bs-pagination-padding-y: 0.25rem;
+ --bs-pagination-font-size: 0.875rem;
+ --bs-pagination-border-radius: var(--bs-border-radius-sm);
+}
+.badge {
+ --bs-badge-padding-x: 0.65em;
+ --bs-badge-padding-y: 0.35em;
+ --bs-badge-font-size: 0.75em;
+ --bs-badge-font-weight: 700;
+ --bs-badge-color: #fff;
+ --bs-badge-border-radius: var(--bs-border-radius);
+ display: inline-block;
+ padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
+ font-size: var(--bs-badge-font-size);
+ font-weight: var(--bs-badge-font-weight);
+ line-height: 1;
+ color: var(--bs-badge-color);
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: var(--bs-badge-border-radius);
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.alert {
+ --bs-alert-bg: transparent;
+ --bs-alert-padding-x: 1rem;
+ --bs-alert-padding-y: 1rem;
+ --bs-alert-margin-bottom: 1rem;
+ --bs-alert-color: inherit;
+ --bs-alert-border-color: transparent;
+ --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
+ --bs-alert-border-radius: var(--bs-border-radius);
+ --bs-alert-link-color: inherit;
+ position: relative;
+ padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
+ margin-bottom: var(--bs-alert-margin-bottom);
+ color: var(--bs-alert-color);
+ background-color: var(--bs-alert-bg);
+ border: var(--bs-alert-border);
+ border-radius: var(--bs-alert-border-radius);
+}
+.alert-heading {
+ color: inherit;
+}
+.alert-link {
+ font-weight: 700;
+ color: var(--bs-alert-link-color);
+}
+.alert-dismissible {
+ padding-right: 3rem;
+}*/
+.position-absolute {
+ position: absolute !important;
+}
+.alert-dismissible .btn-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ padding: 1.25rem 1rem;
+}/*
+.alert-primary {
+ --bs-alert-color: var(--bs-primary-text-emphasis);
+ --bs-alert-bg: var(--bs-primary-bg-subtle);
+ --bs-alert-border-color: var(--bs-primary-border-subtle);
+ --bs-alert-link-color: var(--bs-primary-text-emphasis);
+}
+.alert-secondary {
+ --bs-alert-color: var(--bs-secondary-text-emphasis);
+ --bs-alert-bg: var(--bs-secondary-bg-subtle);
+ --bs-alert-border-color: var(--bs-secondary-border-subtle);
+ --bs-alert-link-color: var(--bs-secondary-text-emphasis);
+}
+.alert-success {
+ --bs-alert-color: var(--bs-success-text-emphasis);
+ --bs-alert-bg: var(--bs-success-bg-subtle);
+ --bs-alert-border-color: var(--bs-success-border-subtle);
+ --bs-alert-link-color: var(--bs-success-text-emphasis);
+}
+.alert-info {
+ --bs-alert-color: var(--bs-info-text-emphasis);
+ --bs-alert-bg: var(--bs-info-bg-subtle);
+ --bs-alert-border-color: var(--bs-info-border-subtle);
+ --bs-alert-link-color: var(--bs-info-text-emphasis);
+}
+.alert-warning {
+ --bs-alert-color: var(--bs-warning-text-emphasis);
+ --bs-alert-bg: var(--bs-warning-bg-subtle);
+ --bs-alert-border-color: var(--bs-warning-border-subtle);
+ --bs-alert-link-color: var(--bs-warning-text-emphasis);
+}
+.alert-danger {
+ --bs-alert-color: var(--bs-danger-text-emphasis);
+ --bs-alert-bg: var(--bs-danger-bg-subtle);
+ --bs-alert-border-color: var(--bs-danger-border-subtle);
+ --bs-alert-link-color: var(--bs-danger-text-emphasis);
+}
+.alert-light {
+ --bs-alert-color: var(--bs-light-text-emphasis);
+ --bs-alert-bg: var(--bs-light-bg-subtle);
+ --bs-alert-border-color: var(--bs-light-border-subtle);
+ --bs-alert-link-color: var(--bs-light-text-emphasis);
+}
+.alert-dark {
+ --bs-alert-color: var(--bs-dark-text-emphasis);
+ --bs-alert-bg: var(--bs-dark-bg-subtle);
+ --bs-alert-border-color: var(--bs-dark-border-subtle);
+ --bs-alert-link-color: var(--bs-dark-text-emphasis);
+}
+@keyframes progress-bar-stripes {
+ 0% {
+ background-position-x: 1rem;
+ }
+}
+.progress,
+.progress-stacked {
+ --bs-progress-height: 1rem;
+ --bs-progress-font-size: 0.75rem;
+ --bs-progress-bg: var(--bs-secondary-bg);
+ --bs-progress-border-radius: var(--bs-border-radius);
+ --bs-progress-box-shadow: var(--bs-box-shadow-inset);
+ --bs-progress-bar-color: #fff;
+ --bs-progress-bar-bg: #0d6efd;
+ --bs-progress-bar-transition: width 0.6s ease;
+ display: flex;
+ height: var(--bs-progress-height);
+ overflow: hidden;
+ font-size: var(--bs-progress-font-size);
+ background-color: var(--bs-progress-bg);
+ border-radius: var(--bs-progress-border-radius);
+}
+.progress-bar {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ overflow: hidden;
+ color: var(--bs-progress-bar-color);
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--bs-progress-bar-bg);
+ transition: var(--bs-progress-bar-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar {
+ transition: none;
+ }
+}
+.progress-bar-striped {
+ background-image: linear-gradient(
+ 45deg,
+ rgba(255, 255, 255, 0.15) 25%,
+ transparent 25%,
+ transparent 50%,
+ rgba(255, 255, 255, 0.15) 50%,
+ rgba(255, 255, 255, 0.15) 75%,
+ transparent 75%,
+ transparent
+ );
+ background-size: var(--bs-progress-height) var(--bs-progress-height);
+}
+.progress-stacked > .progress {
+ overflow: visible;
+}
+.progress-stacked > .progress > .progress-bar {
+ width: 100%;
+}
+.progress-bar-animated {
+ animation: 1s linear infinite progress-bar-stripes;
+}
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar-animated {
+ animation: none;
+ }
+}
+.list-group {
+ --bs-list-group-color: var(--bs-body-color);
+ --bs-list-group-bg: var(--bs-body-bg);
+ --bs-list-group-border-color: var(--bs-border-color);
+ --bs-list-group-border-width: var(--bs-border-width);
+ --bs-list-group-border-radius: var(--bs-border-radius);
+ --bs-list-group-item-padding-x: 1rem;
+ --bs-list-group-item-padding-y: 0.5rem;
+ --bs-list-group-action-color: var(--bs-secondary-color);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);
+ --bs-list-group-action-active-color: var(--bs-body-color);
+ --bs-list-group-action-active-bg: var(--bs-secondary-bg);
+ --bs-list-group-disabled-color: var(--bs-secondary-color);
+ --bs-list-group-disabled-bg: var(--bs-body-bg);
+ --bs-list-group-active-color: #fff;
+ --bs-list-group-active-bg: #0d6efd;
+ --bs-list-group-active-border-color: #0d6efd;
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ border-radius: var(--bs-list-group-border-radius);
+}
+.list-group-numbered {
+ list-style-type: none;
+ counter-reset: section;
+}
+.list-group-numbered > .list-group-item::before {
+ content: counters(section, ".") ". ";
+ counter-increment: section;
+}
+.list-group-item-action {
+ width: 100%;
+ color: var(--bs-list-group-action-color);
+ text-align: inherit;
+}
+.list-group-item-action:focus,
+.list-group-item-action:hover {
+ z-index: 1;
+ color: var(--bs-list-group-action-hover-color);
+ text-decoration: none;
+ background-color: var(--bs-list-group-action-hover-bg);
+}
+.list-group-item-action:active {
+ color: var(--bs-list-group-action-active-color);
+ background-color: var(--bs-list-group-action-active-bg);
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: var(--bs-list-group-item-padding-y)
+ var(--bs-list-group-item-padding-x);
+ color: var(--bs-list-group-color);
+ text-decoration: none;
+ background-color: var(--bs-list-group-bg);
+ border: var(--bs-list-group-border-width) solid
+ var(--bs-list-group-border-color);
+}
+.list-group-item:first-child {
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
+}
+.list-group-item:last-child {
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit;
+}
+.list-group-item.disabled,
+.list-group-item:disabled {
+ color: var(--bs-list-group-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-list-group-disabled-bg);
+}
+.list-group-item.active {
+ z-index: 2;
+ color: var(--bs-list-group-active-color);
+ background-color: var(--bs-list-group-active-bg);
+ border-color: var(--bs-list-group-active-border-color);
+}
+.list-group-item + .list-group-item {
+ border-top-width: 0;
+}
+.list-group-item + .list-group-item.active {
+ margin-top: calc(-1 * var(--bs-list-group-border-width));
+ border-top-width: var(--bs-list-group-border-width);
+}
+.list-group-horizontal {
+ flex-direction: row;
+}
+.list-group-horizontal > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+}
+.list-group-horizontal > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+}
+.list-group-horizontal > .list-group-item.active {
+ margin-top: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+}
+@media (min-width: 576px) {
+ .list-group-horizontal-sm {
+ flex-direction: row;
+ }
+ .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 768px) {
+ .list-group-horizontal-md {
+ flex-direction: row;
+ }
+ .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 992px) {
+ .list-group-horizontal-lg {
+ flex-direction: row;
+ }
+ .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 1200px) {
+ .list-group-horizontal-xl {
+ flex-direction: row;
+ }
+ .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 1400px) {
+ .list-group-horizontal-xxl {
+ flex-direction: row;
+ }
+ .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+.list-group-flush {
+ border-radius: 0;
+}
+.list-group-flush > .list-group-item {
+ border-width: 0 0 var(--bs-list-group-border-width);
+}
+.list-group-flush > .list-group-item:last-child {
+ border-bottom-width: 0;
+}
+.list-group-item-primary {
+ --bs-list-group-color: var(--bs-primary-text-emphasis);
+ --bs-list-group-bg: var(--bs-primary-bg-subtle);
+ --bs-list-group-border-color: var(--bs-primary-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);
+ --bs-list-group-active-color: var(--bs-primary-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-primary-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);
+}
+.list-group-item-secondary {
+ --bs-list-group-color: var(--bs-secondary-text-emphasis);
+ --bs-list-group-bg: var(--bs-secondary-bg-subtle);
+ --bs-list-group-border-color: var(--bs-secondary-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);
+ --bs-list-group-active-color: var(--bs-secondary-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);
+}
+.list-group-item-success {
+ --bs-list-group-color: var(--bs-success-text-emphasis);
+ --bs-list-group-bg: var(--bs-success-bg-subtle);
+ --bs-list-group-border-color: var(--bs-success-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-success-border-subtle);
+ --bs-list-group-active-color: var(--bs-success-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-success-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-success-text-emphasis);
+}
+.list-group-item-info {
+ --bs-list-group-color: var(--bs-info-text-emphasis);
+ --bs-list-group-bg: var(--bs-info-bg-subtle);
+ --bs-list-group-border-color: var(--bs-info-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-info-border-subtle);
+ --bs-list-group-active-color: var(--bs-info-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-info-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-info-text-emphasis);
+}
+.list-group-item-warning {
+ --bs-list-group-color: var(--bs-warning-text-emphasis);
+ --bs-list-group-bg: var(--bs-warning-bg-subtle);
+ --bs-list-group-border-color: var(--bs-warning-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);
+ --bs-list-group-active-color: var(--bs-warning-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-warning-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);
+}
+.list-group-item-danger {
+ --bs-list-group-color: var(--bs-danger-text-emphasis);
+ --bs-list-group-bg: var(--bs-danger-bg-subtle);
+ --bs-list-group-border-color: var(--bs-danger-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);
+ --bs-list-group-active-color: var(--bs-danger-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-danger-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);
+}
+.list-group-item-light {
+ --bs-list-group-color: var(--bs-light-text-emphasis);
+ --bs-list-group-bg: var(--bs-light-bg-subtle);
+ --bs-list-group-border-color: var(--bs-light-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-light-border-subtle);
+ --bs-list-group-active-color: var(--bs-light-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-light-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-light-text-emphasis);
+}
+.list-group-item-dark {
+ --bs-list-group-color: var(--bs-dark-text-emphasis);
+ --bs-list-group-bg: var(--bs-dark-bg-subtle);
+ --bs-list-group-border-color: var(--bs-dark-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);
+ --bs-list-group-active-color: var(--bs-dark-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-dark-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);
+}*/
+.btn-close {
+ --bs-btn-close-color: #000;
+ --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
+ --bs-btn-close-opacity: 0.5;
+ --bs-btn-close-hover-opacity: 0.75;
+ --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-btn-close-focus-opacity: 1;
+ --bs-btn-close-disabled-opacity: 0.25;
+ --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
+ box-sizing: content-box;
+ width: 1em;
+ height: 1em;
+ padding: 0.25em 0.25em;
+ color: var(--bs-btn-close-color);
+ background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
+ border: 0;
+ border-radius: 0.375rem;
+ opacity: var(--bs-btn-close-opacity);
+}
+.btn-close:hover {
+ color: var(--bs-btn-close-color);
+ text-decoration: none;
+ opacity: var(--bs-btn-close-hover-opacity);
+}
+.btn-close:focus {
+ outline: 0;
+ box-shadow: var(--bs-btn-close-focus-shadow);
+ opacity: var(--bs-btn-close-focus-opacity);
+}
+.btn-close.disabled,
+.btn-close:disabled {
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ opacity: var(--bs-btn-close-disabled-opacity);
+}
+.btn-close-white {
+ filter: var(--bs-btn-close-white-filter);
+}
+[data-bs-theme="dark"] .btn-close {
+ filter: var(--bs-btn-close-white-filter);
+}/*
+.toast {
+ --bs-toast-zindex: 1090;
+ --bs-toast-padding-x: 0.75rem;
+ --bs-toast-padding-y: 0.5rem;
+ --bs-toast-spacing: 1.5rem;
+ --bs-toast-max-width: 350px;
+ --bs-toast-font-size: 0.875rem;
+ --bs-toast-color: ;
+ --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-border-width: var(--bs-border-width);
+ --bs-toast-border-color: var(--bs-border-color-translucent);
+ --bs-toast-border-radius: var(--bs-border-radius);
+ --bs-toast-box-shadow: var(--bs-box-shadow);
+ --bs-toast-header-color: var(--bs-secondary-color);
+ --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-header-border-color: var(--bs-border-color-translucent);
+ width: var(--bs-toast-max-width);
+ max-width: 100%;
+ font-size: var(--bs-toast-font-size);
+ color: var(--bs-toast-color);
+ pointer-events: auto;
+ background-color: var(--bs-toast-bg);
+ background-clip: padding-box;
+ border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);
+ box-shadow: var(--bs-toast-box-shadow);
+ border-radius: var(--bs-toast-border-radius);
+}
+.toast.showing {
+ opacity: 0;
+}
+.toast:not(.show) {
+ display: none;
+}
+.toast-container {
+ --bs-toast-zindex: 1090;
+ position: absolute;
+ z-index: var(--bs-toast-zindex);
+ width: -webkit-max-content;
+ width: -moz-max-content;
+ width: max-content;
+ max-width: 100%;
+ pointer-events: none;
+}
+.toast-container > :not(:last-child) {
+ margin-bottom: var(--bs-toast-spacing);
+}
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);
+ color: var(--bs-toast-header-color);
+ background-color: var(--bs-toast-header-bg);
+ background-clip: padding-box;
+ border-bottom: var(--bs-toast-border-width) solid
+ var(--bs-toast-header-border-color);
+ border-top-left-radius: calc(
+ var(--bs-toast-border-radius) - var(--bs-toast-border-width)
+ );
+ border-top-right-radius: calc(
+ var(--bs-toast-border-radius) - var(--bs-toast-border-width)
+ );
+}
+.toast-header .btn-close {
+ margin-right: calc(-0.5 * var(--bs-toast-padding-x));
+ margin-left: var(--bs-toast-padding-x);
+}
+.toast-body {
+ padding: var(--bs-toast-padding-x);
+ word-wrap: break-word;
+}*/
+.modal {
+ --bs-modal-zindex: 1055;
+ --bs-modal-width: 500px;
+ --bs-modal-padding: 1rem;
+ --bs-modal-margin: 0.5rem;
+ --bs-modal-color: ;
+ --bs-modal-bg: var(--bs-body-bg);
+ --bs-modal-border-color: var(--bs-border-color-translucent);
+ --bs-modal-border-width: var(--bs-border-width);
+ --bs-modal-border-radius: var(--bs-border-radius-lg);
+ --bs-modal-box-shadow: var(--bs-box-shadow-sm);
+ --bs-modal-inner-border-radius: calc(
+ var(--bs-border-radius-lg) - (var(--bs-border-width))
+ );
+ --bs-modal-header-padding-x: 1rem;
+ --bs-modal-header-padding-y: 1rem;
+ --bs-modal-header-padding: 1rem 1rem;
+ --bs-modal-header-border-color: var(--bs-border-color);
+ --bs-modal-header-border-width: var(--bs-border-width);
+ --bs-modal-title-line-height: 1.5;
+ --bs-modal-footer-gap: 0.5rem;
+ --bs-modal-footer-bg: ;
+ --bs-modal-footer-border-color: var(--bs-border-color);
+ --bs-modal-footer-border-width: var(--bs-border-width);
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: var(--bs-modal-zindex);
+ display: none;
+ width: 100%;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: auto;
+ outline: 0;
+}
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: var(--bs-modal-margin);
+ pointer-events: none;
+}
+.modal.fade .modal-dialog {
+ transition: transform 0.3s ease-out;
+ transform: translate(0, -50px);
+}
+@media (prefers-reduced-motion: reduce) {
+ .modal.fade .modal-dialog {
+ transition: none;
+ }
+}
+.modal.show .modal-dialog {
+ transform: none;
+}
+.modal.modal-static .modal-dialog {
+ transform: scale(1.02);
+}
+.modal-dialog-scrollable {
+ height: calc(100% - var(--bs-modal-margin) * 2);
+}
+.modal-dialog-scrollable .modal-content {
+ max-height: 100%;
+ overflow: hidden;
+}
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto;
+}
+.modal-dialog-centered {
+ display: flex;
+ align-items: center;
+ min-height: calc(100% - var(--bs-modal-margin) * 2);
+}
+.modal-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ color: var(--bs-modal-color);
+ pointer-events: auto;
+ background-color: var(--bs-modal-bg);
+ background-clip: padding-box;
+ border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);
+ border-radius: var(--bs-modal-border-radius);
+ outline: 0;
+}
+.modal-backdrop {
+ --bs-backdrop-zindex: 1050;
+ --bs-backdrop-bg: #000;
+ --bs-backdrop-opacity: 0.5;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: var(--bs-backdrop-zindex);
+ width: 100vw;
+ height: 100vh;
+ background-color: var(--bs-backdrop-bg);
+}
+.modal-backdrop.fade {
+ opacity: 0;
+}
+.modal-backdrop.show {
+ opacity: var(--bs-backdrop-opacity);
+}
+.modal-header {
+ display: flex;
+ flex-shrink: 0;
+ align-items: center;
+ padding: var(--bs-modal-header-padding);
+ border-bottom: var(--bs-modal-header-border-width) solid
+ var(--bs-modal-header-border-color);
+ border-top-left-radius: var(--bs-modal-inner-border-radius);
+ border-top-right-radius: var(--bs-modal-inner-border-radius);
+}
+.modal-header .btn-close {
+ padding: calc(var(--bs-modal-header-padding-y) * 0.5)
+ calc(var(--bs-modal-header-padding-x) * 0.5);
+ margin: calc(-0.5 * var(--bs-modal-header-padding-y))
+ calc(-0.5 * var(--bs-modal-header-padding-x))
+ calc(-0.5 * var(--bs-modal-header-padding-y)) auto;
+}
+.modal-title {
+ margin-bottom: 0;
+ line-height: var(--bs-modal-title-line-height);
+}
+.modal-body {
+ position: relative;
+ flex: 1 1 auto;
+ padding: var(--bs-modal-padding);
+}
+.modal-footer {
+ display: flex;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: flex-end;
+ padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);
+ background-color: var(--bs-modal-footer-bg);
+ border-top: var(--bs-modal-footer-border-width) solid
+ var(--bs-modal-footer-border-color);
+ border-bottom-right-radius: var(--bs-modal-inner-border-radius);
+ border-bottom-left-radius: var(--bs-modal-inner-border-radius);
+}
+.modal-footer > * {
+ margin: calc(var(--bs-modal-footer-gap) * 0.5);
+}
+@media (min-width: 576px) {
+ .modal {
+ --bs-modal-margin: 1.75rem;
+ --bs-modal-box-shadow: var(--bs-box-shadow);
+ }
+ .modal-dialog {
+ max-width: var(--bs-modal-width);
+ margin-right: auto;
+ margin-left: auto;
+ }
+ .modal-sm {
+ --bs-modal-width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg,
+ .modal-xl {
+ --bs-modal-width: 800px;
+ }
+}
+@media (min-width: 1200px) {
+ .modal-xl {
+ --bs-modal-width: 1140px;
+ }
+}
+.modal-fullscreen {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+}
+.modal-fullscreen .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+}
+.modal-fullscreen .modal-footer,
+.modal-fullscreen .modal-header {
+ border-radius: 0;
+}
+.modal-fullscreen .modal-body {
+ overflow-y: auto;
+}
+@media (max-width: 575.98px) {
+ .modal-fullscreen-sm-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-sm-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-sm-down .modal-footer,
+ .modal-fullscreen-sm-down .modal-header {
+ border-radius: 0;
+ }
+ .modal-fullscreen-sm-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 767.98px) {
+ .modal-fullscreen-md-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-md-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-md-down .modal-footer,
+ .modal-fullscreen-md-down .modal-header {
+ border-radius: 0;
+ }
+ .modal-fullscreen-md-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 991.98px) {
+ .modal-fullscreen-lg-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-lg-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-lg-down .modal-footer,
+ .modal-fullscreen-lg-down .modal-header {
+ border-radius: 0;
+ }
+ .modal-fullscreen-lg-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 1199.98px) {
+ .modal-fullscreen-xl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-xl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-xl-down .modal-footer,
+ .modal-fullscreen-xl-down .modal-header {
+ border-radius: 0;
+ }
+ .modal-fullscreen-xl-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 1399.98px) {
+ .modal-fullscreen-xxl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-footer,
+ .modal-fullscreen-xxl-down .modal-header {
+ border-radius: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-body {
+ overflow-y: auto;
+ }
+} /*
+.tooltip {
+ --bs-tooltip-zindex: 1080;
+ --bs-tooltip-max-width: 200px;
+ --bs-tooltip-padding-x: 0.5rem;
+ --bs-tooltip-padding-y: 0.25rem;
+ --bs-tooltip-margin: ;
+ --bs-tooltip-font-size: 0.875rem;
+ --bs-tooltip-color: var(--bs-body-bg);
+ --bs-tooltip-bg: var(--bs-emphasis-color);
+ --bs-tooltip-border-radius: var(--bs-border-radius);
+ --bs-tooltip-opacity: 0.9;
+ --bs-tooltip-arrow-width: 0.8rem;
+ --bs-tooltip-arrow-height: 0.4rem;
+ z-index: var(--bs-tooltip-zindex);
+ display: block;
+ margin: var(--bs-tooltip-margin);
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ white-space: normal;
+ word-spacing: normal;
+ line-break: auto;
+ font-size: var(--bs-tooltip-font-size);
+ word-wrap: break-word;
+ opacity: 0;
+}
+.tooltip.show {
+ opacity: var(--bs-tooltip-opacity);
+}
+.tooltip .tooltip-arrow {
+ display: block;
+ width: var(--bs-tooltip-arrow-width);
+ height: var(--bs-tooltip-arrow-height);
+}
+.tooltip .tooltip-arrow::before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+}
+.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow,
+.bs-tooltip-top .tooltip-arrow {
+ bottom: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before,
+.bs-tooltip-top .tooltip-arrow::before {
+ top: -1px;
+ border-width: var(--bs-tooltip-arrow-height)
+ calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-top-color: var(--bs-tooltip-bg);
+}
+.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow,
+.bs-tooltip-end .tooltip-arrow {
+ left: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before,
+.bs-tooltip-end .tooltip-arrow::before {
+ right: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5)
+ var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-right-color: var(--bs-tooltip-bg);
+}
+.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow,
+.bs-tooltip-bottom .tooltip-arrow {
+ top: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before,
+.bs-tooltip-bottom .tooltip-arrow::before {
+ bottom: -1px;
+ border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5)
+ var(--bs-tooltip-arrow-height);
+ border-bottom-color: var(--bs-tooltip-bg);
+}
+.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow,
+.bs-tooltip-start .tooltip-arrow {
+ right: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before,
+.bs-tooltip-start .tooltip-arrow::before {
+ left: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0
+ calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
+ border-left-color: var(--bs-tooltip-bg);
+}
+.tooltip-inner {
+ max-width: var(--bs-tooltip-max-width);
+ padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);
+ color: var(--bs-tooltip-color);
+ text-align: center;
+ background-color: var(--bs-tooltip-bg);
+ border-radius: var(--bs-tooltip-border-radius);
+}
+.popover {
+ --bs-popover-zindex: 1070;
+ --bs-popover-max-width: 276px;
+ --bs-popover-font-size: 0.875rem;
+ --bs-popover-bg: var(--bs-body-bg);
+ --bs-popover-border-width: var(--bs-border-width);
+ --bs-popover-border-color: var(--bs-border-color-translucent);
+ --bs-popover-border-radius: var(--bs-border-radius-lg);
+ --bs-popover-inner-border-radius: calc(
+ var(--bs-border-radius-lg) - var(--bs-border-width)
+ );
+ --bs-popover-box-shadow: var(--bs-box-shadow);
+ --bs-popover-header-padding-x: 1rem;
+ --bs-popover-header-padding-y: 0.5rem;
+ --bs-popover-header-font-size: 1rem;
+ --bs-popover-header-color: inherit;
+ --bs-popover-header-bg: var(--bs-secondary-bg);
+ --bs-popover-body-padding-x: 1rem;
+ --bs-popover-body-padding-y: 1rem;
+ --bs-popover-body-color: var(--bs-body-color);
+ --bs-popover-arrow-width: 1rem;
+ --bs-popover-arrow-height: 0.5rem;
+ --bs-popover-arrow-border: var(--bs-popover-border-color);
+ z-index: var(--bs-popover-zindex);
+ display: block;
+ max-width: var(--bs-popover-max-width);
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ white-space: normal;
+ word-spacing: normal;
+ line-break: auto;
+ font-size: var(--bs-popover-font-size);
+ word-wrap: break-word;
+ background-color: var(--bs-popover-bg);
+ background-clip: padding-box;
+ border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
+ border-radius: var(--bs-popover-border-radius);
+}
+.popover .popover-arrow {
+ display: block;
+ width: var(--bs-popover-arrow-width);
+ height: var(--bs-popover-arrow-height);
+}
+.popover .popover-arrow::after,
+.popover .popover-arrow::before {
+ position: absolute;
+ display: block;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+ border-width: 0;
+}
+.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow,
+.bs-popover-top > .popover-arrow {
+ bottom: calc(
+ -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)
+ );
+}
+.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after,
+.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before,
+.bs-popover-top > .popover-arrow::after,
+.bs-popover-top > .popover-arrow::before {
+ border-width: var(--bs-popover-arrow-height)
+ calc(var(--bs-popover-arrow-width) * 0.5) 0;
+}
+.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before,
+.bs-popover-top > .popover-arrow::before {
+ bottom: 0;
+ border-top-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after,
+.bs-popover-top > .popover-arrow::after {
+ bottom: var(--bs-popover-border-width);
+ border-top-color: var(--bs-popover-bg);
+}
+.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow,
+.bs-popover-end > .popover-arrow {
+ left: calc(
+ -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)
+ );
+ width: var(--bs-popover-arrow-height);
+ height: var(--bs-popover-arrow-width);
+}
+.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after,
+.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before,
+.bs-popover-end > .popover-arrow::after,
+.bs-popover-end > .popover-arrow::before {
+ border-width: calc(var(--bs-popover-arrow-width) * 0.5)
+ var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
+}
+.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before,
+.bs-popover-end > .popover-arrow::before {
+ left: 0;
+ border-right-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after,
+.bs-popover-end > .popover-arrow::after {
+ left: var(--bs-popover-border-width);
+ border-right-color: var(--bs-popover-bg);
+}
+.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow,
+.bs-popover-bottom > .popover-arrow {
+ top: calc(
+ -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)
+ );
+}
+.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after,
+.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before,
+.bs-popover-bottom > .popover-arrow::after,
+.bs-popover-bottom > .popover-arrow::before {
+ border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5)
+ var(--bs-popover-arrow-height);
+}
+.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before,
+.bs-popover-bottom > .popover-arrow::before {
+ top: 0;
+ border-bottom-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after,
+.bs-popover-bottom > .popover-arrow::after {
+ top: var(--bs-popover-border-width);
+ border-bottom-color: var(--bs-popover-bg);
+}
+.bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before,
+.bs-popover-bottom .popover-header::before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: var(--bs-popover-arrow-width);
+ margin-left: calc(-0.5 * var(--bs-popover-arrow-width));
+ content: "";
+ border-bottom: var(--bs-popover-border-width) solid
+ var(--bs-popover-header-bg);
+}
+.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow,
+.bs-popover-start > .popover-arrow {
+ right: calc(
+ -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)
+ );
+ width: var(--bs-popover-arrow-height);
+ height: var(--bs-popover-arrow-width);
+}
+.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after,
+.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before,
+.bs-popover-start > .popover-arrow::after,
+.bs-popover-start > .popover-arrow::before {
+ border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0
+ calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
+}
+.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before,
+.bs-popover-start > .popover-arrow::before {
+ right: 0;
+ border-left-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after,
+.bs-popover-start > .popover-arrow::after {
+ right: var(--bs-popover-border-width);
+ border-left-color: var(--bs-popover-bg);
+}
+.popover-header {
+ padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
+ margin-bottom: 0;
+ font-size: var(--bs-popover-header-font-size);
+ color: var(--bs-popover-header-color);
+ background-color: var(--bs-popover-header-bg);
+ border-bottom: var(--bs-popover-border-width) solid
+ var(--bs-popover-border-color);
+ border-top-left-radius: var(--bs-popover-inner-border-radius);
+ border-top-right-radius: var(--bs-popover-inner-border-radius);
+}
+.popover-header:empty {
+ display: none;
+}
+.popover-body {
+ padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);
+ color: var(--bs-popover-body-color);
+}*/
+.carousel {
+ position: relative;
+}
+.carousel.pointer-event {
+ touch-action: pan-y;
+}
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+.carousel-inner::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+.carousel-item {
+ position: relative;
+ display: none;
+ float: left;
+ width: 100%;
+ margin-right: -100%;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ transition: transform 0.6s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-item {
+ transition: none;
+ }
+}
+.carousel-item-next,
+.carousel-item-prev,
+.carousel-item.active {
+ display: block;
+}
+.active.carousel-item-end,
+.carousel-item-next:not(.carousel-item-start) {
+ transform: translateX(100%);
+}
+.active.carousel-item-start,
+.carousel-item-prev:not(.carousel-item-end) {
+ transform: translateX(-100%);
+}
+.carousel-fade .carousel-item {
+ opacity: 0;
+ transition-property: opacity;
+ transform: none;
+}
+.carousel-fade .carousel-item-next.carousel-item-start,
+.carousel-fade .carousel-item-prev.carousel-item-end,
+.carousel-fade .carousel-item.active {
+ z-index: 1;
+ opacity: 1;
+}
+.carousel-fade .active.carousel-item-end,
+.carousel-fade .active.carousel-item-start {
+ z-index: 0;
+ opacity: 0;
+ transition: opacity 0s 0.6s;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-fade .active.carousel-item-end,
+ .carousel-fade .active.carousel-item-start {
+ transition: none;
+ }
+}
+.carousel-control-next,
+.carousel-control-prev {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ z-index: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 15%;
+ padding: 0;
+ color: #fff;
+ text-align: center;
+ background: 0 0;
+ border: 0;
+ opacity: 0.5;
+ transition: opacity 0.15s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-control-next,
+ .carousel-control-prev {
+ transition: none;
+ }
+}
+.carousel-control-next:focus,
+.carousel-control-next:hover,
+.carousel-control-prev:focus,
+.carousel-control-prev:hover {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ opacity: 0.9;
+}
+.carousel-control-prev {
+ left: 0;
+}
+.carousel-control-next {
+ right: 0;
+}
+.carousel-control-next-icon,
+.carousel-control-prev-icon {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: 100% 100%;
+}
+.carousel-control-prev-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e");
+}
+.carousel-control-next-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+.carousel-indicators {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ padding: 0;
+ margin-right: 15%;
+ margin-bottom: 1rem;
+ margin-left: 15%;
+}
+.carousel-indicators [data-bs-target] {
+ box-sizing: content-box;
+ flex: 0 1 auto;
+ width: 30px;
+ height: 3px;
+ padding: 0;
+ margin-right: 3px;
+ margin-left: 3px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ opacity: 0.5;
+ transition: opacity 0.6s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-indicators [data-bs-target] {
+ transition: none;
+ }
+}
+.carousel-indicators .active {
+ opacity: 1;
+}
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 1.25rem;
+ left: 15%;
+ padding-top: 1.25rem;
+ padding-bottom: 1.25rem;
+ color: #fff;
+ text-align: center;
+}
+.carousel-dark .carousel-control-next-icon,
+.carousel-dark .carousel-control-prev-icon {
+ filter: invert(1) grayscale(100);
+}
+.carousel-dark .carousel-indicators [data-bs-target] {
+ background-color: #000;
+}
+.carousel-dark .carousel-caption {
+ color: #000;
+}
+[data-bs-theme="dark"] .carousel .carousel-control-next-icon,
+[data-bs-theme="dark"] .carousel .carousel-control-prev-icon,
+[data-bs-theme="dark"].carousel .carousel-control-next-icon,
+[data-bs-theme="dark"].carousel .carousel-control-prev-icon {
+ filter: invert(1) grayscale(100);
+}
+[data-bs-theme="dark"] .carousel .carousel-indicators [data-bs-target],
+[data-bs-theme="dark"].carousel .carousel-indicators [data-bs-target] {
+ background-color: #000;
+}
+[data-bs-theme="dark"] .carousel .carousel-caption,
+[data-bs-theme="dark"].carousel .carousel-caption {
+ color: #000;
+}/*
+.spinner-border,
+.spinner-grow {
+ display: inline-block;
+ width: var(--bs-spinner-width);
+ height: var(--bs-spinner-height);
+ vertical-align: var(--bs-spinner-vertical-align);
+ border-radius: 50%;
+ animation: var(--bs-spinner-animation-speed) linear infinite
+ var(--bs-spinner-animation-name);
+}
+@keyframes spinner-border {
+ to {
+ transform: rotate(360deg);
+ }
+}
+.spinner-border {
+ --bs-spinner-width: 2rem;
+ --bs-spinner-height: 2rem;
+ --bs-spinner-vertical-align: -0.125em;
+ --bs-spinner-border-width: 0.25em;
+ --bs-spinner-animation-speed: 0.75s;
+ --bs-spinner-animation-name: spinner-border;
+ border: var(--bs-spinner-border-width) solid currentcolor;
+ border-right-color: transparent;
+}
+.spinner-border-sm {
+ --bs-spinner-width: 1rem;
+ --bs-spinner-height: 1rem;
+ --bs-spinner-border-width: 0.2em;
+}
+@keyframes spinner-grow {
+ 0% {
+ transform: scale(0);
+ }
+ 50% {
+ opacity: 1;
+ transform: none;
+ }
+}
+.spinner-grow {
+ --bs-spinner-width: 2rem;
+ --bs-spinner-height: 2rem;
+ --bs-spinner-vertical-align: -0.125em;
+ --bs-spinner-animation-speed: 0.75s;
+ --bs-spinner-animation-name: spinner-grow;
+ background-color: currentcolor;
+ opacity: 0;
+}
+.spinner-grow-sm {
+ --bs-spinner-width: 1rem;
+ --bs-spinner-height: 1rem;
+}
+@media (prefers-reduced-motion: reduce) {
+ .spinner-border,
+ .spinner-grow {
+ --bs-spinner-animation-speed: 1.5s;
+ }
+}
+.offcanvas,
+.offcanvas-lg,
+.offcanvas-md,
+.offcanvas-sm,
+.offcanvas-xl,
+.offcanvas-xxl {
+ --bs-offcanvas-zindex: 1045;
+ --bs-offcanvas-width: 400px;
+ --bs-offcanvas-height: 30vh;
+ --bs-offcanvas-padding-x: 1rem;
+ --bs-offcanvas-padding-y: 1rem;
+ --bs-offcanvas-color: var(--bs-body-color);
+ --bs-offcanvas-bg: var(--bs-body-bg);
+ --bs-offcanvas-border-width: var(--bs-border-width);
+ --bs-offcanvas-border-color: var(--bs-border-color-translucent);
+ --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);
+ --bs-offcanvas-transition: transform 0.3s ease-in-out;
+ --bs-offcanvas-title-line-height: 1.5;
+}
+@media (max-width: 575.98px) {
+ .offcanvas-sm {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-sm {
+ transition: none;
+ }
+}
+@media (max-width: 575.98px) {
+ .offcanvas-sm.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-sm.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-sm.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-sm.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-sm.show:not(.hiding),
+ .offcanvas-sm.showing {
+ transform: none;
+ }
+ .offcanvas-sm.hiding,
+ .offcanvas-sm.show,
+ .offcanvas-sm.showing {
+ visibility: visible;
+ }
+}
+@media (min-width: 576px) {
+ .offcanvas-sm {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-sm .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-sm .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+@media (max-width: 767.98px) {
+ .offcanvas-md {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-md {
+ transition: none;
+ }
+}
+@media (max-width: 767.98px) {
+ .offcanvas-md.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-md.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-md.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-md.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-md.show:not(.hiding),
+ .offcanvas-md.showing {
+ transform: none;
+ }
+ .offcanvas-md.hiding,
+ .offcanvas-md.show,
+ .offcanvas-md.showing {
+ visibility: visible;
+ }
+}
+@media (min-width: 768px) {
+ .offcanvas-md {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-md .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-md .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+@media (max-width: 991.98px) {
+ .offcanvas-lg {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-lg {
+ transition: none;
+ }
+}
+@media (max-width: 991.98px) {
+ .offcanvas-lg.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-lg.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-lg.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-lg.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-lg.show:not(.hiding),
+ .offcanvas-lg.showing {
+ transform: none;
+ }
+ .offcanvas-lg.hiding,
+ .offcanvas-lg.show,
+ .offcanvas-lg.showing {
+ visibility: visible;
+ }
+}
+@media (min-width: 992px) {
+ .offcanvas-lg {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-lg .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-lg .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+@media (max-width: 1199.98px) {
+ .offcanvas-xl {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-xl {
+ transition: none;
+ }
+}
+@media (max-width: 1199.98px) {
+ .offcanvas-xl.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-xl.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-xl.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-xl.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-xl.show:not(.hiding),
+ .offcanvas-xl.showing {
+ transform: none;
+ }
+ .offcanvas-xl.hiding,
+ .offcanvas-xl.show,
+ .offcanvas-xl.showing {
+ visibility: visible;
+ }
+}
+@media (min-width: 1200px) {
+ .offcanvas-xl {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-xl .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-xl .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+@media (max-width: 1399.98px) {
+ .offcanvas-xxl {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-xxl {
+ transition: none;
+ }
+}
+@media (max-width: 1399.98px) {
+ .offcanvas-xxl.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-xxl.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-xxl.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-xxl.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-xxl.show:not(.hiding),
+ .offcanvas-xxl.showing {
+ transform: none;
+ }
+ .offcanvas-xxl.hiding,
+ .offcanvas-xxl.show,
+ .offcanvas-xxl.showing {
+ visibility: visible;
+ }
+}
+@media (min-width: 1400px) {
+ .offcanvas-xxl {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-xxl .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-xxl .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+.offcanvas {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .offcanvas {
+ transition: none;
+ }
+}
+.offcanvas.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+}
+.offcanvas.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+}
+.offcanvas.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+}
+.offcanvas.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid
+ var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+}
+.offcanvas.show:not(.hiding),
+.offcanvas.showing {
+ transform: none;
+}
+.offcanvas.hiding,
+.offcanvas.show,
+.offcanvas.showing {
+ visibility: visible;
+}
+.offcanvas-backdrop {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1040;
+ width: 100vw;
+ height: 100vh;
+ background-color: #000;
+}
+.offcanvas-backdrop.fade {
+ opacity: 0;
+}
+.offcanvas-backdrop.show {
+ opacity: 0.5;
+}
+.offcanvas-header {
+ display: flex;
+ align-items: center;
+ padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
+}
+.offcanvas-header .btn-close {
+ padding: calc(var(--bs-offcanvas-padding-y) * 0.5)
+ calc(var(--bs-offcanvas-padding-x) * 0.5);
+ margin: calc(-0.5 * var(--bs-offcanvas-padding-y))
+ calc(-0.5 * var(--bs-offcanvas-padding-x))
+ calc(-0.5 * var(--bs-offcanvas-padding-y)) auto;
+}
+.offcanvas-title {
+ margin-bottom: 0;
+ line-height: var(--bs-offcanvas-title-line-height);
+}
+.offcanvas-body {
+ flex-grow: 1;
+ padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
+ overflow-y: auto;
+}
+.placeholder {
+ display: inline-block;
+ min-height: 1em;
+ vertical-align: middle;
+ cursor: wait;
+ background-color: currentcolor;
+ opacity: 0.5;
+}
+.placeholder.btn::before {
+ display: inline-block;
+ content: "";
+}
+.placeholder-xs {
+ min-height: 0.6em;
+}
+.placeholder-sm {
+ min-height: 0.8em;
+}
+.placeholder-lg {
+ min-height: 1.2em;
+}
+.placeholder-glow .placeholder {
+ animation: placeholder-glow 2s ease-in-out infinite;
+}
+@keyframes placeholder-glow {
+ 50% {
+ opacity: 0.2;
+ }
+}
+.placeholder-wave {
+ -webkit-mask-image: linear-gradient(
+ 130deg,
+ #000 55%,
+ rgba(0, 0, 0, 0.8) 75%,
+ #000 95%
+ );
+ mask-image: linear-gradient(
+ 130deg,
+ #000 55%,
+ rgba(0, 0, 0, 0.8) 75%,
+ #000 95%
+ );
+ -webkit-mask-size: 200% 100%;
+ mask-size: 200% 100%;
+ animation: placeholder-wave 2s linear infinite;
+}
+@keyframes placeholder-wave {
+ 100% {
+ -webkit-mask-position: -200% 0%;
+ mask-position: -200% 0%;
+ }
+}
+.clearfix::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+.text-bg-primary {
+ color: #fff !important;
+ background-color: RGBA(
+ var(--bs-primary-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.text-bg-secondary {
+ color: #fff !important;
+ background-color: RGBA(
+ var(--bs-secondary-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.text-bg-success {
+ color: #fff !important;
+ background-color: RGBA(
+ var(--bs-success-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.text-bg-info {
+ color: #000 !important;
+ background-color: RGBA(
+ var(--bs-info-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.text-bg-warning {
+ color: #000 !important;
+ background-color: RGBA(
+ var(--bs-warning-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.text-bg-danger {
+ color: #fff !important;
+ background-color: RGBA(
+ var(--bs-danger-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.text-bg-light {
+ color: #000 !important;
+ background-color: RGBA(
+ var(--bs-light-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.text-bg-dark {
+ color: #fff !important;
+ background-color: RGBA(
+ var(--bs-dark-rgb),
+ var(--bs-bg-opacity, 1)
+ ) !important;
+}
+.link-primary {
+ color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-primary-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-primary-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-primary:focus,
+.link-primary:hover {
+ color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 10,
+ 88,
+ 202,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 10,
+ 88,
+ 202,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-secondary {
+ color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-secondary-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-secondary-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-secondary:focus,
+.link-secondary:hover {
+ color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 86,
+ 94,
+ 100,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 86,
+ 94,
+ 100,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-success {
+ color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-success-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-success-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-success:focus,
+.link-success:hover {
+ color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 20,
+ 108,
+ 67,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 20,
+ 108,
+ 67,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-info {
+ color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-info-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-info-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-info:focus,
+.link-info:hover {
+ color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 61,
+ 213,
+ 243,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 61,
+ 213,
+ 243,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-warning {
+ color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-warning-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-warning-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-warning:focus,
+.link-warning:hover {
+ color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 255,
+ 205,
+ 57,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 255,
+ 205,
+ 57,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-danger {
+ color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-danger-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-danger-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-danger:focus,
+.link-danger:hover {
+ color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 176,
+ 42,
+ 55,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 176,
+ 42,
+ 55,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-light {
+ color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-light-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-light-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-light:focus,
+.link-light:hover {
+ color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 249,
+ 250,
+ 251,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 249,
+ 250,
+ 251,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-dark {
+ color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-dark-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-dark-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-dark:focus,
+.link-dark:hover {
+ color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(
+ 26,
+ 30,
+ 33,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ 26,
+ 30,
+ 33,
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-body-emphasis {
+ color: RGBA(
+ var(--bs-emphasis-color-rgb),
+ var(--bs-link-opacity, 1)
+ ) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-emphasis-color-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-emphasis-color-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-body-emphasis:focus,
+.link-body-emphasis:hover {
+ color: RGBA(
+ var(--bs-emphasis-color-rgb),
+ var(--bs-link-opacity, 0.75)
+ ) !important;
+ -webkit-text-decoration-color: RGBA(
+ var(--bs-emphasis-color-rgb),
+ var(--bs-link-underline-opacity, 0.75)
+ ) !important;
+ text-decoration-color: RGBA(
+ var(--bs-emphasis-color-rgb),
+ var(--bs-link-underline-opacity, 0.75)
+ ) !important;
+}
+.focus-ring:focus {
+ outline: 0;
+ box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0)
+ var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width)
+ var(--bs-focus-ring-color);
+}
+.icon-link {
+ display: inline-flex;
+ gap: 0.375rem;
+ align-items: center;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-link-color-rgb),
+ var(--bs-link-opacity, 0.5)
+ );
+ text-decoration-color: rgba(
+ var(--bs-link-color-rgb),
+ var(--bs-link-opacity, 0.5)
+ );
+ text-underline-offset: 0.25em;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+}
+.icon-link > .bi {
+ flex-shrink: 0;
+ width: 1em;
+ height: 1em;
+ fill: currentcolor;
+ transition: 0.2s ease-in-out transform;
+}
+@media (prefers-reduced-motion: reduce) {
+ .icon-link > .bi {
+ transition: none;
+ }
+}
+.icon-link-hover:focus-visible > .bi,
+.icon-link-hover:hover > .bi {
+ transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));
+}*/
+.ratio {
+ position: relative;
+ width: 100%;
+}
+.ratio::before {
+ display: block;
+ padding-top: var(--bs-aspect-ratio);
+ content: "";
+}
+.ratio > * {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ratio-1x1 {
+ --bs-aspect-ratio: 100%;
+}
+.ratio-4x3 {
+ --bs-aspect-ratio: 75%;
+}
+.ratio-16x9 {
+ --bs-aspect-ratio: 56.25%;
+}
+.ratio-21x9 {
+ --bs-aspect-ratio: 42.8571428571%;
+}
+.fixed-top {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+.fixed-bottom {
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030;
+}/*
+.sticky-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+}
+.sticky-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+}
+@media (min-width: 576px) {
+ .sticky-sm-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-sm-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 768px) {
+ .sticky-md-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-md-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 992px) {
+ .sticky-lg-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-lg-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 1200px) {
+ .sticky-xl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-xl-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 1400px) {
+ .sticky-xxl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-xxl-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+.hstack {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ align-self: stretch;
+}
+.vstack {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ align-self: stretch;
+}
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+ width: 1px !important;
+ height: 1px !important;
+ padding: 0 !important;
+ margin: -1px !important;
+ overflow: hidden !important;
+ clip: rect(0, 0, 0, 0) !important;
+ white-space: nowrap !important;
+ border: 0 !important;
+}
+.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),
+.visually-hidden:not(caption) {
+ position: absolute !important;
+}
+.stretched-link::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: "";
+}
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.vr {
+ display: inline-block;
+ align-self: stretch;
+ width: var(--bs-border-width);
+ min-height: 1em;
+ background-color: currentcolor;
+ opacity: 0.25;
+}
+.align-baseline {
+ vertical-align: baseline !important;
+}
+.align-top {
+ vertical-align: top !important;
+}
+.align-middle {
+ vertical-align: middle !important;
+}
+.align-bottom {
+ vertical-align: bottom !important;
+}
+.align-text-bottom {
+ vertical-align: text-bottom !important;
+}
+.align-text-top {
+ vertical-align: text-top !important;
+}
+.float-start {
+ float: left !important;
+}
+.float-end {
+ float: right !important;
+}
+.float-none {
+ float: none !important;
+}
+.object-fit-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+}
+.object-fit-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+}
+.object-fit-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+}
+.object-fit-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+}
+.object-fit-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+}*//*
+.opacity-0 {
+ opacity: 0 !important;
+}
+.opacity-25 {
+ opacity: 0.25 !important;
+}
+.opacity-50 {
+ opacity: 0.5 !important;
+}
+.opacity-75 {
+ opacity: 0.75 !important;
+}
+.opacity-100 {
+ opacity: 1 !important;
+}
+.overflow-auto {
+ overflow: auto !important;
+}
+.overflow-hidden {
+ overflow: hidden !important;
+}
+.overflow-visible {
+ overflow: visible !important;
+}
+.overflow-scroll {
+ overflow: scroll !important;
+}
+.overflow-x-auto {
+ overflow-x: auto !important;
+}
+.overflow-x-hidden {
+ overflow-x: hidden !important;
+}
+.overflow-x-visible {
+ overflow-x: visible !important;
+}
+.overflow-x-scroll {
+ overflow-x: scroll !important;
+}
+.overflow-y-auto {
+ overflow-y: auto !important;
+}
+.overflow-y-hidden {
+ overflow-y: hidden !important;
+}
+.overflow-y-visible {
+ overflow-y: visible !important;
+}
+.overflow-y-scroll {
+ overflow-y: scroll !important;
+}
+.d-inline {
+ display: inline !important;
+}
+.d-inline-block {
+ display: inline-block !important;
+}
+.d-block {
+ display: block !important;
+}
+.d-grid {
+ display: grid !important;
+}
+.d-inline-grid {
+ display: inline-grid !important;
+}
+.d-table {
+ display: table !important;
+}
+.d-table-row {
+ display: table-row !important;
+}
+.d-table-cell {
+ display: table-cell !important;
+}
+.d-flex {
+ display: flex !important;
+}
+.d-inline-flex {
+ display: inline-flex !important;
+}
+.d-none {
+ display: none !important;
+}
+.shadow {
+ box-shadow: var(--bs-box-shadow) !important;
+}
+.shadow-sm {
+ box-shadow: var(--bs-box-shadow-sm) !important;
+}
+.shadow-lg {
+ box-shadow: var(--bs-box-shadow-lg) !important;
+}
+.shadow-none {
+ box-shadow: none !important;
+}
+.focus-ring-primary {
+ --bs-focus-ring-color: rgba(
+ var(--bs-primary-rgb),
+ var(--bs-focus-ring-opacity)
+ );
+}
+.focus-ring-secondary {
+ --bs-focus-ring-color: rgba(
+ var(--bs-secondary-rgb),
+ var(--bs-focus-ring-opacity)
+ );
+}
+.focus-ring-success {
+ --bs-focus-ring-color: rgba(
+ var(--bs-success-rgb),
+ var(--bs-focus-ring-opacity)
+ );
+}
+.focus-ring-info {
+ --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));
+}
+.focus-ring-warning {
+ --bs-focus-ring-color: rgba(
+ var(--bs-warning-rgb),
+ var(--bs-focus-ring-opacity)
+ );
+}
+.focus-ring-danger {
+ --bs-focus-ring-color: rgba(
+ var(--bs-danger-rgb),
+ var(--bs-focus-ring-opacity)
+ );
+}
+.focus-ring-light {
+ --bs-focus-ring-color: rgba(
+ var(--bs-light-rgb),
+ var(--bs-focus-ring-opacity)
+ );
+}
+.focus-ring-dark {
+ --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));
+}*/
+.position-static {
+ position: static !important;
+}
+.position-relative {
+ position: relative !important;
+}
+
+.position-fixed {
+ position: fixed !important;
+}
+.position-sticky {
+ position: -webkit-sticky !important;
+ position: sticky !important;
+}
+.top-0 {
+ top: 0 !important;
+}
+.top-50 {
+ top: 50% !important;
+}
+.top-100 {
+ top: 100% !important;
+}
+.bottom-0 {
+ bottom: 0 !important;
+}
+.bottom-50 {
+ bottom: 50% !important;
+}
+.bottom-100 {
+ bottom: 100% !important;
+}
+.start-0 {
+ left: 0 !important;
+}
+.start-50 {
+ left: 50% !important;
+}
+.start-100 {
+ left: 100% !important;
+}
+.end-0 {
+ right: 0 !important;
+}
+.end-50 {
+ right: 50% !important;
+}
+.end-100 {
+ right: 100% !important;
+}/*
+.translate-middle {
+ transform: translate(-50%, -50%) !important;
+}
+.translate-middle-x {
+ transform: translateX(-50%) !important;
+}
+.translate-middle-y {
+ transform: translateY(-50%) !important;
+}
+.border {
+ border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+.border-0 {
+ border: 0 !important;
+}
+.border-top {
+ border-top: var(--bs-border-width) var(--bs-border-style)
+ var(--bs-border-color) !important;
+}
+.border-top-0 {
+ border-top: 0 !important;
+}
+.border-end {
+ border-right: var(--bs-border-width) var(--bs-border-style)
+ var(--bs-border-color) !important;
+}
+.border-end-0 {
+ border-right: 0 !important;
+}
+.border-bottom {
+ border-bottom: var(--bs-border-width) var(--bs-border-style)
+ var(--bs-border-color) !important;
+}
+.border-bottom-0 {
+ border-bottom: 0 !important;
+}
+.border-start {
+ border-left: var(--bs-border-width) var(--bs-border-style)
+ var(--bs-border-color) !important;
+}
+.border-start-0 {
+ border-left: 0 !important;
+}
+.border-primary {
+ --bs-border-opacity: 1;
+ border-color: rgba(
+ var(--bs-primary-rgb),
+ var(--bs-border-opacity)
+ ) !important;
+}
+.border-secondary {
+ --bs-border-opacity: 1;
+ border-color: rgba(
+ var(--bs-secondary-rgb),
+ var(--bs-border-opacity)
+ ) !important;
+}
+.border-success {
+ --bs-border-opacity: 1;
+ border-color: rgba(
+ var(--bs-success-rgb),
+ var(--bs-border-opacity)
+ ) !important;
+}
+.border-info {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;
+}
+.border-warning {
+ --bs-border-opacity: 1;
+ border-color: rgba(
+ var(--bs-warning-rgb),
+ var(--bs-border-opacity)
+ ) !important;
+}
+.border-danger {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;
+}
+.border-light {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;
+}
+.border-dark {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;
+}
+.border-black {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;
+}
+.border-white {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;
+}
+.border-primary-subtle {
+ border-color: var(--bs-primary-border-subtle) !important;
+}
+.border-secondary-subtle {
+ border-color: var(--bs-secondary-border-subtle) !important;
+}
+.border-success-subtle {
+ border-color: var(--bs-success-border-subtle) !important;
+}
+.border-info-subtle {
+ border-color: var(--bs-info-border-subtle) !important;
+}
+.border-warning-subtle {
+ border-color: var(--bs-warning-border-subtle) !important;
+}
+.border-danger-subtle {
+ border-color: var(--bs-danger-border-subtle) !important;
+}
+.border-light-subtle {
+ border-color: var(--bs-light-border-subtle) !important;
+}
+.border-dark-subtle {
+ border-color: var(--bs-dark-border-subtle) !important;
+}
+.border-1 {
+ border-width: 1px !important;
+}
+.border-2 {
+ border-width: 2px !important;
+}
+.border-3 {
+ border-width: 3px !important;
+}
+.border-4 {
+ border-width: 4px !important;
+}
+.border-5 {
+ border-width: 5px !important;
+}
+.border-opacity-10 {
+ --bs-border-opacity: 0.1;
+}
+.border-opacity-25 {
+ --bs-border-opacity: 0.25;
+}
+.border-opacity-50 {
+ --bs-border-opacity: 0.5;
+}
+.border-opacity-75 {
+ --bs-border-opacity: 0.75;
+}
+.border-opacity-100 {
+ --bs-border-opacity: 1;
+}
+.w-25 {
+ width: 25% !important;
+}
+.w-50 {
+ width: 50% !important;
+}
+.w-75 {
+ width: 75% !important;
+}
+.w-100 {
+ width: 100% !important;
+}
+.w-auto {
+ width: auto !important;
+}
+.mw-100 {
+ max-width: 100% !important;
+}
+.vw-100 {
+ width: 100vw !important;
+}
+.min-vw-100 {
+ min-width: 100vw !important;
+}
+.h-25 {
+ height: 25% !important;
+}
+.h-50 {
+ height: 50% !important;
+}
+.h-75 {
+ height: 75% !important;
+}
+.h-100 {
+ height: 100% !important;
+}
+.h-auto {
+ height: auto !important;
+}
+.mh-100 {
+ max-height: 100% !important;
+}
+.vh-100 {
+ height: 100vh !important;
+}
+.min-vh-100 {
+ min-height: 100vh !important;
+}
+.flex-fill {
+ flex: 1 1 auto !important;
+}
+.flex-row {
+ flex-direction: row !important;
+}
+.flex-column {
+ flex-direction: column !important;
+}
+.flex-row-reverse {
+ flex-direction: row-reverse !important;
+}
+.flex-column-reverse {
+ flex-direction: column-reverse !important;
+}
+.flex-grow-0 {
+ flex-grow: 0 !important;
+}
+.flex-grow-1 {
+ flex-grow: 1 !important;
+}
+.flex-shrink-0 {
+ flex-shrink: 0 !important;
+}
+.flex-shrink-1 {
+ flex-shrink: 1 !important;
+}
+.flex-wrap {
+ flex-wrap: wrap !important;
+}
+.flex-nowrap {
+ flex-wrap: nowrap !important;
+}
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+}
+.justify-content-start {
+ justify-content: flex-start !important;
+}
+.justify-content-end {
+ justify-content: flex-end !important;
+}
+.justify-content-center {
+ justify-content: center !important;
+}
+.justify-content-between {
+ justify-content: space-between !important;
+}
+.justify-content-around {
+ justify-content: space-around !important;
+}
+.justify-content-evenly {
+ justify-content: space-evenly !important;
+}
+.align-items-start {
+ align-items: flex-start !important;
+}
+.align-items-end {
+ align-items: flex-end !important;
+}
+.align-items-center {
+ align-items: center !important;
+}
+.align-items-baseline {
+ align-items: baseline !important;
+}
+.align-items-stretch {
+ align-items: stretch !important;
+}
+.align-content-start {
+ align-content: flex-start !important;
+}
+.align-content-end {
+ align-content: flex-end !important;
+}
+.align-content-center {
+ align-content: center !important;
+}
+.align-content-between {
+ align-content: space-between !important;
+}
+.align-content-around {
+ align-content: space-around !important;
+}
+.align-content-stretch {
+ align-content: stretch !important;
+}
+.align-self-auto {
+ align-self: auto !important;
+}
+.align-self-start {
+ align-self: flex-start !important;
+}
+.align-self-end {
+ align-self: flex-end !important;
+}
+.align-self-center {
+ align-self: center !important;
+}
+.align-self-baseline {
+ align-self: baseline !important;
+}
+.align-self-stretch {
+ align-self: stretch !important;
+}
+.order-first {
+ order: -1 !important;
+}
+.order-0 {
+ order: 0 !important;
+}
+.order-1 {
+ order: 1 !important;
+}
+.order-2 {
+ order: 2 !important;
+}
+.order-3 {
+ order: 3 !important;
+}
+.order-4 {
+ order: 4 !important;
+}
+.order-5 {
+ order: 5 !important;
+}
+.order-last {
+ order: 6 !important;
+}
+.m-0 {
+ margin: 0 !important;
+}
+.m-1 {
+ margin: 0.25rem !important;
+}
+.m-2 {
+ margin: 0.5rem !important;
+}
+.m-3 {
+ margin: 1rem !important;
+}
+.m-4 {
+ margin: 1.5rem !important;
+}
+.m-5 {
+ margin: 3rem !important;
+}
+.m-auto {
+ margin: auto !important;
+}
+.mx-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+}
+.mx-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+}
+.mx-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+}
+.mx-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+}
+.mx-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+}
+.mx-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+}
+.mx-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+}
+.my-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+}
+.my-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+}
+.my-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+}
+.my-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+}
+.my-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+}
+.my-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+}
+.my-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+}
+.mt-0 {
+ margin-top: 0 !important;
+}
+.mt-1 {
+ margin-top: 0.25rem !important;
+}
+.mt-2 {
+ margin-top: 0.5rem !important;
+}
+.mt-3 {
+ margin-top: 1rem !important;
+}
+.mt-4 {
+ margin-top: 1.5rem !important;
+}
+.mt-5 {
+ margin-top: 3rem !important;
+}
+.mt-auto {
+ margin-top: auto !important;
+}
+.me-0 {
+ margin-right: 0 !important;
+}
+.me-1 {
+ margin-right: 0.25rem !important;
+}
+.me-2 {
+ margin-right: 0.5rem !important;
+}
+.me-3 {
+ margin-right: 1rem !important;
+}
+.me-4 {
+ margin-right: 1.5rem !important;
+}
+.me-5 {
+ margin-right: 3rem !important;
+}
+.me-auto {
+ margin-right: auto !important;
+}
+.mb-0 {
+ margin-bottom: 0 !important;
+}
+.mb-1 {
+ margin-bottom: 0.25rem !important;
+}
+.mb-2 {
+ margin-bottom: 0.5rem !important;
+}
+.mb-3 {
+ margin-bottom: 1rem !important;
+}
+.mb-4 {
+ margin-bottom: 1.5rem !important;
+}
+.mb-5 {
+ margin-bottom: 3rem !important;
+}
+.mb-auto {
+ margin-bottom: auto !important;
+}
+.ms-0 {
+ margin-left: 0 !important;
+}
+.ms-1 {
+ margin-left: 0.25rem !important;
+}
+.ms-2 {
+ margin-left: 0.5rem !important;
+}
+.ms-3 {
+ margin-left: 1rem !important;
+}
+.ms-4 {
+ margin-left: 1.5rem !important;
+}
+.ms-5 {
+ margin-left: 3rem !important;
+}
+.ms-auto {
+ margin-left: auto !important;
+}*/
+.p-0 {
+ padding: 0 !important;
+}
+.p-1 {
+ padding: 0.25rem !important;
+}
+.p-2 {
+ padding: 0.5rem !important;
+}
+.p-3 {
+ padding: 1rem !important;
+}
+.p-4 {
+ padding: 1.5rem !important;
+}
+.p-5 {
+ padding: 3rem !important;
+}
+.px-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+}
+.px-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+}
+.px-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+}
+.px-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+}
+.px-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+}
+.px-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+}
+.py-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+}
+.py-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+}
+.py-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+}
+.py-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+}
+.py-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+}
+.py-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+}
+.pt-0 {
+ padding-top: 0 !important;
+}
+.pt-1 {
+ padding-top: 0.25rem !important;
+}
+.pt-2 {
+ padding-top: 0.5rem !important;
+}
+.pt-3 {
+ padding-top: 1rem !important;
+}
+.pt-4 {
+ padding-top: 1.5rem !important;
+}
+.pt-5 {
+ padding-top: 3rem !important;
+}
+.pe-0 {
+ padding-right: 0 !important;
+}
+.pe-1 {
+ padding-right: 0.25rem !important;
+}
+.pe-2 {
+ padding-right: 0.5rem !important;
+}
+.pe-3 {
+ padding-right: 1rem !important;
+}
+.pe-4 {
+ padding-right: 1.5rem !important;
+}
+.pe-5 {
+ padding-right: 3rem !important;
+}
+.pb-0 {
+ padding-bottom: 0 !important;
+}
+.pb-1 {
+ padding-bottom: 0.25rem !important;
+}
+.pb-2 {
+ padding-bottom: 0.5rem !important;
+}
+.pb-3 {
+ padding-bottom: 1rem !important;
+}
+.pb-4 {
+ padding-bottom: 1.5rem !important;
+}
+.pb-5 {
+ padding-bottom: 3rem !important;
+}
+.ps-0 {
+ padding-left: 0 !important;
+}
+.ps-1 {
+ padding-left: 0.25rem !important;
+}
+.ps-2 {
+ padding-left: 0.5rem !important;
+}
+.ps-3 {
+ padding-left: 1rem !important;
+}
+.ps-4 {
+ padding-left: 1.5rem !important;
+}
+.ps-5 {
+ padding-left: 3rem !important;
+}/*
+.gap-0 {
+ gap: 0 !important;
+}
+.gap-1 {
+ gap: 0.25rem !important;
+}
+.gap-2 {
+ gap: 0.5rem !important;
+}
+.gap-3 {
+ gap: 1rem !important;
+}
+.gap-4 {
+ gap: 1.5rem !important;
+}
+.gap-5 {
+ gap: 3rem !important;
+}
+.row-gap-0 {
+ row-gap: 0 !important;
+}
+.row-gap-1 {
+ row-gap: 0.25rem !important;
+}
+.row-gap-2 {
+ row-gap: 0.5rem !important;
+}
+.row-gap-3 {
+ row-gap: 1rem !important;
+}
+.row-gap-4 {
+ row-gap: 1.5rem !important;
+}
+.row-gap-5 {
+ row-gap: 3rem !important;
+}
+.column-gap-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+}
+.column-gap-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+}
+.column-gap-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+}
+.column-gap-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+}
+.column-gap-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+}
+.column-gap-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+}
+.font-monospace {
+ font-family: var(--bs-font-monospace) !important;
+}
+.fs-1 {
+ font-size: calc(1.375rem + 1.5vw) !important;
+}
+.fs-2 {
+ font-size: calc(1.325rem + 0.9vw) !important;
+}
+.fs-3 {
+ font-size: calc(1.3rem + 0.6vw) !important;
+}
+.fs-4 {
+ font-size: calc(1.275rem + 0.3vw) !important;
+}
+.fs-5 {
+ font-size: 1.25rem !important;
+}
+.fs-6 {
+ font-size: 1rem !important;
+}
+.fst-italic {
+ font-style: italic !important;
+}
+.fst-normal {
+ font-style: normal !important;
+}
+.fw-lighter {
+ font-weight: lighter !important;
+}
+.fw-light {
+ font-weight: 300 !important;
+}
+.fw-normal {
+ font-weight: 400 !important;
+}
+.fw-medium {
+ font-weight: 500 !important;
+}
+.fw-semibold {
+ font-weight: 600 !important;
+}
+.fw-bold {
+ font-weight: 700 !important;
+}
+.fw-bolder {
+ font-weight: bolder !important;
+}
+.lh-1 {
+ line-height: 1 !important;
+}
+.lh-sm {
+ line-height: 1.25 !important;
+}
+.lh-base {
+ line-height: 1.5 !important;
+}
+.lh-lg {
+ line-height: 2 !important;
+}
+
+.text-decoration-none {
+ text-decoration: none !important;
+}
+.text-decoration-underline {
+ text-decoration: underline !important;
+}
+.text-decoration-line-through {
+ text-decoration: line-through !important;
+}
+.text-lowercase {
+ text-transform: lowercase !important;
+}
+.text-uppercase {
+ text-transform: uppercase !important;
+}
+.text-capitalize {
+ text-transform: capitalize !important;
+}
+.text-wrap {
+ white-space: normal !important;
+}
+.text-nowrap {
+ white-space: nowrap !important;
+}
+.text-break {
+ word-wrap: break-word !important;
+ word-break: break-word !important;
+}
+.text-primary {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+.text-secondary {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
+}
+.text-success {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
+}
+.text-info {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
+}
+.text-warning {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
+}
+.text-danger {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
+}
+.text-light {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
+}
+.text-dark {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
+}
+.text-black {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
+}
+.text-white {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
+}
+.text-body {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;
+}
+.text-muted {
+ --bs-text-opacity: 1;
+ color: var(--bs-secondary-color) !important;
+}
+.text-black-50 {
+ --bs-text-opacity: 1;
+ color: rgba(0, 0, 0, 0.5) !important;
+}
+.text-white-50 {
+ --bs-text-opacity: 1;
+ color: rgba(255, 255, 255, 0.5) !important;
+}
+.text-body-secondary {
+ --bs-text-opacity: 1;
+ color: var(--bs-secondary-color) !important;
+}
+.text-body-tertiary {
+ --bs-text-opacity: 1;
+ color: var(--bs-tertiary-color) !important;
+}
+.text-body-emphasis {
+ --bs-text-opacity: 1;
+ color: var(--bs-emphasis-color) !important;
+}
+.text-reset {
+ --bs-text-opacity: 1;
+ color: inherit !important;
+}
+.text-opacity-25 {
+ --bs-text-opacity: 0.25;
+}
+.text-opacity-50 {
+ --bs-text-opacity: 0.5;
+}
+.text-opacity-75 {
+ --bs-text-opacity: 0.75;
+}
+.text-opacity-100 {
+ --bs-text-opacity: 1;
+}
+.text-primary-emphasis {
+ color: var(--bs-primary-text-emphasis) !important;
+}
+.text-secondary-emphasis {
+ color: var(--bs-secondary-text-emphasis) !important;
+}
+.text-success-emphasis {
+ color: var(--bs-success-text-emphasis) !important;
+}
+.text-info-emphasis {
+ color: var(--bs-info-text-emphasis) !important;
+}
+.text-warning-emphasis {
+ color: var(--bs-warning-text-emphasis) !important;
+}
+.text-danger-emphasis {
+ color: var(--bs-danger-text-emphasis) !important;
+}
+.text-light-emphasis {
+ color: var(--bs-light-text-emphasis) !important;
+}
+.text-dark-emphasis {
+ color: var(--bs-dark-text-emphasis) !important;
+}
+.link-opacity-10 {
+ --bs-link-opacity: 0.1;
+}
+.link-opacity-10-hover:hover {
+ --bs-link-opacity: 0.1;
+}
+.link-opacity-25 {
+ --bs-link-opacity: 0.25;
+}
+.link-opacity-25-hover:hover {
+ --bs-link-opacity: 0.25;
+}
+.link-opacity-50 {
+ --bs-link-opacity: 0.5;
+}
+.link-opacity-50-hover:hover {
+ --bs-link-opacity: 0.5;
+}
+.link-opacity-75 {
+ --bs-link-opacity: 0.75;
+}
+.link-opacity-75-hover:hover {
+ --bs-link-opacity: 0.75;
+}
+.link-opacity-100 {
+ --bs-link-opacity: 1;
+}
+.link-opacity-100-hover:hover {
+ --bs-link-opacity: 1;
+}
+.link-offset-1 {
+ text-underline-offset: 0.125em !important;
+}
+.link-offset-1-hover:hover {
+ text-underline-offset: 0.125em !important;
+}
+.link-offset-2 {
+ text-underline-offset: 0.25em !important;
+}
+.link-offset-2-hover:hover {
+ text-underline-offset: 0.25em !important;
+}
+.link-offset-3 {
+ text-underline-offset: 0.375em !important;
+}
+.link-offset-3-hover:hover {
+ text-underline-offset: 0.375em !important;
+}
+.link-underline-primary {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-primary-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-primary-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline-secondary {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-secondary-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-secondary-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline-success {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-success-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-success-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline-info {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-info-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-info-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline-warning {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-warning-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-warning-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline-danger {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-danger-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-danger-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline-light {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-light-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-light-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline-dark {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-dark-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-dark-rgb),
+ var(--bs-link-underline-opacity)
+ ) !important;
+}
+.link-underline {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(
+ var(--bs-link-color-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+ text-decoration-color: rgba(
+ var(--bs-link-color-rgb),
+ var(--bs-link-underline-opacity, 1)
+ ) !important;
+}
+.link-underline-opacity-0 {
+ --bs-link-underline-opacity: 0;
+}
+.link-underline-opacity-0-hover:hover {
+ --bs-link-underline-opacity: 0;
+}
+.link-underline-opacity-10 {
+ --bs-link-underline-opacity: 0.1;
+}
+.link-underline-opacity-10-hover:hover {
+ --bs-link-underline-opacity: 0.1;
+}
+.link-underline-opacity-25 {
+ --bs-link-underline-opacity: 0.25;
+}
+.link-underline-opacity-25-hover:hover {
+ --bs-link-underline-opacity: 0.25;
+}
+.link-underline-opacity-50 {
+ --bs-link-underline-opacity: 0.5;
+}
+.link-underline-opacity-50-hover:hover {
+ --bs-link-underline-opacity: 0.5;
+}
+.link-underline-opacity-75 {
+ --bs-link-underline-opacity: 0.75;
+}
+.link-underline-opacity-75-hover:hover {
+ --bs-link-underline-opacity: 0.75;
+}
+.link-underline-opacity-100 {
+ --bs-link-underline-opacity: 1;
+}
+.link-underline-opacity-100-hover:hover {
+ --bs-link-underline-opacity: 1;
+}
+.bg-primary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(
+ var(--bs-primary-rgb),
+ var(--bs-bg-opacity)
+ ) !important;
+}
+.bg-secondary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(
+ var(--bs-secondary-rgb),
+ var(--bs-bg-opacity)
+ ) !important;
+}
+.bg-success {
+ --bs-bg-opacity: 1;
+ background-color: rgba(
+ var(--bs-success-rgb),
+ var(--bs-bg-opacity)
+ ) !important;
+}
+.bg-info {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
+}
+.bg-warning {
+ --bs-bg-opacity: 1;
+ background-color: rgba(
+ var(--bs-warning-rgb),
+ var(--bs-bg-opacity)
+ ) !important;
+}
+.bg-danger {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
+}
+.bg-light {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
+}
+.bg-dark {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
+}
+.bg-black {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
+}
+.bg-white {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
+}
+.bg-body {
+ --bs-bg-opacity: 1;
+ background-color: rgba(
+ var(--bs-body-bg-rgb),
+ var(--bs-bg-opacity)
+ ) !important;
+}
+.bg-transparent {
+ --bs-bg-opacity: 1;
+ background-color: transparent !important;
+}
+.bg-body-secondary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(
+ var(--bs-secondary-bg-rgb),
+ var(--bs-bg-opacity)
+ ) !important;
+}
+.bg-body-tertiary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(
+ var(--bs-tertiary-bg-rgb),
+ var(--bs-bg-opacity)
+ ) !important;
+}
+.bg-opacity-10 {
+ --bs-bg-opacity: 0.1;
+}
+.bg-opacity-25 {
+ --bs-bg-opacity: 0.25;
+}
+.bg-opacity-50 {
+ --bs-bg-opacity: 0.5;
+}
+.bg-opacity-75 {
+ --bs-bg-opacity: 0.75;
+}
+.bg-opacity-100 {
+ --bs-bg-opacity: 1;
+}
+.bg-primary-subtle {
+ background-color: var(--bs-primary-bg-subtle) !important;
+}
+.bg-secondary-subtle {
+ background-color: var(--bs-secondary-bg-subtle) !important;
+}
+.bg-success-subtle {
+ background-color: var(--bs-success-bg-subtle) !important;
+}
+.bg-info-subtle {
+ background-color: var(--bs-info-bg-subtle) !important;
+}
+.bg-warning-subtle {
+ background-color: var(--bs-warning-bg-subtle) !important;
+}
+.bg-danger-subtle {
+ background-color: var(--bs-danger-bg-subtle) !important;
+}
+.bg-light-subtle {
+ background-color: var(--bs-light-bg-subtle) !important;
+}
+.bg-dark-subtle {
+ background-color: var(--bs-dark-bg-subtle) !important;
+}
+.bg-gradient {
+ background-image: var(--bs-gradient) !important;
+}
+.user-select-all {
+ -webkit-user-select: all !important;
+ -moz-user-select: all !important;
+ user-select: all !important;
+}
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -moz-user-select: auto !important;
+ user-select: auto !important;
+}
+.user-select-none {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ user-select: none !important;
+}
+.pe-none {
+ pointer-events: none !important;
+}
+.pe-auto {
+ pointer-events: auto !important;
+}
+.rounded {
+ border-radius: var(--bs-border-radius) !important;
+}
+.rounded-0 {
+ border-radius: 0 !important;
+}
+.rounded-1 {
+ border-radius: var(--bs-border-radius-sm) !important;
+}
+.rounded-2 {
+ border-radius: var(--bs-border-radius) !important;
+}
+.rounded-3 {
+ border-radius: var(--bs-border-radius-lg) !important;
+}
+.rounded-4 {
+ border-radius: var(--bs-border-radius-xl) !important;
+}
+.rounded-5 {
+ border-radius: var(--bs-border-radius-xxl) !important;
+}
+.rounded-circle {
+ border-radius: 50% !important;
+}
+.rounded-pill {
+ border-radius: var(--bs-border-radius-pill) !important;
+}
+.rounded-top {
+ border-top-left-radius: var(--bs-border-radius) !important;
+ border-top-right-radius: var(--bs-border-radius) !important;
+}
+.rounded-top-0 {
+ border-top-left-radius: 0 !important;
+ border-top-right-radius: 0 !important;
+}
+.rounded-top-1 {
+ border-top-left-radius: var(--bs-border-radius-sm) !important;
+ border-top-right-radius: var(--bs-border-radius-sm) !important;
+}
+.rounded-top-2 {
+ border-top-left-radius: var(--bs-border-radius) !important;
+ border-top-right-radius: var(--bs-border-radius) !important;
+}
+.rounded-top-3 {
+ border-top-left-radius: var(--bs-border-radius-lg) !important;
+ border-top-right-radius: var(--bs-border-radius-lg) !important;
+}
+.rounded-top-4 {
+ border-top-left-radius: var(--bs-border-radius-xl) !important;
+ border-top-right-radius: var(--bs-border-radius-xl) !important;
+}
+.rounded-top-5 {
+ border-top-left-radius: var(--bs-border-radius-xxl) !important;
+ border-top-right-radius: var(--bs-border-radius-xxl) !important;
+}
+.rounded-top-circle {
+ border-top-left-radius: 50% !important;
+ border-top-right-radius: 50% !important;
+}
+.rounded-top-pill {
+ border-top-left-radius: var(--bs-border-radius-pill) !important;
+ border-top-right-radius: var(--bs-border-radius-pill) !important;
+}
+.rounded-end {
+ border-top-right-radius: var(--bs-border-radius) !important;
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+}
+.rounded-end-0 {
+ border-top-right-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+}
+.rounded-end-1 {
+ border-top-right-radius: var(--bs-border-radius-sm) !important;
+ border-bottom-right-radius: var(--bs-border-radius-sm) !important;
+}
+.rounded-end-2 {
+ border-top-right-radius: var(--bs-border-radius) !important;
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+}
+.rounded-end-3 {
+ border-top-right-radius: var(--bs-border-radius-lg) !important;
+ border-bottom-right-radius: var(--bs-border-radius-lg) !important;
+}
+.rounded-end-4 {
+ border-top-right-radius: var(--bs-border-radius-xl) !important;
+ border-bottom-right-radius: var(--bs-border-radius-xl) !important;
+}
+.rounded-end-5 {
+ border-top-right-radius: var(--bs-border-radius-xxl) !important;
+ border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
+}
+.rounded-end-circle {
+ border-top-right-radius: 50% !important;
+ border-bottom-right-radius: 50% !important;
+}
+.rounded-end-pill {
+ border-top-right-radius: var(--bs-border-radius-pill) !important;
+ border-bottom-right-radius: var(--bs-border-radius-pill) !important;
+}
+.rounded-bottom {
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+}
+.rounded-bottom-0 {
+ border-bottom-right-radius: 0 !important;
+ border-bottom-left-radius: 0 !important;
+}
+.rounded-bottom-1 {
+ border-bottom-right-radius: var(--bs-border-radius-sm) !important;
+ border-bottom-left-radius: var(--bs-border-radius-sm) !important;
+}
+.rounded-bottom-2 {
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+}
+.rounded-bottom-3 {
+ border-bottom-right-radius: var(--bs-border-radius-lg) !important;
+ border-bottom-left-radius: var(--bs-border-radius-lg) !important;
+}
+.rounded-bottom-4 {
+ border-bottom-right-radius: var(--bs-border-radius-xl) !important;
+ border-bottom-left-radius: var(--bs-border-radius-xl) !important;
+}
+.rounded-bottom-5 {
+ border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
+ border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
+}
+.rounded-bottom-circle {
+ border-bottom-right-radius: 50% !important;
+ border-bottom-left-radius: 50% !important;
+}
+.rounded-bottom-pill {
+ border-bottom-right-radius: var(--bs-border-radius-pill) !important;
+ border-bottom-left-radius: var(--bs-border-radius-pill) !important;
+}
+.rounded-start {
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+ border-top-left-radius: var(--bs-border-radius) !important;
+}
+.rounded-start-0 {
+ border-bottom-left-radius: 0 !important;
+ border-top-left-radius: 0 !important;
+}
+.rounded-start-1 {
+ border-bottom-left-radius: var(--bs-border-radius-sm) !important;
+ border-top-left-radius: var(--bs-border-radius-sm) !important;
+}
+.rounded-start-2 {
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+ border-top-left-radius: var(--bs-border-radius) !important;
+}
+.rounded-start-3 {
+ border-bottom-left-radius: var(--bs-border-radius-lg) !important;
+ border-top-left-radius: var(--bs-border-radius-lg) !important;
+}
+.rounded-start-4 {
+ border-bottom-left-radius: var(--bs-border-radius-xl) !important;
+ border-top-left-radius: var(--bs-border-radius-xl) !important;
+}
+.rounded-start-5 {
+ border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
+ border-top-left-radius: var(--bs-border-radius-xxl) !important;
+}
+.rounded-start-circle {
+ border-bottom-left-radius: 50% !important;
+ border-top-left-radius: 50% !important;
+}
+.rounded-start-pill {
+ border-bottom-left-radius: var(--bs-border-radius-pill) !important;
+ border-top-left-radius: var(--bs-border-radius-pill) !important;
+}
+.visible {
+ visibility: visible !important;
+}
+.invisible {
+ visibility: hidden !important;
+}
+.z-n1 {
+ z-index: -1 !important;
+}
+.z-0 {
+ z-index: 0 !important;
+}
+.z-1 {
+ z-index: 1 !important;
+}
+.z-2 {
+ z-index: 2 !important;
+}
+.z-3 {
+ z-index: 3 !important;
+}
+@media (min-width: 576px) {
+ .float-sm-start {
+ float: left !important;
+ }
+ .float-sm-end {
+ float: right !important;
+ }
+ .float-sm-none {
+ float: none !important;
+ }
+ .object-fit-sm-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-sm-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-sm-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-sm-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-sm-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-sm-inline {
+ display: inline !important;
+ }
+ .d-sm-inline-block {
+ display: inline-block !important;
+ }
+ .d-sm-block {
+ display: block !important;
+ }
+ .d-sm-grid {
+ display: grid !important;
+ }
+ .d-sm-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-sm-table {
+ display: table !important;
+ }
+ .d-sm-table-row {
+ display: table-row !important;
+ }
+ .d-sm-table-cell {
+ display: table-cell !important;
+ }
+ .d-sm-flex {
+ display: flex !important;
+ }
+ .d-sm-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-sm-none {
+ display: none !important;
+ }
+ .flex-sm-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-sm-row {
+ flex-direction: row !important;
+ }
+ .flex-sm-column {
+ flex-direction: column !important;
+ }
+ .flex-sm-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-sm-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-sm-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-sm-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-sm-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-sm-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-sm-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-sm-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-sm-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-sm-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-sm-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-sm-center {
+ justify-content: center !important;
+ }
+ .justify-content-sm-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-sm-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-sm-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-sm-start {
+ align-items: flex-start !important;
+ }
+ .align-items-sm-end {
+ align-items: flex-end !important;
+ }
+ .align-items-sm-center {
+ align-items: center !important;
+ }
+ .align-items-sm-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-sm-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-sm-start {
+ align-content: flex-start !important;
+ }
+ .align-content-sm-end {
+ align-content: flex-end !important;
+ }
+ .align-content-sm-center {
+ align-content: center !important;
+ }
+ .align-content-sm-between {
+ align-content: space-between !important;
+ }
+ .align-content-sm-around {
+ align-content: space-around !important;
+ }
+ .align-content-sm-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-sm-auto {
+ align-self: auto !important;
+ }
+ .align-self-sm-start {
+ align-self: flex-start !important;
+ }
+ .align-self-sm-end {
+ align-self: flex-end !important;
+ }
+ .align-self-sm-center {
+ align-self: center !important;
+ }
+ .align-self-sm-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-sm-stretch {
+ align-self: stretch !important;
+ }
+ .order-sm-first {
+ order: -1 !important;
+ }
+ .order-sm-0 {
+ order: 0 !important;
+ }
+ .order-sm-1 {
+ order: 1 !important;
+ }
+ .order-sm-2 {
+ order: 2 !important;
+ }
+ .order-sm-3 {
+ order: 3 !important;
+ }
+ .order-sm-4 {
+ order: 4 !important;
+ }
+ .order-sm-5 {
+ order: 5 !important;
+ }
+ .order-sm-last {
+ order: 6 !important;
+ }
+ .m-sm-0 {
+ margin: 0 !important;
+ }
+ .m-sm-1 {
+ margin: 0.25rem !important;
+ }
+ .m-sm-2 {
+ margin: 0.5rem !important;
+ }
+ .m-sm-3 {
+ margin: 1rem !important;
+ }
+ .m-sm-4 {
+ margin: 1.5rem !important;
+ }
+ .m-sm-5 {
+ margin: 3rem !important;
+ }
+ .m-sm-auto {
+ margin: auto !important;
+ }
+ .mx-sm-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-sm-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-sm-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-sm-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-sm-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-sm-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-sm-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-sm-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-sm-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-sm-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-sm-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-sm-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-sm-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-sm-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-sm-0 {
+ margin-top: 0 !important;
+ }
+ .mt-sm-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-sm-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-sm-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-sm-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-sm-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-sm-auto {
+ margin-top: auto !important;
+ }
+ .me-sm-0 {
+ margin-right: 0 !important;
+ }
+ .me-sm-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-sm-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-sm-3 {
+ margin-right: 1rem !important;
+ }
+ .me-sm-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-sm-5 {
+ margin-right: 3rem !important;
+ }
+ .me-sm-auto {
+ margin-right: auto !important;
+ }
+ .mb-sm-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-sm-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-sm-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-sm-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-sm-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-sm-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-sm-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-sm-0 {
+ margin-left: 0 !important;
+ }
+ .ms-sm-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-sm-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-sm-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-sm-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-sm-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-sm-auto {
+ margin-left: auto !important;
+ }
+ .p-sm-0 {
+ padding: 0 !important;
+ }
+ .p-sm-1 {
+ padding: 0.25rem !important;
+ }
+ .p-sm-2 {
+ padding: 0.5rem !important;
+ }
+ .p-sm-3 {
+ padding: 1rem !important;
+ }
+ .p-sm-4 {
+ padding: 1.5rem !important;
+ }
+ .p-sm-5 {
+ padding: 3rem !important;
+ }
+ .px-sm-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-sm-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-sm-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-sm-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-sm-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-sm-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-sm-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-sm-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-sm-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-sm-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-sm-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-sm-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-sm-0 {
+ padding-top: 0 !important;
+ }
+ .pt-sm-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-sm-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-sm-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-sm-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-sm-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-sm-0 {
+ padding-right: 0 !important;
+ }
+ .pe-sm-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-sm-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-sm-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-sm-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-sm-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-sm-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-sm-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-sm-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-sm-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-sm-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-sm-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-sm-0 {
+ padding-left: 0 !important;
+ }
+ .ps-sm-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-sm-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-sm-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-sm-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-sm-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-sm-0 {
+ gap: 0 !important;
+ }
+ .gap-sm-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-sm-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-sm-3 {
+ gap: 1rem !important;
+ }
+ .gap-sm-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-sm-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-sm-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-sm-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-sm-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-sm-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-sm-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-sm-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-sm-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-sm-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-sm-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-sm-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-sm-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-sm-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-sm-start {
+ text-align: left !important;
+ }
+ .text-sm-end {
+ text-align: right !important;
+ }
+ .text-sm-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 768px) {
+ .float-md-start {
+ float: left !important;
+ }
+ .float-md-end {
+ float: right !important;
+ }
+ .float-md-none {
+ float: none !important;
+ }
+ .object-fit-md-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-md-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-md-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-md-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-md-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-md-inline {
+ display: inline !important;
+ }
+ .d-md-inline-block {
+ display: inline-block !important;
+ }
+ .d-md-block {
+ display: block !important;
+ }
+ .d-md-grid {
+ display: grid !important;
+ }
+ .d-md-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-md-table {
+ display: table !important;
+ }
+ .d-md-table-row {
+ display: table-row !important;
+ }
+ .d-md-table-cell {
+ display: table-cell !important;
+ }
+ .d-md-flex {
+ display: flex !important;
+ }
+ .d-md-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-md-none {
+ display: none !important;
+ }
+ .flex-md-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-md-row {
+ flex-direction: row !important;
+ }
+ .flex-md-column {
+ flex-direction: column !important;
+ }
+ .flex-md-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-md-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-md-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-md-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-md-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-md-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-md-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-md-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-md-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-md-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-md-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-md-center {
+ justify-content: center !important;
+ }
+ .justify-content-md-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-md-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-md-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-md-start {
+ align-items: flex-start !important;
+ }
+ .align-items-md-end {
+ align-items: flex-end !important;
+ }
+ .align-items-md-center {
+ align-items: center !important;
+ }
+ .align-items-md-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-md-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-md-start {
+ align-content: flex-start !important;
+ }
+ .align-content-md-end {
+ align-content: flex-end !important;
+ }
+ .align-content-md-center {
+ align-content: center !important;
+ }
+ .align-content-md-between {
+ align-content: space-between !important;
+ }
+ .align-content-md-around {
+ align-content: space-around !important;
+ }
+ .align-content-md-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-md-auto {
+ align-self: auto !important;
+ }
+ .align-self-md-start {
+ align-self: flex-start !important;
+ }
+ .align-self-md-end {
+ align-self: flex-end !important;
+ }
+ .align-self-md-center {
+ align-self: center !important;
+ }
+ .align-self-md-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-md-stretch {
+ align-self: stretch !important;
+ }
+ .order-md-first {
+ order: -1 !important;
+ }
+ .order-md-0 {
+ order: 0 !important;
+ }
+ .order-md-1 {
+ order: 1 !important;
+ }
+ .order-md-2 {
+ order: 2 !important;
+ }
+ .order-md-3 {
+ order: 3 !important;
+ }
+ .order-md-4 {
+ order: 4 !important;
+ }
+ .order-md-5 {
+ order: 5 !important;
+ }
+ .order-md-last {
+ order: 6 !important;
+ }
+ .m-md-0 {
+ margin: 0 !important;
+ }
+ .m-md-1 {
+ margin: 0.25rem !important;
+ }
+ .m-md-2 {
+ margin: 0.5rem !important;
+ }
+ .m-md-3 {
+ margin: 1rem !important;
+ }
+ .m-md-4 {
+ margin: 1.5rem !important;
+ }
+ .m-md-5 {
+ margin: 3rem !important;
+ }
+ .m-md-auto {
+ margin: auto !important;
+ }
+ .mx-md-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-md-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-md-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-md-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-md-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-md-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-md-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-md-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-md-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-md-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-md-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-md-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-md-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-md-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-md-0 {
+ margin-top: 0 !important;
+ }
+ .mt-md-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-md-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-md-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-md-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-md-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-md-auto {
+ margin-top: auto !important;
+ }
+ .me-md-0 {
+ margin-right: 0 !important;
+ }
+ .me-md-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-md-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-md-3 {
+ margin-right: 1rem !important;
+ }
+ .me-md-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-md-5 {
+ margin-right: 3rem !important;
+ }
+ .me-md-auto {
+ margin-right: auto !important;
+ }
+ .mb-md-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-md-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-md-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-md-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-md-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-md-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-md-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-md-0 {
+ margin-left: 0 !important;
+ }
+ .ms-md-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-md-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-md-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-md-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-md-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-md-auto {
+ margin-left: auto !important;
+ }
+ .p-md-0 {
+ padding: 0 !important;
+ }
+ .p-md-1 {
+ padding: 0.25rem !important;
+ }
+ .p-md-2 {
+ padding: 0.5rem !important;
+ }
+ .p-md-3 {
+ padding: 1rem !important;
+ }
+ .p-md-4 {
+ padding: 1.5rem !important;
+ }
+ .p-md-5 {
+ padding: 3rem !important;
+ }
+ .px-md-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-md-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-md-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-md-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-md-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-md-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-md-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-md-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-md-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-md-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-md-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-md-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-md-0 {
+ padding-top: 0 !important;
+ }
+ .pt-md-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-md-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-md-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-md-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-md-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-md-0 {
+ padding-right: 0 !important;
+ }
+ .pe-md-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-md-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-md-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-md-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-md-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-md-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-md-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-md-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-md-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-md-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-md-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-md-0 {
+ padding-left: 0 !important;
+ }
+ .ps-md-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-md-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-md-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-md-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-md-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-md-0 {
+ gap: 0 !important;
+ }
+ .gap-md-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-md-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-md-3 {
+ gap: 1rem !important;
+ }
+ .gap-md-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-md-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-md-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-md-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-md-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-md-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-md-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-md-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-md-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-md-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-md-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-md-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-md-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-md-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-md-start {
+ text-align: left !important;
+ }
+ .text-md-end {
+ text-align: right !important;
+ }
+ .text-md-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 992px) {
+ .float-lg-start {
+ float: left !important;
+ }
+ .float-lg-end {
+ float: right !important;
+ }
+ .float-lg-none {
+ float: none !important;
+ }
+ .object-fit-lg-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-lg-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-lg-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-lg-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-lg-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-lg-inline {
+ display: inline !important;
+ }
+ .d-lg-inline-block {
+ display: inline-block !important;
+ }
+ .d-lg-block {
+ display: block !important;
+ }
+ .d-lg-grid {
+ display: grid !important;
+ }
+ .d-lg-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-lg-table {
+ display: table !important;
+ }
+ .d-lg-table-row {
+ display: table-row !important;
+ }
+ .d-lg-table-cell {
+ display: table-cell !important;
+ }
+ .d-lg-flex {
+ display: flex !important;
+ }
+ .d-lg-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-lg-none {
+ display: none !important;
+ }
+ .flex-lg-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-lg-row {
+ flex-direction: row !important;
+ }
+ .flex-lg-column {
+ flex-direction: column !important;
+ }
+ .flex-lg-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-lg-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-lg-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-lg-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-lg-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-lg-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-lg-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-lg-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-lg-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-lg-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-lg-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-lg-center {
+ justify-content: center !important;
+ }
+ .justify-content-lg-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-lg-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-lg-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-lg-start {
+ align-items: flex-start !important;
+ }
+ .align-items-lg-end {
+ align-items: flex-end !important;
+ }
+ .align-items-lg-center {
+ align-items: center !important;
+ }
+ .align-items-lg-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-lg-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-lg-start {
+ align-content: flex-start !important;
+ }
+ .align-content-lg-end {
+ align-content: flex-end !important;
+ }
+ .align-content-lg-center {
+ align-content: center !important;
+ }
+ .align-content-lg-between {
+ align-content: space-between !important;
+ }
+ .align-content-lg-around {
+ align-content: space-around !important;
+ }
+ .align-content-lg-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-lg-auto {
+ align-self: auto !important;
+ }
+ .align-self-lg-start {
+ align-self: flex-start !important;
+ }
+ .align-self-lg-end {
+ align-self: flex-end !important;
+ }
+ .align-self-lg-center {
+ align-self: center !important;
+ }
+ .align-self-lg-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-lg-stretch {
+ align-self: stretch !important;
+ }
+ .order-lg-first {
+ order: -1 !important;
+ }
+ .order-lg-0 {
+ order: 0 !important;
+ }
+ .order-lg-1 {
+ order: 1 !important;
+ }
+ .order-lg-2 {
+ order: 2 !important;
+ }
+ .order-lg-3 {
+ order: 3 !important;
+ }
+ .order-lg-4 {
+ order: 4 !important;
+ }
+ .order-lg-5 {
+ order: 5 !important;
+ }
+ .order-lg-last {
+ order: 6 !important;
+ }
+ .m-lg-0 {
+ margin: 0 !important;
+ }
+ .m-lg-1 {
+ margin: 0.25rem !important;
+ }
+ .m-lg-2 {
+ margin: 0.5rem !important;
+ }
+ .m-lg-3 {
+ margin: 1rem !important;
+ }
+ .m-lg-4 {
+ margin: 1.5rem !important;
+ }
+ .m-lg-5 {
+ margin: 3rem !important;
+ }
+ .m-lg-auto {
+ margin: auto !important;
+ }
+ .mx-lg-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-lg-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-lg-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-lg-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-lg-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-lg-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-lg-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-lg-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-lg-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-lg-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-lg-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-lg-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-lg-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-lg-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-lg-0 {
+ margin-top: 0 !important;
+ }
+ .mt-lg-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-lg-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-lg-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-lg-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-lg-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-lg-auto {
+ margin-top: auto !important;
+ }
+ .me-lg-0 {
+ margin-right: 0 !important;
+ }
+ .me-lg-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-lg-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-lg-3 {
+ margin-right: 1rem !important;
+ }
+ .me-lg-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-lg-5 {
+ margin-right: 3rem !important;
+ }
+ .me-lg-auto {
+ margin-right: auto !important;
+ }
+ .mb-lg-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-lg-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-lg-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-lg-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-lg-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-lg-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-lg-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-lg-0 {
+ margin-left: 0 !important;
+ }
+ .ms-lg-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-lg-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-lg-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-lg-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-lg-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-lg-auto {
+ margin-left: auto !important;
+ }
+ .p-lg-0 {
+ padding: 0 !important;
+ }
+ .p-lg-1 {
+ padding: 0.25rem !important;
+ }
+ .p-lg-2 {
+ padding: 0.5rem !important;
+ }
+ .p-lg-3 {
+ padding: 1rem !important;
+ }
+ .p-lg-4 {
+ padding: 1.5rem !important;
+ }
+ .p-lg-5 {
+ padding: 3rem !important;
+ }
+ .px-lg-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-lg-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-lg-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-lg-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-lg-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-lg-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-lg-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-lg-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-lg-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-lg-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-lg-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-lg-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-lg-0 {
+ padding-top: 0 !important;
+ }
+ .pt-lg-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-lg-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-lg-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-lg-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-lg-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-lg-0 {
+ padding-right: 0 !important;
+ }
+ .pe-lg-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-lg-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-lg-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-lg-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-lg-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-lg-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-lg-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-lg-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-lg-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-lg-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-lg-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-lg-0 {
+ padding-left: 0 !important;
+ }
+ .ps-lg-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-lg-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-lg-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-lg-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-lg-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-lg-0 {
+ gap: 0 !important;
+ }
+ .gap-lg-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-lg-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-lg-3 {
+ gap: 1rem !important;
+ }
+ .gap-lg-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-lg-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-lg-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-lg-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-lg-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-lg-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-lg-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-lg-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-lg-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-lg-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-lg-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-lg-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-lg-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-lg-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-lg-start {
+ text-align: left !important;
+ }
+ .text-lg-end {
+ text-align: right !important;
+ }
+ .text-lg-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1200px) {
+ .float-xl-start {
+ float: left !important;
+ }
+ .float-xl-end {
+ float: right !important;
+ }
+ .float-xl-none {
+ float: none !important;
+ }
+ .object-fit-xl-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-xl-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-xl-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-xl-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-xl-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-xl-inline {
+ display: inline !important;
+ }
+ .d-xl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xl-block {
+ display: block !important;
+ }
+ .d-xl-grid {
+ display: grid !important;
+ }
+ .d-xl-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-xl-table {
+ display: table !important;
+ }
+ .d-xl-table-row {
+ display: table-row !important;
+ }
+ .d-xl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xl-flex {
+ display: flex !important;
+ }
+ .d-xl-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-xl-none {
+ display: none !important;
+ }
+ .flex-xl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-xl-row {
+ flex-direction: row !important;
+ }
+ .flex-xl-column {
+ flex-direction: column !important;
+ }
+ .flex-xl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-xl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-xl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-xl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-xl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-xl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-xl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-xl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-xl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-xl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-xl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-xl-center {
+ justify-content: center !important;
+ }
+ .justify-content-xl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-xl-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-xl-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-xl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-xl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-xl-center {
+ align-items: center !important;
+ }
+ .align-items-xl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-xl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-xl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-xl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-xl-center {
+ align-content: center !important;
+ }
+ .align-content-xl-between {
+ align-content: space-between !important;
+ }
+ .align-content-xl-around {
+ align-content: space-around !important;
+ }
+ .align-content-xl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-xl-auto {
+ align-self: auto !important;
+ }
+ .align-self-xl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-xl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-xl-center {
+ align-self: center !important;
+ }
+ .align-self-xl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-xl-stretch {
+ align-self: stretch !important;
+ }
+ .order-xl-first {
+ order: -1 !important;
+ }
+ .order-xl-0 {
+ order: 0 !important;
+ }
+ .order-xl-1 {
+ order: 1 !important;
+ }
+ .order-xl-2 {
+ order: 2 !important;
+ }
+ .order-xl-3 {
+ order: 3 !important;
+ }
+ .order-xl-4 {
+ order: 4 !important;
+ }
+ .order-xl-5 {
+ order: 5 !important;
+ }
+ .order-xl-last {
+ order: 6 !important;
+ }
+ .m-xl-0 {
+ margin: 0 !important;
+ }
+ .m-xl-1 {
+ margin: 0.25rem !important;
+ }
+ .m-xl-2 {
+ margin: 0.5rem !important;
+ }
+ .m-xl-3 {
+ margin: 1rem !important;
+ }
+ .m-xl-4 {
+ margin: 1.5rem !important;
+ }
+ .m-xl-5 {
+ margin: 3rem !important;
+ }
+ .m-xl-auto {
+ margin: auto !important;
+ }
+ .mx-xl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-xl-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-xl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-xl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-xl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-xl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-xl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-xl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-xl-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-xl-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-xl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-xl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-xl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-xl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-xl-0 {
+ margin-top: 0 !important;
+ }
+ .mt-xl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-xl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-xl-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-xl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-xl-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-xl-auto {
+ margin-top: auto !important;
+ }
+ .me-xl-0 {
+ margin-right: 0 !important;
+ }
+ .me-xl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-xl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-xl-3 {
+ margin-right: 1rem !important;
+ }
+ .me-xl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-xl-5 {
+ margin-right: 3rem !important;
+ }
+ .me-xl-auto {
+ margin-right: auto !important;
+ }
+ .mb-xl-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-xl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-xl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-xl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-xl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-xl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-xl-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-xl-0 {
+ margin-left: 0 !important;
+ }
+ .ms-xl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-xl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-xl-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-xl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-xl-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-xl-auto {
+ margin-left: auto !important;
+ }
+ .p-xl-0 {
+ padding: 0 !important;
+ }
+ .p-xl-1 {
+ padding: 0.25rem !important;
+ }
+ .p-xl-2 {
+ padding: 0.5rem !important;
+ }
+ .p-xl-3 {
+ padding: 1rem !important;
+ }
+ .p-xl-4 {
+ padding: 1.5rem !important;
+ }
+ .p-xl-5 {
+ padding: 3rem !important;
+ }
+ .px-xl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-xl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-xl-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-xl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-xl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-xl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-xl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-xl-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-xl-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-xl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-xl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-xl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-xl-0 {
+ padding-top: 0 !important;
+ }
+ .pt-xl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-xl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-xl-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-xl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-xl-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-xl-0 {
+ padding-right: 0 !important;
+ }
+ .pe-xl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-xl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-xl-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-xl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-xl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-xl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-xl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-xl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-xl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-xl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-xl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-xl-0 {
+ padding-left: 0 !important;
+ }
+ .ps-xl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-xl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-xl-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-xl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-xl-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-xl-0 {
+ gap: 0 !important;
+ }
+ .gap-xl-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-xl-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-xl-3 {
+ gap: 1rem !important;
+ }
+ .gap-xl-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-xl-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-xl-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-xl-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-xl-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-xl-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-xl-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-xl-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-xl-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-xl-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-xl-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-xl-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-xl-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-xl-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-xl-start {
+ text-align: left !important;
+ }
+ .text-xl-end {
+ text-align: right !important;
+ }
+ .text-xl-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1400px) {
+ .float-xxl-start {
+ float: left !important;
+ }
+ .float-xxl-end {
+ float: right !important;
+ }
+ .float-xxl-none {
+ float: none !important;
+ }
+ .object-fit-xxl-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-xxl-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-xxl-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-xxl-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-xxl-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-xxl-inline {
+ display: inline !important;
+ }
+ .d-xxl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xxl-block {
+ display: block !important;
+ }
+ .d-xxl-grid {
+ display: grid !important;
+ }
+ .d-xxl-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-xxl-table {
+ display: table !important;
+ }
+ .d-xxl-table-row {
+ display: table-row !important;
+ }
+ .d-xxl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xxl-flex {
+ display: flex !important;
+ }
+ .d-xxl-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-xxl-none {
+ display: none !important;
+ }
+ .flex-xxl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-xxl-row {
+ flex-direction: row !important;
+ }
+ .flex-xxl-column {
+ flex-direction: column !important;
+ }
+ .flex-xxl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-xxl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-xxl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-xxl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-xxl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-xxl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-xxl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-xxl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-xxl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-xxl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-xxl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-xxl-center {
+ justify-content: center !important;
+ }
+ .justify-content-xxl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-xxl-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-xxl-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-xxl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-xxl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-xxl-center {
+ align-items: center !important;
+ }
+ .align-items-xxl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-xxl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-xxl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-xxl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-xxl-center {
+ align-content: center !important;
+ }
+ .align-content-xxl-between {
+ align-content: space-between !important;
+ }
+ .align-content-xxl-around {
+ align-content: space-around !important;
+ }
+ .align-content-xxl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-xxl-auto {
+ align-self: auto !important;
+ }
+ .align-self-xxl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-xxl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-xxl-center {
+ align-self: center !important;
+ }
+ .align-self-xxl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-xxl-stretch {
+ align-self: stretch !important;
+ }
+ .order-xxl-first {
+ order: -1 !important;
+ }
+ .order-xxl-0 {
+ order: 0 !important;
+ }
+ .order-xxl-1 {
+ order: 1 !important;
+ }
+ .order-xxl-2 {
+ order: 2 !important;
+ }
+ .order-xxl-3 {
+ order: 3 !important;
+ }
+ .order-xxl-4 {
+ order: 4 !important;
+ }
+ .order-xxl-5 {
+ order: 5 !important;
+ }
+ .order-xxl-last {
+ order: 6 !important;
+ }
+ .m-xxl-0 {
+ margin: 0 !important;
+ }
+ .m-xxl-1 {
+ margin: 0.25rem !important;
+ }
+ .m-xxl-2 {
+ margin: 0.5rem !important;
+ }
+ .m-xxl-3 {
+ margin: 1rem !important;
+ }
+ .m-xxl-4 {
+ margin: 1.5rem !important;
+ }
+ .m-xxl-5 {
+ margin: 3rem !important;
+ }
+ .m-xxl-auto {
+ margin: auto !important;
+ }
+ .mx-xxl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-xxl-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-xxl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-xxl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-xxl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-xxl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-xxl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-xxl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-xxl-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-xxl-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-xxl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-xxl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-xxl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-xxl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-xxl-0 {
+ margin-top: 0 !important;
+ }
+ .mt-xxl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-xxl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-xxl-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-xxl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-xxl-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-xxl-auto {
+ margin-top: auto !important;
+ }
+ .me-xxl-0 {
+ margin-right: 0 !important;
+ }
+ .me-xxl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-xxl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-xxl-3 {
+ margin-right: 1rem !important;
+ }
+ .me-xxl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-xxl-5 {
+ margin-right: 3rem !important;
+ }
+ .me-xxl-auto {
+ margin-right: auto !important;
+ }
+ .mb-xxl-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-xxl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-xxl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-xxl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-xxl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-xxl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-xxl-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-xxl-0 {
+ margin-left: 0 !important;
+ }
+ .ms-xxl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-xxl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-xxl-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-xxl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-xxl-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-xxl-auto {
+ margin-left: auto !important;
+ }
+ .p-xxl-0 {
+ padding: 0 !important;
+ }
+ .p-xxl-1 {
+ padding: 0.25rem !important;
+ }
+ .p-xxl-2 {
+ padding: 0.5rem !important;
+ }
+ .p-xxl-3 {
+ padding: 1rem !important;
+ }
+ .p-xxl-4 {
+ padding: 1.5rem !important;
+ }
+ .p-xxl-5 {
+ padding: 3rem !important;
+ }
+ .px-xxl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-xxl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-xxl-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-xxl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-xxl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-xxl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-xxl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-xxl-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-xxl-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-xxl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-xxl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-xxl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-xxl-0 {
+ padding-top: 0 !important;
+ }
+ .pt-xxl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-xxl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-xxl-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-xxl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-xxl-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-xxl-0 {
+ padding-right: 0 !important;
+ }
+ .pe-xxl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-xxl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-xxl-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-xxl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-xxl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-xxl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-xxl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-xxl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-xxl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-xxl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-xxl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-xxl-0 {
+ padding-left: 0 !important;
+ }
+ .ps-xxl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-xxl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-xxl-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-xxl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-xxl-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-xxl-0 {
+ gap: 0 !important;
+ }
+ .gap-xxl-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-xxl-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-xxl-3 {
+ gap: 1rem !important;
+ }
+ .gap-xxl-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-xxl-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-xxl-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-xxl-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-xxl-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-xxl-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-xxl-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-xxl-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-xxl-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-xxl-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-xxl-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-xxl-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-xxl-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-xxl-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-xxl-start {
+ text-align: left !important;
+ }
+ .text-xxl-end {
+ text-align: right !important;
+ }
+ .text-xxl-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1200px) {
+ .fs-1 {
+ font-size: 2.5rem !important;
+ }
+ .fs-2 {
+ font-size: 2rem !important;
+ }
+ .fs-3 {
+ font-size: 1.75rem !important;
+ }
+ .fs-4 {
+ font-size: 1.5rem !important;
+ }
+}
+@media print {
+ .d-print-inline {
+ display: inline !important;
+ }
+ .d-print-inline-block {
+ display: inline-block !important;
+ }
+ .d-print-block {
+ display: block !important;
+ }
+ .d-print-grid {
+ display: grid !important;
+ }
+ .d-print-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-print-table {
+ display: table !important;
+ }
+ .d-print-table-row {
+ display: table-row !important;
+ }
+ .d-print-table-cell {
+ display: table-cell !important;
+ }
+ .d-print-flex {
+ display: flex !important;
+ }
+ .d-print-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-print-none {
+ display: none !important;
+ }
+}
+/*# sourceMappingURL=bootstrap.min.css.map */
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/bootstrap.min.css b/wp-content/plugins/portfolio-filter-gallery/css/bootstrap.min.css
new file mode 100644
index 0000000..b101cf5
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/bootstrap.min.css
@@ -0,0 +1,11726 @@
+@charset "UTF-8";
+
+/*!
+ * Bootstrap v5.0.2 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+:root {
+ --bs-blue: #0d6efd;
+ --bs-indigo: #6610f2;
+ --bs-purple: #6f42c1;
+ --bs-pink: #d63384;
+ --bs-red: #dc3545;
+ --bs-orange: #fd7e14;
+ --bs-yellow: #ffc107;
+ --bs-green: #198754;
+ --bs-teal: #20c997;
+ --bs-cyan: #0dcaf0;
+ --bs-white: #fff;
+ --bs-gray: #6c757d;
+ --bs-gray-dark: #343a40;
+ --bs-primary: #0d6efd;
+ --bs-secondary: #6c757d;
+ --bs-success: #198754;
+ --bs-info: #0dcaf0;
+ --bs-warning: #ffc107;
+ --bs-danger: #dc3545;
+ --bs-light: #f8f9fa;
+ --bs-dark: #212529;
+ --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))
+}
+
+*,
+::after,
+::before {
+ box-sizing: border-box
+}
+
+@media (prefers-reduced-motion:no-preference) {
+ :root {
+ scroll-behavior: smooth
+ }
+}
+
+/* body {
+ margin: 0;
+ font-family: var(--bs-font-sans-serif);
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #212529;
+ background-color: #fff;
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: transparent
+}
+
+hr {
+ margin: 1rem 0;
+ color: inherit;
+ background-color: currentColor;
+ border: 0;
+ opacity: .25
+}
+
+hr:not([size]) {
+ height: 1px
+} */
+
+/* .h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-top: 0;
+ margin-bottom: .5rem;
+ font-weight: 500;
+ line-height: 1.2
+}
+
+.h1,
+h1 {
+ font-size: calc(1.375rem + 1.5vw)
+}
+
+@media (min-width:1200px) {
+
+ .h1,
+ h1 {
+ font-size: 2.5rem
+ }
+}
+
+.h2,
+h2 {
+ font-size: calc(1.325rem + .9vw)
+}
+
+@media (min-width:1200px) {
+
+ .h2,
+ h2 {
+ font-size: 2rem
+ }
+}
+
+.h3,
+h3 {
+ font-size: calc(1.3rem + .6vw)
+}
+
+@media (min-width:1200px) {
+
+ .h3,
+ h3 {
+ font-size: 1.75rem
+ }
+}
+
+.h4,
+h4 {
+ font-size: calc(1.275rem + .3vw)
+}
+
+@media (min-width:1200px) {
+
+ .h4,
+ h4 {
+ font-size: 1.5rem
+ }
+}
+
+.h5,
+h5 {
+ font-size: 1.25rem
+}
+
+.h6,
+h6 {
+ font-size: 1rem
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1rem
+}
+ */
+abbr[data-bs-original-title],
+abbr[title] {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ cursor: help;
+ -webkit-text-decoration-skip-ink: none;
+ text-decoration-skip-ink: none
+}
+
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit
+}
+
+ol,
+ul {
+ padding-left: 2rem
+}
+
+dl,
+ol,
+ul {
+ margin-top: 0;
+ margin-bottom: 1rem
+}
+
+ol ol,
+ol ul,
+ul ol,
+ul ul {
+ margin-bottom: 0
+}
+
+dt {
+ font-weight: 700
+}
+
+dd {
+ margin-bottom: .5rem;
+ margin-left: 0
+}
+
+blockquote {
+ margin: 0 0 1rem
+}
+
+b,
+strong {
+ font-weight: bolder
+}
+
+.small,
+small {
+ font-size: .875em
+}
+
+.mark,
+mark {
+ padding: .2em;
+ background-color: #fcf8e3
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: .75em;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub {
+ bottom: -.25em
+}
+
+sup {
+ top: -.5em
+}
+
+/* a {
+ color: #0d6efd;
+ text-decoration: underline
+} */
+
+/* a:hover {
+ color: #0a58ca
+} */
+
+ a:focus {
+ box-shadow:none !important
+}
+
+a:not([href]):not([class]),
+a:not([href]):not([class]):hover {
+ color: inherit;
+ text-decoration: none
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: var(--bs-font-monospace);
+ font-size: 1em;
+ direction: ltr;
+ unicode-bidi: bidi-override
+}
+
+pre {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+ font-size: .875em
+}
+
+pre code {
+ font-size: inherit;
+ color: inherit;
+ word-break: normal
+}
+
+code {
+ font-size: .875em;
+ color: #d63384;
+ word-wrap: break-word
+}
+
+a>code {
+ color: inherit
+}
+
+kbd {
+ padding: .2rem .4rem;
+ font-size: .875em;
+ color: #fff;
+ background-color: #212529;
+ border-radius: .2rem
+}
+
+kbd kbd {
+ padding: 0;
+ font-size: 1em;
+ font-weight: 700
+}
+
+figure {
+ margin: 0 0 1rem
+}
+
+img,
+svg {
+ vertical-align: middle
+}
+
+table {
+ caption-side: bottom;
+ border-collapse: collapse
+}
+
+caption {
+ padding-top: .5rem;
+ padding-bottom: .5rem;
+ color: #6c757d;
+ text-align: left
+}
+
+th {
+ text-align: inherit;
+ text-align: -webkit-match-parent
+}
+
+tbody,
+td,
+tfoot,
+th,
+thead,
+tr {
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0
+}
+
+label {
+ display: inline-block
+}
+
+button {
+ border-radius: 0
+}
+
+button:focus:not(:focus-visible) {
+ outline: 0
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit
+}
+
+button,
+select {
+ text-transform: none
+}
+
+[role=button] {
+ cursor: pointer
+}
+
+select {
+ word-wrap: normal
+}
+
+select:disabled {
+ opacity: 1
+}
+
+[list]::-webkit-calendar-picker-indicator {
+ display: none
+}
+
+[type=button],
+[type=reset],
+[type=submit],
+button {
+ -webkit-appearance: button
+}
+
+[type=button]:not(:disabled),
+[type=reset]:not(:disabled),
+[type=submit]:not(:disabled),
+button:not(:disabled) {
+ cursor: pointer
+}
+
+::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+}
+
+textarea {
+ resize: vertical
+}
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0
+}
+
+legend {
+ float: left;
+ width: 100%;
+ padding: 0;
+ margin-bottom: .5rem;
+ font-size: calc(1.275rem + .3vw);
+ line-height: inherit
+}
+
+@media (min-width:1200px) {
+ legend {
+ font-size: 1.5rem
+ }
+}
+
+legend+* {
+ clear: left
+}
+
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-year-field {
+ padding: 0
+}
+
+::-webkit-inner-spin-button {
+ height: auto
+}
+
+[type=search] {
+ outline-offset: -2px;
+ -webkit-appearance: textfield
+}
+
+::-webkit-search-decoration {
+ -webkit-appearance: none
+}
+
+::-webkit-color-swatch-wrapper {
+ padding: 0
+}
+
+::file-selector-button {
+ font: inherit
+}
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output {
+ display: inline-block
+}
+
+iframe {
+ border: 0
+}
+
+summary {
+ display: list-item;
+ cursor: pointer
+}
+
+progress {
+ vertical-align: baseline
+}
+
+[hidden] {
+ display: none !important
+}
+
+.lead {
+ font-size: 1.25rem;
+ font-weight: 300
+}
+
+.display-1 {
+ font-size: calc(1.625rem + 4.5vw);
+ font-weight: 300;
+ line-height: 1.2
+}
+
+@media (min-width:1200px) {
+ .display-1 {
+ font-size: 5rem
+ }
+}
+
+.display-2 {
+ font-size: calc(1.575rem + 3.9vw);
+ font-weight: 300;
+ line-height: 1.2
+}
+
+@media (min-width:1200px) {
+ .display-2 {
+ font-size: 4.5rem
+ }
+}
+
+.display-3 {
+ font-size: calc(1.525rem + 3.3vw);
+ font-weight: 300;
+ line-height: 1.2
+}
+
+@media (min-width:1200px) {
+ .display-3 {
+ font-size: 4rem
+ }
+}
+
+.display-4 {
+ font-size: calc(1.475rem + 2.7vw);
+ font-weight: 300;
+ line-height: 1.2
+}
+
+@media (min-width:1200px) {
+ .display-4 {
+ font-size: 3.5rem
+ }
+}
+
+.display-5 {
+ font-size: calc(1.425rem + 2.1vw);
+ font-weight: 300;
+ line-height: 1.2
+}
+
+@media (min-width:1200px) {
+ .display-5 {
+ font-size: 3rem
+ }
+}
+
+.display-6 {
+ font-size: calc(1.375rem + 1.5vw);
+ font-weight: 300;
+ line-height: 1.2
+}
+
+@media (min-width:1200px) {
+ .display-6 {
+ font-size: 2.5rem
+ }
+}
+
+.list-unstyled {
+ padding-left: 0;
+ list-style: none
+}
+
+.list-inline {
+ padding-left: 0;
+ list-style: none
+}
+
+.list-inline-item {
+ display: inline-block
+}
+
+.list-inline-item:not(:last-child) {
+ margin-right: .5rem
+}
+
+.initialism {
+ font-size: .875em;
+ text-transform: uppercase
+}
+
+.blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.25rem
+}
+
+.blockquote>:last-child {
+ margin-bottom: 0
+}
+
+.blockquote-footer {
+ margin-top: -1rem;
+ margin-bottom: 1rem;
+ font-size: .875em;
+ color: #6c757d
+}
+
+.blockquote-footer::before {
+ content: "— "
+}
+
+.img-fluid {
+ max-width: 100%;
+ height: auto
+}
+
+.img-thumbnail {
+ padding: .25rem;
+ background-color: #fff;
+ border: 1px solid #dee2e6;
+ border-radius: .25rem;
+ max-width: 100%;
+ height: auto
+}
+
+.figure {
+ display: inline-block
+}
+
+.figure-img {
+ margin-bottom: .5rem;
+ line-height: 1
+}
+
+.figure-caption {
+ font-size: .875em;
+ color: #6c757d
+}
+
+.container,
+.container-fluid,
+.container-lg,
+.container-md,
+.container-sm,
+.container-xl,
+.container-xxl {
+ width: 100%;
+ padding-right: var(--bs-gutter-x, .75rem);
+ padding-left: var(--bs-gutter-x, .75rem);
+ margin-right: auto;
+ margin-left: auto
+}
+
+@media (min-width:576px) {
+
+ .container,
+ .container-sm {
+ max-width: 540px
+ }
+}
+
+@media (min-width:768px) {
+
+ .container,
+ .container-md,
+ .container-sm {
+ max-width: 720px
+ }
+}
+
+@media (min-width:992px) {
+
+ .container,
+ .container-lg,
+ .container-md,
+ .container-sm {
+ max-width: 960px
+ }
+}
+
+@media (min-width:1200px) {
+
+ .container,
+ .container-lg,
+ .container-md,
+ .container-sm,
+ .container-xl {
+ max-width: 1140px
+ }
+}
+
+@media (min-width:1400px) {
+
+ .container,
+ .container-lg,
+ .container-md,
+ .container-sm,
+ .container-xl,
+ .container-xxl {
+ max-width: 1320px
+ }
+}
+
+.row {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: calc(var(--bs-gutter-y) * -1);
+ margin-right: calc(var(--bs-gutter-x) * -.5);
+ margin-left: calc(var(--bs-gutter-x) * -.5)
+}
+
+.row>* {
+ flex-shrink: 0;
+ width: 100%;
+ max-width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * .5);
+ padding-left: calc(var(--bs-gutter-x) * .5);
+ margin-top: var(--bs-gutter-y)
+}
+
+.col {
+ flex: 1 0 0%
+}
+
+.row-cols-auto>* {
+ flex: 0 0 auto;
+ width: auto
+}
+
+.row-cols-1>* {
+ flex: 0 0 auto;
+ width: 100%
+}
+
+.row-cols-2>* {
+ flex: 0 0 auto;
+ width: 50%
+}
+
+.row-cols-3>* {
+ flex: 0 0 auto;
+ width: 33.3333333333%
+}
+
+.row-cols-4>* {
+ flex: 0 0 auto;
+ width: 25%
+}
+
+.row-cols-5>* {
+ flex: 0 0 auto;
+ width: 20%
+}
+
+.row-cols-6>* {
+ flex: 0 0 auto;
+ width: 16.6666666667%
+}
+
+@media (min-width:576px) {
+ .col-sm {
+ flex: 1 0 0%
+ }
+
+ .row-cols-sm-auto>* {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-sm-1>* {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-sm-2>* {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-sm-3>* {
+ flex: 0 0 auto;
+ width: 33.3333333333%
+ }
+
+ .row-cols-sm-4>* {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-sm-5>* {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-sm-6>* {
+ flex: 0 0 auto;
+ width: 16.6666666667%
+ }
+}
+
+@media (min-width:768px) {
+ .col-md {
+ flex: 1 0 0%
+ }
+
+ .row-cols-md-auto>* {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-md-1>* {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-md-2>* {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-md-3>* {
+ flex: 0 0 auto;
+ width: 33.3333333333%
+ }
+
+ .row-cols-md-4>* {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-md-5>* {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-md-6>* {
+ flex: 0 0 auto;
+ width: 16.6666666667%
+ }
+}
+
+@media (min-width:992px) {
+ .col-lg {
+ flex: 1 0 0%
+ }
+
+ .row-cols-lg-auto>* {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-lg-1>* {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-lg-2>* {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-lg-3>* {
+ flex: 0 0 auto;
+ width: 33.3333333333%
+ }
+
+ .row-cols-lg-4>* {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-lg-5>* {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-lg-6>* {
+ flex: 0 0 auto;
+ width: 16.6666666667%
+ }
+}
+
+@media (min-width:1200px) {
+ .col-xl {
+ flex: 1 0 0%
+ }
+
+ .row-cols-xl-auto>* {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-xl-1>* {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-xl-2>* {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-xl-3>* {
+ flex: 0 0 auto;
+ width: 33.3333333333%
+ }
+
+ .row-cols-xl-4>* {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-xl-5>* {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-xl-6>* {
+ flex: 0 0 auto;
+ width: 16.6666666667%
+ }
+}
+
+@media (min-width:1400px) {
+ .col-xxl {
+ flex: 1 0 0%
+ }
+
+ .row-cols-xxl-auto>* {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .row-cols-xxl-1>* {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .row-cols-xxl-2>* {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .row-cols-xxl-3>* {
+ flex: 0 0 auto;
+ width: 33.3333333333%
+ }
+
+ .row-cols-xxl-4>* {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .row-cols-xxl-5>* {
+ flex: 0 0 auto;
+ width: 20%
+ }
+
+ .row-cols-xxl-6>* {
+ flex: 0 0 auto;
+ width: 16.6666666667%
+ }
+}
+
+.col-auto {
+ flex: 0 0 auto;
+ width: auto
+}
+
+.col-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%
+}
+
+.col-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%
+}
+
+.col-3 {
+ flex: 0 0 auto;
+ width: 25%
+}
+
+.col-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%
+}
+
+.col-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%
+}
+
+.col-6 {
+ flex: 0 0 auto;
+ width: 50%
+}
+
+.col-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%
+}
+
+.col-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%
+}
+
+.col-9 {
+ flex: 0 0 auto;
+ width: 75%
+}
+
+.col-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%
+}
+
+.col-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%
+}
+
+.col-12 {
+ flex: 0 0 auto;
+ width: 100%
+}
+
+.offset-1 {
+ margin-left: 8.33333333%
+}
+
+.offset-2 {
+ margin-left: 16.66666667%
+}
+
+.offset-3 {
+ margin-left: 25%
+}
+
+.offset-4 {
+ margin-left: 33.33333333%
+}
+
+.offset-5 {
+ margin-left: 41.66666667%
+}
+
+.offset-6 {
+ margin-left: 50%
+}
+
+.offset-7 {
+ margin-left: 58.33333333%
+}
+
+.offset-8 {
+ margin-left: 66.66666667%
+}
+
+.offset-9 {
+ margin-left: 75%
+}
+
+.offset-10 {
+ margin-left: 83.33333333%
+}
+
+.offset-11 {
+ margin-left: 91.66666667%
+}
+
+.g-0,
+.gx-0 {
+ --bs-gutter-x: 0
+}
+
+.g-0,
+.gy-0 {
+ --bs-gutter-y: 0
+}
+
+.g-1,
+.gx-1 {
+ --bs-gutter-x: 0.25rem
+}
+
+.g-1,
+.gy-1 {
+ --bs-gutter-y: 0.25rem
+}
+
+.g-2,
+.gx-2 {
+ --bs-gutter-x: 0.5rem
+}
+
+.g-2,
+.gy-2 {
+ --bs-gutter-y: 0.5rem
+}
+
+.g-3,
+.gx-3 {
+ --bs-gutter-x: 1rem
+}
+
+.g-3,
+.gy-3 {
+ --bs-gutter-y: 1rem
+}
+
+.g-4,
+.gx-4 {
+ --bs-gutter-x: 1.5rem
+}
+
+.g-4,
+.gy-4 {
+ --bs-gutter-y: 1.5rem
+}
+
+.g-5,
+.gx-5 {
+ --bs-gutter-x: 3rem
+}
+
+.g-5,
+.gy-5 {
+ --bs-gutter-y: 3rem
+}
+
+@media (min-width:576px) {
+ .col-sm-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-sm-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%
+ }
+
+ .col-sm-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%
+ }
+
+ .col-sm-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-sm-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%
+ }
+
+ .col-sm-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%
+ }
+
+ .col-sm-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-sm-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%
+ }
+
+ .col-sm-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%
+ }
+
+ .col-sm-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-sm-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%
+ }
+
+ .col-sm-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%
+ }
+
+ .col-sm-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-sm-0 {
+ margin-left: 0
+ }
+
+ .offset-sm-1 {
+ margin-left: 8.33333333%
+ }
+
+ .offset-sm-2 {
+ margin-left: 16.66666667%
+ }
+
+ .offset-sm-3 {
+ margin-left: 25%
+ }
+
+ .offset-sm-4 {
+ margin-left: 33.33333333%
+ }
+
+ .offset-sm-5 {
+ margin-left: 41.66666667%
+ }
+
+ .offset-sm-6 {
+ margin-left: 50%
+ }
+
+ .offset-sm-7 {
+ margin-left: 58.33333333%
+ }
+
+ .offset-sm-8 {
+ margin-left: 66.66666667%
+ }
+
+ .offset-sm-9 {
+ margin-left: 75%
+ }
+
+ .offset-sm-10 {
+ margin-left: 83.33333333%
+ }
+
+ .offset-sm-11 {
+ margin-left: 91.66666667%
+ }
+
+ .g-sm-0,
+ .gx-sm-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-sm-0,
+ .gy-sm-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-sm-1,
+ .gx-sm-1 {
+ --bs-gutter-x: 0.25rem
+ }
+
+ .g-sm-1,
+ .gy-sm-1 {
+ --bs-gutter-y: 0.25rem
+ }
+
+ .g-sm-2,
+ .gx-sm-2 {
+ --bs-gutter-x: 0.5rem
+ }
+
+ .g-sm-2,
+ .gy-sm-2 {
+ --bs-gutter-y: 0.5rem
+ }
+
+ .g-sm-3,
+ .gx-sm-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-sm-3,
+ .gy-sm-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-sm-4,
+ .gx-sm-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-sm-4,
+ .gy-sm-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-sm-5,
+ .gx-sm-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-sm-5,
+ .gy-sm-5 {
+ --bs-gutter-y: 3rem
+ }
+}
+
+@media (min-width:768px) {
+ .col-md-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-md-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%
+ }
+
+ .col-md-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%
+ }
+
+ .col-md-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-md-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%
+ }
+
+ .col-md-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%
+ }
+
+ .col-md-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-md-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%
+ }
+
+ .col-md-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%
+ }
+
+ .col-md-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-md-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%
+ }
+
+ .col-md-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%
+ }
+
+ .col-md-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-md-0 {
+ margin-left: 0
+ }
+
+ .offset-md-1 {
+ margin-left: 8.33333333%
+ }
+
+ .offset-md-2 {
+ margin-left: 16.66666667%
+ }
+
+ .offset-md-3 {
+ margin-left: 25%
+ }
+
+ .offset-md-4 {
+ margin-left: 33.33333333%
+ }
+
+ .offset-md-5 {
+ margin-left: 41.66666667%
+ }
+
+ .offset-md-6 {
+ margin-left: 50%
+ }
+
+ .offset-md-7 {
+ margin-left: 58.33333333%
+ }
+
+ .offset-md-8 {
+ margin-left: 66.66666667%
+ }
+
+ .offset-md-9 {
+ margin-left: 75%
+ }
+
+ .offset-md-10 {
+ margin-left: 83.33333333%
+ }
+
+ .offset-md-11 {
+ margin-left: 91.66666667%
+ }
+
+ .g-md-0,
+ .gx-md-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-md-0,
+ .gy-md-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-md-1,
+ .gx-md-1 {
+ --bs-gutter-x: 0.25rem
+ }
+
+ .g-md-1,
+ .gy-md-1 {
+ --bs-gutter-y: 0.25rem
+ }
+
+ .g-md-2,
+ .gx-md-2 {
+ --bs-gutter-x: 0.5rem
+ }
+
+ .g-md-2,
+ .gy-md-2 {
+ --bs-gutter-y: 0.5rem
+ }
+
+ .g-md-3,
+ .gx-md-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-md-3,
+ .gy-md-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-md-4,
+ .gx-md-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-md-4,
+ .gy-md-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-md-5,
+ .gx-md-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-md-5,
+ .gy-md-5 {
+ --bs-gutter-y: 3rem
+ }
+}
+
+@media (min-width:992px) {
+ .col-lg-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-lg-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%
+ }
+
+ .col-lg-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%
+ }
+
+ .col-lg-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-lg-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%
+ }
+
+ .col-lg-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%
+ }
+
+ .col-lg-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-lg-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%
+ }
+
+ .col-lg-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%
+ }
+
+ .col-lg-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-lg-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%
+ }
+
+ .col-lg-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%
+ }
+
+ .col-lg-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-lg-0 {
+ margin-left: 0
+ }
+
+ .offset-lg-1 {
+ margin-left: 8.33333333%
+ }
+
+ .offset-lg-2 {
+ margin-left: 16.66666667%
+ }
+
+ .offset-lg-3 {
+ margin-left: 25%
+ }
+
+ .offset-lg-4 {
+ margin-left: 33.33333333%
+ }
+
+ .offset-lg-5 {
+ margin-left: 41.66666667%
+ }
+
+ .offset-lg-6 {
+ margin-left: 50%
+ }
+
+ .offset-lg-7 {
+ margin-left: 58.33333333%
+ }
+
+ .offset-lg-8 {
+ margin-left: 66.66666667%
+ }
+
+ .offset-lg-9 {
+ margin-left: 75%
+ }
+
+ .offset-lg-10 {
+ margin-left: 83.33333333%
+ }
+
+ .offset-lg-11 {
+ margin-left: 91.66666667%
+ }
+
+ .g-lg-0,
+ .gx-lg-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-lg-0,
+ .gy-lg-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-lg-1,
+ .gx-lg-1 {
+ --bs-gutter-x: 0.25rem
+ }
+
+ .g-lg-1,
+ .gy-lg-1 {
+ --bs-gutter-y: 0.25rem
+ }
+
+ .g-lg-2,
+ .gx-lg-2 {
+ --bs-gutter-x: 0.5rem
+ }
+
+ .g-lg-2,
+ .gy-lg-2 {
+ --bs-gutter-y: 0.5rem
+ }
+
+ .g-lg-3,
+ .gx-lg-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-lg-3,
+ .gy-lg-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-lg-4,
+ .gx-lg-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-lg-4,
+ .gy-lg-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-lg-5,
+ .gx-lg-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-lg-5,
+ .gy-lg-5 {
+ --bs-gutter-y: 3rem
+ }
+}
+
+@media (min-width:1200px) {
+ .col-xl-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-xl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%
+ }
+
+ .col-xl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%
+ }
+
+ .col-xl-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-xl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%
+ }
+
+ .col-xl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%
+ }
+
+ .col-xl-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-xl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%
+ }
+
+ .col-xl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%
+ }
+
+ .col-xl-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-xl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%
+ }
+
+ .col-xl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%
+ }
+
+ .col-xl-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-xl-0 {
+ margin-left: 0
+ }
+
+ .offset-xl-1 {
+ margin-left: 8.33333333%
+ }
+
+ .offset-xl-2 {
+ margin-left: 16.66666667%
+ }
+
+ .offset-xl-3 {
+ margin-left: 25%
+ }
+
+ .offset-xl-4 {
+ margin-left: 33.33333333%
+ }
+
+ .offset-xl-5 {
+ margin-left: 41.66666667%
+ }
+
+ .offset-xl-6 {
+ margin-left: 50%
+ }
+
+ .offset-xl-7 {
+ margin-left: 58.33333333%
+ }
+
+ .offset-xl-8 {
+ margin-left: 66.66666667%
+ }
+
+ .offset-xl-9 {
+ margin-left: 75%
+ }
+
+ .offset-xl-10 {
+ margin-left: 83.33333333%
+ }
+
+ .offset-xl-11 {
+ margin-left: 91.66666667%
+ }
+
+ .g-xl-0,
+ .gx-xl-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-xl-0,
+ .gy-xl-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-xl-1,
+ .gx-xl-1 {
+ --bs-gutter-x: 0.25rem
+ }
+
+ .g-xl-1,
+ .gy-xl-1 {
+ --bs-gutter-y: 0.25rem
+ }
+
+ .g-xl-2,
+ .gx-xl-2 {
+ --bs-gutter-x: 0.5rem
+ }
+
+ .g-xl-2,
+ .gy-xl-2 {
+ --bs-gutter-y: 0.5rem
+ }
+
+ .g-xl-3,
+ .gx-xl-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-xl-3,
+ .gy-xl-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-xl-4,
+ .gx-xl-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-xl-4,
+ .gy-xl-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-xl-5,
+ .gx-xl-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-xl-5,
+ .gy-xl-5 {
+ --bs-gutter-y: 3rem
+ }
+}
+
+@media (min-width:1400px) {
+ .col-xxl-auto {
+ flex: 0 0 auto;
+ width: auto
+ }
+
+ .col-xxl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%
+ }
+
+ .col-xxl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%
+ }
+
+ .col-xxl-3 {
+ flex: 0 0 auto;
+ width: 25%
+ }
+
+ .col-xxl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%
+ }
+
+ .col-xxl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%
+ }
+
+ .col-xxl-6 {
+ flex: 0 0 auto;
+ width: 50%
+ }
+
+ .col-xxl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%
+ }
+
+ .col-xxl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%
+ }
+
+ .col-xxl-9 {
+ flex: 0 0 auto;
+ width: 75%
+ }
+
+ .col-xxl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%
+ }
+
+ .col-xxl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%
+ }
+
+ .col-xxl-12 {
+ flex: 0 0 auto;
+ width: 100%
+ }
+
+ .offset-xxl-0 {
+ margin-left: 0
+ }
+
+ .offset-xxl-1 {
+ margin-left: 8.33333333%
+ }
+
+ .offset-xxl-2 {
+ margin-left: 16.66666667%
+ }
+
+ .offset-xxl-3 {
+ margin-left: 25%
+ }
+
+ .offset-xxl-4 {
+ margin-left: 33.33333333%
+ }
+
+ .offset-xxl-5 {
+ margin-left: 41.66666667%
+ }
+
+ .offset-xxl-6 {
+ margin-left: 50%
+ }
+
+ .offset-xxl-7 {
+ margin-left: 58.33333333%
+ }
+
+ .offset-xxl-8 {
+ margin-left: 66.66666667%
+ }
+
+ .offset-xxl-9 {
+ margin-left: 75%
+ }
+
+ .offset-xxl-10 {
+ margin-left: 83.33333333%
+ }
+
+ .offset-xxl-11 {
+ margin-left: 91.66666667%
+ }
+
+ .g-xxl-0,
+ .gx-xxl-0 {
+ --bs-gutter-x: 0
+ }
+
+ .g-xxl-0,
+ .gy-xxl-0 {
+ --bs-gutter-y: 0
+ }
+
+ .g-xxl-1,
+ .gx-xxl-1 {
+ --bs-gutter-x: 0.25rem
+ }
+
+ .g-xxl-1,
+ .gy-xxl-1 {
+ --bs-gutter-y: 0.25rem
+ }
+
+ .g-xxl-2,
+ .gx-xxl-2 {
+ --bs-gutter-x: 0.5rem
+ }
+
+ .g-xxl-2,
+ .gy-xxl-2 {
+ --bs-gutter-y: 0.5rem
+ }
+
+ .g-xxl-3,
+ .gx-xxl-3 {
+ --bs-gutter-x: 1rem
+ }
+
+ .g-xxl-3,
+ .gy-xxl-3 {
+ --bs-gutter-y: 1rem
+ }
+
+ .g-xxl-4,
+ .gx-xxl-4 {
+ --bs-gutter-x: 1.5rem
+ }
+
+ .g-xxl-4,
+ .gy-xxl-4 {
+ --bs-gutter-y: 1.5rem
+ }
+
+ .g-xxl-5,
+ .gx-xxl-5 {
+ --bs-gutter-x: 3rem
+ }
+
+ .g-xxl-5,
+ .gy-xxl-5 {
+ --bs-gutter-y: 3rem
+ }
+}
+
+.table {
+ --bs-table-bg: transparent;
+ --bs-table-accent-bg: transparent;
+ --bs-table-striped-color: #212529;
+ --bs-table-striped-bg: rgba(0, 0, 0, 0.05);
+ --bs-table-active-color: #212529;
+ --bs-table-active-bg: rgba(0, 0, 0, 0.1);
+ --bs-table-hover-color: #212529;
+ --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
+ width: 100%;
+ margin-bottom: 1rem;
+ color: #212529;
+ vertical-align: top;
+ border-color: #dee2e6
+}
+
+.table>:not(caption)>*>* {
+ padding: .5rem .5rem;
+ background-color: var(--bs-table-bg);
+ border-bottom-width: 1px;
+ box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg)
+}
+
+.table>tbody {
+ vertical-align: inherit
+}
+
+.table>thead {
+ vertical-align: bottom
+}
+
+.table>:not(:last-child)>:last-child>* {
+ border-bottom-color: currentColor
+}
+
+.caption-top {
+ caption-side: top
+}
+
+.table-sm>:not(caption)>*>* {
+ padding: .25rem .25rem
+}
+
+.table-bordered>:not(caption)>* {
+ border-width: 1px 0
+}
+
+.table-bordered>:not(caption)>*>* {
+ border-width: 0 1px
+}
+
+.table-borderless>:not(caption)>*>* {
+ border-bottom-width: 0
+}
+
+.table-striped>tbody>tr:nth-of-type(odd) {
+ --bs-table-accent-bg: var(--bs-table-striped-bg);
+ color: var(--bs-table-striped-color)
+}
+
+.table-active {
+ --bs-table-accent-bg: var(--bs-table-active-bg);
+ color: var(--bs-table-active-color)
+}
+
+.table-hover>tbody>tr:hover {
+ --bs-table-accent-bg: var(--bs-table-hover-bg);
+ color: var(--bs-table-hover-color)
+}
+
+.table-primary {
+ --bs-table-bg: #cfe2ff;
+ --bs-table-striped-bg: #c5d7f2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #bacbe6;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfd1ec;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #bacbe6
+}
+
+.table-secondary {
+ --bs-table-bg: #e2e3e5;
+ --bs-table-striped-bg: #d7d8da;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #cbccce;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #d1d2d4;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #cbccce
+}
+
+.table-success {
+ --bs-table-bg: #d1e7dd;
+ --bs-table-striped-bg: #c7dbd2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #bcd0c7;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #c1d6cc;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #bcd0c7
+}
+
+.table-info {
+ --bs-table-bg: #cff4fc;
+ --bs-table-striped-bg: #c5e8ef;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #badce3;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfe2e9;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #badce3
+}
+
+.table-warning {
+ --bs-table-bg: #fff3cd;
+ --bs-table-striped-bg: #f2e7c3;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #e6dbb9;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #ece1be;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #e6dbb9
+}
+
+.table-danger {
+ --bs-table-bg: #f8d7da;
+ --bs-table-striped-bg: #eccccf;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfc2c4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5c7ca;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #dfc2c4
+}
+
+.table-light {
+ --bs-table-bg: #f8f9fa;
+ --bs-table-striped-bg: #ecedee;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfe0e1;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5e6e7;
+ --bs-table-hover-color: #000;
+ color: #000;
+ border-color: #dfe0e1
+}
+
+.table-dark {
+ --bs-table-bg: #212529;
+ --bs-table-striped-bg: #2c3034;
+ --bs-table-striped-color: #fff;
+ --bs-table-active-bg: #373b3e;
+ --bs-table-active-color: #fff;
+ --bs-table-hover-bg: #323539;
+ --bs-table-hover-color: #fff;
+ color: #fff;
+ border-color: #373b3e
+}
+
+.table-responsive {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+}
+
+@media (max-width:575.98px) {
+ .table-responsive-sm {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width:767.98px) {
+ .table-responsive-md {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width:991.98px) {
+ .table-responsive-lg {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width:1199.98px) {
+ .table-responsive-xl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+@media (max-width:1399.98px) {
+ .table-responsive-xxl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch
+ }
+}
+
+.form-label {
+ margin-bottom: .5rem
+}
+
+.col-form-label {
+ padding-top: calc(.375rem + 1px);
+ padding-bottom: calc(.375rem + 1px);
+ margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5
+}
+
+.col-form-label-lg {
+ padding-top: calc(.5rem + 1px);
+ padding-bottom: calc(.5rem + 1px);
+ font-size: 1.25rem
+}
+
+.col-form-label-sm {
+ padding-top: calc(.25rem + 1px);
+ padding-bottom: calc(.25rem + 1px);
+ font-size: .875rem
+}
+
+.form-text {
+ margin-top: .25rem;
+ font-size: .875em;
+ color: #6c757d
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ padding: .375rem .75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #212529;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #ced4da;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border-radius: .25rem;
+ transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-control {
+ transition: none
+ }
+}
+
+.form-control[type=file] {
+ overflow: hidden
+}
+
+.form-control[type=file]:not(:disabled):not([readonly]) {
+ cursor: pointer
+}
+
+.form-control:focus {
+ color: #212529;
+ background-color: #fff;
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.form-control::-webkit-date-and-time-value {
+ height: 1.5em
+}
+
+.form-control::-moz-placeholder {
+ color: #6c757d;
+ opacity: 1
+}
+
+.form-control::placeholder {
+ color: #6c757d;
+ opacity: 1
+}
+
+.form-control:disabled,
+.form-control[readonly] {
+ background-color: #e9ecef;
+ opacity: 1
+}
+
+.form-control::file-selector-button {
+ padding: .375rem .75rem;
+ margin: -.375rem -.75rem;
+ -webkit-margin-end: .75rem;
+ margin-inline-end: .75rem;
+ color: #212529;
+ background-color: #e9ecef;
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: 1px;
+ border-radius: 0;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-control::file-selector-button {
+ transition: none
+ }
+}
+
+.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
+ background-color: #dde0e3
+}
+
+.form-control::-webkit-file-upload-button {
+ padding: .375rem .75rem;
+ margin: -.375rem -.75rem;
+ -webkit-margin-end: .75rem;
+ margin-inline-end: .75rem;
+ color: #212529;
+ background-color: #e9ecef;
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: 1px;
+ border-radius: 0;
+ -webkit-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-control::-webkit-file-upload-button {
+ -webkit-transition: none;
+ transition: none
+ }
+}
+
+.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+ background-color: #dde0e3
+}
+
+.form-control-plaintext {
+ display: block;
+ width: 100%;
+ padding: .375rem 0;
+ margin-bottom: 0;
+ line-height: 1.5;
+ color: #212529;
+ background-color: transparent;
+ border: solid transparent;
+ border-width: 1px 0
+}
+
+.form-control-plaintext.form-control-lg,
+.form-control-plaintext.form-control-sm {
+ padding-right: 0;
+ padding-left: 0
+}
+
+.form-control-sm {
+ min-height: calc(1.5em + (.5rem + 2px));
+ padding: .25rem .5rem;
+ font-size: .875rem;
+ border-radius: .2rem
+}
+
+.form-control-sm::file-selector-button {
+ padding: .25rem .5rem;
+ margin: -.25rem -.5rem;
+ -webkit-margin-end: .5rem;
+ margin-inline-end: .5rem
+}
+
+.form-control-sm::-webkit-file-upload-button {
+ padding: .25rem .5rem;
+ margin: -.25rem -.5rem;
+ -webkit-margin-end: .5rem;
+ margin-inline-end: .5rem
+}
+
+.form-control-lg {
+ min-height: calc(1.5em + (1rem + 2px));
+ padding: .5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: .3rem
+}
+
+.form-control-lg::file-selector-button {
+ padding: .5rem 1rem;
+ margin: -.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem
+}
+
+.form-control-lg::-webkit-file-upload-button {
+ padding: .5rem 1rem;
+ margin: -.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem
+}
+
+textarea.form-control {
+ min-height: calc(1.5em + (.75rem + 2px))
+}
+
+textarea.form-control-sm {
+ min-height: calc(1.5em + (.5rem + 2px))
+}
+
+textarea.form-control-lg {
+ min-height: calc(1.5em + (1rem + 2px))
+}
+
+.form-control-color {
+ max-width: 3rem;
+ height: auto;
+ padding: .375rem
+}
+
+.form-control-color:not(:disabled):not([readonly]) {
+ cursor: pointer
+}
+
+.form-control-color::-moz-color-swatch {
+ height: 1.5em;
+ border-radius: .25rem
+}
+
+.form-control-color::-webkit-color-swatch {
+ height: 1.5em;
+ border-radius: .25rem
+}
+
+.form-select {
+ display: block;
+ width: 100%;
+ padding: .375rem 2.25rem .375rem .75rem;
+ -moz-padding-start: calc(0.75rem - 3px);
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #212529;
+ background-color: #fff;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right .75rem center;
+ background-size: 16px 12px;
+ border: 1px solid #ced4da;
+ border-radius: .25rem;
+ transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-select {
+ transition: none
+ }
+}
+
+.form-select:focus {
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.form-select[multiple],
+.form-select[size]:not([size="1"]) {
+ padding-right: .75rem;
+ background-image: none
+}
+
+.form-select:disabled {
+ background-color: #e9ecef
+}
+
+.form-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #212529
+}
+
+.form-select-sm {
+ padding-top: .25rem;
+ padding-bottom: .25rem;
+ padding-left: .5rem;
+ font-size: .875rem
+}
+
+.form-select-lg {
+ padding-top: .5rem;
+ padding-bottom: .5rem;
+ padding-left: 1rem;
+ font-size: 1.25rem
+}
+
+.form-check {
+ display: block;
+ min-height: 1.5rem;
+ padding-left: 1.5em;
+ margin-bottom: .125rem
+}
+
+.form-check .form-check-input {
+ float: left;
+ margin-left: -1.5em
+}
+
+.form-check-input {
+ width: 1em;
+ height: 1em;
+ margin-top: .25em;
+ vertical-align: top;
+ background-color: #fff;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ border: 1px solid rgba(0, 0, 0, .25);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact
+}
+
+.form-check-input[type=checkbox] {
+ border-radius: .25em
+}
+
+.form-check-input[type=radio] {
+ border-radius: 50%
+}
+
+.form-check-input:active {
+ filter: brightness(90%)
+}
+
+.form-check-input:focus {
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.form-check-input:checked {
+ background-color: #0d6efd;
+ border-color: #0d6efd
+}
+
+.form-check-input:checked[type=checkbox] {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")
+}
+
+.form-check-input:checked[type=radio] {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")
+}
+
+.form-check-input[type=checkbox]:indeterminate {
+ background-color: #0d6efd;
+ border-color: #0d6efd;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")
+}
+
+.form-check-input:disabled {
+ pointer-events: none;
+ filter: none;
+ opacity: .5
+}
+
+.form-check-input:disabled~.form-check-label,
+.form-check-input[disabled]~.form-check-label {
+ opacity: .5
+}
+
+.form-switch {
+ padding-left: 2.5em
+}
+
+.form-switch .form-check-input {
+ width: 2em;
+ margin-left: -2.5em;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");
+ background-position: left center;
+ border-radius: 2em;
+ transition: background-position .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-switch .form-check-input {
+ transition: none
+ }
+}
+
+.form-switch .form-check-input:focus {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")
+}
+
+.form-switch .form-check-input:checked {
+ background-position: right center;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")
+}
+
+.form-check-inline {
+ display: inline-block;
+ margin-right: 1rem
+}
+
+.btn-check {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none
+}
+
+.btn-check:disabled+.btn,
+.btn-check[disabled]+.btn {
+ pointer-events: none;
+ filter: none;
+ opacity: .65
+}
+
+.form-range {
+ width: 100%;
+ height: 1.5rem;
+ padding: 0;
+ background-color: transparent;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none
+}
+
+.form-range:focus {
+ outline: 0
+}
+
+.form-range:focus::-webkit-slider-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.form-range:focus::-moz-range-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.form-range::-moz-focus-outer {
+ border: 0
+}
+
+.form-range::-webkit-slider-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: -.25rem;
+ background-color: #0d6efd;
+ border: 0;
+ border-radius: 1rem;
+ -webkit-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ -webkit-appearance: none;
+ appearance: none
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-range::-webkit-slider-thumb {
+ -webkit-transition: none;
+ transition: none
+ }
+}
+
+.form-range::-webkit-slider-thumb:active {
+ background-color: #b6d4fe
+}
+
+.form-range::-webkit-slider-runnable-track {
+ width: 100%;
+ height: .5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: #dee2e6;
+ border-color: transparent;
+ border-radius: 1rem
+}
+
+.form-range::-moz-range-thumb {
+ width: 1rem;
+ height: 1rem;
+ background-color: #0d6efd;
+ border: 0;
+ border-radius: 1rem;
+ -moz-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+ -moz-appearance: none;
+ appearance: none
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-range::-moz-range-thumb {
+ -moz-transition: none;
+ transition: none
+ }
+}
+
+.form-range::-moz-range-thumb:active {
+ background-color: #b6d4fe
+}
+
+.form-range::-moz-range-track {
+ width: 100%;
+ height: .5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: #dee2e6;
+ border-color: transparent;
+ border-radius: 1rem
+}
+
+.form-range:disabled {
+ pointer-events: none
+}
+
+.form-range:disabled::-webkit-slider-thumb {
+ background-color: #adb5bd
+}
+
+.form-range:disabled::-moz-range-thumb {
+ background-color: #adb5bd
+}
+
+.form-floating {
+ position: relative
+}
+
+.form-floating>.form-control,
+.form-floating>.form-select {
+ height: calc(3.5rem + 2px);
+ line-height: 1.25
+}
+
+.form-floating>label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ padding: 1rem .75rem;
+ pointer-events: none;
+ border: 1px solid transparent;
+ transform-origin: 0 0;
+ transition: opacity .1s ease-in-out, transform .1s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .form-floating>label {
+ transition: none
+ }
+}
+
+.form-floating>.form-control {
+ padding: 1rem .75rem
+}
+
+.form-floating>.form-control::-moz-placeholder {
+ color: transparent
+}
+
+.form-floating>.form-control::placeholder {
+ color: transparent
+}
+
+.form-floating>.form-control:not(:-moz-placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: .625rem
+}
+
+.form-floating>.form-control:focus,
+.form-floating>.form-control:not(:placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: .625rem
+}
+
+.form-floating>.form-control:-webkit-autofill {
+ padding-top: 1.625rem;
+ padding-bottom: .625rem
+}
+
+.form-floating>.form-select {
+ padding-top: 1.625rem;
+ padding-bottom: .625rem
+}
+
+.form-floating>.form-control:not(:-moz-placeholder-shown)~label {
+ opacity: .65;
+ transform: scale(.85) translateY(-.5rem) translateX(.15rem)
+}
+
+.form-floating>.form-control:focus~label,
+.form-floating>.form-control:not(:placeholder-shown)~label,
+.form-floating>.form-select~label {
+ opacity: .65;
+ transform: scale(.85) translateY(-.5rem) translateX(.15rem)
+}
+
+.form-floating>.form-control:-webkit-autofill~label {
+ opacity: .65;
+ transform: scale(.85) translateY(-.5rem) translateX(.15rem)
+}
+
+.input-group {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+ width: 100%
+}
+
+.input-group>.form-control,
+.input-group>.form-select {
+ position: relative;
+ flex: 1 1 auto;
+ width: 1%;
+ min-width: 0
+}
+
+.input-group>.form-control:focus,
+.input-group>.form-select:focus {
+ z-index: 3
+}
+
+.input-group .btn {
+ position: relative;
+ z-index: 2
+}
+
+.input-group .btn:focus {
+ z-index: 3
+}
+
+.input-group-text {
+ display: flex;
+ align-items: center;
+ padding: .375rem .75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #212529;
+ text-align: center;
+ white-space: nowrap;
+ background-color: #e9ecef;
+ border: 1px solid #ced4da;
+ border-radius: .25rem
+}
+
+.input-group-lg>.btn,
+.input-group-lg>.form-control,
+.input-group-lg>.form-select,
+.input-group-lg>.input-group-text {
+ padding: .5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: .3rem
+}
+
+.input-group-sm>.btn,
+.input-group-sm>.form-control,
+.input-group-sm>.form-select,
+.input-group-sm>.input-group-text {
+ padding: .25rem .5rem;
+ font-size: .875rem;
+ border-radius: .2rem
+}
+
+.input-group-lg>.form-select,
+.input-group-sm>.form-select {
+ padding-right: 3rem
+}
+
+.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),
+.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+}
+
+.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),
+.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+}
+
+.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
+ margin-left: -1px;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.valid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: .25rem;
+ font-size: .875em;
+ color: #198754
+}
+
+.valid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: .25rem .5rem;
+ margin-top: .1rem;
+ font-size: .875rem;
+ color: #fff;
+ background-color: rgba(25, 135, 84, .9);
+ border-radius: .25rem
+}
+
+.is-valid~.valid-feedback,
+.is-valid~.valid-tooltip,
+.was-validated :valid~.valid-feedback,
+.was-validated :valid~.valid-tooltip {
+ display: block
+}
+
+.form-control.is-valid,
+.was-validated .form-control:valid {
+ border-color: #198754;
+ padding-right: calc(1.5em + .75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(.375em + .1875rem) center;
+ background-size: calc(.75em + .375rem) calc(.75em + .375rem)
+}
+
+.form-control.is-valid:focus,
+.was-validated .form-control:valid:focus {
+ border-color: #198754;
+ box-shadow: 0 0 0 .25rem rgba(25, 135, 84, .25)
+}
+
+.was-validated textarea.form-control:valid,
+textarea.form-control.is-valid {
+ padding-right: calc(1.5em + .75rem);
+ background-position: top calc(.375em + .1875rem) right calc(.375em + .1875rem)
+}
+
+.form-select.is-valid,
+.was-validated .form-select:valid {
+ border-color: #198754
+}
+
+.form-select.is-valid:not([multiple]):not([size]),
+.form-select.is-valid:not([multiple])[size="1"],
+.was-validated .form-select:valid:not([multiple]):not([size]),
+.was-validated .form-select:valid:not([multiple])[size="1"] {
+ padding-right: 4.125rem;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-position: right .75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(.75em + .375rem) calc(.75em + .375rem)
+}
+
+.form-select.is-valid:focus,
+.was-validated .form-select:valid:focus {
+ border-color: #198754;
+ box-shadow: 0 0 0 .25rem rgba(25, 135, 84, .25)
+}
+
+.form-check-input.is-valid,
+.was-validated .form-check-input:valid {
+ border-color: #198754
+}
+
+.form-check-input.is-valid:checked,
+.was-validated .form-check-input:valid:checked {
+ background-color: #198754
+}
+
+.form-check-input.is-valid:focus,
+.was-validated .form-check-input:valid:focus {
+ box-shadow: 0 0 0 .25rem rgba(25, 135, 84, .25)
+}
+
+.form-check-input.is-valid~.form-check-label,
+.was-validated .form-check-input:valid~.form-check-label {
+ color: #198754
+}
+
+.form-check-inline .form-check-input~.valid-feedback {
+ margin-left: .5em
+}
+
+.input-group .form-control.is-valid,
+.input-group .form-select.is-valid,
+.was-validated .input-group .form-control:valid,
+.was-validated .input-group .form-select:valid {
+ z-index: 1
+}
+
+.input-group .form-control.is-valid:focus,
+.input-group .form-select.is-valid:focus,
+.was-validated .input-group .form-control:valid:focus,
+.was-validated .input-group .form-select:valid:focus {
+ z-index: 3
+}
+
+.invalid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: .25rem;
+ font-size: .875em;
+ color: #dc3545
+}
+
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: .25rem .5rem;
+ margin-top: .1rem;
+ font-size: .875rem;
+ color: #fff;
+ background-color: rgba(220, 53, 69, .9);
+ border-radius: .25rem
+}
+
+.is-invalid~.invalid-feedback,
+.is-invalid~.invalid-tooltip,
+.was-validated :invalid~.invalid-feedback,
+.was-validated :invalid~.invalid-tooltip {
+ display: block
+}
+
+.form-control.is-invalid,
+.was-validated .form-control:invalid {
+ border-color: #dc3545;
+ padding-right: calc(1.5em + .75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(.375em + .1875rem) center;
+ background-size: calc(.75em + .375rem) calc(.75em + .375rem)
+}
+
+.form-control.is-invalid:focus,
+.was-validated .form-control:invalid:focus {
+ border-color: #dc3545;
+ box-shadow: 0 0 0 .25rem rgba(220, 53, 69, .25)
+}
+
+.was-validated textarea.form-control:invalid,
+textarea.form-control.is-invalid {
+ padding-right: calc(1.5em + .75rem);
+ background-position: top calc(.375em + .1875rem) right calc(.375em + .1875rem)
+}
+
+.form-select.is-invalid,
+.was-validated .form-select:invalid {
+ border-color: #dc3545
+}
+
+.form-select.is-invalid:not([multiple]):not([size]),
+.form-select.is-invalid:not([multiple])[size="1"],
+.was-validated .form-select:invalid:not([multiple]):not([size]),
+.was-validated .form-select:invalid:not([multiple])[size="1"] {
+ padding-right: 4.125rem;
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+ background-position: right .75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(.75em + .375rem) calc(.75em + .375rem)
+}
+
+.form-select.is-invalid:focus,
+.was-validated .form-select:invalid:focus {
+ border-color: #dc3545;
+ box-shadow: 0 0 0 .25rem rgba(220, 53, 69, .25)
+}
+
+.form-check-input.is-invalid,
+.was-validated .form-check-input:invalid {
+ border-color: #dc3545
+}
+
+.form-check-input.is-invalid:checked,
+.was-validated .form-check-input:invalid:checked {
+ background-color: #dc3545
+}
+
+.form-check-input.is-invalid:focus,
+.was-validated .form-check-input:invalid:focus {
+ box-shadow: 0 0 0 .25rem rgba(220, 53, 69, .25)
+}
+
+.form-check-input.is-invalid~.form-check-label,
+.was-validated .form-check-input:invalid~.form-check-label {
+ color: #dc3545
+}
+
+.form-check-inline .form-check-input~.invalid-feedback {
+ margin-left: .5em
+}
+
+.input-group .form-control.is-invalid,
+.input-group .form-select.is-invalid,
+.was-validated .input-group .form-control:invalid,
+.was-validated .input-group .form-select:invalid {
+ z-index: 2
+}
+
+.input-group .form-control.is-invalid:focus,
+.input-group .form-select.is-invalid:focus,
+.was-validated .input-group .form-control:invalid:focus,
+.was-validated .input-group .form-select:invalid:focus {
+ z-index: 3
+}
+
+.btn {
+ display: inline-block;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #212529;
+ text-align: center;
+ text-decoration: none;
+ vertical-align: middle;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ background-color: transparent;
+ border: 1px solid transparent;
+ padding: .375rem .75rem;
+ font-size: 1rem;
+ border-radius: .25rem;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .btn {
+ transition: none
+ }
+}
+
+.btn:hover {
+ color: #212529
+}
+
+.btn-check:focus+.btn,
+.btn:focus {
+ outline: 0;
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.btn.disabled,
+.btn:disabled,
+fieldset:disabled .btn {
+ pointer-events: none;
+ opacity: .65
+}
+
+.btn-primary {
+ color: #fff;
+ background-color: #0d6efd;
+ border-color: #0d6efd
+}
+
+.btn-primary:hover {
+ color: #fff;
+ background-color: #0b5ed7;
+ border-color: #0a58ca
+}
+
+.btn-check:focus+.btn-primary,
+.btn-primary:focus {
+ color: #fff;
+ background-color: #0b5ed7;
+ border-color: #0a58ca;
+ box-shadow: 0 0 0 .25rem rgba(49, 132, 253, .5)
+}
+
+.btn-check:active+.btn-primary,
+.btn-check:checked+.btn-primary,
+.btn-primary.active,
+.btn-primary:active,
+.show>.btn-primary.dropdown-toggle {
+ color: #fff;
+ background-color: #0a58ca;
+ border-color: #0a53be
+}
+
+.btn-check:active+.btn-primary:focus,
+.btn-check:checked+.btn-primary:focus,
+.btn-primary.active:focus,
+.btn-primary:active:focus,
+.show>.btn-primary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(49, 132, 253, .5)
+}
+
+.btn-primary.disabled,
+.btn-primary:disabled {
+ color: #fff;
+ background-color: #0d6efd;
+ border-color: #0d6efd
+}
+
+.btn-secondary {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-secondary:hover {
+ color: #fff;
+ background-color: #5c636a;
+ border-color: #565e64
+}
+
+.btn-check:focus+.btn-secondary,
+.btn-secondary:focus {
+ color: #fff;
+ background-color: #5c636a;
+ border-color: #565e64;
+ box-shadow: 0 0 0 .25rem rgba(130, 138, 145, .5)
+}
+
+.btn-check:active+.btn-secondary,
+.btn-check:checked+.btn-secondary,
+.btn-secondary.active,
+.btn-secondary:active,
+.show>.btn-secondary.dropdown-toggle {
+ color: #fff;
+ background-color: #565e64;
+ border-color: #51585e
+}
+
+.btn-check:active+.btn-secondary:focus,
+.btn-check:checked+.btn-secondary:focus,
+.btn-secondary.active:focus,
+.btn-secondary:active:focus,
+.show>.btn-secondary.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(130, 138, 145, .5)
+}
+
+.btn-secondary.disabled,
+.btn-secondary:disabled {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-success {
+ color: #fff;
+ background-color: #198754;
+ border-color: #198754
+}
+
+.btn-success:hover {
+ color: #fff;
+ background-color: #157347;
+ border-color: #146c43
+}
+
+.btn-check:focus+.btn-success,
+.btn-success:focus {
+ color: #fff;
+ background-color: #157347;
+ border-color: #146c43;
+ box-shadow: 0 0 0 .25rem rgba(60, 153, 110, .5)
+}
+
+.btn-check:active+.btn-success,
+.btn-check:checked+.btn-success,
+.btn-success.active,
+.btn-success:active,
+.show>.btn-success.dropdown-toggle {
+ color: #fff;
+ background-color: #146c43;
+ border-color: #13653f
+}
+
+.btn-check:active+.btn-success:focus,
+.btn-check:checked+.btn-success:focus,
+.btn-success.active:focus,
+.btn-success:active:focus,
+.show>.btn-success.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(60, 153, 110, .5)
+}
+
+.btn-success.disabled,
+.btn-success:disabled {
+ color: #fff;
+ background-color: #198754;
+ border-color: #198754
+}
+
+.btn-info {
+ color: #000;
+ background-color: #0dcaf0;
+ border-color: #0dcaf0
+}
+
+.btn-info:hover {
+ color: #000;
+ background-color: #31d2f2;
+ border-color: #25cff2
+}
+
+.btn-check:focus+.btn-info,
+.btn-info:focus {
+ color: #000;
+ background-color: #31d2f2;
+ border-color: #25cff2;
+ box-shadow: 0 0 0 .25rem rgba(11, 172, 204, .5)
+}
+
+.btn-check:active+.btn-info,
+.btn-check:checked+.btn-info,
+.btn-info.active,
+.btn-info:active,
+.show>.btn-info.dropdown-toggle {
+ color: #000;
+ background-color: #3dd5f3;
+ border-color: #25cff2
+}
+
+.btn-check:active+.btn-info:focus,
+.btn-check:checked+.btn-info:focus,
+.btn-info.active:focus,
+.btn-info:active:focus,
+.show>.btn-info.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(11, 172, 204, .5)
+}
+
+.btn-info.disabled,
+.btn-info:disabled {
+ color: #000;
+ background-color: #0dcaf0;
+ border-color: #0dcaf0
+}
+
+.btn-warning {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-warning:hover {
+ color: #000;
+ background-color: #ffca2c;
+ border-color: #ffc720
+}
+
+.btn-check:focus+.btn-warning,
+.btn-warning:focus {
+ color: #000;
+ background-color: #ffca2c;
+ border-color: #ffc720;
+ box-shadow: 0 0 0 .25rem rgba(217, 164, 6, .5)
+}
+
+.btn-check:active+.btn-warning,
+.btn-check:checked+.btn-warning,
+.btn-warning.active,
+.btn-warning:active,
+.show>.btn-warning.dropdown-toggle {
+ color: #000;
+ background-color: #ffcd39;
+ border-color: #ffc720
+}
+
+.btn-check:active+.btn-warning:focus,
+.btn-check:checked+.btn-warning:focus,
+.btn-warning.active:focus,
+.btn-warning:active:focus,
+.show>.btn-warning.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(217, 164, 6, .5)
+}
+
+.btn-warning.disabled,
+.btn-warning:disabled {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-danger {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-danger:hover {
+ color: #fff;
+ background-color: #bb2d3b;
+ border-color: #b02a37
+}
+
+.btn-check:focus+.btn-danger,
+.btn-danger:focus {
+ color: #fff;
+ background-color: #bb2d3b;
+ border-color: #b02a37;
+ box-shadow: 0 0 0 .25rem rgba(225, 83, 97, .5)
+}
+
+.btn-check:active+.btn-danger,
+.btn-check:checked+.btn-danger,
+.btn-danger.active,
+.btn-danger:active,
+.show>.btn-danger.dropdown-toggle {
+ color: #fff;
+ background-color: #b02a37;
+ border-color: #a52834
+}
+
+.btn-check:active+.btn-danger:focus,
+.btn-check:checked+.btn-danger:focus,
+.btn-danger.active:focus,
+.btn-danger:active:focus,
+.show>.btn-danger.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(225, 83, 97, .5)
+}
+
+.btn-danger.disabled,
+.btn-danger:disabled {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-light {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-light:hover {
+ color: #000;
+ background-color: #f9fafb;
+ border-color: #f9fafb
+}
+
+.btn-check:focus+.btn-light,
+.btn-light:focus {
+ color: #000;
+ background-color: #f9fafb;
+ border-color: #f9fafb;
+ box-shadow: 0 0 0 .25rem rgba(211, 212, 213, .5)
+}
+
+.btn-check:active+.btn-light,
+.btn-check:checked+.btn-light,
+.btn-light.active,
+.btn-light:active,
+.show>.btn-light.dropdown-toggle {
+ color: #000;
+ background-color: #f9fafb;
+ border-color: #f9fafb
+}
+
+.btn-check:active+.btn-light:focus,
+.btn-check:checked+.btn-light:focus,
+.btn-light.active:focus,
+.btn-light:active:focus,
+.show>.btn-light.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(211, 212, 213, .5)
+}
+
+.btn-light.disabled,
+.btn-light:disabled {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-dark {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-dark:hover {
+ color: #fff;
+ background-color: #1c1f23;
+ border-color: #1a1e21
+}
+
+.btn-check:focus+.btn-dark,
+.btn-dark:focus {
+ color: #fff;
+ background-color: #1c1f23;
+ border-color: #1a1e21;
+ box-shadow: 0 0 0 .25rem rgba(66, 70, 73, .5)
+}
+
+.btn-check:active+.btn-dark,
+.btn-check:checked+.btn-dark,
+.btn-dark.active,
+.btn-dark:active,
+.show>.btn-dark.dropdown-toggle {
+ color: #fff;
+ background-color: #1a1e21;
+ border-color: #191c1f
+}
+
+.btn-check:active+.btn-dark:focus,
+.btn-check:checked+.btn-dark:focus,
+.btn-dark.active:focus,
+.btn-dark:active:focus,
+.show>.btn-dark.dropdown-toggle:focus {
+ box-shadow: 0 0 0 .25rem rgba(66, 70, 73, .5)
+}
+
+.btn-dark.disabled,
+.btn-dark:disabled {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-outline-primary {
+ color: #0d6efd;
+ border-color: #0d6efd
+}
+
+.btn-outline-primary:hover {
+ color: #fff;
+ background-color: #0d6efd;
+ border-color: #0d6efd
+}
+
+.btn-check:focus+.btn-outline-primary,
+.btn-outline-primary:focus {
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .5)
+}
+
+.btn-check:active+.btn-outline-primary,
+.btn-check:checked+.btn-outline-primary,
+.btn-outline-primary.active,
+.btn-outline-primary.dropdown-toggle.show,
+.btn-outline-primary:active {
+ color: #fff;
+ background-color: #0d6efd;
+ border-color: #0d6efd
+}
+
+.btn-check:active+.btn-outline-primary:focus,
+.btn-check:checked+.btn-outline-primary:focus,
+.btn-outline-primary.active:focus,
+.btn-outline-primary.dropdown-toggle.show:focus,
+.btn-outline-primary:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .5)
+}
+
+.btn-outline-primary.disabled,
+.btn-outline-primary:disabled {
+ color: #0d6efd;
+ background-color: transparent
+}
+
+.btn-outline-secondary {
+ color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-outline-secondary:hover {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-check:focus+.btn-outline-secondary,
+.btn-outline-secondary:focus {
+ box-shadow: 0 0 0 .25rem rgba(108, 117, 125, .5)
+}
+
+.btn-check:active+.btn-outline-secondary,
+.btn-check:checked+.btn-outline-secondary,
+.btn-outline-secondary.active,
+.btn-outline-secondary.dropdown-toggle.show,
+.btn-outline-secondary:active {
+ color: #fff;
+ background-color: #6c757d;
+ border-color: #6c757d
+}
+
+.btn-check:active+.btn-outline-secondary:focus,
+.btn-check:checked+.btn-outline-secondary:focus,
+.btn-outline-secondary.active:focus,
+.btn-outline-secondary.dropdown-toggle.show:focus,
+.btn-outline-secondary:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(108, 117, 125, .5)
+}
+
+.btn-outline-secondary.disabled,
+.btn-outline-secondary:disabled {
+ color: #6c757d;
+ background-color: transparent
+}
+
+.btn-outline-success {
+ color: #198754;
+ border-color: #198754
+}
+
+.btn-outline-success:hover {
+ color: #fff;
+ background-color: #198754;
+ border-color: #198754
+}
+
+.btn-check:focus+.btn-outline-success,
+.btn-outline-success:focus {
+ box-shadow: 0 0 0 .25rem rgba(25, 135, 84, .5)
+}
+
+.btn-check:active+.btn-outline-success,
+.btn-check:checked+.btn-outline-success,
+.btn-outline-success.active,
+.btn-outline-success.dropdown-toggle.show,
+.btn-outline-success:active {
+ color: #fff;
+ background-color: #198754;
+ border-color: #198754
+}
+
+.btn-check:active+.btn-outline-success:focus,
+.btn-check:checked+.btn-outline-success:focus,
+.btn-outline-success.active:focus,
+.btn-outline-success.dropdown-toggle.show:focus,
+.btn-outline-success:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(25, 135, 84, .5)
+}
+
+.btn-outline-success.disabled,
+.btn-outline-success:disabled {
+ color: #198754;
+ background-color: transparent
+}
+
+.btn-outline-info {
+ color: #0dcaf0;
+ border-color: #0dcaf0
+}
+
+.btn-outline-info:hover {
+ color: #000;
+ background-color: #0dcaf0;
+ border-color: #0dcaf0
+}
+
+.btn-check:focus+.btn-outline-info,
+.btn-outline-info:focus {
+ box-shadow: 0 0 0 .25rem rgba(13, 202, 240, .5)
+}
+
+.btn-check:active+.btn-outline-info,
+.btn-check:checked+.btn-outline-info,
+.btn-outline-info.active,
+.btn-outline-info.dropdown-toggle.show,
+.btn-outline-info:active {
+ color: #000;
+ background-color: #0dcaf0;
+ border-color: #0dcaf0
+}
+
+.btn-check:active+.btn-outline-info:focus,
+.btn-check:checked+.btn-outline-info:focus,
+.btn-outline-info.active:focus,
+.btn-outline-info.dropdown-toggle.show:focus,
+.btn-outline-info:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(13, 202, 240, .5)
+}
+
+.btn-outline-info.disabled,
+.btn-outline-info:disabled {
+ color: #0dcaf0;
+ background-color: transparent
+}
+
+.btn-outline-warning {
+ color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-outline-warning:hover {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-check:focus+.btn-outline-warning,
+.btn-outline-warning:focus {
+ box-shadow: 0 0 0 .25rem rgba(255, 193, 7, .5)
+}
+
+.btn-check:active+.btn-outline-warning,
+.btn-check:checked+.btn-outline-warning,
+.btn-outline-warning.active,
+.btn-outline-warning.dropdown-toggle.show,
+.btn-outline-warning:active {
+ color: #000;
+ background-color: #ffc107;
+ border-color: #ffc107
+}
+
+.btn-check:active+.btn-outline-warning:focus,
+.btn-check:checked+.btn-outline-warning:focus,
+.btn-outline-warning.active:focus,
+.btn-outline-warning.dropdown-toggle.show:focus,
+.btn-outline-warning:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(255, 193, 7, .5)
+}
+
+.btn-outline-warning.disabled,
+.btn-outline-warning:disabled {
+ color: #ffc107;
+ background-color: transparent
+}
+
+.btn-outline-danger {
+ color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-outline-danger:hover {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-check:focus+.btn-outline-danger,
+.btn-outline-danger:focus {
+ box-shadow: 0 0 0 .25rem rgba(220, 53, 69, .5)
+}
+
+.btn-check:active+.btn-outline-danger,
+.btn-check:checked+.btn-outline-danger,
+.btn-outline-danger.active,
+.btn-outline-danger.dropdown-toggle.show,
+.btn-outline-danger:active {
+ color: #fff;
+ background-color: #dc3545;
+ border-color: #dc3545
+}
+
+.btn-check:active+.btn-outline-danger:focus,
+.btn-check:checked+.btn-outline-danger:focus,
+.btn-outline-danger.active:focus,
+.btn-outline-danger.dropdown-toggle.show:focus,
+.btn-outline-danger:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(220, 53, 69, .5)
+}
+
+.btn-outline-danger.disabled,
+.btn-outline-danger:disabled {
+ color: #dc3545;
+ background-color: transparent
+}
+
+.btn-outline-light {
+ color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-outline-light:hover {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-check:focus+.btn-outline-light,
+.btn-outline-light:focus {
+ box-shadow: 0 0 0 .25rem rgba(248, 249, 250, .5)
+}
+
+.btn-check:active+.btn-outline-light,
+.btn-check:checked+.btn-outline-light,
+.btn-outline-light.active,
+.btn-outline-light.dropdown-toggle.show,
+.btn-outline-light:active {
+ color: #000;
+ background-color: #f8f9fa;
+ border-color: #f8f9fa
+}
+
+.btn-check:active+.btn-outline-light:focus,
+.btn-check:checked+.btn-outline-light:focus,
+.btn-outline-light.active:focus,
+.btn-outline-light.dropdown-toggle.show:focus,
+.btn-outline-light:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(248, 249, 250, .5)
+}
+
+.btn-outline-light.disabled,
+.btn-outline-light:disabled {
+ color: #f8f9fa;
+ background-color: transparent
+}
+
+.btn-outline-dark {
+ color: #212529;
+ border-color: #212529
+}
+
+.btn-outline-dark:hover {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-check:focus+.btn-outline-dark,
+.btn-outline-dark:focus {
+ box-shadow: 0 0 0 .25rem rgba(33, 37, 41, .5)
+}
+
+.btn-check:active+.btn-outline-dark,
+.btn-check:checked+.btn-outline-dark,
+.btn-outline-dark.active,
+.btn-outline-dark.dropdown-toggle.show,
+.btn-outline-dark:active {
+ color: #fff;
+ background-color: #212529;
+ border-color: #212529
+}
+
+.btn-check:active+.btn-outline-dark:focus,
+.btn-check:checked+.btn-outline-dark:focus,
+.btn-outline-dark.active:focus,
+.btn-outline-dark.dropdown-toggle.show:focus,
+.btn-outline-dark:active:focus {
+ box-shadow: 0 0 0 .25rem rgba(33, 37, 41, .5)
+}
+
+.btn-outline-dark.disabled,
+.btn-outline-dark:disabled {
+ color: #212529;
+ background-color: transparent
+}
+
+.btn-link {
+ font-weight: 400;
+ color: #0d6efd;
+ text-decoration: underline
+}
+
+.btn-link:hover {
+ color: #0a58ca
+}
+
+.btn-link.disabled,
+.btn-link:disabled {
+ color: #6c757d
+}
+
+.btn-group-lg>.btn,
+.btn-lg {
+ padding: .5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: .3rem
+}
+
+.btn-group-sm>.btn,
+.btn-sm {
+ padding: .25rem .5rem;
+ font-size: .875rem;
+ border-radius: .2rem
+}
+
+.fade {
+ transition: opacity .15s linear
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .fade {
+ transition: none
+ }
+}
+
+.fade:not(.show) {
+ opacity: 0
+}
+
+.collapse:not(.show) {
+ display: none
+}
+
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ transition: height .35s ease
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .collapsing {
+ transition: none
+ }
+}
+
+.dropdown,
+.dropend,
+.dropstart,
+.dropup {
+ position: relative
+}
+
+.dropdown-toggle {
+ white-space: nowrap
+}
+
+.dropdown-toggle::after {
+ display: inline-block;
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: .3em solid;
+ border-right: .3em solid transparent;
+ border-bottom: 0;
+ border-left: .3em solid transparent
+}
+
+.dropdown-toggle:empty::after {
+ margin-left: 0
+}
+
+.dropdown-menu {
+ position: absolute;
+ z-index: 1000;
+ display: none;
+ min-width: 10rem;
+ padding: .5rem 0;
+ margin: 0;
+ font-size: 1rem;
+ color: #212529;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: .25rem
+}
+
+.dropdown-menu[data-bs-popper] {
+ top: 100%;
+ left: 0;
+ margin-top: .125rem
+}
+
+.dropdown-menu-start {
+ --bs-position: start
+}
+
+.dropdown-menu-start[data-bs-popper] {
+ right: auto;
+ left: 0
+}
+
+.dropdown-menu-end {
+ --bs-position: end
+}
+
+.dropdown-menu-end[data-bs-popper] {
+ right: 0;
+ left: auto
+}
+
+@media (min-width:576px) {
+ .dropdown-menu-sm-start {
+ --bs-position: start
+ }
+
+ .dropdown-menu-sm-start[data-bs-popper] {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-sm-end {
+ --bs-position: end
+ }
+
+ .dropdown-menu-sm-end[data-bs-popper] {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width:768px) {
+ .dropdown-menu-md-start {
+ --bs-position: start
+ }
+
+ .dropdown-menu-md-start[data-bs-popper] {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-md-end {
+ --bs-position: end
+ }
+
+ .dropdown-menu-md-end[data-bs-popper] {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width:992px) {
+ .dropdown-menu-lg-start {
+ --bs-position: start
+ }
+
+ .dropdown-menu-lg-start[data-bs-popper] {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-lg-end {
+ --bs-position: end
+ }
+
+ .dropdown-menu-lg-end[data-bs-popper] {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width:1200px) {
+ .dropdown-menu-xl-start {
+ --bs-position: start
+ }
+
+ .dropdown-menu-xl-start[data-bs-popper] {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-xl-end {
+ --bs-position: end
+ }
+
+ .dropdown-menu-xl-end[data-bs-popper] {
+ right: 0;
+ left: auto
+ }
+}
+
+@media (min-width:1400px) {
+ .dropdown-menu-xxl-start {
+ --bs-position: start
+ }
+
+ .dropdown-menu-xxl-start[data-bs-popper] {
+ right: auto;
+ left: 0
+ }
+
+ .dropdown-menu-xxl-end {
+ --bs-position: end
+ }
+
+ .dropdown-menu-xxl-end[data-bs-popper] {
+ right: 0;
+ left: auto
+ }
+}
+
+.dropup .dropdown-menu[data-bs-popper] {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: .125rem
+}
+
+.dropup .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: 0;
+ border-right: .3em solid transparent;
+ border-bottom: .3em solid;
+ border-left: .3em solid transparent
+}
+
+.dropup .dropdown-toggle:empty::after {
+ margin-left: 0
+}
+
+.dropend .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: auto;
+ left: 100%;
+ margin-top: 0;
+ margin-left: .125rem
+}
+
+.dropend .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: .3em solid transparent;
+ border-right: 0;
+ border-bottom: .3em solid transparent;
+ border-left: .3em solid
+}
+
+.dropend .dropdown-toggle:empty::after {
+ margin-left: 0
+}
+
+.dropend .dropdown-toggle::after {
+ vertical-align: 0
+}
+
+.dropstart .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: 100%;
+ left: auto;
+ margin-top: 0;
+ margin-right: .125rem
+}
+
+.dropstart .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: .255em;
+ vertical-align: .255em;
+ content: ""
+}
+
+.dropstart .dropdown-toggle::after {
+ display: none
+}
+
+.dropstart .dropdown-toggle::before {
+ display: inline-block;
+ margin-right: .255em;
+ vertical-align: .255em;
+ content: "";
+ border-top: .3em solid transparent;
+ border-right: .3em solid;
+ border-bottom: .3em solid transparent
+}
+
+.dropstart .dropdown-toggle:empty::after {
+ margin-left: 0
+}
+
+.dropstart .dropdown-toggle::before {
+ vertical-align: 0
+}
+
+.dropdown-divider {
+ height: 0;
+ margin: .5rem 0;
+ overflow: hidden;
+ border-top: 1px solid rgba(0, 0, 0, .15)
+}
+
+.dropdown-item {
+ display: block;
+ width: 100%;
+ padding: .25rem 1rem;
+ clear: both;
+ font-weight: 400;
+ color: #212529;
+ text-align: inherit;
+ text-decoration: none;
+ white-space: nowrap;
+ background-color: transparent;
+ border: 0
+}
+
+.dropdown-item:focus,
+.dropdown-item:hover {
+ color: #1e2125;
+ background-color: #e9ecef
+}
+
+.dropdown-item.active,
+.dropdown-item:active {
+ color: #fff;
+ text-decoration: none;
+ background-color: #0d6efd
+}
+
+.dropdown-item.disabled,
+.dropdown-item:disabled {
+ color: #adb5bd;
+ pointer-events: none;
+ background-color: transparent
+}
+
+.dropdown-menu.show {
+ display: block
+}
+
+.dropdown-header {
+ display: block;
+ padding: .5rem 1rem;
+ margin-bottom: 0;
+ font-size: .875rem;
+ color: #6c757d;
+ white-space: nowrap
+}
+
+.dropdown-item-text {
+ display: block;
+ padding: .25rem 1rem;
+ color: #212529
+}
+
+.dropdown-menu-dark {
+ color: #dee2e6;
+ background-color: #343a40;
+ border-color: rgba(0, 0, 0, .15)
+}
+
+.dropdown-menu-dark .dropdown-item {
+ color: #dee2e6
+}
+
+.dropdown-menu-dark .dropdown-item:focus,
+.dropdown-menu-dark .dropdown-item:hover {
+ color: #fff;
+ background-color: rgba(255, 255, 255, .15)
+}
+
+.dropdown-menu-dark .dropdown-item.active,
+.dropdown-menu-dark .dropdown-item:active {
+ color: #fff;
+ background-color: #0d6efd
+}
+
+.dropdown-menu-dark .dropdown-item.disabled,
+.dropdown-menu-dark .dropdown-item:disabled {
+ color: #adb5bd
+}
+
+.dropdown-menu-dark .dropdown-divider {
+ border-color: rgba(0, 0, 0, .15)
+}
+
+.dropdown-menu-dark .dropdown-item-text {
+ color: #dee2e6
+}
+
+.dropdown-menu-dark .dropdown-header {
+ color: #adb5bd
+}
+
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle
+}
+
+.btn-group-vertical>.btn,
+.btn-group>.btn {
+ position: relative;
+ flex: 1 1 auto
+}
+
+.btn-group-vertical>.btn-check:checked+.btn,
+.btn-group-vertical>.btn-check:focus+.btn,
+.btn-group-vertical>.btn.active,
+.btn-group-vertical>.btn:active,
+.btn-group-vertical>.btn:focus,
+.btn-group-vertical>.btn:hover,
+.btn-group>.btn-check:checked+.btn,
+.btn-group>.btn-check:focus+.btn,
+.btn-group>.btn.active,
+.btn-group>.btn:active,
+.btn-group>.btn:focus,
+.btn-group>.btn:hover {
+ z-index: 1
+}
+
+.btn-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start
+}
+
+.btn-toolbar .input-group {
+ width: auto
+}
+
+.btn-group>.btn-group:not(:first-child),
+.btn-group>.btn:not(:first-child) {
+ margin-left: -1px
+}
+
+.btn-group>.btn-group:not(:last-child)>.btn,
+.btn-group>.btn:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+}
+
+.btn-group>.btn-group:not(:first-child)>.btn,
+.btn-group>.btn:nth-child(n+3),
+.btn-group>:not(.btn-check)+.btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.dropdown-toggle-split {
+ padding-right: .5625rem;
+ padding-left: .5625rem
+}
+
+.dropdown-toggle-split::after,
+.dropend .dropdown-toggle-split::after,
+.dropup .dropdown-toggle-split::after {
+ margin-left: 0
+}
+
+.dropstart .dropdown-toggle-split::before {
+ margin-right: 0
+}
+
+.btn-group-sm>.btn+.dropdown-toggle-split,
+.btn-sm+.dropdown-toggle-split {
+ padding-right: .375rem;
+ padding-left: .375rem
+}
+
+.btn-group-lg>.btn+.dropdown-toggle-split,
+.btn-lg+.dropdown-toggle-split {
+ padding-right: .75rem;
+ padding-left: .75rem
+}
+
+.btn-group-vertical {
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center
+}
+
+.btn-group-vertical>.btn,
+.btn-group-vertical>.btn-group {
+ width: 100%
+}
+
+.btn-group-vertical>.btn-group:not(:first-child),
+.btn-group-vertical>.btn:not(:first-child) {
+ margin-top: -1px
+}
+
+.btn-group-vertical>.btn-group:not(:last-child)>.btn,
+.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.btn-group-vertical>.btn-group:not(:first-child)>.btn,
+.btn-group-vertical>.btn~.btn {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0
+}
+
+.nav {
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none
+}
+
+.nav-link {
+ display: block;
+ padding: .5rem 1rem;
+ color: #0d6efd;
+ text-decoration: none;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .nav-link {
+ transition: none
+ }
+}
+
+.nav-link:focus,
+.nav-link:hover {
+ color: #0a58ca
+}
+
+.nav-link.disabled {
+ color: #6c757d;
+ pointer-events: none;
+ cursor: default
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #dee2e6
+}
+
+.nav-tabs .nav-link {
+ margin-bottom: -1px;
+ background: 0 0;
+ border: 1px solid transparent;
+ border-top-left-radius: .25rem;
+ border-top-right-radius: .25rem
+}
+
+.nav-tabs .nav-link:focus,
+.nav-tabs .nav-link:hover {
+ border-color: #e9ecef #e9ecef #dee2e6;
+ isolation: isolate
+}
+
+.nav-tabs .nav-link.disabled {
+ color: #6c757d;
+ background-color: transparent;
+ border-color: transparent
+}
+
+.nav-tabs .nav-item.show .nav-link,
+.nav-tabs .nav-link.active {
+ color: #495057;
+ background-color: #fff;
+ border-color: #dee2e6 #dee2e6 #fff
+}
+
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0
+}
+
+.nav-pills .nav-link {
+ background: 0 0;
+ border: 0;
+ border-radius: .25rem
+}
+
+.nav-pills .nav-link.active,
+.nav-pills .show>.nav-link {
+ color: #fff;
+ background-color: #0d6efd
+}
+
+.nav-fill .nav-item,
+.nav-fill>.nav-link {
+ flex: 1 1 auto;
+ text-align: center
+}
+
+.nav-justified .nav-item,
+.nav-justified>.nav-link {
+ flex-basis: 0;
+ flex-grow: 1;
+ text-align: center
+}
+
+.nav-fill .nav-item .nav-link,
+.nav-justified .nav-item .nav-link {
+ width: 100%
+}
+
+.tab-content>.tab-pane {
+ display: none
+}
+
+.tab-content>.active {
+ display: block
+}
+
+.navbar {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ padding-top: .5rem;
+ padding-bottom: .5rem
+}
+
+.navbar>.container,
+.navbar>.container-fluid,
+.navbar>.container-lg,
+.navbar>.container-md,
+.navbar>.container-sm,
+.navbar>.container-xl,
+.navbar>.container-xxl {
+ display: flex;
+ flex-wrap: inherit;
+ align-items: center;
+ justify-content: space-between
+}
+
+.navbar-brand {
+ padding-top: .3125rem;
+ padding-bottom: .3125rem;
+ margin-right: 1rem;
+ font-size: 1.25rem;
+ text-decoration: none;
+ white-space: nowrap
+}
+
+.navbar-nav {
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none
+}
+
+.navbar-nav .nav-link {
+ padding-right: 0;
+ padding-left: 0
+}
+
+.navbar-nav .dropdown-menu {
+ position: static
+}
+
+.navbar-text {
+ padding-top: .5rem;
+ padding-bottom: .5rem
+}
+
+.navbar-collapse {
+ flex-basis: 100%;
+ flex-grow: 1;
+ align-items: center
+}
+
+.navbar-toggler {
+ padding: .25rem .75rem;
+ font-size: 1.25rem;
+ line-height: 1;
+ background-color: transparent;
+ border: 1px solid transparent;
+ border-radius: .25rem;
+ transition: box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .navbar-toggler {
+ transition: none
+ }
+}
+
+.navbar-toggler:hover {
+ text-decoration: none
+}
+
+.navbar-toggler:focus {
+ text-decoration: none;
+ outline: 0;
+ box-shadow: 0 0 0 .25rem
+}
+
+.navbar-toggler-icon {
+ display: inline-block;
+ width: 1.5em;
+ height: 1.5em;
+ vertical-align: middle;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 100%
+}
+
+.navbar-nav-scroll {
+ max-height: var(--bs-scroll-height, 75vh);
+ overflow-y: auto
+}
+
+@media (min-width:576px) {
+ .navbar-expand-sm {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-sm .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-sm .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-sm .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-sm .navbar-nav-scroll {
+ overflow: visible
+ }
+
+ .navbar-expand-sm .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto
+ }
+
+ .navbar-expand-sm .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width:768px) {
+ .navbar-expand-md {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-md .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-md .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-md .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-md .navbar-nav-scroll {
+ overflow: visible
+ }
+
+ .navbar-expand-md .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto
+ }
+
+ .navbar-expand-md .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width:992px) {
+ .navbar-expand-lg {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-lg .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-lg .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-lg .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-lg .navbar-nav-scroll {
+ overflow: visible
+ }
+
+ .navbar-expand-lg .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto
+ }
+
+ .navbar-expand-lg .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width:1200px) {
+ .navbar-expand-xl {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-xl .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-xl .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-xl .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-xl .navbar-nav-scroll {
+ overflow: visible
+ }
+
+ .navbar-expand-xl .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto
+ }
+
+ .navbar-expand-xl .navbar-toggler {
+ display: none
+ }
+}
+
+@media (min-width:1400px) {
+ .navbar-expand-xxl {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+ }
+
+ .navbar-expand-xxl .navbar-nav {
+ flex-direction: row
+ }
+
+ .navbar-expand-xxl .navbar-nav .dropdown-menu {
+ position: absolute
+ }
+
+ .navbar-expand-xxl .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+ }
+
+ .navbar-expand-xxl .navbar-nav-scroll {
+ overflow: visible
+ }
+
+ .navbar-expand-xxl .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto
+ }
+
+ .navbar-expand-xxl .navbar-toggler {
+ display: none
+ }
+}
+
+.navbar-expand {
+ flex-wrap: nowrap;
+ justify-content: flex-start
+}
+
+.navbar-expand .navbar-nav {
+ flex-direction: row
+}
+
+.navbar-expand .navbar-nav .dropdown-menu {
+ position: absolute
+}
+
+.navbar-expand .navbar-nav .nav-link {
+ padding-right: .5rem;
+ padding-left: .5rem
+}
+
+.navbar-expand .navbar-nav-scroll {
+ overflow: visible
+}
+
+.navbar-expand .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto
+}
+
+.navbar-expand .navbar-toggler {
+ display: none
+}
+
+.navbar-light .navbar-brand {
+ color: rgba(0, 0, 0, .9)
+}
+
+.navbar-light .navbar-brand:focus,
+.navbar-light .navbar-brand:hover {
+ color: rgba(0, 0, 0, .9)
+}
+
+.navbar-light .navbar-nav .nav-link {
+ color: rgba(0, 0, 0, .55)
+}
+
+.navbar-light .navbar-nav .nav-link:focus,
+.navbar-light .navbar-nav .nav-link:hover {
+ color: rgba(0, 0, 0, .7)
+}
+
+.navbar-light .navbar-nav .nav-link.disabled {
+ color: rgba(0, 0, 0, .3)
+}
+
+.navbar-light .navbar-nav .nav-link.active,
+.navbar-light .navbar-nav .show>.nav-link {
+ color: rgba(0, 0, 0, .9)
+}
+
+.navbar-light .navbar-toggler {
+ color: rgba(0, 0, 0, .55);
+ border-color: rgba(0, 0, 0, .1)
+}
+
+.navbar-light .navbar-toggler-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")
+}
+
+.navbar-light .navbar-text {
+ color: rgba(0, 0, 0, .55)
+}
+
+.navbar-light .navbar-text a,
+.navbar-light .navbar-text a:focus,
+.navbar-light .navbar-text a:hover {
+ color: rgba(0, 0, 0, .9)
+}
+
+.navbar-dark .navbar-brand {
+ color: #fff
+}
+
+.navbar-dark .navbar-brand:focus,
+.navbar-dark .navbar-brand:hover {
+ color: #fff
+}
+
+.navbar-dark .navbar-nav .nav-link {
+ color: rgba(255, 255, 255, .55)
+}
+
+.navbar-dark .navbar-nav .nav-link:focus,
+.navbar-dark .navbar-nav .nav-link:hover {
+ color: rgba(255, 255, 255, .75)
+}
+
+.navbar-dark .navbar-nav .nav-link.disabled {
+ color: rgba(255, 255, 255, .25)
+}
+
+.navbar-dark .navbar-nav .nav-link.active,
+.navbar-dark .navbar-nav .show>.nav-link {
+ color: #fff
+}
+
+.navbar-dark .navbar-toggler {
+ color: rgba(255, 255, 255, .55);
+ border-color: rgba(255, 255, 255, .1)
+}
+
+.navbar-dark .navbar-toggler-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")
+}
+
+.navbar-dark .navbar-text {
+ color: rgba(255, 255, 255, .55)
+}
+
+.navbar-dark .navbar-text a,
+.navbar-dark .navbar-text a:focus,
+.navbar-dark .navbar-text a:hover {
+ color: #fff
+}
+
+.card {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ word-wrap: break-word;
+ background-color: #fff;
+ background-clip: border-box;
+ border: 1px solid rgba(0, 0, 0, .125);
+ border-radius: .25rem
+}
+
+.card>hr {
+ margin-right: 0;
+ margin-left: 0
+}
+
+.card>.list-group {
+ border-top: inherit;
+ border-bottom: inherit
+}
+
+.card>.list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: calc(.25rem - 1px);
+ border-top-right-radius: calc(.25rem - 1px)
+}
+
+.card>.list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: calc(.25rem - 1px);
+ border-bottom-left-radius: calc(.25rem - 1px)
+}
+
+.card>.card-header+.list-group,
+.card>.list-group+.card-footer {
+ border-top: 0
+}
+
+.card-body {
+ flex: 1 1 auto;
+ padding: 1rem 1rem
+}
+
+.card-title {
+ margin-bottom: .5rem
+}
+
+.card-subtitle {
+ margin-top: -.25rem;
+ margin-bottom: 0
+}
+
+.card-text:last-child {
+ margin-bottom: 0
+}
+
+.card-link:hover {
+ text-decoration: none
+}
+
+.card-link+.card-link {
+ margin-left: 1rem
+}
+
+.card-header {
+ padding: .5rem 1rem;
+ margin-bottom: 0;
+ background-color: rgba(0, 0, 0, .03);
+ border-bottom: 1px solid rgba(0, 0, 0, .125)
+}
+
+.card-header:first-child {
+ border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0
+}
+
+.card-footer {
+ padding: .5rem 1rem;
+ background-color: rgba(0, 0, 0, .03);
+ border-top: 1px solid rgba(0, 0, 0, .125)
+}
+
+.card-footer:last-child {
+ border-radius: 0 0 calc(.25rem - 1px) calc(.25rem - 1px)
+}
+
+.card-header-tabs {
+ margin-right: -.5rem;
+ margin-bottom: -.5rem;
+ margin-left: -.5rem;
+ border-bottom: 0
+}
+
+.card-header-pills {
+ margin-right: -.5rem;
+ margin-left: -.5rem
+}
+
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 1rem;
+ border-radius: calc(.25rem - 1px)
+}
+
+.card-img,
+.card-img-bottom,
+.card-img-top {
+ width: 100%
+}
+
+.card-img,
+.card-img-top {
+ border-top-left-radius: calc(.25rem - 1px);
+ border-top-right-radius: calc(.25rem - 1px)
+}
+
+.card-img,
+.card-img-bottom {
+ border-bottom-right-radius: calc(.25rem - 1px);
+ border-bottom-left-radius: calc(.25rem - 1px)
+}
+
+.card-group>.card {
+ margin-bottom: .75rem
+}
+
+@media (min-width:576px) {
+ .card-group {
+ display: flex;
+ flex-flow: row wrap
+ }
+
+ .card-group>.card {
+ flex: 1 0 0%;
+ margin-bottom: 0
+ }
+
+ .card-group>.card+.card {
+ margin-left: 0;
+ border-left: 0
+ }
+
+ .card-group>.card:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+ }
+
+ .card-group>.card:not(:last-child) .card-header,
+ .card-group>.card:not(:last-child) .card-img-top {
+ border-top-right-radius: 0
+ }
+
+ .card-group>.card:not(:last-child) .card-footer,
+ .card-group>.card:not(:last-child) .card-img-bottom {
+ border-bottom-right-radius: 0
+ }
+
+ .card-group>.card:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+ }
+
+ .card-group>.card:not(:first-child) .card-header,
+ .card-group>.card:not(:first-child) .card-img-top {
+ border-top-left-radius: 0
+ }
+
+ .card-group>.card:not(:first-child) .card-footer,
+ .card-group>.card:not(:first-child) .card-img-bottom {
+ border-bottom-left-radius: 0
+ }
+}
+
+.accordion-button {
+ position: relative;
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding: 1rem 1.25rem;
+ font-size: 1rem;
+ color: #212529;
+ text-align: left;
+ background-color: #fff;
+ border: 0;
+ border-radius: 0;
+ overflow-anchor: none;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .accordion-button {
+ transition: none
+ }
+}
+
+.accordion-button:not(.collapsed) {
+ color: #0c63e4;
+ background-color: #e7f1ff;
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .125)
+}
+
+.accordion-button:not(.collapsed)::after {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ transform: rotate(-180deg)
+}
+
+.accordion-button::after {
+ flex-shrink: 0;
+ width: 1.25rem;
+ height: 1.25rem;
+ margin-left: auto;
+ content: "";
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-size: 1.25rem;
+ transition: transform .2s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .accordion-button::after {
+ transition: none
+ }
+}
+
+.accordion-button:hover {
+ z-index: 2
+}
+
+.accordion-button:focus {
+ z-index: 3;
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.accordion-header {
+ margin-bottom: 0
+}
+
+.accordion-item {
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, .125)
+}
+
+.accordion-item:first-of-type {
+ border-top-left-radius: .25rem;
+ border-top-right-radius: .25rem
+}
+
+.accordion-item:first-of-type .accordion-button {
+ border-top-left-radius: calc(.25rem - 1px);
+ border-top-right-radius: calc(.25rem - 1px)
+}
+
+.accordion-item:not(:first-of-type) {
+ border-top: 0
+}
+
+.accordion-item:last-of-type {
+ border-bottom-right-radius: .25rem;
+ border-bottom-left-radius: .25rem
+}
+
+.accordion-item:last-of-type .accordion-button.collapsed {
+ border-bottom-right-radius: calc(.25rem - 1px);
+ border-bottom-left-radius: calc(.25rem - 1px)
+}
+
+.accordion-item:last-of-type .accordion-collapse {
+ border-bottom-right-radius: .25rem;
+ border-bottom-left-radius: .25rem
+}
+
+.accordion-body {
+ padding: 1rem 1.25rem
+}
+
+.accordion-flush .accordion-collapse {
+ border-width: 0
+}
+
+.accordion-flush .accordion-item {
+ border-right: 0;
+ border-left: 0;
+ border-radius: 0
+}
+
+.accordion-flush .accordion-item:first-child {
+ border-top: 0
+}
+
+.accordion-flush .accordion-item:last-child {
+ border-bottom: 0
+}
+
+.accordion-flush .accordion-item .accordion-button {
+ border-radius: 0
+}
+
+.breadcrumb {
+ display: flex;
+ flex-wrap: wrap;
+ padding: 0 0;
+ margin-bottom: 1rem;
+ list-style: none
+}
+
+.breadcrumb-item+.breadcrumb-item {
+ padding-left: .5rem
+}
+
+.breadcrumb-item+.breadcrumb-item::before {
+ float: left;
+ padding-right: .5rem;
+ color: #6c757d;
+ content: var(--bs-breadcrumb-divider, "/")
+}
+
+.breadcrumb-item.active {
+ color: #6c757d
+}
+
+.pagination {
+ display: flex;
+ padding-left: 0;
+ list-style: none
+}
+
+.page-link {
+ position: relative;
+ display: block;
+ color: #0d6efd;
+ text-decoration: none;
+ background-color: #fff;
+ border: 1px solid #dee2e6;
+ transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .page-link {
+ transition: none
+ }
+}
+
+.page-link:hover {
+ z-index: 2;
+ color: #0a58ca;
+ background-color: #e9ecef;
+ border-color: #dee2e6
+}
+
+.page-link:focus {
+ z-index: 3;
+ color: #0a58ca;
+ background-color: #e9ecef;
+ outline: 0;
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25)
+}
+
+.page-item:not(:first-child) .page-link {
+ margin-left: -1px
+}
+
+.page-item.active .page-link {
+ z-index: 3;
+ color: #fff;
+ background-color: #0d6efd;
+ border-color: #0d6efd
+}
+
+.page-item.disabled .page-link {
+ color: #6c757d;
+ pointer-events: none;
+ background-color: #fff;
+ border-color: #dee2e6
+}
+
+.page-link {
+ padding: .375rem .75rem
+}
+
+.page-item:first-child .page-link {
+ border-top-left-radius: .25rem;
+ border-bottom-left-radius: .25rem
+}
+
+.page-item:last-child .page-link {
+ border-top-right-radius: .25rem;
+ border-bottom-right-radius: .25rem
+}
+
+.pagination-lg .page-link {
+ padding: .75rem 1.5rem;
+ font-size: 1.25rem
+}
+
+.pagination-lg .page-item:first-child .page-link {
+ border-top-left-radius: .3rem;
+ border-bottom-left-radius: .3rem
+}
+
+.pagination-lg .page-item:last-child .page-link {
+ border-top-right-radius: .3rem;
+ border-bottom-right-radius: .3rem
+}
+
+.pagination-sm .page-link {
+ padding: .25rem .5rem;
+ font-size: .875rem
+}
+
+.pagination-sm .page-item:first-child .page-link {
+ border-top-left-radius: .2rem;
+ border-bottom-left-radius: .2rem
+}
+
+.pagination-sm .page-item:last-child .page-link {
+ border-top-right-radius: .2rem;
+ border-bottom-right-radius: .2rem
+}
+
+.badge {
+ display: inline-block;
+ padding: .35em .65em;
+ font-size: .75em;
+ font-weight: 700;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25rem
+}
+
+.badge:empty {
+ display: none
+}
+
+.btn .badge {
+ position: relative;
+ top: -1px
+}
+
+.alert {
+ position: relative;
+ padding: 1rem 1rem;
+ margin-bottom: 1rem;
+ border: 1px solid transparent;
+ border-radius: .25rem
+}
+
+.alert-heading {
+ color: inherit
+}
+
+.alert-link {
+ font-weight: 700
+}
+
+.alert-dismissible {
+ padding-right: 3rem
+}
+
+.alert-dismissible .btn-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ padding: 1.25rem 1rem
+}
+
+.alert-primary {
+ color: #084298;
+ background-color: #cfe2ff;
+ border-color: #b6d4fe
+}
+
+.alert-primary .alert-link {
+ color: #06357a
+}
+
+.alert-secondary {
+ color: #41464b;
+ background-color: #e2e3e5;
+ border-color: #d3d6d8
+}
+
+.alert-secondary .alert-link {
+ color: #34383c
+}
+
+.alert-success {
+ color: #0f5132;
+ background-color: #d1e7dd;
+ border-color: #badbcc
+}
+
+.alert-success .alert-link {
+ color: #0c4128
+}
+
+.alert-info {
+ color: #055160;
+ background-color: #cff4fc;
+ border-color: #b6effb
+}
+
+.alert-info .alert-link {
+ color: #04414d
+}
+
+.alert-warning {
+ color: #664d03;
+ background-color: #fff3cd;
+ border-color: #ffecb5
+}
+
+.alert-warning .alert-link {
+ color: #523e02
+}
+
+.alert-danger {
+ color: #842029;
+ background-color: #f8d7da;
+ border-color: #f5c2c7
+}
+
+.alert-danger .alert-link {
+ color: #6a1a21
+}
+
+.alert-light {
+ color: #636464;
+ background-color: #fefefe;
+ border-color: #fdfdfe
+}
+
+.alert-light .alert-link {
+ color: #4f5050
+}
+
+.alert-dark {
+ color: #141619;
+ background-color: #d3d3d4;
+ border-color: #bcbebf
+}
+
+.alert-dark .alert-link {
+ color: #101214
+}
+
+@-webkit-keyframes progress-bar-stripes {
+ 0% {
+ background-position-x: 1rem
+ }
+}
+
+@keyframes progress-bar-stripes {
+ 0% {
+ background-position-x: 1rem
+ }
+}
+
+.progress {
+ display: flex;
+ height: 1rem;
+ overflow: hidden;
+ font-size: .75rem;
+ background-color: #e9ecef;
+ border-radius: .25rem
+}
+
+.progress-bar {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ overflow: hidden;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ background-color: #0d6efd;
+ transition: width .6s ease
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .progress-bar {
+ transition: none
+ }
+}
+
+.progress-bar-striped {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-size: 1rem 1rem
+}
+
+.progress-bar-animated {
+ -webkit-animation: 1s linear infinite progress-bar-stripes;
+ animation: 1s linear infinite progress-bar-stripes
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .progress-bar-animated {
+ -webkit-animation: none;
+ animation: none
+ }
+}
+
+.list-group {
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ border-radius: .25rem
+}
+
+.list-group-numbered {
+ list-style-type: none;
+ counter-reset: section
+}
+
+.list-group-numbered>li::before {
+ content: counters(section, ".") ". ";
+ counter-increment: section
+}
+
+.list-group-item-action {
+ width: 100%;
+ color: #495057;
+ text-align: inherit
+}
+
+.list-group-item-action:focus,
+.list-group-item-action:hover {
+ z-index: 1;
+ color: #495057;
+ text-decoration: none;
+ background-color: #f8f9fa
+}
+
+.list-group-item-action:active {
+ color: #212529;
+ background-color: #e9ecef
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: .5rem 1rem;
+ color: #212529;
+ text-decoration: none;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, .125)
+}
+
+.list-group-item:first-child {
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit
+}
+
+.list-group-item:last-child {
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit
+}
+
+.list-group-item.disabled,
+.list-group-item:disabled {
+ color: #6c757d;
+ pointer-events: none;
+ background-color: #fff
+}
+
+.list-group-item.active {
+ z-index: 2;
+ color: #fff;
+ /*background-color: #0d6efd;*/
+ /*border-color: #0d6efd*/
+}
+
+.list-group-item+.list-group-item {
+ border-top-width: 0
+}
+
+.list-group-item+.list-group-item.active {
+ margin-top: -1px;
+ border-top-width: 1px
+}
+
+.list-group-horizontal {
+ flex-direction: row
+}
+
+.list-group-horizontal>.list-group-item:first-child {
+ border-bottom-left-radius: .25rem;
+ border-top-right-radius: 0
+}
+
+.list-group-horizontal>.list-group-item:last-child {
+ border-top-right-radius: .25rem;
+ border-bottom-left-radius: 0
+}
+
+.list-group-horizontal>.list-group-item.active {
+ margin-top: 0
+}
+
+.list-group-horizontal>.list-group-item+.list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+}
+
+.list-group-horizontal>.list-group-item+.list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+}
+
+@media (min-width:576px) {
+ .list-group-horizontal-sm {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-sm>.list-group-item:first-child {
+ border-bottom-left-radius: .25rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-sm>.list-group-item:last-child {
+ border-top-right-radius: .25rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-sm>.list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-sm>.list-group-item+.list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-sm>.list-group-item+.list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width:768px) {
+ .list-group-horizontal-md {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-md>.list-group-item:first-child {
+ border-bottom-left-radius: .25rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-md>.list-group-item:last-child {
+ border-top-right-radius: .25rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-md>.list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-md>.list-group-item+.list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-md>.list-group-item+.list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width:992px) {
+ .list-group-horizontal-lg {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-lg>.list-group-item:first-child {
+ border-bottom-left-radius: .25rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-lg>.list-group-item:last-child {
+ border-top-right-radius: .25rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-lg>.list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-lg>.list-group-item+.list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-lg>.list-group-item+.list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width:1200px) {
+ .list-group-horizontal-xl {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-xl>.list-group-item:first-child {
+ border-bottom-left-radius: .25rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-xl>.list-group-item:last-child {
+ border-top-right-radius: .25rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-xl>.list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-xl>.list-group-item+.list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-xl>.list-group-item+.list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+@media (min-width:1400px) {
+ .list-group-horizontal-xxl {
+ flex-direction: row
+ }
+
+ .list-group-horizontal-xxl>.list-group-item:first-child {
+ border-bottom-left-radius: .25rem;
+ border-top-right-radius: 0
+ }
+
+ .list-group-horizontal-xxl>.list-group-item:last-child {
+ border-top-right-radius: .25rem;
+ border-bottom-left-radius: 0
+ }
+
+ .list-group-horizontal-xxl>.list-group-item.active {
+ margin-top: 0
+ }
+
+ .list-group-horizontal-xxl>.list-group-item+.list-group-item {
+ border-top-width: 1px;
+ border-left-width: 0
+ }
+
+ .list-group-horizontal-xxl>.list-group-item+.list-group-item.active {
+ margin-left: -1px;
+ border-left-width: 1px
+ }
+}
+
+.list-group-flush {
+ border-radius: 0
+}
+
+.list-group-flush>.list-group-item {
+ border-width: 0 0 1px
+}
+
+.list-group-flush>.list-group-item:last-child {
+ border-bottom-width: 0
+}
+
+.list-group-item-primary {
+ color: #084298;
+ background-color: #cfe2ff
+}
+
+.list-group-item-primary.list-group-item-action:focus,
+.list-group-item-primary.list-group-item-action:hover {
+ color: #084298;
+ background-color: #bacbe6
+}
+
+.list-group-item-primary.list-group-item-action.active {
+ color: #fff;
+ background-color: #084298;
+ border-color: #084298
+}
+
+.list-group-item-secondary {
+ color: #41464b;
+ background-color: #e2e3e5
+}
+
+.list-group-item-secondary.list-group-item-action:focus,
+.list-group-item-secondary.list-group-item-action:hover {
+ color: #41464b;
+ background-color: #cbccce
+}
+
+.list-group-item-secondary.list-group-item-action.active {
+ color: #fff;
+ background-color: #41464b;
+ border-color: #41464b
+}
+
+.list-group-item-success {
+ color: #0f5132;
+ background-color: #d1e7dd
+}
+
+.list-group-item-success.list-group-item-action:focus,
+.list-group-item-success.list-group-item-action:hover {
+ color: #0f5132;
+ background-color: #bcd0c7
+}
+
+.list-group-item-success.list-group-item-action.active {
+ color: #fff;
+ background-color: #0f5132;
+ border-color: #0f5132
+}
+
+.list-group-item-info {
+ color: #055160;
+ background-color: #cff4fc
+}
+
+.list-group-item-info.list-group-item-action:focus,
+.list-group-item-info.list-group-item-action:hover {
+ color: #055160;
+ background-color: #badce3
+}
+
+.list-group-item-info.list-group-item-action.active {
+ color: #fff;
+ background-color: #055160;
+ border-color: #055160
+}
+
+.list-group-item-warning {
+ color: #664d03;
+ background-color: #fff3cd
+}
+
+.list-group-item-warning.list-group-item-action:focus,
+.list-group-item-warning.list-group-item-action:hover {
+ color: #664d03;
+ background-color: #e6dbb9
+}
+
+.list-group-item-warning.list-group-item-action.active {
+ color: #fff;
+ background-color: #664d03;
+ border-color: #664d03
+}
+
+.list-group-item-danger {
+ color: #842029;
+ background-color: #f8d7da
+}
+
+.list-group-item-danger.list-group-item-action:focus,
+.list-group-item-danger.list-group-item-action:hover {
+ color: #842029;
+ background-color: #dfc2c4
+}
+
+.list-group-item-danger.list-group-item-action.active {
+ color: #fff;
+ background-color: #842029;
+ border-color: #842029
+}
+
+.list-group-item-light {
+ color: #636464;
+ background-color: #fefefe
+}
+
+.list-group-item-light.list-group-item-action:focus,
+.list-group-item-light.list-group-item-action:hover {
+ color: #636464;
+ background-color: #e5e5e5
+}
+
+.list-group-item-light.list-group-item-action.active {
+ color: #fff;
+ background-color: #636464;
+ border-color: #636464
+}
+
+.list-group-item-dark {
+ color: #141619;
+ background-color: #d3d3d4
+}
+
+.list-group-item-dark.list-group-item-action:focus,
+.list-group-item-dark.list-group-item-action:hover {
+ color: #141619;
+ background-color: #bebebf
+}
+
+.list-group-item-dark.list-group-item-action.active {
+ color: #fff;
+ background-color: #141619;
+ border-color: #141619
+}
+
+.btn-close {
+ box-sizing: content-box;
+ width: 1em;
+ height: 1em;
+ padding: .25em .25em;
+ color: #000;
+ background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;
+ border: 0;
+ border-radius: .25rem;
+ opacity: .5
+}
+
+.btn-close:hover {
+ color: #000;
+ text-decoration: none;
+ opacity: .75
+}
+
+.btn-close:focus {
+ outline: 0;
+ box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);
+ opacity: 1
+}
+
+.btn-close.disabled,
+.btn-close:disabled {
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ opacity: .25
+}
+
+.btn-close-white {
+ filter: invert(1) grayscale(100%) brightness(200%)
+}
+
+.toast {
+ width: 350px;
+ max-width: 100%;
+ font-size: .875rem;
+ pointer-events: auto;
+ background-color: rgba(255, 255, 255, .85);
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .1);
+ box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);
+ border-radius: .25rem
+}
+
+.toast:not(.showing):not(.show) {
+ opacity: 0
+}
+
+.toast.hide {
+ display: none
+}
+
+.toast-container {
+ width: -webkit-max-content;
+ width: -moz-max-content;
+ width: max-content;
+ max-width: 100%;
+ pointer-events: none
+}
+
+.toast-container>:not(:last-child) {
+ margin-bottom: .75rem
+}
+
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: .5rem .75rem;
+ color: #6c757d;
+ background-color: rgba(255, 255, 255, .85);
+ background-clip: padding-box;
+ border-bottom: 1px solid rgba(0, 0, 0, .05);
+ border-top-left-radius: calc(.25rem - 1px);
+ border-top-right-radius: calc(.25rem - 1px)
+}
+
+.toast-header .btn-close {
+ margin-right: -.375rem;
+ margin-left: .75rem
+}
+
+.toast-body {
+ padding: .75rem;
+ word-wrap: break-word
+}
+
+.modal {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ width: 100%;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: auto;
+ outline: 0
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: .5rem;
+ pointer-events: none
+}
+
+.modal.fade .modal-dialog {
+ transition: transform .3s ease-out;
+ transform: translate(0, -50px)
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .modal.fade .modal-dialog {
+ transition: none
+ }
+}
+
+.modal.show .modal-dialog {
+ transform: none
+}
+
+.modal.modal-static .modal-dialog {
+ transform: scale(1.02)
+}
+
+.modal-dialog-scrollable {
+ height: calc(100% - 1rem)
+}
+
+.modal-dialog-scrollable .modal-content {
+ max-height: 100%;
+ overflow: hidden
+}
+
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto
+}
+
+.modal-dialog-centered {
+ display: flex;
+ align-items: center;
+ min-height: calc(100% - 1rem)
+}
+
+.modal-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ pointer-events: auto;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: .3rem;
+ outline: 0
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1040;
+ width: 100vw;
+ height: 100vh;
+ background-color: #000
+}
+
+.modal-backdrop.fade {
+ opacity: 0
+}
+
+.modal-backdrop.show {
+ opacity: .5
+}
+
+.modal-header {
+ display: flex;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: space-between;
+ padding: 1rem 1rem;
+ border-bottom: 1px solid #dee2e6;
+ border-top-left-radius: calc(.3rem - 1px);
+ border-top-right-radius: calc(.3rem - 1px)
+}
+
+.modal-header .btn-close {
+ padding: .5rem .5rem;
+ margin: -.5rem -.5rem -.5rem auto
+}
+
+.modal-title {
+ margin-bottom: 0;
+ line-height: 1.5
+}
+
+.modal-body {
+ position: relative;
+ flex: 1 1 auto;
+ padding: 1rem
+}
+
+.modal-footer {
+ display: flex;
+ flex-wrap: wrap;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: flex-end;
+ padding: .75rem;
+ border-top: 1px solid #dee2e6;
+ border-bottom-right-radius: calc(.3rem - 1px);
+ border-bottom-left-radius: calc(.3rem - 1px)
+}
+
+.modal-footer>* {
+ margin: .25rem
+}
+
+@media (min-width:576px) {
+ .modal-dialog {
+ max-width: 500px;
+ margin: 1.75rem auto
+ }
+
+ .modal-dialog-scrollable {
+ height: calc(100% - 3.5rem)
+ }
+
+ .modal-dialog-centered {
+ min-height: calc(100% - 3.5rem)
+ }
+
+ .modal-sm {
+ max-width: 300px
+ }
+}
+
+@media (min-width:992px) {
+
+ .modal-lg,
+ .modal-xl {
+ max-width: 800px
+ }
+}
+
+@media (min-width:1200px) {
+ .modal-xl {
+ max-width: 1140px
+ }
+}
+
+.modal-fullscreen {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+}
+
+.modal-fullscreen .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+}
+
+.modal-fullscreen .modal-header {
+ border-radius: 0
+}
+
+.modal-fullscreen .modal-body {
+ overflow-y: auto
+}
+
+.modal-fullscreen .modal-footer {
+ border-radius: 0
+}
+
+@media (max-width:575.98px) {
+ .modal-fullscreen-sm-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-sm-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-sm-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-sm-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-sm-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width:767.98px) {
+ .modal-fullscreen-md-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-md-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-md-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-md-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-md-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width:991.98px) {
+ .modal-fullscreen-lg-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-lg-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-lg-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-lg-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-lg-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width:1199.98px) {
+ .modal-fullscreen-xl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-xl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xl-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xl-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-xl-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+@media (max-width:1399.98px) {
+ .modal-fullscreen-xxl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0
+ }
+
+ .modal-fullscreen-xxl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xxl-down .modal-header {
+ border-radius: 0
+ }
+
+ .modal-fullscreen-xxl-down .modal-body {
+ overflow-y: auto
+ }
+
+ .modal-fullscreen-xxl-down .modal-footer {
+ border-radius: 0
+ }
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1080;
+ display: block;
+ margin: 0;
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ white-space: normal;
+ line-break: auto;
+ font-size: .875rem;
+ word-wrap: break-word;
+ opacity: 0
+}
+
+.tooltip.show {
+ opacity: .9
+}
+
+.tooltip .tooltip-arrow {
+ position: absolute;
+ display: block;
+ width: .8rem;
+ height: .4rem
+}
+
+.tooltip .tooltip-arrow::before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid
+}
+
+.bs-tooltip-auto[data-popper-placement^=top],
+.bs-tooltip-top {
+ padding: .4rem 0
+}
+
+.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,
+.bs-tooltip-top .tooltip-arrow {
+ bottom: 0
+}
+
+.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,
+.bs-tooltip-top .tooltip-arrow::before {
+ top: -1px;
+ border-width: .4rem .4rem 0;
+ border-top-color: #000
+}
+
+.bs-tooltip-auto[data-popper-placement^=right],
+.bs-tooltip-end {
+ padding: 0 .4rem
+}
+
+.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,
+.bs-tooltip-end .tooltip-arrow {
+ left: 0;
+ width: .4rem;
+ height: .8rem
+}
+
+.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,
+.bs-tooltip-end .tooltip-arrow::before {
+ right: -1px;
+ border-width: .4rem .4rem .4rem 0;
+ border-right-color: #000
+}
+
+.bs-tooltip-auto[data-popper-placement^=bottom],
+.bs-tooltip-bottom {
+ padding: .4rem 0
+}
+
+.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,
+.bs-tooltip-bottom .tooltip-arrow {
+ top: 0
+}
+
+.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,
+.bs-tooltip-bottom .tooltip-arrow::before {
+ bottom: -1px;
+ border-width: 0 .4rem .4rem;
+ border-bottom-color: #000
+}
+
+.bs-tooltip-auto[data-popper-placement^=left],
+.bs-tooltip-start {
+ padding: 0 .4rem
+}
+
+.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,
+.bs-tooltip-start .tooltip-arrow {
+ right: 0;
+ width: .4rem;
+ height: .8rem
+}
+
+.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,
+.bs-tooltip-start .tooltip-arrow::before {
+ left: -1px;
+ border-width: .4rem 0 .4rem .4rem;
+ border-left-color: #000
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: .25rem .5rem;
+ color: #fff;
+ text-align: center;
+ background-color: #000;
+ border-radius: .25rem
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1070;
+ display: block;
+ max-width: 276px;
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ white-space: normal;
+ line-break: auto;
+ font-size: .875rem;
+ word-wrap: break-word;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: .3rem
+}
+
+.popover .popover-arrow {
+ position: absolute;
+ display: block;
+ width: 1rem;
+ height: .5rem
+}
+
+.popover .popover-arrow::after,
+.popover .popover-arrow::before {
+ position: absolute;
+ display: block;
+ content: "";
+ border-color: transparent;
+ border-style: solid
+}
+
+.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,
+.bs-popover-top>.popover-arrow {
+ bottom: calc(-.5rem - 1px)
+}
+
+.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,
+.bs-popover-top>.popover-arrow::before {
+ bottom: 0;
+ border-width: .5rem .5rem 0;
+ border-top-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,
+.bs-popover-top>.popover-arrow::after {
+ bottom: 1px;
+ border-width: .5rem .5rem 0;
+ border-top-color: #fff
+}
+
+.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,
+.bs-popover-end>.popover-arrow {
+ left: calc(-.5rem - 1px);
+ width: .5rem;
+ height: 1rem
+}
+
+.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,
+.bs-popover-end>.popover-arrow::before {
+ left: 0;
+ border-width: .5rem .5rem .5rem 0;
+ border-right-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,
+.bs-popover-end>.popover-arrow::after {
+ left: 1px;
+ border-width: .5rem .5rem .5rem 0;
+ border-right-color: #fff
+}
+
+.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,
+.bs-popover-bottom>.popover-arrow {
+ top: calc(-.5rem - 1px)
+}
+
+.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,
+.bs-popover-bottom>.popover-arrow::before {
+ top: 0;
+ border-width: 0 .5rem .5rem .5rem;
+ border-bottom-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,
+.bs-popover-bottom>.popover-arrow::after {
+ top: 1px;
+ border-width: 0 .5rem .5rem .5rem;
+ border-bottom-color: #fff
+}
+
+.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,
+.bs-popover-bottom .popover-header::before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: 1rem;
+ margin-left: -.5rem;
+ content: "";
+ border-bottom: 1px solid #f0f0f0
+}
+
+.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,
+.bs-popover-start>.popover-arrow {
+ right: calc(-.5rem - 1px);
+ width: .5rem;
+ height: 1rem
+}
+
+.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,
+.bs-popover-start>.popover-arrow::before {
+ right: 0;
+ border-width: .5rem 0 .5rem .5rem;
+ border-left-color: rgba(0, 0, 0, .25)
+}
+
+.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,
+.bs-popover-start>.popover-arrow::after {
+ right: 1px;
+ border-width: .5rem 0 .5rem .5rem;
+ border-left-color: #fff
+}
+
+.popover-header {
+ padding: .5rem 1rem;
+ margin-bottom: 0;
+ font-size: 1rem;
+ background-color: #f0f0f0;
+ border-bottom: 1px solid rgba(0, 0, 0, .2);
+ border-top-left-radius: calc(.3rem - 1px);
+ border-top-right-radius: calc(.3rem - 1px)
+}
+
+.popover-header:empty {
+ display: none
+}
+
+.popover-body {
+ padding: 1rem 1rem;
+ color: #212529
+}
+
+.carousel {
+ position: relative
+}
+
+.carousel.pointer-event {
+ touch-action: pan-y
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden
+}
+
+.carousel-inner::after {
+ display: block;
+ clear: both;
+ content: ""
+}
+
+.carousel-item {
+ position: relative;
+ display: none;
+ float: left;
+ width: 100%;
+ margin-right: -100%;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ transition: transform .6s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .carousel-item {
+ transition: none
+ }
+}
+
+.carousel-item-next,
+.carousel-item-prev,
+.carousel-item.active {
+ display: block
+}
+
+.active.carousel-item-end,
+.carousel-item-next:not(.carousel-item-start) {
+ transform: translateX(100%)
+}
+
+.active.carousel-item-start,
+.carousel-item-prev:not(.carousel-item-end) {
+ transform: translateX(-100%)
+}
+
+.carousel-fade .carousel-item {
+ opacity: 0;
+ transition-property: opacity;
+ transform: none
+}
+
+.carousel-fade .carousel-item-next.carousel-item-start,
+.carousel-fade .carousel-item-prev.carousel-item-end,
+.carousel-fade .carousel-item.active {
+ z-index: 1;
+ opacity: 1
+}
+
+.carousel-fade .active.carousel-item-end,
+.carousel-fade .active.carousel-item-start {
+ z-index: 0;
+ opacity: 0;
+ transition: opacity 0s .6s
+}
+
+@media (prefers-reduced-motion:reduce) {
+
+ .carousel-fade .active.carousel-item-end,
+ .carousel-fade .active.carousel-item-start {
+ transition: none
+ }
+}
+
+.carousel-control-next,
+.carousel-control-prev {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ z-index: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 15%;
+ padding: 0;
+ color: #fff;
+ text-align: center;
+ background: 0 0;
+ border: 0;
+ opacity: .5;
+ transition: opacity .15s ease
+}
+
+@media (prefers-reduced-motion:reduce) {
+
+ .carousel-control-next,
+ .carousel-control-prev {
+ transition: none
+ }
+}
+
+.carousel-control-next:focus,
+.carousel-control-next:hover,
+.carousel-control-prev:focus,
+.carousel-control-prev:hover {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ opacity: .9
+}
+
+.carousel-control-prev {
+ left: 0
+}
+
+.carousel-control-next {
+ right: 0
+}
+
+.carousel-control-next-icon,
+.carousel-control-prev-icon {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: 100% 100%
+}
+
+.carousel-control-prev-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")
+}
+
+.carousel-control-next-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")
+}
+
+.carousel-indicators {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ padding: 0;
+ margin-right: 15%;
+ margin-bottom: 1rem;
+ margin-left: 15%;
+ list-style: none
+}
+
+.carousel-indicators [data-bs-target] {
+ box-sizing: content-box;
+ flex: 0 1 auto;
+ width: 30px;
+ height: 3px;
+ padding: 0;
+ margin-right: 3px;
+ margin-left: 3px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ opacity: .5;
+ transition: opacity .6s ease
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .carousel-indicators [data-bs-target] {
+ transition: none
+ }
+}
+
+.carousel-indicators .active {
+ opacity: 1
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 1.25rem;
+ left: 15%;
+ padding-top: 1.25rem;
+ padding-bottom: 1.25rem;
+ color: #fff;
+ text-align: center
+}
+
+.carousel-dark .carousel-control-next-icon,
+.carousel-dark .carousel-control-prev-icon {
+ filter: invert(1) grayscale(100)
+}
+
+.carousel-dark .carousel-indicators [data-bs-target] {
+ background-color: #000
+}
+
+.carousel-dark .carousel-caption {
+ color: #000
+}
+
+@-webkit-keyframes spinner-border {
+ to {
+ transform: rotate(360deg)
+ }
+}
+
+@keyframes spinner-border {
+ to {
+ transform: rotate(360deg)
+ }
+}
+
+.spinner-border {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ vertical-align: -.125em;
+ border: .25em solid currentColor;
+ border-right-color: transparent;
+ border-radius: 50%;
+ -webkit-animation: .75s linear infinite spinner-border;
+ animation: .75s linear infinite spinner-border
+}
+
+.spinner-border-sm {
+ width: 1rem;
+ height: 1rem;
+ border-width: .2em
+}
+
+@-webkit-keyframes spinner-grow {
+ 0% {
+ transform: scale(0)
+ }
+
+ 50% {
+ opacity: 1;
+ transform: none
+ }
+}
+
+@keyframes spinner-grow {
+ 0% {
+ transform: scale(0)
+ }
+
+ 50% {
+ opacity: 1;
+ transform: none
+ }
+}
+
+.spinner-grow {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ vertical-align: -.125em;
+ background-color: currentColor;
+ border-radius: 50%;
+ opacity: 0;
+ -webkit-animation: .75s linear infinite spinner-grow;
+ animation: .75s linear infinite spinner-grow
+}
+
+.spinner-grow-sm {
+ width: 1rem;
+ height: 1rem
+}
+
+@media (prefers-reduced-motion:reduce) {
+
+ .spinner-border,
+ .spinner-grow {
+ -webkit-animation-duration: 1.5s;
+ animation-duration: 1.5s
+ }
+}
+
+.offcanvas {
+ position: fixed;
+ bottom: 0;
+ z-index: 1050;
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ visibility: hidden;
+ background-color: #fff;
+ background-clip: padding-box;
+ outline: 0;
+ transition: transform .3s ease-in-out
+}
+
+@media (prefers-reduced-motion:reduce) {
+ .offcanvas {
+ transition: none
+ }
+}
+
+.offcanvas-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 1rem 1rem
+}
+
+.offcanvas-header .btn-close {
+ padding: .5rem .5rem;
+ margin-top: -.5rem;
+ margin-right: -.5rem;
+ margin-bottom: -.5rem
+}
+
+.offcanvas-title {
+ margin-bottom: 0;
+ line-height: 1.5
+}
+
+.offcanvas-body {
+ flex-grow: 1;
+ padding: 1rem 1rem;
+ overflow-y: auto
+}
+
+.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: 400px;
+ border-right: 1px solid rgba(0, 0, 0, .2);
+ transform: translateX(-100%)
+}
+
+.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: 400px;
+ border-left: 1px solid rgba(0, 0, 0, .2);
+ transform: translateX(100%)
+}
+
+.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 30vh;
+ max-height: 100%;
+ border-bottom: 1px solid rgba(0, 0, 0, .2);
+ transform: translateY(-100%)
+}
+
+.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: 30vh;
+ max-height: 100%;
+ border-top: 1px solid rgba(0, 0, 0, .2);
+ transform: translateY(100%)
+}
+
+.offcanvas.show {
+ transform: none
+}
+
+.clearfix::after {
+ display: block;
+ clear: both;
+ content: ""
+}
+
+.link-primary {
+ color: #0d6efd
+}
+
+.link-primary:focus,
+.link-primary:hover {
+ color: #0a58ca
+}
+
+.link-secondary {
+ color: #6c757d
+}
+
+.link-secondary:focus,
+.link-secondary:hover {
+ color: #565e64
+}
+
+.link-success {
+ color: #198754
+}
+
+.link-success:focus,
+.link-success:hover {
+ color: #146c43
+}
+
+.link-info {
+ color: #0dcaf0
+}
+
+.link-info:focus,
+.link-info:hover {
+ color: #3dd5f3
+}
+
+.link-warning {
+ color: #ffc107
+}
+
+.link-warning:focus,
+.link-warning:hover {
+ color: #ffcd39
+}
+
+.link-danger {
+ color: #dc3545
+}
+
+.link-danger:focus,
+.link-danger:hover {
+ color: #b02a37
+}
+
+.link-light {
+ color: #f8f9fa
+}
+
+.link-light:focus,
+.link-light:hover {
+ color: #f9fafb
+}
+
+.link-dark {
+ color: #212529
+}
+
+.link-dark:focus,
+.link-dark:hover {
+ color: #1a1e21
+}
+
+.ratio {
+ position: relative;
+ width: 100%
+}
+
+.ratio::before {
+ display: block;
+ padding-top: var(--bs-aspect-ratio);
+ content: ""
+}
+
+.ratio>* {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%
+}
+
+.ratio-1x1 {
+ --bs-aspect-ratio: 100%
+}
+
+.ratio-4x3 {
+ --bs-aspect-ratio: calc(3 / 4 * 100%)
+}
+
+.ratio-16x9 {
+ --bs-aspect-ratio: calc(9 / 16 * 100%)
+}
+
+.ratio-21x9 {
+ --bs-aspect-ratio: calc(9 / 21 * 100%)
+}
+
+.fixed-top {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1030
+}
+
+.fixed-bottom {
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030
+}
+
+.sticky-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+}
+
+@media (min-width:576px) {
+ .sticky-sm-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width:768px) {
+ .sticky-md-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width:992px) {
+ .sticky-lg-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width:1200px) {
+ .sticky-xl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+@media (min-width:1400px) {
+ .sticky-xxl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020
+ }
+}
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+ position: absolute !important;
+ width: 1px !important;
+ height: 1px !important;
+ padding: 0 !important;
+ margin: -1px !important;
+ overflow: hidden !important;
+ clip: rect(0, 0, 0, 0) !important;
+ white-space: nowrap !important;
+ border: 0 !important
+}
+
+.stretched-link::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: ""
+}
+
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+}
+
+.align-baseline {
+ vertical-align: baseline !important
+}
+
+.align-top {
+ vertical-align: top !important
+}
+
+.align-middle {
+ vertical-align: middle !important
+}
+
+.align-bottom {
+ vertical-align: bottom !important
+}
+
+.align-text-bottom {
+ vertical-align: text-bottom !important
+}
+
+.align-text-top {
+ vertical-align: text-top !important
+}
+
+.float-start {
+ float: left !important
+}
+
+.float-end {
+ float: right !important
+}
+
+.float-none {
+ float: none !important
+}
+
+.overflow-auto {
+ overflow: auto !important
+}
+
+.overflow-hidden {
+ overflow: hidden !important
+}
+
+.overflow-visible {
+ overflow: visible !important
+}
+
+.overflow-scroll {
+ overflow: scroll !important
+}
+
+.d-inline {
+ display: inline !important
+}
+
+.d-inline-block {
+ display: inline-block !important
+}
+
+.d-block {
+ display: block !important
+}
+
+.d-grid {
+ display: grid !important
+}
+
+.d-table {
+ display: table !important
+}
+
+.d-table-row {
+ display: table-row !important
+}
+
+.d-table-cell {
+ display: table-cell !important
+}
+
+.d-flex {
+ display: flex !important
+}
+
+.d-inline-flex {
+ display: inline-flex !important
+}
+
+.d-none {
+ display: none !important
+}
+
+.shadow {
+ box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important
+}
+
+.shadow-sm {
+ box-shadow: 0 .125rem .25rem rgba(0, 0, 0, .075) !important
+}
+
+.shadow-lg {
+ box-shadow: 0 1rem 3rem rgba(0, 0, 0, .175) !important
+}
+
+.shadow-none {
+ box-shadow: none !important
+}
+
+.position-static {
+ position: static !important
+}
+
+.position-relative {
+ position: relative !important
+}
+
+.position-absolute {
+ position: absolute !important
+}
+
+.position-fixed {
+ position: fixed !important
+}
+
+.position-sticky {
+ position: -webkit-sticky !important;
+ position: sticky !important
+}
+
+.top-0 {
+ top: 0 !important
+}
+
+.top-50 {
+ top: 50% !important
+}
+
+.top-100 {
+ top: 100% !important
+}
+
+.bottom-0 {
+ bottom: 0 !important
+}
+
+.bottom-50 {
+ bottom: 50% !important
+}
+
+.bottom-100 {
+ bottom: 100% !important
+}
+
+.start-0 {
+ left: 0 !important
+}
+
+.start-50 {
+ left: 50% !important
+}
+
+.start-100 {
+ left: 100% !important
+}
+
+.end-0 {
+ right: 0 !important
+}
+
+.end-50 {
+ right: 50% !important
+}
+
+.end-100 {
+ right: 100% !important
+}
+
+.translate-middle {
+ transform: translate(-50%, -50%) !important
+}
+
+.translate-middle-x {
+ transform: translateX(-50%) !important
+}
+
+.translate-middle-y {
+ transform: translateY(-50%) !important
+}
+
+.border {
+ border: 1px solid #dee2e6 !important
+}
+
+.border-0 {
+ border: 0 !important
+}
+
+.border-top {
+ border-top: 1px solid #dee2e6 !important
+}
+
+.border-top-0 {
+ border-top: 0 !important
+}
+
+.border-end {
+ border-right: 1px solid #dee2e6 !important
+}
+
+.border-end-0 {
+ border-right: 0 !important
+}
+
+.border-bottom {
+ border-bottom: 1px solid #dee2e6 !important
+}
+
+.border-bottom-0 {
+ border-bottom: 0 !important
+}
+
+.border-start {
+ border-left: 1px solid #dee2e6 !important
+}
+
+.border-start-0 {
+ border-left: 0 !important
+}
+
+.border-primary {
+ border-color: #0d6efd !important
+}
+
+.border-secondary {
+ border-color: #6c757d !important
+}
+
+.border-success {
+ border-color: #198754 !important
+}
+
+.border-info {
+ border-color: #0dcaf0 !important
+}
+
+.border-warning {
+ border-color: #ffc107 !important
+}
+
+.border-danger {
+ border-color: #dc3545 !important
+}
+
+.border-light {
+ border-color: #f8f9fa !important
+}
+
+.border-dark {
+ border-color: #212529 !important
+}
+
+.border-white {
+ border-color: #fff !important
+}
+
+.border-1 {
+ border-width: 1px !important
+}
+
+.border-2 {
+ border-width: 2px !important
+}
+
+.border-3 {
+ border-width: 3px !important
+}
+
+.border-4 {
+ border-width: 4px !important
+}
+
+.border-5 {
+ border-width: 5px !important
+}
+
+.w-25 {
+ width: 25% !important
+}
+
+.w-50 {
+ width: 50% !important
+}
+
+.w-75 {
+ width: 75% !important
+}
+
+.w-100 {
+ width: 100% !important
+}
+
+.w-auto {
+ width: auto !important
+}
+
+.mw-100 {
+ max-width: 100% !important
+}
+
+.vw-100 {
+ width: 100vw !important
+}
+
+.min-vw-100 {
+ min-width: 100vw !important
+}
+
+.h-25 {
+ height: 25% !important
+}
+
+.h-50 {
+ height: 50% !important
+}
+
+.h-75 {
+ height: 75% !important
+}
+
+.h-100 {
+ height: 100% !important
+}
+
+.h-auto {
+ height: auto !important
+}
+
+.mh-100 {
+ max-height: 100% !important
+}
+
+.vh-100 {
+ height: 100vh !important
+}
+
+.min-vh-100 {
+ min-height: 100vh !important
+}
+
+.flex-fill {
+ flex: 1 1 auto !important
+}
+
+.flex-row {
+ flex-direction: row !important
+}
+
+.flex-column {
+ flex-direction: column !important
+}
+
+.flex-row-reverse {
+ flex-direction: row-reverse !important
+}
+
+.flex-column-reverse {
+ flex-direction: column-reverse !important
+}
+
+.flex-grow-0 {
+ flex-grow: 0 !important
+}
+
+.flex-grow-1 {
+ flex-grow: 1 !important
+}
+
+.flex-shrink-0 {
+ flex-shrink: 0 !important
+}
+
+.flex-shrink-1 {
+ flex-shrink: 1 !important
+}
+
+.flex-wrap {
+ flex-wrap: wrap !important
+}
+
+.flex-nowrap {
+ flex-wrap: nowrap !important
+}
+
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+}
+
+.gap-0 {
+ gap: 0 !important
+}
+
+.gap-1 {
+ gap: .25rem !important
+}
+
+.gap-2 {
+ gap: .5rem !important
+}
+
+.gap-3 {
+ gap: 1rem !important
+}
+
+.gap-4 {
+ gap: 1.5rem !important
+}
+
+.gap-5 {
+ gap: 3rem !important
+}
+
+.justify-content-start {
+ justify-content: flex-start !important
+}
+
+.justify-content-end {
+ justify-content: flex-end !important
+}
+
+.justify-content-center {
+ justify-content: center !important
+}
+
+.justify-content-between {
+ justify-content: space-between !important
+}
+
+.justify-content-around {
+ justify-content: space-around !important
+}
+
+.justify-content-evenly {
+ justify-content: space-evenly !important
+}
+
+.align-items-start {
+ align-items: flex-start !important
+}
+
+.align-items-end {
+ align-items: flex-end !important
+}
+
+.align-items-center {
+ align-items: center !important
+}
+
+.align-items-baseline {
+ align-items: baseline !important
+}
+
+.align-items-stretch {
+ align-items: stretch !important
+}
+
+.align-content-start {
+ align-content: flex-start !important
+}
+
+.align-content-end {
+ align-content: flex-end !important
+}
+
+.align-content-center {
+ align-content: center !important
+}
+
+.align-content-between {
+ align-content: space-between !important
+}
+
+.align-content-around {
+ align-content: space-around !important
+}
+
+.align-content-stretch {
+ align-content: stretch !important
+}
+
+.align-self-auto {
+ align-self: auto !important
+}
+
+.align-self-start {
+ align-self: flex-start !important
+}
+
+.align-self-end {
+ align-self: flex-end !important
+}
+
+.align-self-center {
+ align-self: center !important
+}
+
+.align-self-baseline {
+ align-self: baseline !important
+}
+
+.align-self-stretch {
+ align-self: stretch !important
+}
+
+.order-first {
+ order: -1 !important
+}
+
+.order-0 {
+ order: 0 !important
+}
+
+.order-1 {
+ order: 1 !important
+}
+
+.order-2 {
+ order: 2 !important
+}
+
+.order-3 {
+ order: 3 !important
+}
+
+.order-4 {
+ order: 4 !important
+}
+
+.order-5 {
+ order: 5 !important
+}
+
+.order-last {
+ order: 6 !important
+}
+
+.m-0 {
+ margin: 0 !important
+}
+
+.m-1 {
+ margin: .25rem !important
+}
+
+.m-2 {
+ margin: .5rem !important
+}
+
+.m-3 {
+ margin: 1rem !important
+}
+
+.m-4 {
+ margin: 1.5rem !important
+}
+
+.m-5 {
+ margin: 3rem !important
+}
+
+.m-auto {
+ margin: auto !important
+}
+
+.mx-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+}
+
+.mx-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+}
+
+.mx-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+}
+
+.mx-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+}
+
+.mx-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+}
+
+.mx-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+}
+
+.mx-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+}
+
+.my-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+}
+
+.my-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+}
+
+.my-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+}
+
+.my-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+}
+
+.my-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+}
+
+.my-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+}
+
+.my-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+}
+
+.mt-0 {
+ margin-top: 0 !important
+}
+
+.mt-1 {
+ margin-top: .25rem !important
+}
+
+.mt-2 {
+ margin-top: .5rem !important
+}
+
+.mt-3 {
+ margin-top: 1rem !important
+}
+
+.mt-4 {
+ margin-top: 1.5rem !important
+}
+
+.mt-5 {
+ margin-top: 3rem !important
+}
+
+.mt-auto {
+ margin-top: auto !important
+}
+
+.me-0 {
+ margin-right: 0 !important
+}
+
+.me-1 {
+ margin-right: .25rem !important
+}
+
+.me-2 {
+ margin-right: .5rem !important
+}
+
+.me-3 {
+ margin-right: 1rem !important
+}
+
+.me-4 {
+ margin-right: 1.5rem !important
+}
+
+.me-5 {
+ margin-right: 3rem !important
+}
+
+.me-auto {
+ margin-right: auto !important
+}
+
+.mb-0 {
+ margin-bottom: 0 !important
+}
+
+.mb-1 {
+ margin-bottom: .25rem !important
+}
+
+.mb-2 {
+ margin-bottom: .5rem !important
+}
+
+.mb-3 {
+ margin-bottom: 1rem !important
+}
+
+.mb-4 {
+ margin-bottom: 1.5rem !important
+}
+
+.mb-5 {
+ margin-bottom: 3rem !important
+}
+
+.mb-auto {
+ margin-bottom: auto !important
+}
+
+.ms-0 {
+ margin-left: 0 !important
+}
+
+.ms-1 {
+ margin-left: .25rem !important
+}
+
+.ms-2 {
+ margin-left: .5rem !important
+}
+
+.ms-3 {
+ margin-left: 1rem !important
+}
+
+.ms-4 {
+ margin-left: 1.5rem !important
+}
+
+.ms-5 {
+ margin-left: 3rem !important
+}
+
+.ms-auto {
+ margin-left: auto !important
+}
+
+.p-0 {
+ padding: 0 !important
+}
+
+.p-1 {
+ padding: .25rem !important
+}
+
+.p-2 {
+ padding: .5rem !important
+}
+
+.p-3 {
+ padding: 1rem !important
+}
+
+.p-4 {
+ padding: 1.5rem !important
+}
+
+.p-5 {
+ padding: 3rem !important
+}
+
+.px-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+}
+
+.px-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+}
+
+.px-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+}
+
+.px-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+}
+
+.px-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+}
+
+.px-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+}
+
+.py-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+}
+
+.py-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+}
+
+.py-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+}
+
+.py-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+}
+
+.py-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+}
+
+.py-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+}
+
+.pt-0 {
+ padding-top: 0 !important
+}
+
+.pt-1 {
+ padding-top: .25rem !important
+}
+
+.pt-2 {
+ padding-top: .5rem !important
+}
+
+.pt-3 {
+ padding-top: 1rem !important
+}
+
+.pt-4 {
+ padding-top: 1.5rem !important
+}
+
+.pt-5 {
+ padding-top: 3rem !important
+}
+
+.pe-0 {
+ padding-right: 0 !important
+}
+
+.pe-1 {
+ padding-right: .25rem !important
+}
+
+.pe-2 {
+ padding-right: .5rem !important
+}
+
+.pe-3 {
+ padding-right: 1rem !important
+}
+
+.pe-4 {
+ padding-right: 1.5rem !important
+}
+
+.pe-5 {
+ padding-right: 3rem !important
+}
+
+.pb-0 {
+ padding-bottom: 0 !important
+}
+
+.pb-1 {
+ padding-bottom: .25rem !important
+}
+
+.pb-2 {
+ padding-bottom: .5rem !important
+}
+
+.pb-3 {
+ padding-bottom: 1rem !important
+}
+
+.pb-4 {
+ padding-bottom: 1.5rem !important
+}
+
+.pb-5 {
+ padding-bottom: 3rem !important
+}
+
+.ps-0 {
+ padding-left: 0 !important
+}
+
+.ps-1 {
+ padding-left: .25rem !important
+}
+
+.ps-2 {
+ padding-left: .5rem !important
+}
+
+.ps-3 {
+ padding-left: 1rem !important
+}
+
+.ps-4 {
+ padding-left: 1.5rem !important
+}
+
+.ps-5 {
+ padding-left: 3rem !important
+}
+
+.font-monospace {
+ font-family: var(--bs-font-monospace) !important
+}
+
+.fs-1 {
+ font-size: calc(1.375rem + 1.5vw) !important
+}
+
+.fs-2 {
+ font-size: calc(1.325rem + .9vw) !important
+}
+
+.fs-3 {
+ font-size: calc(1.3rem + .6vw) !important
+}
+
+.fs-4 {
+ font-size: calc(1.275rem + .3vw) !important
+}
+
+.fs-5 {
+ font-size: 1.25rem !important
+}
+
+.fs-6 {
+ font-size: 1rem !important
+}
+
+.fst-italic {
+ font-style: italic !important
+}
+
+.fst-normal {
+ font-style: normal !important
+}
+
+.fw-light {
+ font-weight: 300 !important
+}
+
+.fw-lighter {
+ font-weight: lighter !important
+}
+
+.fw-normal {
+ font-weight: 400 !important
+}
+
+.fw-bold {
+ font-weight: 700 !important
+}
+
+.fw-bolder {
+ font-weight: bolder !important
+}
+
+.lh-1 {
+ line-height: 1 !important
+}
+
+.lh-sm {
+ line-height: 1.25 !important
+}
+
+.lh-base {
+ line-height: 1.5 !important
+}
+
+.lh-lg {
+ line-height: 2 !important
+}
+
+.text-start {
+ text-align: left !important
+}
+
+.text-end {
+ text-align: right !important
+}
+
+.text-center {
+ text-align: center !important
+}
+
+.text-decoration-none {
+ text-decoration: none !important
+}
+
+.text-decoration-underline {
+ text-decoration: underline !important
+}
+
+.text-decoration-line-through {
+ text-decoration: line-through !important
+}
+
+.text-lowercase {
+ text-transform: lowercase !important
+}
+
+.text-uppercase {
+ text-transform: uppercase !important
+}
+
+.text-capitalize {
+ text-transform: capitalize !important
+}
+
+.text-wrap {
+ white-space: normal !important
+}
+
+.text-nowrap {
+ white-space: nowrap !important
+}
+
+.text-break {
+ word-wrap: break-word !important;
+ word-break: break-word !important
+}
+
+.text-primary {
+ color: #0d6efd !important
+}
+
+.text-secondary {
+ color: #6c757d !important
+}
+
+.text-success {
+ color: #198754 !important
+}
+
+.text-info {
+ color: #0dcaf0 !important
+}
+
+.text-warning {
+ color: #ffc107 !important
+}
+
+.text-danger {
+ color: #dc3545 !important
+}
+
+.text-light {
+ color: #f8f9fa !important
+}
+
+.text-dark {
+ color: #212529 !important
+}
+
+.text-white {
+ color: #fff !important
+}
+
+.text-body {
+ color: #212529 !important
+}
+
+.text-muted {
+ color: #6c757d !important
+}
+
+.text-black-50 {
+ color: rgba(0, 0, 0, .5) !important
+}
+
+.text-white-50 {
+ color: rgba(255, 255, 255, .5) !important
+}
+
+.text-reset {
+ color: inherit !important
+}
+
+.bg-primary {
+ background-color: #0d6efd !important
+}
+
+.bg-secondary {
+ background-color: #6c757d !important
+}
+
+.bg-success {
+ background-color: #198754 !important
+}
+
+.bg-info {
+ background-color: #0dcaf0 !important
+}
+
+.bg-warning {
+ background-color: #ffc107 !important
+}
+
+.bg-danger {
+ background-color: #dc3545 !important
+}
+
+.bg-light {
+ background-color: #f8f9fa !important
+}
+
+.bg-dark {
+ background-color: #212529 !important
+}
+
+.bg-body {
+ background-color: #fff !important
+}
+
+.bg-white {
+ background-color: #fff !important
+}
+
+.bg-transparent {
+ background-color: transparent !important
+}
+
+.bg-gradient {
+ background-image: var(--bs-gradient) !important
+}
+
+.user-select-all {
+ -webkit-user-select: all !important;
+ -moz-user-select: all !important;
+ user-select: all !important
+}
+
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -moz-user-select: auto !important;
+ user-select: auto !important
+}
+
+.user-select-none {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ user-select: none !important
+}
+
+.pe-none {
+ pointer-events: none !important
+}
+
+.pe-auto {
+ pointer-events: auto !important
+}
+
+.rounded {
+ border-radius: .25rem !important
+}
+
+.rounded-0 {
+ border-radius: 0 !important
+}
+
+.rounded-1 {
+ border-radius: .2rem !important
+}
+
+.rounded-2 {
+ border-radius: .25rem !important
+}
+
+.rounded-3 {
+ border-radius: .3rem !important
+}
+
+.rounded-circle {
+ border-radius: 50% !important
+}
+
+.rounded-pill {
+ border-radius: 50rem !important
+}
+
+.rounded-top {
+ border-top-left-radius: .25rem !important;
+ border-top-right-radius: .25rem !important
+}
+
+.rounded-end {
+ border-top-right-radius: .25rem !important;
+ border-bottom-right-radius: .25rem !important
+}
+
+.rounded-bottom {
+ border-bottom-right-radius: .25rem !important;
+ border-bottom-left-radius: .25rem !important
+}
+
+.rounded-start {
+ border-bottom-left-radius: .25rem !important;
+ border-top-left-radius: .25rem !important
+}
+
+.visible {
+ visibility: visible !important
+}
+
+.invisible {
+ visibility: hidden !important
+}
+
+@media (min-width:576px) {
+ .float-sm-start {
+ float: left !important
+ }
+
+ .float-sm-end {
+ float: right !important
+ }
+
+ .float-sm-none {
+ float: none !important
+ }
+
+ .d-sm-inline {
+ display: inline !important
+ }
+
+ .d-sm-inline-block {
+ display: inline-block !important
+ }
+
+ .d-sm-block {
+ display: block !important
+ }
+
+ .d-sm-grid {
+ display: grid !important
+ }
+
+ .d-sm-table {
+ display: table !important
+ }
+
+ .d-sm-table-row {
+ display: table-row !important
+ }
+
+ .d-sm-table-cell {
+ display: table-cell !important
+ }
+
+ .d-sm-flex {
+ display: flex !important
+ }
+
+ .d-sm-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-sm-none {
+ display: none !important
+ }
+
+ .flex-sm-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-sm-row {
+ flex-direction: row !important
+ }
+
+ .flex-sm-column {
+ flex-direction: column !important
+ }
+
+ .flex-sm-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-sm-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-sm-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-sm-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-sm-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-sm-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-sm-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-sm-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-sm-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .gap-sm-0 {
+ gap: 0 !important
+ }
+
+ .gap-sm-1 {
+ gap: .25rem !important
+ }
+
+ .gap-sm-2 {
+ gap: .5rem !important
+ }
+
+ .gap-sm-3 {
+ gap: 1rem !important
+ }
+
+ .gap-sm-4 {
+ gap: 1.5rem !important
+ }
+
+ .gap-sm-5 {
+ gap: 3rem !important
+ }
+
+ .justify-content-sm-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-sm-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-sm-center {
+ justify-content: center !important
+ }
+
+ .justify-content-sm-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-sm-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-sm-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-sm-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-sm-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-sm-center {
+ align-items: center !important
+ }
+
+ .align-items-sm-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-sm-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-sm-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-sm-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-sm-center {
+ align-content: center !important
+ }
+
+ .align-content-sm-between {
+ align-content: space-between !important
+ }
+
+ .align-content-sm-around {
+ align-content: space-around !important
+ }
+
+ .align-content-sm-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-sm-auto {
+ align-self: auto !important
+ }
+
+ .align-self-sm-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-sm-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-sm-center {
+ align-self: center !important
+ }
+
+ .align-self-sm-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-sm-stretch {
+ align-self: stretch !important
+ }
+
+ .order-sm-first {
+ order: -1 !important
+ }
+
+ .order-sm-0 {
+ order: 0 !important
+ }
+
+ .order-sm-1 {
+ order: 1 !important
+ }
+
+ .order-sm-2 {
+ order: 2 !important
+ }
+
+ .order-sm-3 {
+ order: 3 !important
+ }
+
+ .order-sm-4 {
+ order: 4 !important
+ }
+
+ .order-sm-5 {
+ order: 5 !important
+ }
+
+ .order-sm-last {
+ order: 6 !important
+ }
+
+ .m-sm-0 {
+ margin: 0 !important
+ }
+
+ .m-sm-1 {
+ margin: .25rem !important
+ }
+
+ .m-sm-2 {
+ margin: .5rem !important
+ }
+
+ .m-sm-3 {
+ margin: 1rem !important
+ }
+
+ .m-sm-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-sm-5 {
+ margin: 3rem !important
+ }
+
+ .m-sm-auto {
+ margin: auto !important
+ }
+
+ .mx-sm-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-sm-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-sm-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-sm-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-sm-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-sm-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-sm-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-sm-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-sm-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-sm-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-sm-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-sm-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-sm-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-sm-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-sm-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-sm-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-sm-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-sm-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-sm-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-sm-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-sm-auto {
+ margin-top: auto !important
+ }
+
+ .me-sm-0 {
+ margin-right: 0 !important
+ }
+
+ .me-sm-1 {
+ margin-right: .25rem !important
+ }
+
+ .me-sm-2 {
+ margin-right: .5rem !important
+ }
+
+ .me-sm-3 {
+ margin-right: 1rem !important
+ }
+
+ .me-sm-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .me-sm-5 {
+ margin-right: 3rem !important
+ }
+
+ .me-sm-auto {
+ margin-right: auto !important
+ }
+
+ .mb-sm-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-sm-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-sm-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-sm-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-sm-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-sm-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-sm-auto {
+ margin-bottom: auto !important
+ }
+
+ .ms-sm-0 {
+ margin-left: 0 !important
+ }
+
+ .ms-sm-1 {
+ margin-left: .25rem !important
+ }
+
+ .ms-sm-2 {
+ margin-left: .5rem !important
+ }
+
+ .ms-sm-3 {
+ margin-left: 1rem !important
+ }
+
+ .ms-sm-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ms-sm-5 {
+ margin-left: 3rem !important
+ }
+
+ .ms-sm-auto {
+ margin-left: auto !important
+ }
+
+ .p-sm-0 {
+ padding: 0 !important
+ }
+
+ .p-sm-1 {
+ padding: .25rem !important
+ }
+
+ .p-sm-2 {
+ padding: .5rem !important
+ }
+
+ .p-sm-3 {
+ padding: 1rem !important
+ }
+
+ .p-sm-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-sm-5 {
+ padding: 3rem !important
+ }
+
+ .px-sm-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-sm-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-sm-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-sm-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-sm-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-sm-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .py-sm-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-sm-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-sm-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-sm-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-sm-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-sm-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .pt-sm-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-sm-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-sm-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-sm-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-sm-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-sm-5 {
+ padding-top: 3rem !important
+ }
+
+ .pe-sm-0 {
+ padding-right: 0 !important
+ }
+
+ .pe-sm-1 {
+ padding-right: .25rem !important
+ }
+
+ .pe-sm-2 {
+ padding-right: .5rem !important
+ }
+
+ .pe-sm-3 {
+ padding-right: 1rem !important
+ }
+
+ .pe-sm-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pe-sm-5 {
+ padding-right: 3rem !important
+ }
+
+ .pb-sm-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-sm-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-sm-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-sm-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-sm-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-sm-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .ps-sm-0 {
+ padding-left: 0 !important
+ }
+
+ .ps-sm-1 {
+ padding-left: .25rem !important
+ }
+
+ .ps-sm-2 {
+ padding-left: .5rem !important
+ }
+
+ .ps-sm-3 {
+ padding-left: 1rem !important
+ }
+
+ .ps-sm-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .ps-sm-5 {
+ padding-left: 3rem !important
+ }
+
+ .text-sm-start {
+ text-align: left !important
+ }
+
+ .text-sm-end {
+ text-align: right !important
+ }
+
+ .text-sm-center {
+ text-align: center !important
+ }
+}
+
+@media (min-width:768px) {
+ .float-md-start {
+ float: left !important
+ }
+
+ .float-md-end {
+ float: right !important
+ }
+
+ .float-md-none {
+ float: none !important
+ }
+
+ .d-md-inline {
+ display: inline !important
+ }
+
+ .d-md-inline-block {
+ display: inline-block !important
+ }
+
+ .d-md-block {
+ display: block !important
+ }
+
+ .d-md-grid {
+ display: grid !important
+ }
+
+ .d-md-table {
+ display: table !important
+ }
+
+ .d-md-table-row {
+ display: table-row !important
+ }
+
+ .d-md-table-cell {
+ display: table-cell !important
+ }
+
+ .d-md-flex {
+ display: flex !important
+ }
+
+ .d-md-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-md-none {
+ display: none !important
+ }
+
+ .flex-md-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-md-row {
+ flex-direction: row !important
+ }
+
+ .flex-md-column {
+ flex-direction: column !important
+ }
+
+ .flex-md-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-md-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-md-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-md-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-md-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-md-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-md-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-md-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-md-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .gap-md-0 {
+ gap: 0 !important
+ }
+
+ .gap-md-1 {
+ gap: .25rem !important
+ }
+
+ .gap-md-2 {
+ gap: .5rem !important
+ }
+
+ .gap-md-3 {
+ gap: 1rem !important
+ }
+
+ .gap-md-4 {
+ gap: 1.5rem !important
+ }
+
+ .gap-md-5 {
+ gap: 3rem !important
+ }
+
+ .justify-content-md-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-md-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-md-center {
+ justify-content: center !important
+ }
+
+ .justify-content-md-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-md-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-md-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-md-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-md-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-md-center {
+ align-items: center !important
+ }
+
+ .align-items-md-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-md-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-md-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-md-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-md-center {
+ align-content: center !important
+ }
+
+ .align-content-md-between {
+ align-content: space-between !important
+ }
+
+ .align-content-md-around {
+ align-content: space-around !important
+ }
+
+ .align-content-md-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-md-auto {
+ align-self: auto !important
+ }
+
+ .align-self-md-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-md-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-md-center {
+ align-self: center !important
+ }
+
+ .align-self-md-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-md-stretch {
+ align-self: stretch !important
+ }
+
+ .order-md-first {
+ order: -1 !important
+ }
+
+ .order-md-0 {
+ order: 0 !important
+ }
+
+ .order-md-1 {
+ order: 1 !important
+ }
+
+ .order-md-2 {
+ order: 2 !important
+ }
+
+ .order-md-3 {
+ order: 3 !important
+ }
+
+ .order-md-4 {
+ order: 4 !important
+ }
+
+ .order-md-5 {
+ order: 5 !important
+ }
+
+ .order-md-last {
+ order: 6 !important
+ }
+
+ .m-md-0 {
+ margin: 0 !important
+ }
+
+ .m-md-1 {
+ margin: .25rem !important
+ }
+
+ .m-md-2 {
+ margin: .5rem !important
+ }
+
+ .m-md-3 {
+ margin: 1rem !important
+ }
+
+ .m-md-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-md-5 {
+ margin: 3rem !important
+ }
+
+ .m-md-auto {
+ margin: auto !important
+ }
+
+ .mx-md-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-md-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-md-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-md-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-md-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-md-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-md-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-md-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-md-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-md-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-md-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-md-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-md-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-md-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-md-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-md-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-md-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-md-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-md-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-md-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-md-auto {
+ margin-top: auto !important
+ }
+
+ .me-md-0 {
+ margin-right: 0 !important
+ }
+
+ .me-md-1 {
+ margin-right: .25rem !important
+ }
+
+ .me-md-2 {
+ margin-right: .5rem !important
+ }
+
+ .me-md-3 {
+ margin-right: 1rem !important
+ }
+
+ .me-md-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .me-md-5 {
+ margin-right: 3rem !important
+ }
+
+ .me-md-auto {
+ margin-right: auto !important
+ }
+
+ .mb-md-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-md-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-md-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-md-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-md-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-md-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-md-auto {
+ margin-bottom: auto !important
+ }
+
+ .ms-md-0 {
+ margin-left: 0 !important
+ }
+
+ .ms-md-1 {
+ margin-left: .25rem !important
+ }
+
+ .ms-md-2 {
+ margin-left: .5rem !important
+ }
+
+ .ms-md-3 {
+ margin-left: 1rem !important
+ }
+
+ .ms-md-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ms-md-5 {
+ margin-left: 3rem !important
+ }
+
+ .ms-md-auto {
+ margin-left: auto !important
+ }
+
+ .p-md-0 {
+ padding: 0 !important
+ }
+
+ .p-md-1 {
+ padding: .25rem !important
+ }
+
+ .p-md-2 {
+ padding: .5rem !important
+ }
+
+ .p-md-3 {
+ padding: 1rem !important
+ }
+
+ .p-md-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-md-5 {
+ padding: 3rem !important
+ }
+
+ .px-md-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-md-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-md-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-md-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-md-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-md-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .py-md-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-md-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-md-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-md-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-md-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-md-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .pt-md-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-md-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-md-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-md-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-md-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-md-5 {
+ padding-top: 3rem !important
+ }
+
+ .pe-md-0 {
+ padding-right: 0 !important
+ }
+
+ .pe-md-1 {
+ padding-right: .25rem !important
+ }
+
+ .pe-md-2 {
+ padding-right: .5rem !important
+ }
+
+ .pe-md-3 {
+ padding-right: 1rem !important
+ }
+
+ .pe-md-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pe-md-5 {
+ padding-right: 3rem !important
+ }
+
+ .pb-md-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-md-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-md-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-md-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-md-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-md-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .ps-md-0 {
+ padding-left: 0 !important
+ }
+
+ .ps-md-1 {
+ padding-left: .25rem !important
+ }
+
+ .ps-md-2 {
+ padding-left: .5rem !important
+ }
+
+ .ps-md-3 {
+ padding-left: 1rem !important
+ }
+
+ .ps-md-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .ps-md-5 {
+ padding-left: 3rem !important
+ }
+
+ .text-md-start {
+ text-align: left !important
+ }
+
+ .text-md-end {
+ text-align: right !important
+ }
+
+ .text-md-center {
+ text-align: center !important
+ }
+}
+
+@media (min-width:992px) {
+ .float-lg-start {
+ float: left !important
+ }
+
+ .float-lg-end {
+ float: right !important
+ }
+
+ .float-lg-none {
+ float: none !important
+ }
+
+ .d-lg-inline {
+ display: inline !important
+ }
+
+ .d-lg-inline-block {
+ display: inline-block !important
+ }
+
+ .d-lg-block {
+ display: block !important
+ }
+
+ .d-lg-grid {
+ display: grid !important
+ }
+
+ .d-lg-table {
+ display: table !important
+ }
+
+ .d-lg-table-row {
+ display: table-row !important
+ }
+
+ .d-lg-table-cell {
+ display: table-cell !important
+ }
+
+ .d-lg-flex {
+ display: flex !important
+ }
+
+ .d-lg-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-lg-none {
+ display: none !important
+ }
+
+ .flex-lg-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-lg-row {
+ flex-direction: row !important
+ }
+
+ .flex-lg-column {
+ flex-direction: column !important
+ }
+
+ .flex-lg-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-lg-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-lg-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-lg-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-lg-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-lg-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-lg-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-lg-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-lg-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .gap-lg-0 {
+ gap: 0 !important
+ }
+
+ .gap-lg-1 {
+ gap: .25rem !important
+ }
+
+ .gap-lg-2 {
+ gap: .5rem !important
+ }
+
+ .gap-lg-3 {
+ gap: 1rem !important
+ }
+
+ .gap-lg-4 {
+ gap: 1.5rem !important
+ }
+
+ .gap-lg-5 {
+ gap: 3rem !important
+ }
+
+ .justify-content-lg-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-lg-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-lg-center {
+ justify-content: center !important
+ }
+
+ .justify-content-lg-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-lg-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-lg-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-lg-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-lg-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-lg-center {
+ align-items: center !important
+ }
+
+ .align-items-lg-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-lg-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-lg-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-lg-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-lg-center {
+ align-content: center !important
+ }
+
+ .align-content-lg-between {
+ align-content: space-between !important
+ }
+
+ .align-content-lg-around {
+ align-content: space-around !important
+ }
+
+ .align-content-lg-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-lg-auto {
+ align-self: auto !important
+ }
+
+ .align-self-lg-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-lg-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-lg-center {
+ align-self: center !important
+ }
+
+ .align-self-lg-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-lg-stretch {
+ align-self: stretch !important
+ }
+
+ .order-lg-first {
+ order: -1 !important
+ }
+
+ .order-lg-0 {
+ order: 0 !important
+ }
+
+ .order-lg-1 {
+ order: 1 !important
+ }
+
+ .order-lg-2 {
+ order: 2 !important
+ }
+
+ .order-lg-3 {
+ order: 3 !important
+ }
+
+ .order-lg-4 {
+ order: 4 !important
+ }
+
+ .order-lg-5 {
+ order: 5 !important
+ }
+
+ .order-lg-last {
+ order: 6 !important
+ }
+
+ .m-lg-0 {
+ margin: 0 !important
+ }
+
+ .m-lg-1 {
+ margin: .25rem !important
+ }
+
+ .m-lg-2 {
+ margin: .5rem !important
+ }
+
+ .m-lg-3 {
+ margin: 1rem !important
+ }
+
+ .m-lg-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-lg-5 {
+ margin: 3rem !important
+ }
+
+ .m-lg-auto {
+ margin: auto !important
+ }
+
+ .mx-lg-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-lg-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-lg-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-lg-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-lg-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-lg-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-lg-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-lg-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-lg-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-lg-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-lg-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-lg-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-lg-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-lg-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-lg-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-lg-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-lg-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-lg-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-lg-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-lg-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-lg-auto {
+ margin-top: auto !important
+ }
+
+ .me-lg-0 {
+ margin-right: 0 !important
+ }
+
+ .me-lg-1 {
+ margin-right: .25rem !important
+ }
+
+ .me-lg-2 {
+ margin-right: .5rem !important
+ }
+
+ .me-lg-3 {
+ margin-right: 1rem !important
+ }
+
+ .me-lg-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .me-lg-5 {
+ margin-right: 3rem !important
+ }
+
+ .me-lg-auto {
+ margin-right: auto !important
+ }
+
+ .mb-lg-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-lg-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-lg-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-lg-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-lg-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-lg-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-lg-auto {
+ margin-bottom: auto !important
+ }
+
+ .ms-lg-0 {
+ margin-left: 0 !important
+ }
+
+ .ms-lg-1 {
+ margin-left: .25rem !important
+ }
+
+ .ms-lg-2 {
+ margin-left: .5rem !important
+ }
+
+ .ms-lg-3 {
+ margin-left: 1rem !important
+ }
+
+ .ms-lg-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ms-lg-5 {
+ margin-left: 3rem !important
+ }
+
+ .ms-lg-auto {
+ margin-left: auto !important
+ }
+
+ .p-lg-0 {
+ padding: 0 !important
+ }
+
+ .p-lg-1 {
+ padding: .25rem !important
+ }
+
+ .p-lg-2 {
+ padding: .5rem !important
+ }
+
+ .p-lg-3 {
+ padding: 1rem !important
+ }
+
+ .p-lg-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-lg-5 {
+ padding: 3rem !important
+ }
+
+ .px-lg-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-lg-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-lg-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-lg-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-lg-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-lg-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .py-lg-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-lg-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-lg-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-lg-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-lg-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-lg-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .pt-lg-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-lg-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-lg-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-lg-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-lg-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-lg-5 {
+ padding-top: 3rem !important
+ }
+
+ .pe-lg-0 {
+ padding-right: 0 !important
+ }
+
+ .pe-lg-1 {
+ padding-right: .25rem !important
+ }
+
+ .pe-lg-2 {
+ padding-right: .5rem !important
+ }
+
+ .pe-lg-3 {
+ padding-right: 1rem !important
+ }
+
+ .pe-lg-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pe-lg-5 {
+ padding-right: 3rem !important
+ }
+
+ .pb-lg-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-lg-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-lg-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-lg-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-lg-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-lg-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .ps-lg-0 {
+ padding-left: 0 !important
+ }
+
+ .ps-lg-1 {
+ padding-left: .25rem !important
+ }
+
+ .ps-lg-2 {
+ padding-left: .5rem !important
+ }
+
+ .ps-lg-3 {
+ padding-left: 1rem !important
+ }
+
+ .ps-lg-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .ps-lg-5 {
+ padding-left: 3rem !important
+ }
+
+ .text-lg-start {
+ text-align: left !important
+ }
+
+ .text-lg-end {
+ text-align: right !important
+ }
+
+ .text-lg-center {
+ text-align: center !important
+ }
+}
+
+@media (min-width:1200px) {
+ .float-xl-start {
+ float: left !important
+ }
+
+ .float-xl-end {
+ float: right !important
+ }
+
+ .float-xl-none {
+ float: none !important
+ }
+
+ .d-xl-inline {
+ display: inline !important
+ }
+
+ .d-xl-inline-block {
+ display: inline-block !important
+ }
+
+ .d-xl-block {
+ display: block !important
+ }
+
+ .d-xl-grid {
+ display: grid !important
+ }
+
+ .d-xl-table {
+ display: table !important
+ }
+
+ .d-xl-table-row {
+ display: table-row !important
+ }
+
+ .d-xl-table-cell {
+ display: table-cell !important
+ }
+
+ .d-xl-flex {
+ display: flex !important
+ }
+
+ .d-xl-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-xl-none {
+ display: none !important
+ }
+
+ .flex-xl-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-xl-row {
+ flex-direction: row !important
+ }
+
+ .flex-xl-column {
+ flex-direction: column !important
+ }
+
+ .flex-xl-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-xl-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-xl-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-xl-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-xl-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-xl-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-xl-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-xl-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-xl-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .gap-xl-0 {
+ gap: 0 !important
+ }
+
+ .gap-xl-1 {
+ gap: .25rem !important
+ }
+
+ .gap-xl-2 {
+ gap: .5rem !important
+ }
+
+ .gap-xl-3 {
+ gap: 1rem !important
+ }
+
+ .gap-xl-4 {
+ gap: 1.5rem !important
+ }
+
+ .gap-xl-5 {
+ gap: 3rem !important
+ }
+
+ .justify-content-xl-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-xl-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-xl-center {
+ justify-content: center !important
+ }
+
+ .justify-content-xl-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-xl-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-xl-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-xl-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-xl-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-xl-center {
+ align-items: center !important
+ }
+
+ .align-items-xl-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-xl-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-xl-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-xl-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-xl-center {
+ align-content: center !important
+ }
+
+ .align-content-xl-between {
+ align-content: space-between !important
+ }
+
+ .align-content-xl-around {
+ align-content: space-around !important
+ }
+
+ .align-content-xl-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-xl-auto {
+ align-self: auto !important
+ }
+
+ .align-self-xl-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-xl-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-xl-center {
+ align-self: center !important
+ }
+
+ .align-self-xl-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-xl-stretch {
+ align-self: stretch !important
+ }
+
+ .order-xl-first {
+ order: -1 !important
+ }
+
+ .order-xl-0 {
+ order: 0 !important
+ }
+
+ .order-xl-1 {
+ order: 1 !important
+ }
+
+ .order-xl-2 {
+ order: 2 !important
+ }
+
+ .order-xl-3 {
+ order: 3 !important
+ }
+
+ .order-xl-4 {
+ order: 4 !important
+ }
+
+ .order-xl-5 {
+ order: 5 !important
+ }
+
+ .order-xl-last {
+ order: 6 !important
+ }
+
+ .m-xl-0 {
+ margin: 0 !important
+ }
+
+ .m-xl-1 {
+ margin: .25rem !important
+ }
+
+ .m-xl-2 {
+ margin: .5rem !important
+ }
+
+ .m-xl-3 {
+ margin: 1rem !important
+ }
+
+ .m-xl-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-xl-5 {
+ margin: 3rem !important
+ }
+
+ .m-xl-auto {
+ margin: auto !important
+ }
+
+ .mx-xl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-xl-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-xl-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-xl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-xl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-xl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-xl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-xl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-xl-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-xl-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-xl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-xl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-xl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-xl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-xl-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-xl-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-xl-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-xl-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-xl-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-xl-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-xl-auto {
+ margin-top: auto !important
+ }
+
+ .me-xl-0 {
+ margin-right: 0 !important
+ }
+
+ .me-xl-1 {
+ margin-right: .25rem !important
+ }
+
+ .me-xl-2 {
+ margin-right: .5rem !important
+ }
+
+ .me-xl-3 {
+ margin-right: 1rem !important
+ }
+
+ .me-xl-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .me-xl-5 {
+ margin-right: 3rem !important
+ }
+
+ .me-xl-auto {
+ margin-right: auto !important
+ }
+
+ .mb-xl-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-xl-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-xl-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-xl-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-xl-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-xl-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-xl-auto {
+ margin-bottom: auto !important
+ }
+
+ .ms-xl-0 {
+ margin-left: 0 !important
+ }
+
+ .ms-xl-1 {
+ margin-left: .25rem !important
+ }
+
+ .ms-xl-2 {
+ margin-left: .5rem !important
+ }
+
+ .ms-xl-3 {
+ margin-left: 1rem !important
+ }
+
+ .ms-xl-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ms-xl-5 {
+ margin-left: 3rem !important
+ }
+
+ .ms-xl-auto {
+ margin-left: auto !important
+ }
+
+ .p-xl-0 {
+ padding: 0 !important
+ }
+
+ .p-xl-1 {
+ padding: .25rem !important
+ }
+
+ .p-xl-2 {
+ padding: .5rem !important
+ }
+
+ .p-xl-3 {
+ padding: 1rem !important
+ }
+
+ .p-xl-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-xl-5 {
+ padding: 3rem !important
+ }
+
+ .px-xl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-xl-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-xl-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-xl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-xl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-xl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .py-xl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-xl-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-xl-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-xl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-xl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-xl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .pt-xl-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-xl-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-xl-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-xl-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-xl-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-xl-5 {
+ padding-top: 3rem !important
+ }
+
+ .pe-xl-0 {
+ padding-right: 0 !important
+ }
+
+ .pe-xl-1 {
+ padding-right: .25rem !important
+ }
+
+ .pe-xl-2 {
+ padding-right: .5rem !important
+ }
+
+ .pe-xl-3 {
+ padding-right: 1rem !important
+ }
+
+ .pe-xl-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pe-xl-5 {
+ padding-right: 3rem !important
+ }
+
+ .pb-xl-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-xl-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-xl-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-xl-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-xl-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-xl-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .ps-xl-0 {
+ padding-left: 0 !important
+ }
+
+ .ps-xl-1 {
+ padding-left: .25rem !important
+ }
+
+ .ps-xl-2 {
+ padding-left: .5rem !important
+ }
+
+ .ps-xl-3 {
+ padding-left: 1rem !important
+ }
+
+ .ps-xl-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .ps-xl-5 {
+ padding-left: 3rem !important
+ }
+
+ .text-xl-start {
+ text-align: left !important
+ }
+
+ .text-xl-end {
+ text-align: right !important
+ }
+
+ .text-xl-center {
+ text-align: center !important
+ }
+}
+
+@media (min-width:1400px) {
+ .float-xxl-start {
+ float: left !important
+ }
+
+ .float-xxl-end {
+ float: right !important
+ }
+
+ .float-xxl-none {
+ float: none !important
+ }
+
+ .d-xxl-inline {
+ display: inline !important
+ }
+
+ .d-xxl-inline-block {
+ display: inline-block !important
+ }
+
+ .d-xxl-block {
+ display: block !important
+ }
+
+ .d-xxl-grid {
+ display: grid !important
+ }
+
+ .d-xxl-table {
+ display: table !important
+ }
+
+ .d-xxl-table-row {
+ display: table-row !important
+ }
+
+ .d-xxl-table-cell {
+ display: table-cell !important
+ }
+
+ .d-xxl-flex {
+ display: flex !important
+ }
+
+ .d-xxl-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-xxl-none {
+ display: none !important
+ }
+
+ .flex-xxl-fill {
+ flex: 1 1 auto !important
+ }
+
+ .flex-xxl-row {
+ flex-direction: row !important
+ }
+
+ .flex-xxl-column {
+ flex-direction: column !important
+ }
+
+ .flex-xxl-row-reverse {
+ flex-direction: row-reverse !important
+ }
+
+ .flex-xxl-column-reverse {
+ flex-direction: column-reverse !important
+ }
+
+ .flex-xxl-grow-0 {
+ flex-grow: 0 !important
+ }
+
+ .flex-xxl-grow-1 {
+ flex-grow: 1 !important
+ }
+
+ .flex-xxl-shrink-0 {
+ flex-shrink: 0 !important
+ }
+
+ .flex-xxl-shrink-1 {
+ flex-shrink: 1 !important
+ }
+
+ .flex-xxl-wrap {
+ flex-wrap: wrap !important
+ }
+
+ .flex-xxl-nowrap {
+ flex-wrap: nowrap !important
+ }
+
+ .flex-xxl-wrap-reverse {
+ flex-wrap: wrap-reverse !important
+ }
+
+ .gap-xxl-0 {
+ gap: 0 !important
+ }
+
+ .gap-xxl-1 {
+ gap: .25rem !important
+ }
+
+ .gap-xxl-2 {
+ gap: .5rem !important
+ }
+
+ .gap-xxl-3 {
+ gap: 1rem !important
+ }
+
+ .gap-xxl-4 {
+ gap: 1.5rem !important
+ }
+
+ .gap-xxl-5 {
+ gap: 3rem !important
+ }
+
+ .justify-content-xxl-start {
+ justify-content: flex-start !important
+ }
+
+ .justify-content-xxl-end {
+ justify-content: flex-end !important
+ }
+
+ .justify-content-xxl-center {
+ justify-content: center !important
+ }
+
+ .justify-content-xxl-between {
+ justify-content: space-between !important
+ }
+
+ .justify-content-xxl-around {
+ justify-content: space-around !important
+ }
+
+ .justify-content-xxl-evenly {
+ justify-content: space-evenly !important
+ }
+
+ .align-items-xxl-start {
+ align-items: flex-start !important
+ }
+
+ .align-items-xxl-end {
+ align-items: flex-end !important
+ }
+
+ .align-items-xxl-center {
+ align-items: center !important
+ }
+
+ .align-items-xxl-baseline {
+ align-items: baseline !important
+ }
+
+ .align-items-xxl-stretch {
+ align-items: stretch !important
+ }
+
+ .align-content-xxl-start {
+ align-content: flex-start !important
+ }
+
+ .align-content-xxl-end {
+ align-content: flex-end !important
+ }
+
+ .align-content-xxl-center {
+ align-content: center !important
+ }
+
+ .align-content-xxl-between {
+ align-content: space-between !important
+ }
+
+ .align-content-xxl-around {
+ align-content: space-around !important
+ }
+
+ .align-content-xxl-stretch {
+ align-content: stretch !important
+ }
+
+ .align-self-xxl-auto {
+ align-self: auto !important
+ }
+
+ .align-self-xxl-start {
+ align-self: flex-start !important
+ }
+
+ .align-self-xxl-end {
+ align-self: flex-end !important
+ }
+
+ .align-self-xxl-center {
+ align-self: center !important
+ }
+
+ .align-self-xxl-baseline {
+ align-self: baseline !important
+ }
+
+ .align-self-xxl-stretch {
+ align-self: stretch !important
+ }
+
+ .order-xxl-first {
+ order: -1 !important
+ }
+
+ .order-xxl-0 {
+ order: 0 !important
+ }
+
+ .order-xxl-1 {
+ order: 1 !important
+ }
+
+ .order-xxl-2 {
+ order: 2 !important
+ }
+
+ .order-xxl-3 {
+ order: 3 !important
+ }
+
+ .order-xxl-4 {
+ order: 4 !important
+ }
+
+ .order-xxl-5 {
+ order: 5 !important
+ }
+
+ .order-xxl-last {
+ order: 6 !important
+ }
+
+ .m-xxl-0 {
+ margin: 0 !important
+ }
+
+ .m-xxl-1 {
+ margin: .25rem !important
+ }
+
+ .m-xxl-2 {
+ margin: .5rem !important
+ }
+
+ .m-xxl-3 {
+ margin: 1rem !important
+ }
+
+ .m-xxl-4 {
+ margin: 1.5rem !important
+ }
+
+ .m-xxl-5 {
+ margin: 3rem !important
+ }
+
+ .m-xxl-auto {
+ margin: auto !important
+ }
+
+ .mx-xxl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important
+ }
+
+ .mx-xxl-1 {
+ margin-right: .25rem !important;
+ margin-left: .25rem !important
+ }
+
+ .mx-xxl-2 {
+ margin-right: .5rem !important;
+ margin-left: .5rem !important
+ }
+
+ .mx-xxl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important
+ }
+
+ .mx-xxl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important
+ }
+
+ .mx-xxl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important
+ }
+
+ .mx-xxl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important
+ }
+
+ .my-xxl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important
+ }
+
+ .my-xxl-1 {
+ margin-top: .25rem !important;
+ margin-bottom: .25rem !important
+ }
+
+ .my-xxl-2 {
+ margin-top: .5rem !important;
+ margin-bottom: .5rem !important
+ }
+
+ .my-xxl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important
+ }
+
+ .my-xxl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important
+ }
+
+ .my-xxl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important
+ }
+
+ .my-xxl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important
+ }
+
+ .mt-xxl-0 {
+ margin-top: 0 !important
+ }
+
+ .mt-xxl-1 {
+ margin-top: .25rem !important
+ }
+
+ .mt-xxl-2 {
+ margin-top: .5rem !important
+ }
+
+ .mt-xxl-3 {
+ margin-top: 1rem !important
+ }
+
+ .mt-xxl-4 {
+ margin-top: 1.5rem !important
+ }
+
+ .mt-xxl-5 {
+ margin-top: 3rem !important
+ }
+
+ .mt-xxl-auto {
+ margin-top: auto !important
+ }
+
+ .me-xxl-0 {
+ margin-right: 0 !important
+ }
+
+ .me-xxl-1 {
+ margin-right: .25rem !important
+ }
+
+ .me-xxl-2 {
+ margin-right: .5rem !important
+ }
+
+ .me-xxl-3 {
+ margin-right: 1rem !important
+ }
+
+ .me-xxl-4 {
+ margin-right: 1.5rem !important
+ }
+
+ .me-xxl-5 {
+ margin-right: 3rem !important
+ }
+
+ .me-xxl-auto {
+ margin-right: auto !important
+ }
+
+ .mb-xxl-0 {
+ margin-bottom: 0 !important
+ }
+
+ .mb-xxl-1 {
+ margin-bottom: .25rem !important
+ }
+
+ .mb-xxl-2 {
+ margin-bottom: .5rem !important
+ }
+
+ .mb-xxl-3 {
+ margin-bottom: 1rem !important
+ }
+
+ .mb-xxl-4 {
+ margin-bottom: 1.5rem !important
+ }
+
+ .mb-xxl-5 {
+ margin-bottom: 3rem !important
+ }
+
+ .mb-xxl-auto {
+ margin-bottom: auto !important
+ }
+
+ .ms-xxl-0 {
+ margin-left: 0 !important
+ }
+
+ .ms-xxl-1 {
+ margin-left: .25rem !important
+ }
+
+ .ms-xxl-2 {
+ margin-left: .5rem !important
+ }
+
+ .ms-xxl-3 {
+ margin-left: 1rem !important
+ }
+
+ .ms-xxl-4 {
+ margin-left: 1.5rem !important
+ }
+
+ .ms-xxl-5 {
+ margin-left: 3rem !important
+ }
+
+ .ms-xxl-auto {
+ margin-left: auto !important
+ }
+
+ .p-xxl-0 {
+ padding: 0 !important
+ }
+
+ .p-xxl-1 {
+ padding: .25rem !important
+ }
+
+ .p-xxl-2 {
+ padding: .5rem !important
+ }
+
+ .p-xxl-3 {
+ padding: 1rem !important
+ }
+
+ .p-xxl-4 {
+ padding: 1.5rem !important
+ }
+
+ .p-xxl-5 {
+ padding: 3rem !important
+ }
+
+ .px-xxl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important
+ }
+
+ .px-xxl-1 {
+ padding-right: .25rem !important;
+ padding-left: .25rem !important
+ }
+
+ .px-xxl-2 {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important
+ }
+
+ .px-xxl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important
+ }
+
+ .px-xxl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important
+ }
+
+ .px-xxl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important
+ }
+
+ .py-xxl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important
+ }
+
+ .py-xxl-1 {
+ padding-top: .25rem !important;
+ padding-bottom: .25rem !important
+ }
+
+ .py-xxl-2 {
+ padding-top: .5rem !important;
+ padding-bottom: .5rem !important
+ }
+
+ .py-xxl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important
+ }
+
+ .py-xxl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important
+ }
+
+ .py-xxl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important
+ }
+
+ .pt-xxl-0 {
+ padding-top: 0 !important
+ }
+
+ .pt-xxl-1 {
+ padding-top: .25rem !important
+ }
+
+ .pt-xxl-2 {
+ padding-top: .5rem !important
+ }
+
+ .pt-xxl-3 {
+ padding-top: 1rem !important
+ }
+
+ .pt-xxl-4 {
+ padding-top: 1.5rem !important
+ }
+
+ .pt-xxl-5 {
+ padding-top: 3rem !important
+ }
+
+ .pe-xxl-0 {
+ padding-right: 0 !important
+ }
+
+ .pe-xxl-1 {
+ padding-right: .25rem !important
+ }
+
+ .pe-xxl-2 {
+ padding-right: .5rem !important
+ }
+
+ .pe-xxl-3 {
+ padding-right: 1rem !important
+ }
+
+ .pe-xxl-4 {
+ padding-right: 1.5rem !important
+ }
+
+ .pe-xxl-5 {
+ padding-right: 3rem !important
+ }
+
+ .pb-xxl-0 {
+ padding-bottom: 0 !important
+ }
+
+ .pb-xxl-1 {
+ padding-bottom: .25rem !important
+ }
+
+ .pb-xxl-2 {
+ padding-bottom: .5rem !important
+ }
+
+ .pb-xxl-3 {
+ padding-bottom: 1rem !important
+ }
+
+ .pb-xxl-4 {
+ padding-bottom: 1.5rem !important
+ }
+
+ .pb-xxl-5 {
+ padding-bottom: 3rem !important
+ }
+
+ .ps-xxl-0 {
+ padding-left: 0 !important
+ }
+
+ .ps-xxl-1 {
+ padding-left: .25rem !important
+ }
+
+ .ps-xxl-2 {
+ padding-left: .5rem !important
+ }
+
+ .ps-xxl-3 {
+ padding-left: 1rem !important
+ }
+
+ .ps-xxl-4 {
+ padding-left: 1.5rem !important
+ }
+
+ .ps-xxl-5 {
+ padding-left: 3rem !important
+ }
+
+ .text-xxl-start {
+ text-align: left !important
+ }
+
+ .text-xxl-end {
+ text-align: right !important
+ }
+
+ .text-xxl-center {
+ text-align: center !important
+ }
+}
+
+@media (min-width:1200px) {
+ .fs-1 {
+ font-size: 2.5rem !important
+ }
+
+ .fs-2 {
+ font-size: 2rem !important
+ }
+
+ .fs-3 {
+ font-size: 1.75rem !important
+ }
+
+ .fs-4 {
+ font-size: 1.5rem !important
+ }
+}
+
+@media print {
+ .d-print-inline {
+ display: inline !important
+ }
+
+ .d-print-inline-block {
+ display: inline-block !important
+ }
+
+ .d-print-block {
+ display: block !important
+ }
+
+ .d-print-grid {
+ display: grid !important
+ }
+
+ .d-print-table {
+ display: table !important
+ }
+
+ .d-print-table-row {
+ display: table-row !important
+ }
+
+ .d-print-table-cell {
+ display: table-cell !important
+ }
+
+ .d-print-flex {
+ display: flex !important
+ }
+
+ .d-print-inline-flex {
+ display: inline-flex !important
+ }
+
+ .d-print-none {
+ display: none !important
+ }
+}
+
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/filter-gallery.css b/wp-content/plugins/portfolio-filter-gallery/css/filter-gallery.css
new file mode 100644
index 0000000..c7c9721
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/filter-gallery.css
@@ -0,0 +1,231 @@
+/* Filter output css*/
+button:focus, button:active {
+ background: transparent !important;
+}
+
+.filtr-container {
+ overflow:hidden;
+}
+.filtr-container, .filtr-container .filtr-item {
+ -webkit-transition-duration: 0.8s;
+ -moz-transition-duration: 0.8s;
+ -ms-transition-duration: 0.8s;
+ -o-transition-duration: 0.8s;
+ transition-duration: 0.8s;
+
+
+}
+
+.filtr-item {
+ -webkit-transition-property: height, width;
+ -moz-transition-property: height, width;
+ -ms-transition-property: height, width;
+ -o-transition-property: height, width;
+ transition-property: height, width;
+}
+
+.isotope .isotope-item {
+ -webkit-transition-property: -webkit-transform, opacity;
+ -moz-transition-property: -moz-transform, opacity;
+ -ms-transition-property: -ms-transform, opacity;
+ -o-transition-property: -o-transform, opacity;
+ transition-property: transform, opacity;
+}
+
+/**** disabling Isotope CSS3 transitions ****/
+/* .isotope.no-transition,
+.isotope.no-transition .isotope-item,
+.isotope .isotope-item.no-transition {
+ -webkit-transition-duration: 0s;
+ -moz-transition-duration: 0s;
+ -ms-transition-duration: 0s;
+ -o-transition-duration: 0s;
+ transition-duration: 0s;
+} */
+
+/**** disabling Isotope CSS3 transitions ****/
+.filtr-container .pf_result.no-transition,
+.pf_result.no-transition,
+.pf_result.no-transition .pf_result {
+ transition-duration: 0s;
+}
+
+.filtr-container {
+ -webkit-transition-property: height, width;
+ -moz-transition-property: height, width;
+ -ms-transition-property: height, width;
+ -o-transition-property: height, width;
+ transition-property: height, width;
+}
+/* The Magnificent Clearfix: nicolasgallagher.com/micro-clearfix-hack/ */
+.clearfix:before, .clearfix:after { content: ""; display: table; }
+.clearfix:after { clear: both; }
+.clearfix { zoom: 1; }
+/* .filtr-container:after {
+ content: '';
+ display: block;
+ clear: both;
+} */
+ .filtr-container .filtr-item {
+ -webkit-transition-property: -webkit-transform, opacity;
+ -moz-transition-property: -moz-transform, opacity;
+ -ms-transition-property: -ms-transform, opacity;
+ -o-transition-property: -o-transform, opacity;
+ transition-property: transform, opacity;
+ }
+.filtr-item {
+ float: left;
+ overflow: hidden;
+ /*padding: 7px;*/
+ position: relative;
+ /*opacity: 0;*/
+}
+
+
+.shown,
+.no-js .filtr-item,
+.no-cssanimations .filtr-item {
+ /*opacity: 1;*/
+}
+
+/* .grid li a,
+.grid li img {
+ outline: none;
+ border: none;
+ display: block;
+ max-width: 100%;
+} */
+
+
+/* Effect 3: Scale up */
+/* .animate {
+ transform: scale(1);
+ transition: all 700ms ease-in-out;
+}*/
+
+.filtr-item {
+ padding: 1rem;
+}
+.item-desc {
+ background-color: rgba(0, 0, 0, 0.5);
+ bottom: 16px;
+ color: white;
+ display: block;
+ font-weight: 500;
+ left: 2rem;
+ padding: 4px;
+ position: absolute;
+ right: 2rem;
+ text-align: center;
+ text-transform: capitalize;
+}
+
+/* Filter controls */
+.simplefilter li, .sortandshuffle li {
+ cursor: pointer;
+ display: inline-block;
+ text-transform: capitalize;
+ padding: 4px 30px;
+ transition: background .3s linear,color .3s linear,border .3s linear,opacity .3s linear;
+}
+ .sortandshuffle li:hover {
+ border: 4px solid #ffffff;
+ padding: 7px 28px;
+}
+.simplefilter li {
+ font-weight:400;
+}
+.simplefilter li:hover {
+
+ /*border: 4px solid #ffffff;*/
+ background-color: #585858;
+ /*padding: 11px 36px;*/
+}
+
+.simplefilter li.active {
+ background-color: #000000;
+ color:#FFFFFF;
+
+}
+.simplefilter {
+ width:100%;
+}
+
+/* Shuffle and sort controls */
+
+.sortandshuffle .shuffle-btn {
+ background-color: #dec800;
+}
+.sortandshuffle .sort-btn {
+ background-color: #de0000;
+}
+.sortandshuffle .sort-btn.active {
+ background-color: #9d0000;
+}
+
+/* Search control */
+.search-row {
+ margin-left: 2.5rem;
+}
+.filtr-search {
+ border: 5px solid #ccc !important;
+ padding: 7px 30px 6px !important;
+ text-transform: uppercase;
+}
+.item-position {
+ background-color: rgba(0, 0, 0, 0.5);
+ border-radius: 5px;
+ color: white;
+ display: block;
+ font-weight: 300;
+ position: absolute;
+ text-align: center;
+ text-transform: uppercase;
+ bottom: auto;
+ left: 3rem;
+ padding: 0.75rem 1.25rem;
+ right: auto;
+ top: 3rem;
+ padding-bottom: 0px;
+ padding-top: 0px;
+}
+
+
+/* Portfolio video gallery icon */
+
+.snipv12 {
+
+ overflow: hidden;
+ width: 100%;
+}
+.snipv12 .portfolio_thumbnail {
+ max-width: 100%;
+ vertical-align: top;
+ -webkit-transition: all 0.5s ease-out;
+ transition: all 0.5s ease-out;
+}
+.snipv12 .portfolio_thumbnail,
+.snipv12 .portfolio_thumbnail {
+ -webkit-transform: scale(1.12);
+ transform: scale(1.12);
+ opacity: 0.5;
+}
+
+.snipv12 i {
+
+ color:#00ADEF;
+ position: absolute;
+ bottom: 50%;
+ right: 45%;
+ font-size: 30px;
+ line-height: 1em;
+ opacity: 0;
+ -webkit-transition: all 0.4s cubic-bezier(0.6, -0.8, 0.735, 0.045);
+ transition: all 0.4s cubic-bezier(0.6, -0.8, 0.735, 0.045);
+}
+.snipv12 i,
+.snipv12 i {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ opacity:1;
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/filter-templet.css b/wp-content/plugins/portfolio-filter-gallery/css/filter-templet.css
new file mode 100644
index 0000000..b58828e
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/filter-templet.css
@@ -0,0 +1,75 @@
+.post-type-awl_filter_gallery .notice {
+ display:none;
+}
+/* pointer */
+.cat_icon{
+ cursor:pointer;
+}
+.cat_icon:hover{
+ color:#0078D7;
+}
+
+.awl-spacing-sm {
+ margin-top:20px;
+ margin-bottom:20px;
+}
+.awl-spacing-md{
+ margin-top:50px;
+ margin-bottom:50px;
+}
+.awl-spacing-lg{
+ margin-top:100px;
+ margin-bottom:100px;
+}
+.form-btns {
+margin-bottom:5px;
+}
+
+.pfg-btn {
+ border-radius: 0 !important;
+ padding-left: 11px !important;
+ background-color: #cd2757 !important;
+ border-color: #cd2757 !important;
+ font-weight: 500;
+}
+
+#cat-table-div .notice {
+ padding: 15px 12px;
+ font-size: 14px;
+}
+
+#cat-table .check-column {
+ width: 10.2em !important
+}
+#cat-table .check-column #check-all {
+margin: 10px 4px 0 10px
+}
+
+#cat-table-div .notice-info {
+ border-left-color: #cd2757;
+}
+#cat-table .cat_icon:hover {
+ color: #cd2757;
+}
+#cat-table tr:hover {
+ background-color: #f0f6fc;
+ cursor:pointer;
+}
+.upgrade-btns {
+ display: inline-block;
+}
+
+.awl_filter_gallery_page_pfg-filter-page .pfg-meta-box-filter-sec {
+ margin-top:80px;
+}
+#update_div {
+position: relative;
+
+}
+#cat-table-div .notice {
+position: absolute;
+ width: 98%;
+ bottom: 0;
+ margin-bottom: -60px;
+ display:block !important;
+}
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/font-awesome.min.css b/wp-content/plugins/portfolio-filter-gallery/css/font-awesome.min.css
new file mode 100644
index 0000000..540440c
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/hover.css b/wp-content/plugins/portfolio-filter-gallery/css/hover.css
new file mode 100644
index 0000000..8d0a16d
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/hover.css
@@ -0,0 +1,4879 @@
+/*!
+ * Hover.css (http://ianlunn.github.io/Hover/)
+ * Version: 2.0.2
+ * Author: Ian Lunn @IanLunn
+ * Author URL: http://ianlunn.co.uk/
+ * Github: https://github.com/IanLunn/Hover
+
+ * Made available under a MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+
+ * Hover.css Copyright Ian Lunn 2014. Generated with Sass.
+ */
+/* 2D TRANSITIONS */
+/* Grow */
+.hvr-grow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-grow:hover, .hvr-grow:focus, .hvr-grow:active {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+}
+
+/* Shrink */
+.hvr-shrink {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-shrink:hover, .hvr-shrink:focus, .hvr-shrink:active {
+ -webkit-transform: scale(0.9);
+ transform: scale(0.9);
+}
+
+/* Pulse */
+@-webkit-keyframes hvr-pulse {
+ 25% {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+
+ 75% {
+ -webkit-transform: scale(0.9);
+ transform: scale(0.9);
+ }
+}
+
+@keyframes hvr-pulse {
+ 25% {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+
+ 75% {
+ -webkit-transform: scale(0.9);
+ transform: scale(0.9);
+ }
+}
+
+.hvr-pulse {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-pulse:hover, .hvr-pulse:focus, .hvr-pulse:active {
+ -webkit-animation-name: hvr-pulse;
+ animation-name: hvr-pulse;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+}
+
+/* Pulse Grow */
+@-webkit-keyframes hvr-pulse-grow {
+ to {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+}
+
+@keyframes hvr-pulse-grow {
+ to {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ }
+}
+
+.hvr-pulse-grow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-pulse-grow:hover, .hvr-pulse-grow:focus, .hvr-pulse-grow:active {
+ -webkit-animation-name: hvr-pulse-grow;
+ animation-name: hvr-pulse-grow;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ animation-direction: alternate;
+}
+
+/* Pulse Shrink */
+@-webkit-keyframes hvr-pulse-shrink {
+ to {
+ -webkit-transform: scale(0.9);
+ transform: scale(0.9);
+ }
+}
+
+@keyframes hvr-pulse-shrink {
+ to {
+ -webkit-transform: scale(0.9);
+ transform: scale(0.9);
+ }
+}
+
+.hvr-pulse-shrink {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-pulse-shrink:hover, .hvr-pulse-shrink:focus, .hvr-pulse-shrink:active {
+ -webkit-animation-name: hvr-pulse-shrink;
+ animation-name: hvr-pulse-shrink;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ animation-direction: alternate;
+}
+
+/* Push */
+@-webkit-keyframes hvr-push {
+ 50% {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes hvr-push {
+ 50% {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ }
+
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+.hvr-push {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-push:hover, .hvr-push:focus, .hvr-push:active {
+ -webkit-animation-name: hvr-push;
+ animation-name: hvr-push;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Pop */
+@-webkit-keyframes hvr-pop {
+ 50% {
+ -webkit-transform: scale(1.2);
+ transform: scale(1.2);
+ }
+}
+
+@keyframes hvr-pop {
+ 50% {
+ -webkit-transform: scale(1.2);
+ transform: scale(1.2);
+ }
+}
+
+.hvr-pop {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-pop:hover, .hvr-pop:focus, .hvr-pop:active {
+ -webkit-animation-name: hvr-pop;
+ animation-name: hvr-pop;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Bounce In */
+.hvr-bounce-in {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+}
+.hvr-bounce-in:hover, .hvr-bounce-in:focus, .hvr-bounce-in:active {
+ -webkit-transform: scale(1.2);
+ transform: scale(1.2);
+ -webkit-transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
+ transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
+}
+
+/* Bounce Out */
+.hvr-bounce-out {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+}
+.hvr-bounce-out:hover, .hvr-bounce-out:focus, .hvr-bounce-out:active {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ -webkit-transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
+ transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
+}
+
+/* Rotate */
+.hvr-rotate {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-rotate:hover, .hvr-rotate:focus, .hvr-rotate:active {
+ -webkit-transform: rotate(4deg);
+ transform: rotate(4deg);
+}
+
+/* Grow Rotate */
+.hvr-grow-rotate {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-grow-rotate:hover, .hvr-grow-rotate:focus, .hvr-grow-rotate:active {
+ -webkit-transform: scale(1.1) rotate(4deg);
+ transform: scale(1.1) rotate(4deg);
+}
+
+/* Float */
+.hvr-float {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-float:hover, .hvr-float:focus, .hvr-float:active {
+ -webkit-transform: translateY(-8px);
+ transform: translateY(-8px);
+}
+
+/* Sink */
+.hvr-sink {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-sink:hover, .hvr-sink:focus, .hvr-sink:active {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+}
+
+/* Bob */
+@-webkit-keyframes hvr-bob {
+ 0% {
+ -webkit-transform: translateY(-8px);
+ transform: translateY(-8px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(-4px);
+ transform: translateY(-4px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(-8px);
+ transform: translateY(-8px);
+ }
+}
+
+@keyframes hvr-bob {
+ 0% {
+ -webkit-transform: translateY(-8px);
+ transform: translateY(-8px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(-4px);
+ transform: translateY(-4px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(-8px);
+ transform: translateY(-8px);
+ }
+}
+
+@-webkit-keyframes hvr-bob-float {
+ 100% {
+ -webkit-transform: translateY(-8px);
+ transform: translateY(-8px);
+ }
+}
+
+@keyframes hvr-bob-float {
+ 100% {
+ -webkit-transform: translateY(-8px);
+ transform: translateY(-8px);
+ }
+}
+
+.hvr-bob {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-bob:hover, .hvr-bob:focus, .hvr-bob:active {
+ -webkit-animation-name: hvr-bob-float, hvr-bob;
+ animation-name: hvr-bob-float, hvr-bob;
+ -webkit-animation-duration: .3s, 1.5s;
+ animation-duration: .3s, 1.5s;
+ -webkit-animation-delay: 0s, .3s;
+ animation-delay: 0s, .3s;
+ -webkit-animation-timing-function: ease-out, ease-in-out;
+ animation-timing-function: ease-out, ease-in-out;
+ -webkit-animation-iteration-count: 1, infinite;
+ animation-iteration-count: 1, infinite;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ -webkit-animation-direction: normal, alternate;
+ animation-direction: normal, alternate;
+}
+
+/* Hang */
+@-webkit-keyframes hvr-hang {
+ 0% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+}
+
+@keyframes hvr-hang {
+ 0% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+}
+
+@-webkit-keyframes hvr-hang-sink {
+ 100% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+}
+
+@keyframes hvr-hang-sink {
+ 100% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+}
+
+.hvr-hang {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-hang:hover, .hvr-hang:focus, .hvr-hang:active {
+ -webkit-animation-name: hvr-hang-sink, hvr-hang;
+ animation-name: hvr-hang-sink, hvr-hang;
+ -webkit-animation-duration: .3s, 1.5s;
+ animation-duration: .3s, 1.5s;
+ -webkit-animation-delay: 0s, .3s;
+ animation-delay: 0s, .3s;
+ -webkit-animation-timing-function: ease-out, ease-in-out;
+ animation-timing-function: ease-out, ease-in-out;
+ -webkit-animation-iteration-count: 1, infinite;
+ animation-iteration-count: 1, infinite;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ -webkit-animation-direction: normal, alternate;
+ animation-direction: normal, alternate;
+}
+
+/* Skew */
+.hvr-skew {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-skew:hover, .hvr-skew:focus, .hvr-skew:active {
+ -webkit-transform: skew(-10deg);
+ transform: skew(-10deg);
+}
+
+/* Skew Forward */
+.hvr-skew-forward {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transform-origin: 0 100%;
+ transform-origin: 0 100%;
+}
+.hvr-skew-forward:hover, .hvr-skew-forward:focus, .hvr-skew-forward:active {
+ -webkit-transform: skew(-10deg);
+ transform: skew(-10deg);
+}
+
+/* Skew Backward */
+.hvr-skew-backward {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transform-origin: 0 100%;
+ transform-origin: 0 100%;
+}
+.hvr-skew-backward:hover, .hvr-skew-backward:focus, .hvr-skew-backward:active {
+ -webkit-transform: skew(10deg);
+ transform: skew(10deg);
+}
+
+/* Wobble Vertical */
+@-webkit-keyframes hvr-wobble-vertical {
+ 16.65% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateY(1px);
+ transform: translateY(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes hvr-wobble-vertical {
+ 16.65% {
+ -webkit-transform: translateY(8px);
+ transform: translateY(8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateY(1px);
+ transform: translateY(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.hvr-wobble-vertical {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-wobble-vertical:hover, .hvr-wobble-vertical:focus, .hvr-wobble-vertical:active {
+ -webkit-animation-name: hvr-wobble-vertical;
+ animation-name: hvr-wobble-vertical;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Wobble Horizontal */
+@-webkit-keyframes hvr-wobble-horizontal {
+ 16.65% {
+ -webkit-transform: translateX(8px);
+ transform: translateX(8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateX(-6px);
+ transform: translateX(-6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateX(4px);
+ transform: translateX(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateX(-2px);
+ transform: translateX(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateX(1px);
+ transform: translateX(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes hvr-wobble-horizontal {
+ 16.65% {
+ -webkit-transform: translateX(8px);
+ transform: translateX(8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateX(-6px);
+ transform: translateX(-6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateX(4px);
+ transform: translateX(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateX(-2px);
+ transform: translateX(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateX(1px);
+ transform: translateX(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.hvr-wobble-horizontal {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-wobble-horizontal:hover, .hvr-wobble-horizontal:focus, .hvr-wobble-horizontal:active {
+ -webkit-animation-name: hvr-wobble-horizontal;
+ animation-name: hvr-wobble-horizontal;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Wobble To Bottom Right */
+@-webkit-keyframes hvr-wobble-to-bottom-right {
+ 16.65% {
+ -webkit-transform: translate(8px, 8px);
+ transform: translate(8px, 8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translate(-6px, -6px);
+ transform: translate(-6px, -6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translate(4px, 4px);
+ transform: translate(4px, 4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translate(-2px, -2px);
+ transform: translate(-2px, -2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translate(1px, 1px);
+ transform: translate(1px, 1px);
+ }
+
+ 100% {
+ -webkit-transform: translate(0, 0);
+ transform: translate(0, 0);
+ }
+}
+
+@keyframes hvr-wobble-to-bottom-right {
+ 16.65% {
+ -webkit-transform: translate(8px, 8px);
+ transform: translate(8px, 8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translate(-6px, -6px);
+ transform: translate(-6px, -6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translate(4px, 4px);
+ transform: translate(4px, 4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translate(-2px, -2px);
+ transform: translate(-2px, -2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translate(1px, 1px);
+ transform: translate(1px, 1px);
+ }
+
+ 100% {
+ -webkit-transform: translate(0, 0);
+ transform: translate(0, 0);
+ }
+}
+
+.hvr-wobble-to-bottom-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-wobble-to-bottom-right:hover, .hvr-wobble-to-bottom-right:focus, .hvr-wobble-to-bottom-right:active {
+ -webkit-animation-name: hvr-wobble-to-bottom-right;
+ animation-name: hvr-wobble-to-bottom-right;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Wobble To Top Right */
+@-webkit-keyframes hvr-wobble-to-top-right {
+ 16.65% {
+ -webkit-transform: translate(8px, -8px);
+ transform: translate(8px, -8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translate(-6px, 6px);
+ transform: translate(-6px, 6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translate(4px, -4px);
+ transform: translate(4px, -4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translate(-2px, 2px);
+ transform: translate(-2px, 2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translate(1px, -1px);
+ transform: translate(1px, -1px);
+ }
+
+ 100% {
+ -webkit-transform: translate(0, 0);
+ transform: translate(0, 0);
+ }
+}
+
+@keyframes hvr-wobble-to-top-right {
+ 16.65% {
+ -webkit-transform: translate(8px, -8px);
+ transform: translate(8px, -8px);
+ }
+
+ 33.3% {
+ -webkit-transform: translate(-6px, 6px);
+ transform: translate(-6px, 6px);
+ }
+
+ 49.95% {
+ -webkit-transform: translate(4px, -4px);
+ transform: translate(4px, -4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translate(-2px, 2px);
+ transform: translate(-2px, 2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translate(1px, -1px);
+ transform: translate(1px, -1px);
+ }
+
+ 100% {
+ -webkit-transform: translate(0, 0);
+ transform: translate(0, 0);
+ }
+}
+
+.hvr-wobble-to-top-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-wobble-to-top-right:hover, .hvr-wobble-to-top-right:focus, .hvr-wobble-to-top-right:active {
+ -webkit-animation-name: hvr-wobble-to-top-right;
+ animation-name: hvr-wobble-to-top-right;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Wobble Top */
+@-webkit-keyframes hvr-wobble-top {
+ 16.65% {
+ -webkit-transform: skew(-12deg);
+ transform: skew(-12deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skew(10deg);
+ transform: skew(10deg);
+ }
+
+ 49.95% {
+ -webkit-transform: skew(-6deg);
+ transform: skew(-6deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skew(4deg);
+ transform: skew(4deg);
+ }
+
+ 83.25% {
+ -webkit-transform: skew(-2deg);
+ transform: skew(-2deg);
+ }
+
+ 100% {
+ -webkit-transform: skew(0);
+ transform: skew(0);
+ }
+}
+
+@keyframes hvr-wobble-top {
+ 16.65% {
+ -webkit-transform: skew(-12deg);
+ transform: skew(-12deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skew(10deg);
+ transform: skew(10deg);
+ }
+
+ 49.95% {
+ -webkit-transform: skew(-6deg);
+ transform: skew(-6deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skew(4deg);
+ transform: skew(4deg);
+ }
+
+ 83.25% {
+ -webkit-transform: skew(-2deg);
+ transform: skew(-2deg);
+ }
+
+ 100% {
+ -webkit-transform: skew(0);
+ transform: skew(0);
+ }
+}
+
+.hvr-wobble-top {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transform-origin: 0 100%;
+ transform-origin: 0 100%;
+}
+.hvr-wobble-top:hover, .hvr-wobble-top:focus, .hvr-wobble-top:active {
+ -webkit-animation-name: hvr-wobble-top;
+ animation-name: hvr-wobble-top;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Wobble Bottom */
+@-webkit-keyframes hvr-wobble-bottom {
+ 16.65% {
+ -webkit-transform: skew(-12deg);
+ transform: skew(-12deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skew(10deg);
+ transform: skew(10deg);
+ }
+
+ 49.95% {
+ -webkit-transform: skew(-6deg);
+ transform: skew(-6deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skew(4deg);
+ transform: skew(4deg);
+ }
+
+ 83.25% {
+ -webkit-transform: skew(-2deg);
+ transform: skew(-2deg);
+ }
+
+ 100% {
+ -webkit-transform: skew(0);
+ transform: skew(0);
+ }
+}
+
+@keyframes hvr-wobble-bottom {
+ 16.65% {
+ -webkit-transform: skew(-12deg);
+ transform: skew(-12deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skew(10deg);
+ transform: skew(10deg);
+ }
+
+ 49.95% {
+ -webkit-transform: skew(-6deg);
+ transform: skew(-6deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skew(4deg);
+ transform: skew(4deg);
+ }
+
+ 83.25% {
+ -webkit-transform: skew(-2deg);
+ transform: skew(-2deg);
+ }
+
+ 100% {
+ -webkit-transform: skew(0);
+ transform: skew(0);
+ }
+}
+
+.hvr-wobble-bottom {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+}
+.hvr-wobble-bottom:hover, .hvr-wobble-bottom:focus, .hvr-wobble-bottom:active {
+ -webkit-animation-name: hvr-wobble-bottom;
+ animation-name: hvr-wobble-bottom;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Wobble Skew */
+@-webkit-keyframes hvr-wobble-skew {
+ 16.65% {
+ -webkit-transform: skew(-12deg);
+ transform: skew(-12deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skew(10deg);
+ transform: skew(10deg);
+ }
+
+ 49.95% {
+ -webkit-transform: skew(-6deg);
+ transform: skew(-6deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skew(4deg);
+ transform: skew(4deg);
+ }
+
+ 83.25% {
+ -webkit-transform: skew(-2deg);
+ transform: skew(-2deg);
+ }
+
+ 100% {
+ -webkit-transform: skew(0);
+ transform: skew(0);
+ }
+}
+
+@keyframes hvr-wobble-skew {
+ 16.65% {
+ -webkit-transform: skew(-12deg);
+ transform: skew(-12deg);
+ }
+
+ 33.3% {
+ -webkit-transform: skew(10deg);
+ transform: skew(10deg);
+ }
+
+ 49.95% {
+ -webkit-transform: skew(-6deg);
+ transform: skew(-6deg);
+ }
+
+ 66.6% {
+ -webkit-transform: skew(4deg);
+ transform: skew(4deg);
+ }
+
+ 83.25% {
+ -webkit-transform: skew(-2deg);
+ transform: skew(-2deg);
+ }
+
+ 100% {
+ -webkit-transform: skew(0);
+ transform: skew(0);
+ }
+}
+
+.hvr-wobble-skew {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-wobble-skew:hover, .hvr-wobble-skew:focus, .hvr-wobble-skew:active {
+ -webkit-animation-name: hvr-wobble-skew;
+ animation-name: hvr-wobble-skew;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Buzz */
+@-webkit-keyframes hvr-buzz {
+ 50% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+}
+
+@keyframes hvr-buzz {
+ 50% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+}
+
+.hvr-buzz {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-buzz:hover, .hvr-buzz:focus, .hvr-buzz:active {
+ -webkit-animation-name: hvr-buzz;
+ animation-name: hvr-buzz;
+ -webkit-animation-duration: 0.15s;
+ animation-duration: 0.15s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+}
+
+/* Buzz Out */
+@-webkit-keyframes hvr-buzz-out {
+ 10% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 20% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 30% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 40% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 50% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 60% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 70% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 80% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 90% {
+ -webkit-transform: translateX(1px) rotate(0);
+ transform: translateX(1px) rotate(0);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-1px) rotate(0);
+ transform: translateX(-1px) rotate(0);
+ }
+}
+
+@keyframes hvr-buzz-out {
+ 10% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 20% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 30% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 40% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 50% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 60% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 70% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 80% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 90% {
+ -webkit-transform: translateX(1px) rotate(0);
+ transform: translateX(1px) rotate(0);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-1px) rotate(0);
+ transform: translateX(-1px) rotate(0);
+ }
+}
+
+.hvr-buzz-out {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+}
+.hvr-buzz-out:hover, .hvr-buzz-out:focus, .hvr-buzz-out:active {
+ -webkit-animation-name: hvr-buzz-out;
+ animation-name: hvr-buzz-out;
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* BACKGROUND TRANSITIONS */
+/* Fade */
+.hvr-fade {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ overflow: hidden;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: color, background-color;
+ transition-property: color, background-color;
+}
+.hvr-fade:hover, .hvr-fade:focus, .hvr-fade:active {
+ background-color: #2098d1;
+ color: white;
+}
+
+/* Back Pulse */
+@-webkit-keyframes hvr-back-pulse {
+ 50% {
+ background-color: rgba(32, 152, 209, 0.75);
+ }
+}
+
+@keyframes hvr-back-pulse {
+ 50% {
+ background-color: rgba(32, 152, 209, 0.75);
+ }
+}
+
+.hvr-back-pulse {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ overflow: hidden;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+ -webkit-transition-property: color, background-color;
+ transition-property: color, background-color;
+}
+.hvr-back-pulse:hover, .hvr-back-pulse:focus, .hvr-back-pulse:active {
+ -webkit-animation-name: hvr-back-pulse;
+ animation-name: hvr-back-pulse;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-delay: 0.5s;
+ animation-delay: 0.5s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+ background-color: #2098d1;
+ background-color: #2098d1;
+ color: white;
+}
+
+/* Sweep To Right */
+.hvr-sweep-to-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-sweep-to-right:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleX(0);
+ transform: scaleX(0);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-sweep-to-right:hover, .hvr-sweep-to-right:focus, .hvr-sweep-to-right:active {
+ color: white;
+}
+.hvr-sweep-to-right:hover:before, .hvr-sweep-to-right:focus:before, .hvr-sweep-to-right:active:before {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+}
+
+/* Sweep To Left */
+.hvr-sweep-to-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-sweep-to-left:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleX(0);
+ transform: scaleX(0);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-sweep-to-left:hover, .hvr-sweep-to-left:focus, .hvr-sweep-to-left:active {
+ color: white;
+}
+.hvr-sweep-to-left:hover:before, .hvr-sweep-to-left:focus:before, .hvr-sweep-to-left:active:before {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+}
+
+/* Sweep To Bottom */
+.hvr-sweep-to-bottom {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-sweep-to-bottom:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-sweep-to-bottom:hover, .hvr-sweep-to-bottom:focus, .hvr-sweep-to-bottom:active {
+ color: white;
+}
+.hvr-sweep-to-bottom:hover:before, .hvr-sweep-to-bottom:focus:before, .hvr-sweep-to-bottom:active:before {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+}
+
+/* Sweep To Top */
+.hvr-sweep-to-top {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-sweep-to-top:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-sweep-to-top:hover, .hvr-sweep-to-top:focus, .hvr-sweep-to-top:active {
+ color: white;
+}
+.hvr-sweep-to-top:hover:before, .hvr-sweep-to-top:focus:before, .hvr-sweep-to-top:active:before {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+}
+
+/* Bounce To Right */
+.hvr-bounce-to-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+}
+.hvr-bounce-to-right:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleX(0);
+ transform: scaleX(0);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-bounce-to-right:hover, .hvr-bounce-to-right:focus, .hvr-bounce-to-right:active {
+ color: white;
+}
+.hvr-bounce-to-right:hover:before, .hvr-bounce-to-right:focus:before, .hvr-bounce-to-right:active:before {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+ transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+}
+
+/* Bounce To Left */
+.hvr-bounce-to-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+}
+.hvr-bounce-to-left:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleX(0);
+ transform: scaleX(0);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-bounce-to-left:hover, .hvr-bounce-to-left:focus, .hvr-bounce-to-left:active {
+ color: white;
+}
+.hvr-bounce-to-left:hover:before, .hvr-bounce-to-left:focus:before, .hvr-bounce-to-left:active:before {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+ transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+}
+
+/* Bounce To Bottom */
+.hvr-bounce-to-bottom {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+}
+.hvr-bounce-to-bottom:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-bounce-to-bottom:hover, .hvr-bounce-to-bottom:focus, .hvr-bounce-to-bottom:active {
+ color: white;
+}
+.hvr-bounce-to-bottom:hover:before, .hvr-bounce-to-bottom:focus:before, .hvr-bounce-to-bottom:active:before {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+ transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+}
+
+/* Bounce To Top */
+.hvr-bounce-to-top {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+}
+.hvr-bounce-to-top:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-bounce-to-top:hover, .hvr-bounce-to-top:focus, .hvr-bounce-to-top:active {
+ color: white;
+}
+.hvr-bounce-to-top:hover:before, .hvr-bounce-to-top:focus:before, .hvr-bounce-to-top:active:before {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+ transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+}
+
+/* Radial Out */
+.hvr-radial-out {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+ background: #e1e1e1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-radial-out:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ border-radius: 100%;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-radial-out:hover, .hvr-radial-out:focus, .hvr-radial-out:active {
+ color: white;
+}
+.hvr-radial-out:hover:before, .hvr-radial-out:focus:before, .hvr-radial-out:active:before {
+ -webkit-transform: scale(2);
+ transform: scale(2);
+}
+
+/* Radial In */
+.hvr-radial-in {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+ background: #2098d1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-radial-in:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #e1e1e1;
+ border-radius: 100%;
+ -webkit-transform: scale(2);
+ transform: scale(2);
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-radial-in:hover, .hvr-radial-in:focus, .hvr-radial-in:active {
+ color: white;
+}
+.hvr-radial-in:hover:before, .hvr-radial-in:focus:before, .hvr-radial-in:active:before {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+}
+
+/* Rectangle In */
+.hvr-rectangle-in {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ background: #2098d1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-rectangle-in:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #e1e1e1;
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-rectangle-in:hover, .hvr-rectangle-in:focus, .hvr-rectangle-in:active {
+ color: white;
+}
+.hvr-rectangle-in:hover:before, .hvr-rectangle-in:focus:before, .hvr-rectangle-in:active:before {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+}
+
+/* Rectangle Out */
+.hvr-rectangle-out {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ background: #e1e1e1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-rectangle-out:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-rectangle-out:hover, .hvr-rectangle-out:focus, .hvr-rectangle-out:active {
+ color: white;
+}
+.hvr-rectangle-out:hover:before, .hvr-rectangle-out:focus:before, .hvr-rectangle-out:active:before {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+}
+
+/* Shutter In Horizontal */
+.hvr-shutter-in-horizontal {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ background: #2098d1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-shutter-in-horizontal:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: #e1e1e1;
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 50%;
+ transform-origin: 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-shutter-in-horizontal:hover, .hvr-shutter-in-horizontal:focus, .hvr-shutter-in-horizontal:active {
+ color: white;
+}
+.hvr-shutter-in-horizontal:hover:before, .hvr-shutter-in-horizontal:focus:before, .hvr-shutter-in-horizontal:active:before {
+ -webkit-transform: scaleX(0);
+ transform: scaleX(0);
+}
+
+/* Shutter Out Horizontal */
+.hvr-shutter-out-horizontal {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ background: #e1e1e1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-shutter-out-horizontal:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: #2098d1;
+ -webkit-transform: scaleX(0);
+ transform: scaleX(0);
+ -webkit-transform-origin: 50%;
+ transform-origin: 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-shutter-out-horizontal:hover, .hvr-shutter-out-horizontal:focus, .hvr-shutter-out-horizontal:active {
+ color: white;
+}
+.hvr-shutter-out-horizontal:hover:before, .hvr-shutter-out-horizontal:focus:before, .hvr-shutter-out-horizontal:active:before {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+}
+
+/* Shutter In Vertical */
+.hvr-shutter-in-vertical {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ background: #2098d1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-shutter-in-vertical:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: #e1e1e1;
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 50%;
+ transform-origin: 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-shutter-in-vertical:hover, .hvr-shutter-in-vertical:focus, .hvr-shutter-in-vertical:active {
+ color: white;
+}
+.hvr-shutter-in-vertical:hover:before, .hvr-shutter-in-vertical:focus:before, .hvr-shutter-in-vertical:active:before {
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+}
+
+/* Shutter Out Vertical */
+.hvr-shutter-out-vertical {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ background: #e1e1e1;
+ -webkit-transition-property: color;
+ transition-property: color;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-shutter-out-vertical:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: #2098d1;
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 50%;
+ transform-origin: 50%;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-shutter-out-vertical:hover, .hvr-shutter-out-vertical:focus, .hvr-shutter-out-vertical:active {
+ color: white;
+}
+.hvr-shutter-out-vertical:hover:before, .hvr-shutter-out-vertical:focus:before, .hvr-shutter-out-vertical:active:before {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+}
+
+/* BORDER TRANSITIONS */
+/* Border Fade */
+.hvr-border-fade {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: box-shadow;
+ transition-property: box-shadow;
+ box-shadow: inset 0 0 0 4px #e1e1e1, 0 0 1px rgba(0, 0, 0, 0);
+ /* Hack to improve aliasing on mobile/tablet devices */
+}
+.hvr-border-fade:hover, .hvr-border-fade:focus, .hvr-border-fade:active {
+ box-shadow: inset 0 0 0 4px #2098d1, 0 0 1px rgba(0, 0, 0, 0);
+ /* Hack to improve aliasing on mobile/tablet devices */
+}
+
+/* Hollow */
+.hvr-hollow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: background;
+ transition-property: background;
+ box-shadow: inset 0 0 0 4px #e1e1e1, 0 0 1px rgba(0, 0, 0, 0);
+ /* Hack to improve aliasing on mobile/tablet devices */
+}
+.hvr-hollow:hover, .hvr-hollow:focus, .hvr-hollow:active {
+ background: none;
+}
+
+/* Trim */
+.hvr-trim {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-trim:before {
+ content: '';
+ position: absolute;
+ border: white solid 4px;
+ top: 4px;
+ left: 4px;
+ right: 4px;
+ bottom: 4px;
+ opacity: 0;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: opacity;
+ transition-property: opacity;
+}
+.hvr-trim:hover:before, .hvr-trim:focus:before, .hvr-trim:active:before {
+ opacity: 1;
+}
+
+/* Ripple Out */
+@-webkit-keyframes hvr-ripple-out {
+ 100% {
+ top: -12px;
+ right: -12px;
+ bottom: -12px;
+ left: -12px;
+ opacity: 0;
+ }
+}
+
+@keyframes hvr-ripple-out {
+ 100% {
+ top: -12px;
+ right: -12px;
+ bottom: -12px;
+ left: -12px;
+ opacity: 0;
+ }
+}
+
+.hvr-ripple-out {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-ripple-out:before {
+ content: '';
+ position: absolute;
+ border: #e1e1e1 solid 6px;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+}
+.hvr-ripple-out:hover:before, .hvr-ripple-out:focus:before, .hvr-ripple-out:active:before {
+ -webkit-animation-name: hvr-ripple-out;
+ animation-name: hvr-ripple-out;
+}
+
+/* Ripple In */
+@-webkit-keyframes hvr-ripple-in {
+ 100% {
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ opacity: 1;
+ }
+}
+
+@keyframes hvr-ripple-in {
+ 100% {
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ opacity: 1;
+ }
+}
+
+.hvr-ripple-in {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-ripple-in:before {
+ content: '';
+ position: absolute;
+ border: #e1e1e1 solid 4px;
+ top: -12px;
+ right: -12px;
+ bottom: -12px;
+ left: -12px;
+ opacity: 0;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+}
+.hvr-ripple-in:hover:before, .hvr-ripple-in:focus:before, .hvr-ripple-in:active:before {
+ -webkit-animation-name: hvr-ripple-in;
+ animation-name: hvr-ripple-in;
+}
+
+/* Outline Out */
+.hvr-outline-out {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-outline-out:before {
+ content: '';
+ position: absolute;
+ border: #e1e1e1 solid 4px;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: top, right, bottom, left;
+ transition-property: top, right, bottom, left;
+}
+.hvr-outline-out:hover:before, .hvr-outline-out:focus:before, .hvr-outline-out:active:before {
+ top: -8px;
+ right: -8px;
+ bottom: -8px;
+ left: -8px;
+}
+
+/* Outline In */
+.hvr-outline-in {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-outline-in:before {
+ pointer-events: none;
+ content: '';
+ position: absolute;
+ border: #e1e1e1 solid 4px;
+ top: -16px;
+ right: -16px;
+ bottom: -16px;
+ left: -16px;
+ opacity: 0;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: top, right, bottom, left;
+ transition-property: top, right, bottom, left;
+}
+.hvr-outline-in:hover:before, .hvr-outline-in:focus:before, .hvr-outline-in:active:before {
+ top: -8px;
+ right: -8px;
+ bottom: -8px;
+ left: -8px;
+ opacity: 1;
+}
+
+/* Round Corners */
+.hvr-round-corners {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: border-radius;
+ transition-property: border-radius;
+}
+.hvr-round-corners:hover, .hvr-round-corners:focus, .hvr-round-corners:active {
+ border-radius: 1em;
+}
+
+/* Underline From Left */
+.hvr-underline-from-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-underline-from-left:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ right: 100%;
+ bottom: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transition-property: right;
+ transition-property: right;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-underline-from-left:hover:before, .hvr-underline-from-left:focus:before, .hvr-underline-from-left:active:before {
+ right: 0;
+}
+
+/* Underline From Center */
+.hvr-underline-from-center {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-underline-from-center:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 50%;
+ right: 50%;
+ bottom: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transition-property: left, right;
+ transition-property: left, right;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-underline-from-center:hover:before, .hvr-underline-from-center:focus:before, .hvr-underline-from-center:active:before {
+ left: 0;
+ right: 0;
+}
+
+/* Underline From Right */
+.hvr-underline-from-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-underline-from-right:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 100%;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transition-property: left;
+ transition-property: left;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-underline-from-right:hover:before, .hvr-underline-from-right:focus:before, .hvr-underline-from-right:active:before {
+ left: 0;
+}
+
+/* Overline From Left */
+.hvr-overline-from-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-overline-from-left:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ right: 100%;
+ top: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transition-property: right;
+ transition-property: right;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-overline-from-left:hover:before, .hvr-overline-from-left:focus:before, .hvr-overline-from-left:active:before {
+ right: 0;
+}
+
+/* Overline From Center */
+.hvr-overline-from-center {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-overline-from-center:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 50%;
+ right: 50%;
+ top: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transition-property: left, right;
+ transition-property: left, right;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-overline-from-center:hover:before, .hvr-overline-from-center:focus:before, .hvr-overline-from-center:active:before {
+ left: 0;
+ right: 0;
+}
+
+/* Overline From Right */
+.hvr-overline-from-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-overline-from-right:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 100%;
+ right: 0;
+ top: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transition-property: left;
+ transition-property: left;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-overline-from-right:hover:before, .hvr-overline-from-right:focus:before, .hvr-overline-from-right:active:before {
+ left: 0;
+}
+
+/* Reveal */
+.hvr-reveal {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-reveal:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ border-color: #2098d1;
+ border-style: solid;
+ border-width: 0;
+ -webkit-transition-property: border-width;
+ transition-property: border-width;
+ -webkit-transition-duration: 0.1s;
+ transition-duration: 0.1s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-reveal:hover:before, .hvr-reveal:focus:before, .hvr-reveal:active:before {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ border-width: 4px;
+}
+
+/* Underline Reveal */
+.hvr-underline-reveal {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-underline-reveal:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-underline-reveal:hover:before, .hvr-underline-reveal:focus:before, .hvr-underline-reveal:active:before {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+}
+
+/* Overline Reveal */
+.hvr-overline-reveal {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ overflow: hidden;
+}
+.hvr-overline-reveal:before {
+ content: "";
+ position: absolute;
+ z-index: -1;
+ left: 0;
+ right: 0;
+ top: 0;
+ background: #2098d1;
+ height: 4px;
+ -webkit-transform: translateY(-4px);
+ transform: translateY(-4px);
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-overline-reveal:hover:before, .hvr-overline-reveal:focus:before, .hvr-overline-reveal:active:before {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+}
+
+/* SHADOW/GLOW TRANSITIONS */
+/* Glow */
+.hvr-glow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: box-shadow;
+ transition-property: box-shadow;
+}
+.hvr-glow:hover, .hvr-glow:focus, .hvr-glow:active {
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
+}
+
+/* Shadow */
+.hvr-shadow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: box-shadow;
+ transition-property: box-shadow;
+}
+.hvr-shadow:hover, .hvr-shadow:focus, .hvr-shadow:active {
+ box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.5);
+}
+
+/* Grow Shadow */
+.hvr-grow-shadow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: box-shadow, transform;
+ transition-property: box-shadow, transform;
+}
+.hvr-grow-shadow:hover, .hvr-grow-shadow:focus, .hvr-grow-shadow:active {
+ box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.5);
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+}
+
+/* Box Shadow Outset */
+.hvr-box-shadow-outset {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: box-shadow;
+ transition-property: box-shadow;
+}
+.hvr-box-shadow-outset:hover, .hvr-box-shadow-outset:focus, .hvr-box-shadow-outset:active {
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.6);
+}
+
+/* Box Shadow Inset */
+.hvr-box-shadow-inset {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: box-shadow;
+ transition-property: box-shadow;
+ box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.6), 0 0 1px rgba(0, 0, 0, 0);
+ /* Hack to improve aliasing on mobile/tablet devices */
+}
+.hvr-box-shadow-inset:hover, .hvr-box-shadow-inset:focus, .hvr-box-shadow-inset:active {
+ box-shadow: inset 2px 2px 2px rgba(0, 0, 0, 0.6), 0 0 1px rgba(0, 0, 0, 0);
+ /* Hack to improve aliasing on mobile/tablet devices */
+}
+
+/* Float Shadow */
+.hvr-float-shadow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-float-shadow:before {
+ pointer-events: none;
+ position: absolute;
+ z-index: -1;
+ content: '';
+ top: 100%;
+ left: 5%;
+ height: 10px;
+ width: 90%;
+ opacity: 0;
+ background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 80%);
+ background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 80%);
+ /* W3C */
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform, opacity;
+ transition-property: transform, opacity;
+}
+.hvr-float-shadow:hover, .hvr-float-shadow:focus, .hvr-float-shadow:active {
+ -webkit-transform: translateY(-5px);
+ transform: translateY(-5px);
+ /* move the element up by 5px */
+}
+.hvr-float-shadow:hover:before, .hvr-float-shadow:focus:before, .hvr-float-shadow:active:before {
+ opacity: 1;
+ -webkit-transform: translateY(5px);
+ transform: translateY(5px);
+ /* move the element down by 5px (it will stay in place because it's attached to the element that also moves up 5px) */
+}
+
+/* Shadow Radial */
+.hvr-shadow-radial {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-shadow-radial:before, .hvr-shadow-radial:after {
+ pointer-events: none;
+ position: absolute;
+ content: '';
+ left: 0;
+ width: 100%;
+ box-sizing: border-box;
+ background-repeat: no-repeat;
+ height: 5px;
+ opacity: 0;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: opacity;
+ transition-property: opacity;
+}
+.hvr-shadow-radial:before {
+ bottom: 100%;
+ background: -webkit-radial-gradient(50% 150%, ellipse, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%);
+ background: radial-gradient(ellipse at 50% 150%, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%);
+}
+.hvr-shadow-radial:after {
+ top: 100%;
+ background: -webkit-radial-gradient(50% -50%, ellipse, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%);
+ background: radial-gradient(ellipse at 50% -50%, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%);
+}
+.hvr-shadow-radial:hover:before, .hvr-shadow-radial:focus:before, .hvr-shadow-radial:active:before, .hvr-shadow-radial:hover:after, .hvr-shadow-radial:focus:after, .hvr-shadow-radial:active:after {
+ opacity: 1;
+}
+
+/* SPEECH BUBBLES */
+/* Bubble Top */
+.hvr-bubble-top {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-bubble-top:before {
+ pointer-events: none;
+ position: absolute;
+ z-index: -1;
+ content: '';
+ border-style: solid;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ left: calc(50% - 10px);
+ top: 0;
+ border-width: 0 10px 10px 10px;
+ border-color: transparent transparent #e1e1e1 transparent;
+}
+.hvr-bubble-top:hover:before, .hvr-bubble-top:focus:before, .hvr-bubble-top:active:before {
+ -webkit-transform: translateY(-10px);
+ transform: translateY(-10px);
+}
+
+/* Bubble Right */
+.hvr-bubble-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-bubble-right:before {
+ pointer-events: none;
+ position: absolute;
+ z-index: -1;
+ content: '';
+ border-style: solid;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ top: calc(50% - 10px);
+ right: 0;
+ border-width: 10px 0 10px 10px;
+ border-color: transparent transparent transparent #e1e1e1;
+}
+.hvr-bubble-right:hover:before, .hvr-bubble-right:focus:before, .hvr-bubble-right:active:before {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px);
+}
+
+/* Bubble Bottom */
+.hvr-bubble-bottom {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-bubble-bottom:before {
+ pointer-events: none;
+ position: absolute;
+ z-index: -1;
+ content: '';
+ border-style: solid;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ left: calc(50% - 10px);
+ bottom: 0;
+ border-width: 10px 10px 0 10px;
+ border-color: #e1e1e1 transparent transparent transparent;
+}
+.hvr-bubble-bottom:hover:before, .hvr-bubble-bottom:focus:before, .hvr-bubble-bottom:active:before {
+ -webkit-transform: translateY(10px);
+ transform: translateY(10px);
+}
+
+/* Bubble Left */
+.hvr-bubble-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-bubble-left:before {
+ pointer-events: none;
+ position: absolute;
+ z-index: -1;
+ content: '';
+ border-style: solid;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ top: calc(50% - 10px);
+ left: 0;
+ border-width: 10px 10px 10px 0;
+ border-color: transparent #e1e1e1 transparent transparent;
+}
+.hvr-bubble-left:hover:before, .hvr-bubble-left:focus:before, .hvr-bubble-left:active:before {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px);
+}
+
+/* Bubble Float Top */
+.hvr-bubble-float-top {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-top:before {
+ position: absolute;
+ z-index: -1;
+ content: '';
+ left: calc(50% - 10px);
+ top: 0;
+ border-style: solid;
+ border-width: 0 10px 10px 10px;
+ border-color: transparent transparent #e1e1e1 transparent;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-top:hover, .hvr-bubble-float-top:focus, .hvr-bubble-float-top:active {
+ -webkit-transform: translateY(10px);
+ transform: translateY(10px);
+}
+.hvr-bubble-float-top:hover:before, .hvr-bubble-float-top:focus:before, .hvr-bubble-float-top:active:before {
+ -webkit-transform: translateY(-10px);
+ transform: translateY(-10px);
+}
+
+/* Bubble Float Right */
+.hvr-bubble-float-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-right:before {
+ position: absolute;
+ z-index: -1;
+ top: calc(50% - 10px);
+ right: 0;
+ content: '';
+ border-style: solid;
+ border-width: 10px 0 10px 10px;
+ border-color: transparent transparent transparent #e1e1e1;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-right:hover, .hvr-bubble-float-right:focus, .hvr-bubble-float-right:active {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px);
+}
+.hvr-bubble-float-right:hover:before, .hvr-bubble-float-right:focus:before, .hvr-bubble-float-right:active:before {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px);
+}
+
+/* Bubble Float Bottom */
+.hvr-bubble-float-bottom {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-bottom:before {
+ position: absolute;
+ z-index: -1;
+ content: '';
+ left: calc(50% - 10px);
+ bottom: 0;
+ border-style: solid;
+ border-width: 10px 10px 0 10px;
+ border-color: #e1e1e1 transparent transparent transparent;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-bottom:hover, .hvr-bubble-float-bottom:focus, .hvr-bubble-float-bottom:active {
+ -webkit-transform: translateY(-10px);
+ transform: translateY(-10px);
+}
+.hvr-bubble-float-bottom:hover:before, .hvr-bubble-float-bottom:focus:before, .hvr-bubble-float-bottom:active:before {
+ -webkit-transform: translateY(10px);
+ transform: translateY(10px);
+}
+
+/* Bubble Float Left */
+.hvr-bubble-float-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-left:before {
+ position: absolute;
+ z-index: -1;
+ content: '';
+ top: calc(50% - 10px);
+ left: 0;
+ border-style: solid;
+ border-width: 10px 10px 10px 0;
+ border-color: transparent #e1e1e1 transparent transparent;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+}
+.hvr-bubble-float-left:hover, .hvr-bubble-float-left:focus, .hvr-bubble-float-left:active {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px);
+}
+.hvr-bubble-float-left:hover:before, .hvr-bubble-float-left:focus:before, .hvr-bubble-float-left:active:before {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px);
+}
+
+/* ICONS */
+/* Icon Back */
+.hvr-icon-back {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-left: 2.2em;
+ -webkit-transition-duration: 0.1s;
+ transition-duration: 0.1s;
+}
+.hvr-icon-back:before {
+ content: "\f137";
+ position: absolute;
+ left: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.1s;
+ transition-duration: 0.1s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-back:hover:before, .hvr-icon-back:focus:before, .hvr-icon-back:active:before {
+ -webkit-transform: translateX(-4px);
+ transform: translateX(-4px);
+}
+
+/* Icon Forward */
+.hvr-icon-forward {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.1s;
+ transition-duration: 0.1s;
+}
+.hvr-icon-forward:before {
+ content: "\f138";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.1s;
+ transition-duration: 0.1s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-forward:hover:before, .hvr-icon-forward:focus:before, .hvr-icon-forward:active:before {
+ -webkit-transform: translateX(4px);
+ transform: translateX(4px);
+}
+
+/* Icon Down */
+@-webkit-keyframes hvr-icon-down {
+ 0%,
+ 50%,
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 25%,
+ 75% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+}
+
+@keyframes hvr-icon-down {
+ 0%,
+ 50%,
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 25%,
+ 75% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+}
+
+/* Icon Down */
+.hvr-icon-down {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-down:before {
+ content: "\f01a";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-down:hover:before, .hvr-icon-down:focus:before, .hvr-icon-down:active:before {
+ -webkit-animation-name: hvr-icon-down;
+ animation-name: hvr-icon-down;
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+}
+
+/* Icon Up */
+@-webkit-keyframes hvr-icon-up {
+ 0%,
+ 50%,
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 25%,
+ 75% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+}
+
+@keyframes hvr-icon-up {
+ 0%,
+ 50%,
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+
+ 25%,
+ 75% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+}
+
+/* Icon Up */
+.hvr-icon-up {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-up:before {
+ content: "\f01b";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-up:hover:before, .hvr-icon-up:focus:before, .hvr-icon-up:active:before {
+ -webkit-animation-name: hvr-icon-up;
+ animation-name: hvr-icon-up;
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+}
+
+/* Icon Spin */
+.hvr-icon-spin {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-spin:before {
+ content: "\f021";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transition-duration: 1s;
+ transition-duration: 1s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-in-out;
+ transition-timing-function: ease-in-out;
+}
+.hvr-icon-spin:hover:before, .hvr-icon-spin:focus:before, .hvr-icon-spin:active:before {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+}
+
+/* Icon Drop */
+@-webkit-keyframes hvr-icon-drop {
+ 0% {
+ opacity: 0;
+ }
+
+ 50% {
+ opacity: 0;
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ }
+
+ 51%,
+ 100% {
+ opacity: 1;
+ }
+}
+
+@keyframes hvr-icon-drop {
+ 0% {
+ opacity: 0;
+ }
+
+ 50% {
+ opacity: 0;
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ }
+
+ 51%,
+ 100% {
+ opacity: 1;
+ }
+}
+
+/* Icon Drop */
+.hvr-icon-drop {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-drop:before {
+ content: "\f041";
+ position: absolute;
+ right: 1em;
+ opacity: 1;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-drop:hover:before, .hvr-icon-drop:focus:before, .hvr-icon-drop:active:before {
+ opacity: 0;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-animation-name: hvr-icon-drop;
+ animation-name: hvr-icon-drop;
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-delay: 0.3s;
+ animation-delay: 0.3s;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+ animation-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66);
+}
+
+/* Icon Fade */
+.hvr-icon-fade {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-fade:before {
+ content: "\f00c";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.5s;
+ transition-duration: 0.5s;
+ -webkit-transition-property: color;
+ transition-property: color;
+}
+.hvr-icon-fade:hover:before, .hvr-icon-fade:focus:before, .hvr-icon-fade:active:before {
+ color: #0F9E5E;
+}
+
+/* Icon Float Away */
+@-webkit-keyframes hvr-icon-float-away {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-1em);
+ transform: translateY(-1em);
+ }
+}
+
+@keyframes hvr-icon-float-away {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(-1em);
+ transform: translateY(-1em);
+ }
+}
+
+/* Icon Float Away */
+.hvr-icon-float-away {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-float-away:before, .hvr-icon-float-away:after {
+ content: "\f055";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+}
+.hvr-icon-float-away:after {
+ opacity: 0;
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+}
+.hvr-icon-float-away:hover:after, .hvr-icon-float-away:focus:after, .hvr-icon-float-away:active:after {
+ -webkit-animation-name: hvr-icon-float-away;
+ animation-name: hvr-icon-float-away;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+}
+
+/* Icon Sink Away */
+@-webkit-keyframes hvr-icon-sink-away {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(1em);
+ transform: translateY(1em);
+ }
+}
+
+@keyframes hvr-icon-sink-away {
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ -webkit-transform: translateY(1em);
+ transform: translateY(1em);
+ }
+}
+
+/* Icon Sink Away */
+.hvr-icon-sink-away {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-sink-away:before, .hvr-icon-sink-away:after {
+ content: "\f056";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-sink-away:after {
+ opacity: 0;
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+}
+.hvr-icon-sink-away:hover:after, .hvr-icon-sink-away:focus:after, .hvr-icon-sink-away:active:after {
+ -webkit-animation-name: hvr-icon-sink-away;
+ animation-name: hvr-icon-sink-away;
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+}
+
+/* Icon Grow */
+.hvr-icon-grow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-grow:before {
+ content: "\f118";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-grow:hover:before, .hvr-icon-grow:focus:before, .hvr-icon-grow:active:before {
+ -webkit-transform: scale(1.3) translateZ(0);
+ transform: scale(1.3) translateZ(0);
+}
+
+/* Icon Shrink */
+.hvr-icon-shrink {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-shrink:before {
+ content: "\f119";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-shrink:hover:before, .hvr-icon-shrink:focus:before, .hvr-icon-shrink:active:before {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+}
+
+/* Icon Pulse */
+@-webkit-keyframes hvr-icon-pulse {
+ 25% {
+ -webkit-transform: scale(1.3);
+ transform: scale(1.3);
+ }
+
+ 75% {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ }
+}
+
+@keyframes hvr-icon-pulse {
+ 25% {
+ -webkit-transform: scale(1.3);
+ transform: scale(1.3);
+ }
+
+ 75% {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ }
+}
+
+.hvr-icon-pulse {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-pulse:before {
+ content: "\f015";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-pulse:hover:before, .hvr-icon-pulse:focus:before, .hvr-icon-pulse:active:before {
+ -webkit-animation-name: hvr-icon-pulse;
+ animation-name: hvr-icon-pulse;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+}
+
+/* Icon Pulse Grow */
+@-webkit-keyframes hvr-icon-pulse-grow {
+ to {
+ -webkit-transform: scale(1.3);
+ transform: scale(1.3);
+ }
+}
+
+@keyframes hvr-icon-pulse-grow {
+ to {
+ -webkit-transform: scale(1.3);
+ transform: scale(1.3);
+ }
+}
+
+.hvr-icon-pulse-grow {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-pulse-grow:before {
+ content: "\f015";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-pulse-grow:hover:before, .hvr-icon-pulse-grow:focus:before, .hvr-icon-pulse-grow:active:before {
+ -webkit-animation-name: hvr-icon-pulse-grow;
+ animation-name: hvr-icon-pulse-grow;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ animation-direction: alternate;
+}
+
+/* Icon Pulse Shrink */
+@-webkit-keyframes hvr-icon-pulse-shrink {
+ to {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ }
+}
+
+@keyframes hvr-icon-pulse-shrink {
+ to {
+ -webkit-transform: scale(0.8);
+ transform: scale(0.8);
+ }
+}
+
+.hvr-icon-pulse-shrink {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+}
+.hvr-icon-pulse-shrink:before {
+ content: "\f015";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-pulse-shrink:hover:before, .hvr-icon-pulse-shrink:focus:before, .hvr-icon-pulse-shrink:active:before {
+ -webkit-animation-name: hvr-icon-pulse-shrink;
+ animation-name: hvr-icon-pulse-shrink;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+ -webkit-animation-direction: alternate;
+ animation-direction: alternate;
+}
+
+/* Icon Push */
+@-webkit-keyframes hvr-icon-push {
+ 50% {
+ -webkit-transform: scale(0.5);
+ transform: scale(0.5);
+ }
+}
+
+@keyframes hvr-icon-push {
+ 50% {
+ -webkit-transform: scale(0.5);
+ transform: scale(0.5);
+ }
+}
+
+.hvr-icon-push {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-push:before {
+ content: "\f006";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-push:hover:before, .hvr-icon-push:focus:before, .hvr-icon-push:active:before {
+ -webkit-animation-name: hvr-icon-push;
+ animation-name: hvr-icon-push;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Icon Pop */
+@-webkit-keyframes hvr-icon-pop {
+ 50% {
+ -webkit-transform: scale(1.5);
+ transform: scale(1.5);
+ }
+}
+
+@keyframes hvr-icon-pop {
+ 50% {
+ -webkit-transform: scale(1.5);
+ transform: scale(1.5);
+ }
+}
+
+.hvr-icon-pop {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-pop:before {
+ content: "\f005";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-pop:hover:before, .hvr-icon-pop:focus:before, .hvr-icon-pop:active:before {
+ -webkit-animation-name: hvr-icon-pop;
+ animation-name: hvr-icon-pop;
+ -webkit-animation-duration: 0.3s;
+ animation-duration: 0.3s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Icon Bounce */
+.hvr-icon-bounce {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-bounce:before {
+ content: "\f087";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-bounce:hover:before, .hvr-icon-bounce:focus:before, .hvr-icon-bounce:active:before {
+ -webkit-transform: scale(1.5);
+ transform: scale(1.5);
+ -webkit-transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
+ transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36);
+}
+
+/* Icon Rotate */
+.hvr-icon-rotate {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-rotate:before {
+ content: "\f0c6";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-rotate:hover:before, .hvr-icon-rotate:focus:before, .hvr-icon-rotate:active:before {
+ -webkit-transform: rotate(20deg);
+ transform: rotate(20deg);
+}
+
+/* Icon Grow Rotate */
+.hvr-icon-grow-rotate {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-grow-rotate:before {
+ content: "\f095";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-grow-rotate:hover:before, .hvr-icon-grow-rotate:focus:before, .hvr-icon-grow-rotate:active:before {
+ -webkit-transform: scale(1.5) rotate(12deg);
+ transform: scale(1.5) rotate(12deg);
+}
+
+/* Icon Float */
+.hvr-icon-float {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-float:before {
+ content: "\f01b";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-float:hover:before, .hvr-icon-float:focus:before, .hvr-icon-float:active:before {
+ -webkit-transform: translateY(-4px);
+ transform: translateY(-4px);
+}
+
+/* Icon Sink */
+.hvr-icon-sink {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-sink:before {
+ content: "\f01a";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: transform;
+ transition-property: transform;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+}
+.hvr-icon-sink:hover:before, .hvr-icon-sink:focus:before, .hvr-icon-sink:active:before {
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+}
+
+/* Icon Bob */
+@-webkit-keyframes hvr-icon-bob {
+ 0% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+}
+
+@keyframes hvr-icon-bob {
+ 0% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+}
+
+@-webkit-keyframes hvr-icon-bob-float {
+ 100% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+}
+
+@keyframes hvr-icon-bob-float {
+ 100% {
+ -webkit-transform: translateY(-6px);
+ transform: translateY(-6px);
+ }
+}
+
+.hvr-icon-bob {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-bob:before {
+ content: "\f077";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-bob:hover:before, .hvr-icon-bob:focus:before, .hvr-icon-bob:active:before {
+ -webkit-animation-name: hvr-icon-bob-float, hvr-icon-bob;
+ animation-name: hvr-icon-bob-float, hvr-icon-bob;
+ -webkit-animation-duration: .3s, 1.5s;
+ animation-duration: .3s, 1.5s;
+ -webkit-animation-delay: 0s, .3s;
+ animation-delay: 0s, .3s;
+ -webkit-animation-timing-function: ease-out, ease-in-out;
+ animation-timing-function: ease-out, ease-in-out;
+ -webkit-animation-iteration-count: 1, infinite;
+ animation-iteration-count: 1, infinite;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ -webkit-animation-direction: normal, alternate;
+ animation-direction: normal, alternate;
+}
+
+/* Icon Hang */
+@-webkit-keyframes hvr-icon-hang {
+ 0% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(2px);
+ transform: translateY(2px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+}
+
+@keyframes hvr-icon-hang {
+ 0% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+
+ 50% {
+ -webkit-transform: translateY(2px);
+ transform: translateY(2px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+}
+
+@-webkit-keyframes hvr-icon-hang-sink {
+ 100% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+}
+
+@keyframes hvr-icon-hang-sink {
+ 100% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+}
+
+.hvr-icon-hang {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-hang:before {
+ content: "\f078";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-hang:hover:before, .hvr-icon-hang:focus:before, .hvr-icon-hang:active:before {
+ -webkit-animation-name: hvr-icon-hang-sink, hvr-icon-hang;
+ animation-name: hvr-icon-hang-sink, hvr-icon-hang;
+ -webkit-animation-duration: .3s, 1.5s;
+ animation-duration: .3s, 1.5s;
+ -webkit-animation-delay: 0s, .3s;
+ animation-delay: 0s, .3s;
+ -webkit-animation-timing-function: ease-out, ease-in-out;
+ animation-timing-function: ease-out, ease-in-out;
+ -webkit-animation-iteration-count: 1, infinite;
+ animation-iteration-count: 1, infinite;
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ -webkit-animation-direction: normal, alternate;
+ animation-direction: normal, alternate;
+}
+
+/* Icon Wobble Horizontal */
+@-webkit-keyframes hvr-icon-wobble-horizontal {
+ 16.65% {
+ -webkit-transform: translateX(6px);
+ transform: translateX(6px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateX(4px);
+ transform: translateX(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateX(-2px);
+ transform: translateX(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateX(1px);
+ transform: translateX(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+@keyframes hvr-icon-wobble-horizontal {
+ 16.65% {
+ -webkit-transform: translateX(6px);
+ transform: translateX(6px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateX(4px);
+ transform: translateX(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateX(-2px);
+ transform: translateX(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateX(1px);
+ transform: translateX(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ }
+}
+
+.hvr-icon-wobble-horizontal {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-wobble-horizontal:before {
+ content: "\f061";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-wobble-horizontal:hover:before, .hvr-icon-wobble-horizontal:focus:before, .hvr-icon-wobble-horizontal:active:before {
+ -webkit-animation-name: hvr-icon-wobble-horizontal;
+ animation-name: hvr-icon-wobble-horizontal;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Icon Wobble Vertical */
+@-webkit-keyframes hvr-icon-wobble-vertical {
+ 16.65% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateY(-5px);
+ transform: translateY(-5px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateY(1px);
+ transform: translateY(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+@keyframes hvr-icon-wobble-vertical {
+ 16.65% {
+ -webkit-transform: translateY(6px);
+ transform: translateY(6px);
+ }
+
+ 33.3% {
+ -webkit-transform: translateY(-5px);
+ transform: translateY(-5px);
+ }
+
+ 49.95% {
+ -webkit-transform: translateY(4px);
+ transform: translateY(4px);
+ }
+
+ 66.6% {
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px);
+ }
+
+ 83.25% {
+ -webkit-transform: translateY(1px);
+ transform: translateY(1px);
+ }
+
+ 100% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ }
+}
+
+.hvr-icon-wobble-vertical {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-wobble-vertical:before {
+ content: "\f062";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-wobble-vertical:hover:before, .hvr-icon-wobble-vertical:focus:before, .hvr-icon-wobble-vertical:active:before {
+ -webkit-animation-name: hvr-icon-wobble-vertical;
+ animation-name: hvr-icon-wobble-vertical;
+ -webkit-animation-duration: 1s;
+ animation-duration: 1s;
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* Icon Buzz */
+@-webkit-keyframes hvr-icon-buzz {
+ 50% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+}
+
+@keyframes hvr-icon-buzz {
+ 50% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+}
+
+.hvr-icon-buzz {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-buzz:before {
+ content: "\f017";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-buzz:hover:before, .hvr-icon-buzz:focus:before, .hvr-icon-buzz:active:before {
+ -webkit-animation-name: hvr-icon-buzz;
+ animation-name: hvr-icon-buzz;
+ -webkit-animation-duration: 0.15s;
+ animation-duration: 0.15s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite;
+}
+
+/* Icon Buzz Out */
+@-webkit-keyframes hvr-icon-buzz-out {
+ 10% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 20% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 30% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 40% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 50% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 60% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 70% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 80% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 90% {
+ -webkit-transform: translateX(1px) rotate(0);
+ transform: translateX(1px) rotate(0);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-1px) rotate(0);
+ transform: translateX(-1px) rotate(0);
+ }
+}
+
+@keyframes hvr-icon-buzz-out {
+ 10% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 20% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 30% {
+ -webkit-transform: translateX(3px) rotate(2deg);
+ transform: translateX(3px) rotate(2deg);
+ }
+
+ 40% {
+ -webkit-transform: translateX(-3px) rotate(-2deg);
+ transform: translateX(-3px) rotate(-2deg);
+ }
+
+ 50% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 60% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 70% {
+ -webkit-transform: translateX(2px) rotate(1deg);
+ transform: translateX(2px) rotate(1deg);
+ }
+
+ 80% {
+ -webkit-transform: translateX(-2px) rotate(-1deg);
+ transform: translateX(-2px) rotate(-1deg);
+ }
+
+ 90% {
+ -webkit-transform: translateX(1px) rotate(0);
+ transform: translateX(1px) rotate(0);
+ }
+
+ 100% {
+ -webkit-transform: translateX(-1px) rotate(0);
+ transform: translateX(-1px) rotate(0);
+ }
+}
+
+.hvr-icon-buzz-out {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+ padding-right: 2.2em;
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+.hvr-icon-buzz-out:before {
+ content: "\f023";
+ position: absolute;
+ right: 1em;
+ padding: 0 1px;
+ font-family: FontAwesome;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+.hvr-icon-buzz-out:hover:before, .hvr-icon-buzz-out:focus:before, .hvr-icon-buzz-out:active:before {
+ -webkit-animation-name: hvr-icon-buzz-out;
+ animation-name: hvr-icon-buzz-out;
+ -webkit-animation-duration: 0.75s;
+ animation-duration: 0.75s;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear;
+ -webkit-animation-iteration-count: 1;
+ animation-iteration-count: 1;
+}
+
+/* CURLS */
+/* Curl Top Left */
+.hvr-curl-top-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-curl-top-left:before {
+ pointer-events: none;
+ position: absolute;
+ content: '';
+ height: 0;
+ width: 0;
+ top: 0;
+ left: 0;
+ background: white;
+ /* IE9 */
+ background: linear-gradient(135deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%);
+ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffffff', endColorstr='#000000');
+ /*For IE7-8-9*/
+ z-index: 1000;
+ box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.4);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: width, height;
+ transition-property: width, height;
+}
+.hvr-curl-top-left:hover:before, .hvr-curl-top-left:focus:before, .hvr-curl-top-left:active:before {
+ width: 25px;
+ height: 25px;
+}
+
+/* Curl Top Right */
+.hvr-curl-top-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-curl-top-right:before {
+ pointer-events: none;
+ position: absolute;
+ content: '';
+ height: 0;
+ width: 0;
+ top: 0;
+ right: 0;
+ background: white;
+ /* IE9 */
+ background: linear-gradient(225deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%);
+ box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.4);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: width, height;
+ transition-property: width, height;
+}
+.hvr-curl-top-right:hover:before, .hvr-curl-top-right:focus:before, .hvr-curl-top-right:active:before {
+ width: 25px;
+ height: 25px;
+}
+
+/* Curl Bottom Right */
+.hvr-curl-bottom-right {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-curl-bottom-right:before {
+ pointer-events: none;
+ position: absolute;
+ content: '';
+ height: 0;
+ width: 0;
+ bottom: 0;
+ right: 0;
+ background: white;
+ /* IE9 */
+ background: linear-gradient(315deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%);
+ box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.4);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: width, height;
+ transition-property: width, height;
+}
+.hvr-curl-bottom-right:hover:before, .hvr-curl-bottom-right:focus:before, .hvr-curl-bottom-right:active:before {
+ width: 25px;
+ height: 25px;
+}
+
+/* Curl Bottom Left */
+.hvr-curl-bottom-left {
+ display: inline-block;
+ vertical-align: middle;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -moz-osx-font-smoothing: grayscale;
+ position: relative;
+}
+.hvr-curl-bottom-left:before {
+ pointer-events: none;
+ position: absolute;
+ content: '';
+ height: 0;
+ width: 0;
+ bottom: 0;
+ left: 0;
+ background: white;
+ /* IE9 */
+ background: linear-gradient(45deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%);
+ box-shadow: 1px -1px 1px rgba(0, 0, 0, 0.4);
+ -webkit-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+ -webkit-transition-property: width, height;
+ transition-property: width, height;
+}
+.hvr-curl-bottom-left:hover:before, .hvr-curl-bottom-left:focus:before, .hvr-curl-bottom-left:active:before {
+ width: 25px;
+ height: 25px;
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/metabox.css b/wp-content/plugins/portfolio-filter-gallery/css/metabox.css
new file mode 100644
index 0000000..f2d6e52
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/metabox.css
@@ -0,0 +1,1096 @@
+.m-b-5 {
+ margin-bottom:5px;
+}
+.m-b-10 {
+ margin-bottom:10px;
+}
+.m-b-20 {
+ margin-bottom:20px;
+}
+.m-t-5 {
+ margin-top:10px;
+}
+.m-t-10 {
+ margin-top:10px;
+}
+.m-t-20 {
+ margin-top:10px;
+}
+ul#remove-images {
+ color:#FFF;
+}
+.tab-active {
+ background-color:#242A33 !important;
+ color:#FFFFFF
+}
+.card {
+ cursor:pointer;
+}
+
+
+.kwt-file__choose-file {
+ transform: perspective(1500px) rotateY(0deg);
+ border-radius: 1rem;
+ box-shadow: rgba(0, 0, 0, 0.25) 0px 25px 50px -12px;
+ transition: transform 1s ease 0s;
+}
+
+.kwt-file__drop-area:hover .kwt-file__choose-file {
+ transform: perspective(3000px) rotateY(360deg);
+}
+
+.kwt-file__drop-area {
+ position: relative;
+ display: flex;
+ width: 400px;
+ padding: 30px;
+ background : linear-gradient(to right, #fa709a 0%, #fee140 100%) !important;
+ border-radius: 12px;
+ box-shadow: 0 10px 30px rgb(0 0 0 / 7%);
+ margin: 0 auto;
+ align-items: center;
+ justify-content: center;
+ margin-top: 30px;
+ -webkit-transition: background-color 2s ease-out;
+ -moz-transition: background-color 2s ease-out;
+ -o-transition: background-color 2s ease-out;
+ transition: background-color 2s ease-out;
+}
+
+.kwt-file__msg {
+ color: #FFFFFF !important;
+}
+.kwt-file__drop-area.is-active {
+ background-color: #d1def0;
+}
+.kwt-file__choose-file {
+ flex-shrink: 0;
+ background-color: #cd2757;
+ border-radius: 100%;
+ margin-right: 10px;
+ color: #ffffff;
+ width: 48px;
+ height: 48px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.kwt-file__choose-file svg {
+ width: 24px;
+ height: 24px;
+ display: block;
+}
+.kwt-file__msg {
+ color: #1d3557;
+ font-size: 18px;
+ font-weight: 500;
+ line-height: 1.4;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.kwt-file__input {
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ width: 100%;
+ cursor: pointer;
+ opacity: 0;
+}
+.kwt-file__input:focus {
+ outline: none;
+}
+.kwt-file__delete {
+ display: none;
+ position: absolute;
+ right: 10px;
+ width: 18px;
+ height: 18px;
+ cursor: pointer;
+}
+.kwt-file__delete:before {
+ content: "";
+ position: absolute;
+ left: 0;
+ transition: 0.3s;
+ top: 0;
+ z-index: 1;
+ width: 100%;
+ height: 100%;
+ background-size: cover;
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg fill='%231d3557' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 438.5 438.5'%3e%3cpath d='M417.7 75.7A8.9 8.9 0 00411 73H323l-20-47.7c-2.8-7-8-13-15.4-18S272.5 0 264.9 0h-91.3C166 0 158.5 2.5 151 7.4c-7.4 5-12.5 11-15.4 18l-20 47.7H27.4a9 9 0 00-6.6 2.6 9 9 0 00-2.5 6.5v18.3c0 2.7.8 4.8 2.5 6.6a8.9 8.9 0 006.6 2.5h27.4v271.8c0 15.8 4.5 29.3 13.4 40.4a40.2 40.2 0 0032.3 16.7H338c12.6 0 23.4-5.7 32.3-17.2a64.8 64.8 0 0013.4-41V109.6h27.4c2.7 0 4.9-.8 6.6-2.5a8.9 8.9 0 002.6-6.6V82.2a9 9 0 00-2.6-6.5zm-248.4-36a8 8 0 014.9-3.2h90.5a8 8 0 014.8 3.2L283.2 73H155.3l14-33.4zm177.9 340.6a32.4 32.4 0 01-6.2 19.3c-1.4 1.6-2.4 2.4-3 2.4H100.5c-.6 0-1.6-.8-3-2.4a32.5 32.5 0 01-6.1-19.3V109.6h255.8v270.7z'/%3e%3cpath d='M137 347.2h18.3c2.7 0 4.9-.9 6.6-2.6a9 9 0 002.5-6.6V173.6a9 9 0 00-2.5-6.6 8.9 8.9 0 00-6.6-2.6H137c-2.6 0-4.8.9-6.5 2.6a8.9 8.9 0 00-2.6 6.6V338c0 2.7.9 4.9 2.6 6.6a8.9 8.9 0 006.5 2.6zM210.1 347.2h18.3a8.9 8.9 0 009.1-9.1V173.5c0-2.7-.8-4.9-2.5-6.6a8.9 8.9 0 00-6.6-2.6h-18.3a8.9 8.9 0 00-9.1 9.1V338a8.9 8.9 0 009.1 9.1zM283.2 347.2h18.3c2.7 0 4.8-.9 6.6-2.6a8.9 8.9 0 002.5-6.6V173.6c0-2.7-.8-4.9-2.5-6.6a8.9 8.9 0 00-6.6-2.6h-18.3a9 9 0 00-6.6 2.6 8.9 8.9 0 00-2.5 6.6V338a9 9 0 002.5 6.6 9 9 0 006.6 2.6z'/%3e%3c/svg%3e");
+}
+.kwt-file__delete:after {
+ content: "";
+ position: absolute;
+ opacity: 0;
+ left: 50%;
+ top: 50%;
+ width: 100%;
+ height: 100%;
+ transform: translate(-50%, -50%) scale(0);
+ background-color: #1d3557;
+ border-radius: 50%;
+ transition: 0.3s;
+}
+.kwt-file__delete:hover:after {
+ transform: translate(-50%, -50%) scale(2.2);
+ opacity: 0.1;
+}
+
+.col-lg-6 {
+ padding:0 !important;
+}
+.pw_gallery_genrate span {
+ font-size:30px !important;
+ margin-top:20px;
+}
+.pw-trash-icon {
+position: absolute;
+ top: 2%;
+ text-decoration: none;
+}
+
+.pfg-btn {
+ border-radius: 0 !important;
+ padding-left: 11px !important;
+ background-color: #cd2757 !important;
+ border-color: #cd2757 !important;
+ font-weight: 500;
+}
+
+.awp_bale_offer h1:before, .recommend-plugin h1:before {
+ left:45% !important;
+}
+.awp_bale_offer, .recommend-plugin {
+ padding: 40px 0;
+ background: cornsilk;
+}
+.recommend-plugin a {
+ margin:5px !important;
+}
+
+.bhoechie-tab-container a:active, a:hover {
+ color: #1d3557;
+}
+/* bhoechie tab */
+.list-group-item {
+ font-weight:500;
+ line-height:3;
+}
+div.bhoechie-tab-container{
+ z-index: 10;
+ background-color: #ffffff;
+ padding: 0 !important;
+ border-radius: 4px;
+ -moz-border-radius: 4px;
+ border:1px solid #ddd;
+ margin-top: 20px;
+ background-clip: padding-box;
+ opacity: 0.97;
+ filter: alpha(opacity=97);
+}
+div.bhoechie-tab-menu{
+ padding-right: 0;
+ padding-left: 0;
+ padding-bottom: 0;
+}
+div.bhoechie-tab-menu div.list-group{
+ margin-bottom: 0;
+}
+div.bhoechie-tab-menu div.list-group span{
+ margin-bottom: 10px;
+ margin-top: 10px;
+ color: #1d3557 !impoprant;
+ margin-right: 8px;
+}
+div.bhoechie-tab-menu div.list-group>a{
+ margin-bottom: 0;
+}
+div.bhoechie-tab-menu div.list-group>a .glyphicon,
+div.bhoechie-tab-menu div.list-group>a .fa {
+ color: #47b4ed;
+}
+div.bhoechie-tab-menu div.list-group>a:first-child{
+ border-top-right-radius: 0;
+ -moz-border-top-right-radius: 0;
+}
+div.bhoechie-tab-menu div.list-group>a:last-child{
+ border-bottom-right-radius: 0;
+ -moz-border-bottom-right-radius: 0;
+}
+div.bhoechie-tab-menu div.list-group>a.active,
+div.bhoechie-tab-menu div.list-group>a.active .glyphicon,
+div.bhoechie-tab-menu div.list-group>a.active .fa{
+ background-color: #cd2757 !important;
+ color: #ffffff;
+ line-height: 3;
+}
+div.bhoechie-tab-menu div.list-group>a.active:after{
+ content: '';
+ position: absolute;
+ left: 100%;
+ top: 50%;
+ margin-top: -13px;
+ border-left: 0;
+ border-bottom: 13px solid transparent;
+ border-top: 13px solid transparent;
+ border-left: 10px solid #cd2757 ;
+}
+
+div.bhoechie-tab-content {
+ position:relative;
+ background-color: #ffffff;
+ border-bottom: 1px solid #ececec;
+ display: table;
+ width: 100%;
+ padding: 12px;
+}
+
+.bhoechie-tab-content h1 {
+ position:relative;
+ margin-bottom:30px;
+}
+
+.bhoechie-tab-content h1:before {
+ content: "";
+ width: 140px;
+ height: 4px;
+ background-image: linear-gradient(to right, #fa709a 0%, #fee140 100%);
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ border-radius: 6px;
+}
+
+div.bhoechie-tab div.bhoechie-tab-content:not(.active) {
+ display: none;
+}
+
+.update-notice, .filter-notice, .repeat-notice {
+ padding: 15px;
+ background: cornsilk;
+ position: relative;
+}
+.pfg-dismiss {
+ position: absolute;
+ top: 2px;
+ right: 3px;
+ cursor: pointer;
+}
+
+/* .file-upload {
+ background-color: #ffffff;
+ width: 600px;
+ margin: 0 auto;
+ padding: 20px;
+}
+
+.file-upload-btn {
+ width: 100%;
+ margin: 0;
+ color: #fff;
+ background: #1FB264;
+ border: none;
+ padding: 10px;
+ border-radius: 4px;
+ border-bottom: 4px solid #15824B;
+ transition: all .2s ease;
+ outline: none;
+ text-transform: uppercase;
+ font-weight: 700;
+}
+
+.file-upload-btn:hover {
+ background: #1AA059;
+ color: #ffffff;
+ transition: all .2s ease;
+ cursor: pointer;
+}
+
+.file-upload-btn:active {
+ border: 0;
+ transition: all .2s ease;
+}
+
+.file-upload-content {
+ display: none;
+ text-align: center;
+}
+
+.file-upload-input {
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ outline: none;
+ opacity: 0;
+ cursor: pointer;
+}
+
+.image-upload-wrap {
+ margin-top: 20px;
+ border: 4px dashed #1FB264;
+ position: relative;
+}
+
+.image-dropping,
+.image-upload-wrap:hover {
+ background-color: #1FB264;
+ border: 4px dashed #ffffff;
+}
+
+.image-title-wrap {
+ padding: 0 15px 15px 15px;
+ color: #222;
+}
+
+.drag-text {
+ text-align: center;
+}
+
+.drag-text h3 {
+ font-weight: 100;
+ text-transform: uppercase;
+ color: #15824B;
+ padding: 60px 0;
+}
+
+.file-upload-image {
+ max-height: 200px;
+ max-width: 200px;
+ margin: auto;
+ padding: 20px;
+}
+
+.remove-image {
+ width: 200px;
+ margin: 0;
+ color: #fff;
+ background: #cd4535;
+ border: none;
+ padding: 10px;
+ border-radius: 4px;
+ border-bottom: 4px solid #b02818;
+ transition: all .2s ease;
+ outline: none;
+ text-transform: uppercase;
+ font-weight: 700;
+}
+
+.remove-image:hover {
+ background: #c13b2a;
+ color: #ffffff;
+ transition: all .2s ease;
+ cursor: pointer;
+}
+
+.remove-image:active {
+ border: 0;
+ transition: all .2s ease;
+}
+ */
+.ma_field_discription {
+ width: 20%;
+ padding: 15px 20px 15px 0;
+ display: table-cell;
+ height: 100%;
+ vertical-align: middle;
+ color: #34383c;
+
+}
+.meta_box_holder_inside {
+ border-left: 4px solid #d0cece;
+ display: table;
+ width: 100%;
+ padding: 13px;
+ margin-left: 14px;
+ background: #f6f7f7;
+}
+.ma_field {
+ width: 80%;
+ height: 100%;
+ vertical-align: middle;
+ color: #34383c;
+}
+
+.ma_field_discription p {
+ color: #a2a9af;
+ font-style: italic;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.ma_field_discription h4 {
+ font-size:inherit;
+ margin-bottom: 0;
+ line-height: 1.5em;
+ margin-top: 0;
+ padding: 0;
+}
+input[name=pfg_theme] {
+ visibility:hidden;
+}
+.gallery_layout {
+ border:5px solid #312e2e
+}
+.ma_field {
+ width:30% !important;
+ padding: 15px 20px 15px 0;
+}
+/* range bar */
+.slidecontainer {
+ width: 100%;
+}
+
+.slider {
+ -webkit-appearance: none;
+ width: 100%;
+ height: 15px;
+ border-radius: 5px;
+ background: #d3d3d3;
+ outline: none;
+ opacity: 0.7;
+ -webkit-transition: .2s;
+ transition: opacity .2s;
+}
+
+.slider:hover {
+ opacity: 1;
+}
+
+.slider::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 25px;
+ height: 25px;
+ border-radius: 50%;
+ background: #4CAF50;
+ cursor: pointer;
+}
+
+.slider::-moz-range-thumb {
+ width: 25px;
+ height: 25px;
+ border-radius: 50%;
+ background: #4CAF50;
+ cursor: pointer;
+}
+/*Toggle button on/off css*/
+
+.switch-field {
+ font-family: "Lucida Grande", Tahoma, Verdana, sans-serif;
+ overflow: hidden;
+ padding-left: 0px
+}
+
+.switch-title {
+ margin-bottom: 6px;
+}
+
+.switch-field input[type="radio"] {
+ visibility:hidden;
+
+ display: none;
+}
+
+.switch-field label {
+ float: left;
+}
+
+.switch-field label {
+ display: inline-block;
+ width: 60px;
+ font-size: 11px;
+ font-weight: normal;
+ text-align: center;
+ text-shadow: none;
+ padding: 2px 2px;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-transition: all 0.1s ease-in-out;
+ -moz-transition: all 0.1s ease-in-out;
+ -ms-transition: all 0.1s ease-in-out;
+ -o-transition: all 0.1s ease-in-out;
+ transition: all 0.1s ease-in-out;
+}
+
+.switch-field label:hover {
+ cursor: pointer;
+
+}
+
+.switch-field input:checked + label {
+ background-color: #cd2757;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color:#FFFFFF;
+}
+
+.switch-field label:first-of-type {
+ border-radius: 4px 0 0 4px;
+}
+
+.switch-field label:last-of-type {
+ border-radius: 0 4px 4px 0;
+}
+.em_size_field label {
+ width:35px;
+ height:25px;
+}
+.em_size_field label {
+ width:50px;
+}
+.hover_field label {
+width:100px !important;
+}
+
+.item:hover .item-overlay.bottom {
+ bottom: 177px;
+ opacity:1 !important;
+}
+.item-overlay {
+
+ -moz-transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s;
+ -webkit-transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s;
+ transition: top 0.3s, right 0.3s, bottom 0.3s, left 0.3s;
+}
+.item-overlay.bottom {
+ bottom: 90%;
+}
+
+/* Rabge bar css*/
+
+.range-slider__range {
+ -webkit-appearance: none;
+ width: calc(98% - (73px)) !important;
+ height: 7px;
+ border-radius: 5px;
+ background: #d7dcdf;
+ outline: none;
+ padding: 0;
+ margin: 2px;
+ display:inline !important;
+}
+.range-slider__range::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 20px;
+ height: 20px;
+ border-radius: 50%;
+ background: #40BABD;
+ cursor: pointer;
+ -webkit-transition: background .15s ease-in-out;
+ transition: background .15s ease-in-out;
+}
+.range-slider__range::-webkit-slider-thumb:hover {
+ background: #1abc9c;
+}
+.range-slider__range:active::-webkit-slider-thumb {
+ background: #1abc9c;
+}
+.range-slider__range::-moz-range-thumb {
+ width: 20px;
+ height: 20px;
+ border: 0;
+ border-radius: 50%;
+ background: #0073AA;
+ cursor: pointer;
+ -webkit-transition: background .15s ease-in-out;
+ transition: background .15s ease-in-out;
+}
+.range-slider__range::-moz-range-thumb:hover {
+ background: #177EE5;
+}
+.range-slider__range:active::-moz-range-thumb {
+ background: #62D5FF;
+}
+
+.range-slider__value {
+ display: inline-block !important;
+ position: relative !important;
+ width: 60px;
+ color: #fff;
+ line-height: 20px;
+ text-align: center;
+ border-radius: 3px;
+ background: #cd2757 ;
+ padding: 5px 10px;
+ margin-left: 8px;
+}
+.range-slider__value:after {
+ position: absolute !important;
+ top: 8px;
+ left: -7px;
+ width: 0;
+ height: 0;
+ border-top: 7px solid transparent;
+ border-right: 7px solid #0073AA;
+ border-bottom: 7px solid transparent;
+ content: '';
+}
+
+::-moz-range-track {
+ background: #d7dcdf;
+ border: 0;
+}
+
+input::-moz-focus-inner,
+input::-moz-focus-outer {
+ border: 0;
+}
+
+:focus {
+ outline: none;
+}
+.row {
+ margin-right: 0;
+ margin-left: 0;
+}
+/*
+ Sometimes the sub menus get too large for the page and prevent the menu from scrolling, limiting functionality
+ A quick fix is to change .side-menu to
+
+ -> position:absolute
+
+ and uncomment the code below.
+ You also need to uncomment
+
+ ->
in the html file
+
+ you also need to tweek the animation. Just uncomment the code in that section
+ --------------------------------------------------------------------------------------------------------------------
+ If you want to make it really neat i suggest you look into an alternative like http://areaaperta.com/nicescroll/
+ This will allow the menu to say fixed on body scoll and scoll on the side bar if it get to large
+*/
+/*.absolute-wrapper{
+ position: fixed;
+ width: 300px;
+ height: 100%;
+ background-color: #f8f8f8;
+ border-right: 1px solid #e7e7e7;
+}*/
+
+.side-menu {
+ width: 200px;
+ background-color: #f8f8f8;
+ border-right: 1px solid #e7e7e7;
+}
+.side-menu .navbar {
+ border: none;
+}
+.side-menu .navbar-header {
+ width: 100%;
+ border-bottom: 1px solid #e7e7e7;
+}
+.side-menu .navbar-nav .active a {
+ margin-right: -1px;
+ outline:none;
+}
+.side-menu .navbar-nav .active a:focus {
+ box-shadow:none !important;
+ outline-offset:0px !important;
+}
+.side-menu .navbar-nav li {
+ display: block;
+ width: 100%;
+ border-bottom: 1px solid #e7e7e7;
+}
+.side-menu .navbar-nav li a {
+ padding: 15px;
+}
+.side-menu .navbar-nav li a .glyphicon {
+ padding-right: 10px;
+}
+.side-menu #dropdown {
+ border: 0;
+ margin-bottom: 0;
+ border-radius: 0;
+ background-color: transparent;
+ box-shadow: none;
+}
+.side-menu #dropdown .caret {
+ float: right;
+ margin: 9px 5px 0;
+}
+.side-menu #dropdown .indicator {
+ float: right;
+}
+.side-menu #dropdown > a {
+ border-bottom: 1px solid #e7e7e7;
+}
+.side-menu #dropdown .panel-body {
+ padding: 0;
+ background-color: #f3f3f3;
+}
+.side-menu #dropdown .panel-body .navbar-nav {
+ width: 100%;
+}
+.side-menu #dropdown .panel-body .navbar-nav li {
+ padding-left: 15px;
+ border-bottom: 1px solid #e7e7e7;
+}
+.side-menu #dropdown .panel-body .navbar-nav li:last-child {
+ border-bottom: none;
+}
+.side-menu #dropdown .panel-body .panel > a {
+ margin-left: -20px;
+ padding-left: 35px;
+}
+.side-menu #dropdown .panel-body .panel-body {
+ margin-left: -15px;
+}
+.side-menu #dropdown .panel-body .panel-body li {
+ padding-left: 30px;
+}
+.side-menu #dropdown .panel-body .panel-body li:last-child {
+ border-bottom: 1px solid #e7e7e7;
+}
+.side-menu #search-trigger {
+ background-color: #f3f3f3;
+ border: 0;
+ border-radius: 0;
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 15px 18px;
+}
+.side-menu .brand-name-wrapper {
+ min-height: 50px;
+}
+.side-menu .brand-name-wrapper .navbar-brand {
+ display: block;
+}
+.side-menu #search {
+ position: relative;
+ z-index: 1000;
+}
+.side-menu #search .panel-body {
+ padding: 0;
+}
+.side-menu #search .panel-body .navbar-form {
+ padding: 0;
+ padding-right: 50px;
+ width: 100%;
+ margin: 0;
+ position: relative;
+ border-top: 1px solid #e7e7e7;
+}
+.side-menu #search .panel-body .navbar-form .form-group {
+ width: 100%;
+ position: relative;
+}
+.side-menu #search .panel-body .navbar-form input {
+ border: 0;
+ border-radius: 0;
+ box-shadow: none;
+ width: 100%;
+ height: 50px;
+}
+.side-menu #search .panel-body .navbar-form .btn {
+ position: absolute;
+ right: 0;
+ top: 0;
+ border: 0;
+ border-radius: 0;
+ background-color: #f3f3f3;
+ padding: 15px 18px;
+}
+/* Main body section */
+.col-md-2 {
+ padding-left: 0px;
+ width: 12.666667%;
+}
+/* style by eva */
+.eva-nav-tab li {
+ margin-bottom:0px;
+}
+.eva-nav-tab li:hover {
+color: #555;
+ background-color: #e7e7e7;
+}
+.eva-nav-tab li .fa {
+ font-size:15px;
+ margin-right: 7px;
+}
+.text {
+ height: 70px;
+ background-color: #c7ab85 !important;
+ border-right: 1px solid #e7e7e7;
+}
+.eva_option_head {
+
+}
+.eva_option_head h2 {
+ color:#FFFFFF;
+}
+
+.eva-save-button {
+
+ box-shadow:none!important;
+}
+.eva-reset-button {
+ margin-top:15px !important;
+ margin-right: 70px !important;
+ font-weight: 600;
+ box-shadow:none!important;
+}
+.fileinput-new {
+ height: 130px;
+ width: 120px;
+}
+.em_slide_close {
+ cursor: pointer;
+ color: #af6969;
+ font-size: 16px;
+}
+.eva_header {
+ padding-left:0px;
+}
+.eva_header input {
+ width:70% !important
+}
+
+/* icon */
+.eva_button {
+ border-radius: 4px;
+ background-color: #f7f7f7;
+ border: none;
+ color: #717171;
+ text-align: center;
+ font-size: 14px;
+ padding: 7px;
+ width: 140px;
+ transition: all 0.5s;
+ cursor: pointer;
+ margin: 7px;
+ font-weight: 500;
+ margin-top:10px;
+}
+.eva_button_rst {
+ width: 120px;
+ margin-right: 70px;
+}
+.eva-spin-fa {
+ font-size: 16px;
+ margin-left: 12px;
+}
+.eva_button span {
+ cursor: pointer;
+ display: inline-block;
+ position: relative;
+ transition: 0.5s;
+}
+
+.eva_button span:after {
+ content: '\00bb';
+ position: absolute;
+ opacity: 0;
+ top: -3px;
+ right: -20px;
+ transition: 0.5s;
+ font-size: 27px;
+}
+
+.eva_button:hover span {
+ padding-right: 25px;
+}
+
+.eva_button:hover span:after {
+ opacity: 1;
+ right: 0;
+}
+/* small screen */
+@media (max-width: 768px) {
+ .side-menu {
+ position: relative;
+ width: 100%;
+ height: 0;
+ border-right: 0;
+ border-bottom: 1px solid #e7e7e7;
+ }
+ .side-menu .brand-name-wrapper .navbar-brand {
+ display: inline-block;
+ }
+ /* Slide in animation */
+ @-moz-keyframes slidein {
+ 0% {
+ left: -300px;
+ }
+ 100% {
+ left: 10px;
+ }
+ }
+ @-webkit-keyframes slidein {
+ 0% {
+ left: -300px;
+ }
+ 100% {
+ left: 10px;
+ }
+ }
+ @keyframes slidein {
+ 0% {
+ left: -300px;
+ }
+ 100% {
+ left: 10px;
+ }
+ }
+ @-moz-keyframes slideout {
+ 0% {
+ left: 0;
+ }
+ 100% {
+ left: -300px;
+ }
+ }
+ @-webkit-keyframes slideout {
+ 0% {
+ left: 0;
+ }
+ 100% {
+ left: -300px;
+ }
+ }
+ @keyframes slideout {
+ 0% {
+ left: 0;
+ }
+ 100% {
+ left: -300px;
+ }
+ }
+ /* Slide side menu*/
+ /* Add .absolute-wrapper.slide-in for scrollable menu -> see top comment */
+ .side-menu-container > .navbar-nav.slide-in {
+ -moz-animation: slidein 300ms forwards;
+ -o-animation: slidein 300ms forwards;
+ -webkit-animation: slidein 300ms forwards;
+ animation: slidein 300ms forwards;
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ }
+ .side-menu-container > .navbar-nav {
+ /* Add position:absolute for scrollable menu -> see top comment */
+ position: fixed;
+ left: -300px;
+ width: 300px;
+ top: 43px;
+ height: 100%;
+ border-right: 1px solid #e7e7e7;
+ background-color: #f8f8f8;
+ -moz-animation: slideout 300ms forwards;
+ -o-animation: slideout 300ms forwards;
+ -webkit-animation: slideout 300ms forwards;
+ animation: slideout 300ms forwards;
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ }
+ /* Uncomment for scrollable menu -> see top comment */
+ /*.absolute-wrapper{
+ width:285px;
+ -moz-animation: slideout 300ms forwards;
+ -o-animation: slideout 300ms forwards;
+ -webkit-animation: slideout 300ms forwards;
+ animation: slideout 300ms forwards;
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ }*/
+ @-moz-keyframes bodyslidein {
+ 0% {
+ left: 0;
+ }
+ 100% {
+ left: 300px;
+ }
+ }
+ @-webkit-keyframes bodyslidein {
+ 0% {
+ left: 0;
+ }
+ 100% {
+ left: 300px;
+ }
+ }
+ @keyframes bodyslidein {
+ 0% {
+ left: 0;
+ }
+ 100% {
+ left: 300px;
+ }
+ }
+ @-moz-keyframes bodyslideout {
+ 0% {
+ left: 300px;
+ }
+ 100% {
+ left: 0;
+ }
+ }
+ @-webkit-keyframes bodyslideout {
+ 0% {
+ left: 300px;
+ }
+ 100% {
+ left: 0;
+ }
+ }
+ @keyframes bodyslideout {
+ 0% {
+ left: 300px;
+ }
+ 100% {
+ left: 0;
+ }
+ }
+ /* Slide side body*/
+ .side-body {
+ margin-left: 5px;
+ margin-top: 70px;
+ position: relative;
+ -moz-animation: bodyslideout 300ms forwards;
+ -o-animation: bodyslideout 300ms forwards;
+ -webkit-animation: bodyslideout 300ms forwards;
+ animation: bodyslideout 300ms forwards;
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ }
+ .body-slide-in {
+ -moz-animation: bodyslidein 300ms forwards;
+ -o-animation: bodyslidein 300ms forwards;
+ -webkit-animation: bodyslidein 300ms forwards;
+ animation: bodyslidein 300ms forwards;
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ }
+ /* Hamburger */
+ .navbar-toggle {
+ border: 0;
+ float: left;
+ padding: 18px;
+ margin: 0;
+ border-radius: 0;
+ background-color: #f3f3f3;
+ }
+ /* Search */
+ #search .panel-body .navbar-form {
+ border-bottom: 0;
+ }
+ #search .panel-body .navbar-form .form-group {
+ margin: 0;
+ }
+ .navbar-header {
+ /* this is probably redundant */
+ position: fixed;
+ z-index: 3;
+ background-color: ;
+ }
+ /* Dropdown tweek */
+ #dropdown .panel-body .navbar-nav {
+ margin: 0;
+ }
+
+}
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/css/pfg-admin-style.css b/wp-content/plugins/portfolio-filter-gallery/css/pfg-admin-style.css
new file mode 100644
index 0000000..307e388
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/css/pfg-admin-style.css
@@ -0,0 +1,6 @@
+#menu-posts-awl_filter_gallery ul li:last-child a {
+ color: #00ff89;
+}
+#menu-posts-awl_filter_gallery ul li:last-child a:hover {
+ color: #00ff89;
+}
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-gallery.php b/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-gallery.php
new file mode 100644
index 0000000..c53659e
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-gallery.php
@@ -0,0 +1,568 @@
+ array( 'default' => 'masonry', 'type' => 'key' ),
+ 'columns_xl' => array( 'default' => 4, 'type' => 'int' ),
+ 'columns_lg' => array( 'default' => 3, 'type' => 'int' ),
+ 'columns_md' => array( 'default' => 2, 'type' => 'int' ),
+ 'columns_sm' => array( 'default' => 1, 'type' => 'int' ),
+ 'gap' => array( 'default' => 20, 'type' => 'int' ),
+ 'direction' => array( 'default' => 'ltr', 'type' => 'key' ),
+
+ // Justified layout settings
+ 'justified_row_height' => array( 'default' => 200, 'type' => 'int' ),
+ 'justified_last_row' => array( 'default' => 'left', 'type' => 'key' ),
+
+ // Packed layout settings
+ 'packed_min_size' => array( 'default' => 150, 'type' => 'int' ),
+
+ // Thumbnail settings
+ 'show_title' => array( 'default' => true, 'type' => 'bool' ),
+ 'title_position' => array( 'default' => 'overlay', 'type' => 'key' ),
+ 'show_categories' => array( 'default' => false, 'type' => 'bool' ),
+ 'caption_bg_color' => array( 'default' => '#ffffff', 'type' => 'hex_color' ),
+ 'caption_text_color' => array( 'default' => '#1e293b', 'type' => 'hex_color' ),
+ 'show_numbering' => array( 'default' => false, 'type' => 'bool' ),
+ 'border_width' => array( 'default' => 0, 'type' => 'int' ),
+ 'border_color' => array( 'default' => '#ffffff', 'type' => 'hex_color' ),
+ 'border_radius' => array( 'default' => 0, 'type' => 'int' ),
+ 'grayscale' => array( 'default' => false, 'type' => 'bool' ),
+ 'hover_effect' => array( 'default' => 'fade', 'type' => 'key' ),
+ 'overlay_color' => array( 'default' => '#000000', 'type' => 'hex_color' ),
+ 'overlay_opacity' => array( 'default' => 70, 'type' => 'int' ),
+ 'primary_color' => array( 'default' => '#3858e9', 'type' => 'hex_color' ),
+
+ // Filter settings
+ 'filters_enabled' => array( 'default' => true, 'type' => 'bool' ),
+ 'filters_position' => array( 'default' => 'top', 'type' => 'key' ),
+ 'filters_style' => array( 'default' => 'buttons', 'type' => 'key' ),
+ 'show_all_button' => array( 'default' => true, 'type' => 'bool' ),
+ 'all_button_text' => array( 'default' => 'All', 'type' => 'text' ),
+ 'sort_filters' => array( 'default' => false, 'type' => 'bool' ),
+ 'multi_level_filters' => array( 'default' => false, 'type' => 'bool' ),
+ 'filter_logic' => array( 'default' => 'or', 'type' => 'key' ),
+ 'show_logic_toggle' => array( 'default' => true, 'type' => 'bool' ),
+ 'show_filter_colors' => array( 'default' => false, 'type' => 'bool' ),
+ 'filter_bg_color' => array( 'default' => '#3858e9', 'type' => 'hex_color' ),
+ 'filter_text_color' => array( 'default' => '#ffffff', 'type' => 'hex_color' ),
+ 'filter_active_color' => array( 'default' => '#3858e9', 'type' => 'hex_color' ),
+
+ // Lightbox settings
+ 'lightbox' => array( 'default' => 'bootstrap', 'type' => 'key' ),
+ 'lightbox_title' => array( 'default' => true, 'type' => 'bool' ),
+ 'lightbox_description' => array( 'default' => false, 'type' => 'bool' ),
+ 'url_target' => array( 'default' => '_blank', 'type' => 'key' ),
+
+ // Search settings
+ 'search_enabled' => array( 'default' => false, 'type' => 'bool' ),
+ 'search_placeholder' => array( 'default' => 'Search...', 'type' => 'text' ),
+
+ // Sort settings
+ 'sort_by_title' => array( 'default' => '', 'type' => 'key' ),
+
+ // Advanced settings
+ 'custom_css' => array( 'default' => '', 'type' => 'css' ),
+ 'bootstrap_disabled' => array( 'default' => false, 'type' => 'bool' ),
+ 'lazy_loading' => array( 'default' => false, 'type' => 'bool' ),
+ 'show_image_count' => array( 'default' => false, 'type' => 'bool' ),
+
+ // Template setting
+ 'template' => array( 'default' => 'modern-cards', 'type' => 'key' ),
+
+ // Pagination settings (Premium)
+ 'pagination_enabled' => array( 'default' => false, 'type' => 'bool' ),
+ 'pagination_type' => array( 'default' => 'load_more', 'type' => 'key' ),
+ 'items_per_page' => array( 'default' => 12, 'type' => 'int' ),
+
+ // URL Deep Linking
+ 'deep_linking' => array( 'default' => false, 'type' => 'bool' ),
+ 'url_param_name' => array( 'default' => 'filter', 'type' => 'key' ),
+
+ // Shuffle Images
+ 'shuffle_images' => array( 'default' => false, 'type' => 'bool' ),
+
+ // Gallery Preloader
+ 'show_preloader' => array( 'default' => true, 'type' => 'bool' ),
+
+ // Default Filter
+ 'default_filter' => array( 'default' => '', 'type' => 'key' ),
+
+ // Filter Count
+ 'show_filter_count' => array( 'default' => false, 'type' => 'bool' ),
+ 'filter_count_style' => array( 'default' => 'always', 'type' => 'key' ),
+
+ // Image Size
+ 'image_size' => array( 'default' => 'large', 'type' => 'key' ),
+
+ // WooCommerce Settings (Premium)
+ 'source' => array( 'default' => 'media', 'type' => 'key' ), // 'media' or 'woocommerce'
+ 'woo_categories' => array( 'default' => array(), 'type' => 'array' ),
+ 'woo_orderby' => array( 'default' => 'date', 'type' => 'key' ),
+ 'woo_order' => array( 'default' => 'desc', 'type' => 'key' ),
+ 'woo_limit' => array( 'default' => -1, 'type' => 'int' ),
+ 'woo_show_price' => array( 'default' => true, 'type' => 'bool' ),
+ 'woo_show_sale_badge' => array( 'default' => true, 'type' => 'bool' ),
+ 'woo_show_title' => array( 'default' => true, 'type' => 'bool' ),
+ 'woo_link_target' => array( 'default' => '_self', 'type' => 'key' ),
+
+ // Watermark Settings (Premium)
+ 'watermark_enabled' => array( 'default' => false, 'type' => 'bool' ),
+ 'watermark_type' => array( 'default' => 'text', 'type' => 'key' ),
+ 'watermark_text' => array( 'default' => '', 'type' => 'text' ),
+ 'watermark_image' => array( 'default' => '', 'type' => 'url' ),
+ 'watermark_position' => array( 'default' => 'bottom-right', 'type' => 'key' ),
+ 'watermark_opacity' => array( 'default' => 50, 'type' => 'int' ),
+ 'watermark_size' => array( 'default' => 24, 'type' => 'int' ), // Font size for text
+ 'watermark_image_size' => array( 'default' => 15, 'type' => 'int' ), // % of image width
+ );
+
+ /**
+ * Constructor.
+ *
+ * @param int|WP_Post $gallery Gallery ID or post object.
+ */
+ public function __construct( $gallery = 0 ) {
+ if ( $gallery instanceof WP_Post ) {
+ $this->id = $gallery->ID;
+ $this->post = $gallery;
+ } elseif ( is_numeric( $gallery ) && $gallery > 0 ) {
+ $this->id = absint( $gallery );
+ $this->post = get_post( $this->id );
+ }
+
+ $this->load_settings();
+ }
+
+ /**
+ * Get gallery ID.
+ *
+ * @return int
+ */
+ public function get_id() {
+ return $this->id;
+ }
+
+ /**
+ * Get gallery title.
+ *
+ * @return string
+ */
+ public function get_title() {
+ return $this->post ? $this->post->post_title : '';
+ }
+
+ /**
+ * Check if gallery exists.
+ *
+ * @return bool
+ */
+ public function exists() {
+ return $this->post && $this->post->post_type === 'awl_filter_gallery';
+ }
+
+ /**
+ * Load settings from database.
+ */
+ protected function load_settings() {
+ $this->settings = array();
+
+ if ( ! $this->id ) {
+ $this->settings = $this->get_defaults();
+ return;
+ }
+
+ // Try new format first
+ $settings = get_post_meta( $this->id, '_pfg_settings', true );
+
+ if ( empty( $settings ) ) {
+ // Fall back to legacy format
+ $legacy_key = 'awl_filter_gallery' . $this->id;
+ $legacy = get_post_meta( $this->id, $legacy_key, true );
+
+ if ( ! empty( $legacy ) ) {
+ $settings = $this->transform_legacy_settings( $legacy );
+
+ // Auto-save migrated settings so they persist
+ update_post_meta( $this->id, '_pfg_settings', $settings );
+
+ // Also migrate images if present
+ if ( isset( $legacy['image-ids'] ) ) {
+ $images = $this->transform_legacy_images( $legacy );
+ update_post_meta( $this->id, '_pfg_images', $images );
+ }
+ }
+ }
+
+ // Merge with defaults
+ $this->settings = wp_parse_args( $settings, $this->get_defaults() );
+ }
+
+ /**
+ * Get default settings.
+ *
+ * @return array
+ */
+ public function get_defaults() {
+ $defaults = array();
+ foreach ( self::$settings_schema as $key => $config ) {
+ $defaults[ $key ] = $config['default'];
+ }
+ return $defaults;
+ }
+
+ /**
+ * Get all settings.
+ *
+ * @param array $overrides Optional settings overrides from shortcode attributes.
+ * @return array
+ */
+ public function get_settings( $overrides = array() ) {
+ return wp_parse_args( $overrides, $this->settings );
+ }
+
+ /**
+ * Get a single setting.
+ *
+ * @param string $key Setting key.
+ * @param mixed $default Default value if not set.
+ * @return mixed
+ */
+ public function get_setting( $key, $default = null ) {
+ if ( isset( $this->settings[ $key ] ) ) {
+ return $this->settings[ $key ];
+ }
+
+ if ( $default !== null ) {
+ return $default;
+ }
+
+ return isset( self::$settings_schema[ $key ] ) ? self::$settings_schema[ $key ]['default'] : null;
+ }
+
+ /**
+ * Set a setting value.
+ *
+ * @param string $key Setting key.
+ * @param mixed $value Setting value.
+ */
+ public function set_setting( $key, $value ) {
+ if ( isset( self::$settings_schema[ $key ] ) ) {
+ $type = self::$settings_schema[ $key ]['type'];
+ $this->settings[ $key ] = PFG_Security::sanitize( $value, $type );
+ }
+ }
+
+ /**
+ * Save settings to database.
+ *
+ * @return bool
+ */
+ public function save() {
+ if ( ! $this->id ) {
+ return false;
+ }
+
+ // Sanitize all settings before saving
+ $sanitized = $this->sanitize_settings( $this->settings );
+
+ return update_post_meta( $this->id, '_pfg_settings', $sanitized );
+ }
+
+ /**
+ * Sanitize settings array.
+ *
+ * @param array $settings Raw settings.
+ * @return array Sanitized settings.
+ */
+ protected function sanitize_settings( $settings ) {
+ $sanitized = array();
+
+ foreach ( self::$settings_schema as $key => $config ) {
+ if ( isset( $settings[ $key ] ) ) {
+ $sanitized[ $key ] = PFG_Security::sanitize( $settings[ $key ], $config['type'] );
+ } else {
+ $sanitized[ $key ] = $config['default'];
+ }
+ }
+
+ return $sanitized;
+ }
+
+ /**
+ * Get gallery images.
+ *
+ * @return array Array of image data.
+ */
+ public function get_images() {
+ $images_meta = get_post_meta( $this->id, '_pfg_images', true );
+
+ if ( empty( $images_meta ) ) {
+ // Try legacy format
+ $legacy_key = 'awl_filter_gallery' . $this->id;
+ $legacy = get_post_meta( $this->id, $legacy_key, true );
+
+ if ( ! empty( $legacy ) && isset( $legacy['image-ids'] ) ) {
+ return $this->transform_legacy_images( $legacy );
+ }
+
+ return array();
+ }
+
+ return is_array( $images_meta ) ? $images_meta : array();
+ }
+
+ /**
+ * Transform legacy settings format to new format.
+ *
+ * @param array $legacy Legacy settings array.
+ * @return array Transformed settings.
+ */
+ protected function transform_legacy_settings( $legacy ) {
+ $settings = array();
+
+ // Helper function to convert Bootstrap column class to column count
+ $col_to_num = function( $col_class ) {
+ // Map Bootstrap column classes to number of columns
+ $mappings = array(
+ 'col-lg-12' => 1, 'col-md-12' => 1, 'col-sm-12' => 1, 'col-xs-12' => 1, 'col-12' => 1,
+ 'col-lg-6' => 2, 'col-md-6' => 2, 'col-sm-6' => 2, 'col-xs-6' => 2, 'col-6' => 2,
+ 'col-lg-4' => 3, 'col-md-4' => 3, 'col-sm-4' => 3, 'col-xs-4' => 3, 'col-4' => 3,
+ 'col-lg-3' => 4, 'col-md-3' => 4, 'col-sm-3' => 4, 'col-xs-3' => 3, 'col-3' => 4,
+ 'col-lg-2' => 6, 'col-md-2' => 6, 'col-sm-2' => 6, 'col-xs-2' => 6, 'col-2' => 6,
+ 'col-lg-1' => 12, 'col-md-1' => 12, 'col-sm-1' => 12, 'col-xs-1' => 12, 'col-1' => 12,
+ );
+ return isset( $mappings[ $col_class ] ) ? $mappings[ $col_class ] : 4;
+ };
+
+ // Layout mappings
+ $settings['layout_type'] = isset( $legacy['gal_size'] ) ? $legacy['gal_size'] : 'masonry';
+ $settings['columns_xl'] = isset( $legacy['col_large_desktops'] ) ? $col_to_num( $legacy['col_large_desktops'] ) : 4;
+ $settings['columns_lg'] = isset( $legacy['col_desktops'] ) ? $col_to_num( $legacy['col_desktops'] ) : 3;
+ $settings['columns_md'] = isset( $legacy['col_tablets'] ) ? $col_to_num( $legacy['col_tablets'] ) : 2;
+ $settings['columns_sm'] = isset( $legacy['col_phones'] ) ? $col_to_num( $legacy['col_phones'] ) : 1;
+ $settings['gap'] = isset( $legacy['no_spacing'] ) && $legacy['no_spacing'] ? 0 : 20;
+ $settings['direction'] = isset( $legacy['gallery_direction'] ) ? $legacy['gallery_direction'] : 'ltr';
+
+ // Thumbnail mappings - check for both 'show/hide' and 'yes/no' formats
+ $settings['show_title'] = isset( $legacy['title_thumb'] ) && in_array( $legacy['title_thumb'], array( 'show', 'yes' ), true );
+ $settings['show_numbering'] = isset( $legacy['image_numbering'] ) && ( $legacy['image_numbering'] === 'yes' || $legacy['image_numbering'] == 1 );
+ $settings['grayscale'] = isset( $legacy['gray_scale'] ) && ( $legacy['gray_scale'] === 'yes' || $legacy['gray_scale'] == 1 );
+ $settings['hover_effect'] = isset( $legacy['image_hover_effect_four'] ) ? $legacy['image_hover_effect_four'] : 'fade';
+
+ // Border mappings
+ $settings['border_width'] = isset( $legacy['thumb_border'] ) && $legacy['thumb_border'] === 'yes' ? 1 : 0;
+ $settings['border_color'] = isset( $legacy['border_color'] ) ? $legacy['border_color'] : '#ffffff';
+
+ // Filter mappings - check for both 0/1 and yes/no formats
+ $settings['filters_enabled'] = ! ( isset( $legacy['hide_filters'] ) && ( $legacy['hide_filters'] === 'yes' || $legacy['hide_filters'] == 1 ) );
+ $settings['filters_position'] = isset( $legacy['filter_position'] ) ? $legacy['filter_position'] : 'center';
+ $settings['show_all_button'] = true;
+ $settings['all_button_text'] = isset( $legacy['all_txt'] ) ? $legacy['all_txt'] : 'All';
+ $settings['sort_filters'] = isset( $legacy['sort_filter_order'] ) && ( $legacy['sort_filter_order'] === 'yes' || $legacy['sort_filter_order'] == 1 );
+ $settings['filter_bg_color'] = isset( $legacy['filter_bg'] ) ? $legacy['filter_bg'] : '#3858e9';
+ $settings['filter_text_color']= isset( $legacy['filter_title_color'] ) ? $legacy['filter_title_color'] : '#ffffff';
+ // Copy filter_bg_color to filter_active_color for consistent styling
+ $settings['filter_active_color'] = $settings['filter_bg_color'];
+
+ // Lightbox mappings - convert numeric values
+ // Old plugin: 0 = None, 4 = LD Lightbox, 5 = Bootstrap Lightbox
+ $lightbox_map = array( 0 => 'none', 4 => 'ld-lightbox', 5 => 'bootstrap' );
+ $lightbox_val = isset( $legacy['light-box'] ) ? $legacy['light-box'] : 4;
+ $settings['lightbox'] = isset( $lightbox_map[ $lightbox_val ] ) ? $lightbox_map[ $lightbox_val ] : 'ld-lightbox';
+ $settings['url_target'] = isset( $legacy['url_target'] ) ? $legacy['url_target'] : '_blank';
+
+ // Search mappings
+ $settings['search_enabled'] = isset( $legacy['search_box'] ) && ( $legacy['search_box'] === 'yes' || $legacy['search_box'] == 1 );
+ $settings['search_placeholder'] = isset( $legacy['search_txt'] ) ? $legacy['search_txt'] : 'Search...';
+
+ // Sort mappings
+ $settings['sort_by_title'] = isset( $legacy['sort_by_title'] ) && in_array( $legacy['sort_by_title'], array( 'asc', 'desc', 'yes' ), true );
+
+ // Advanced mappings
+ $settings['custom_css'] = isset( $legacy['custom-css'] ) ? $legacy['custom-css'] : '';
+ $settings['bootstrap_disabled'] = isset( $legacy['bootstrap_disable'] ) && $legacy['bootstrap_disable'] === 'yes';
+
+ // Filter count migration - the old plugin used 'show_image_count' for showing counts on filters
+ // Check multiple possible legacy keys
+ $show_filter_count = false;
+ if ( isset( $legacy['show_image_count'] ) && ( $legacy['show_image_count'] === 'yes' || $legacy['show_image_count'] == 1 ) ) {
+ $show_filter_count = true;
+ }
+ if ( isset( $legacy['show_filter_count'] ) && ( $legacy['show_filter_count'] === 'yes' || $legacy['show_filter_count'] == 1 ) ) {
+ $show_filter_count = true;
+ }
+ if ( isset( $legacy['filter_count'] ) && ( $legacy['filter_count'] === 'yes' || $legacy['filter_count'] == 1 ) ) {
+ $show_filter_count = true;
+ }
+ $settings['show_filter_count'] = $show_filter_count;
+ $settings['show_image_count'] = $show_filter_count; // Keep in sync
+
+ return $settings;
+ }
+
+ /**
+ * Transform legacy images format to new format.
+ *
+ * @param array $legacy Legacy settings array.
+ * @return array Transformed images array.
+ */
+ protected function transform_legacy_images( $legacy ) {
+ $images = array();
+
+ if ( ! isset( $legacy['image-ids'] ) || ! is_array( $legacy['image-ids'] ) ) {
+ return $images;
+ }
+
+ $image_ids = $legacy['image-ids'];
+ $titles = isset( $legacy['image_title'] ) ? $legacy['image_title'] : array();
+ $descs = isset( $legacy['image_desc'] ) ? $legacy['image_desc'] : array();
+ $links = isset( $legacy['image-link'] ) ? $legacy['image-link'] : array();
+ $types = isset( $legacy['slide-type'] ) ? $legacy['slide-type'] : array();
+ $filters = isset( $legacy['filters'] ) ? $legacy['filters'] : array();
+
+ // Build a lookup map: filter ID => filter slug
+ // Legacy filters are stored in option 'awl_portfolio_filter_gallery_categories' as ID => Name
+ // New filters are stored in 'pfg_filters' as array with 'id', 'slug', 'name' keys
+ $filter_id_to_slug = $this->build_legacy_filter_map();
+
+ foreach ( $image_ids as $index => $id ) {
+ $id = absint( $id );
+ if ( ! $id ) {
+ continue;
+ }
+
+ // Try both index and id as keys for legacy compatibility
+ $legacy_filter_ids = array();
+ if ( isset( $filters[ $index ] ) && is_array( $filters[ $index ] ) ) {
+ $legacy_filter_ids = array_map( 'absint', $filters[ $index ] );
+ } elseif ( isset( $filters[ $id ] ) && is_array( $filters[ $id ] ) ) {
+ $legacy_filter_ids = array_map( 'absint', $filters[ $id ] );
+ }
+
+ // Convert legacy filter IDs to filter slugs
+ $filter_slugs = array();
+ foreach ( $legacy_filter_ids as $filter_id ) {
+ if ( isset( $filter_id_to_slug[ $filter_id ] ) ) {
+ $filter_slugs[] = $filter_id_to_slug[ $filter_id ];
+ }
+ }
+
+ $images[] = array(
+ 'id' => $id,
+ 'title' => isset( $titles[ $index ] ) ? $titles[ $index ] : get_the_title( $id ),
+ 'description' => isset( $descs[ $index ] ) ? $descs[ $index ] : '',
+ 'link' => isset( $links[ $index ] ) ? $links[ $index ] : '',
+ 'type' => isset( $types[ $index ] ) ? $types[ $index ] : 'image',
+ 'filters' => $filter_slugs,
+ );
+ }
+
+ return $images;
+ }
+
+ /**
+ * Build a lookup map from legacy filter IDs to new filter slugs.
+ *
+ * @return array Map of filter_id => filter_slug
+ */
+ protected function build_legacy_filter_map() {
+ $map = array();
+
+ // Get legacy categories (ID => Name format)
+ $legacy_categories = get_option( 'awl_portfolio_filter_gallery_categories', array() );
+
+ // Get new filters (array with id, slug, name keys)
+ $new_filters = get_option( 'pfg_filters', array() );
+
+ // First, build map from new filters if they have matching legacy IDs
+ foreach ( $new_filters as $filter ) {
+ if ( isset( $filter['id'] ) && isset( $filter['slug'] ) ) {
+ // Check if ID is numeric (legacy) or string (new format)
+ $filter_id = $filter['id'];
+ if ( is_numeric( $filter_id ) ) {
+ $map[ absint( $filter_id ) ] = $filter['slug'];
+ }
+ }
+ }
+
+ // If legacy categories exist, create slugs from names for any missing mappings
+ if ( ! empty( $legacy_categories ) ) {
+ foreach ( $legacy_categories as $legacy_id => $legacy_name ) {
+ $legacy_id = absint( $legacy_id );
+ if ( ! isset( $map[ $legacy_id ] ) && ! empty( $legacy_name ) ) {
+ // Ensure $legacy_name is a string (legacy data may have arrays)
+ if ( is_array( $legacy_name ) ) {
+ $legacy_name = isset( $legacy_name['name'] ) ? $legacy_name['name'] : ( isset( $legacy_name[0] ) ? $legacy_name[0] : '' );
+ }
+ // Generate slug from name only if it's a valid string
+ if ( is_string( $legacy_name ) && ! empty( $legacy_name ) ) {
+ // Use Unicode-aware slug generation for non-Latin characters
+ $slug = sanitize_title( $legacy_name );
+ // If sanitize_title returned URL-encoded (contains %xx hex), use Unicode-aware slug
+ if ( empty( $slug ) || preg_match( '/%[0-9a-f]{2}/i', $slug ) ) {
+ $slug = mb_strtolower( preg_replace( '/[^\p{L}\p{N}]+/ui', '-', $legacy_name ), 'UTF-8' );
+ $slug = trim( $slug, '-' );
+ if ( empty( $slug ) ) {
+ $slug = 'filter-' . substr( md5( $legacy_name ), 0, 8 );
+ }
+ }
+ $map[ $legacy_id ] = $slug;
+ }
+ }
+ }
+ }
+
+ return $map;
+ }
+
+ /**
+ * Get settings schema.
+ *
+ * @return array
+ */
+ public static function get_schema() {
+ return self::$settings_schema;
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-migrator.php b/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-migrator.php
new file mode 100644
index 0000000..b4a4760
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-migrator.php
@@ -0,0 +1,534 @@
+run_migrations( $current_version );
+ }
+ }
+
+ /**
+ * Run migrations from specified version.
+ *
+ * @param string $from_version Version to migrate from.
+ */
+ protected function run_migrations( $from_version ) {
+ // Migration map: version => method
+ $migrations = array(
+ '2.0.0' => 'migrate_to_2_0_0',
+ );
+
+ foreach ( $migrations as $version => $method ) {
+ if ( version_compare( $from_version, $version, '<' ) ) {
+ $this->log( "Starting migration to version {$version}" );
+
+ try {
+ call_user_func( array( $this, $method ) );
+ $this->log( "Completed migration to version {$version}" );
+ } catch ( Exception $e ) {
+ $this->log( "Migration to {$version} failed: " . $e->getMessage(), 'error' );
+ return; // Stop migrations on error
+ }
+ }
+ }
+
+ // Update version after all migrations complete
+ update_option( self::VERSION_OPTION, self::CURRENT_VERSION );
+ update_option( self::STATUS_OPTION, 'completed' );
+ }
+
+ /**
+ * Migrate to version 2.0.0.
+ */
+ protected function migrate_to_2_0_0() {
+ // Create backup first
+ $this->create_backup();
+
+ // Migrate global filters to a cleaner format FIRST
+ // This must happen before galleries so filter ID-to-slug mapping is available
+ $this->migrate_filters();
+
+ // Migrate galleries (images will use the filter mapping created above)
+ $this->migrate_galleries();
+ }
+
+ /**
+ * Create a backup of all gallery data.
+ *
+ * @return string|false Backup file path or false on failure.
+ */
+ public function create_backup() {
+ $backup_data = array(
+ 'version' => get_option( self::VERSION_OPTION, '1.0.0' ),
+ 'timestamp' => current_time( 'mysql' ),
+ 'galleries' => array(),
+ 'filters' => get_option( 'awl_portfolio_filter_gallery_categories', array() ),
+ );
+
+ // Get all galleries
+ $galleries = get_posts( array(
+ 'post_type' => 'awl_filter_gallery',
+ 'posts_per_page' => -1,
+ 'post_status' => 'any',
+ ) );
+
+ foreach ( $galleries as $gallery ) {
+ $legacy_key = 'awl_filter_gallery' . $gallery->ID;
+ $backup_data['galleries'][ $gallery->ID ] = array(
+ 'post' => $gallery,
+ 'settings' => get_post_meta( $gallery->ID, $legacy_key, true ),
+ );
+ }
+
+ // Save to file
+ $upload_dir = wp_upload_dir();
+ $backup_dir = $upload_dir['basedir'] . '/pfg-backups';
+
+ if ( ! file_exists( $backup_dir ) ) {
+ wp_mkdir_p( $backup_dir );
+
+ // Add index.php for security
+ file_put_contents( $backup_dir . '/index.php', 'log( "Backup created: {$backup_file}" );
+ return $backup_file;
+ }
+
+ return false;
+ }
+
+ /**
+ * Migrate all galleries to new format.
+ */
+ protected function migrate_galleries() {
+ $galleries = get_posts( array(
+ 'post_type' => 'awl_filter_gallery',
+ 'posts_per_page' => 50,
+ 'post_status' => 'any',
+ 'meta_query' => array(
+ 'relation' => 'OR',
+ array(
+ 'key' => '_pfg_migrated',
+ 'compare' => 'NOT EXISTS',
+ ),
+ array(
+ 'key' => '_pfg_migrated',
+ 'value' => self::CURRENT_VERSION,
+ 'compare' => '!=',
+ ),
+ ),
+ ) );
+
+ foreach ( $galleries as $gallery ) {
+ $this->migrate_single_gallery( $gallery->ID );
+ }
+
+ // Check if more galleries need migration
+ $remaining = get_posts( array(
+ 'post_type' => 'awl_filter_gallery',
+ 'posts_per_page' => 1,
+ 'post_status' => 'any',
+ 'fields' => 'ids',
+ 'meta_query' => array(
+ array(
+ 'key' => '_pfg_migrated',
+ 'compare' => 'NOT EXISTS',
+ ),
+ ),
+ ) );
+
+ if ( ! empty( $remaining ) ) {
+ // Schedule next batch
+ wp_schedule_single_event( time() + 5, 'pfg_continue_migration' );
+ }
+ }
+
+ /**
+ * Migrate a single gallery.
+ *
+ * @param int $gallery_id Gallery post ID.
+ * @return bool
+ */
+ public function migrate_single_gallery( $gallery_id ) {
+ $gallery_id = absint( $gallery_id );
+
+ if ( ! $gallery_id ) {
+ return false;
+ }
+
+ // Check if already migrated
+ $migrated = get_post_meta( $gallery_id, '_pfg_migrated', true );
+ if ( $migrated === self::CURRENT_VERSION ) {
+ return true;
+ }
+
+ // Get legacy settings
+ $legacy_key = 'awl_filter_gallery' . $gallery_id;
+ $legacy = get_post_meta( $gallery_id, $legacy_key, true );
+
+ if ( empty( $legacy ) ) {
+ // No legacy data, mark as migrated
+ update_post_meta( $gallery_id, '_pfg_migrated', self::CURRENT_VERSION );
+ return true;
+ }
+
+ // Use Gallery class to handle transformation
+ $gallery = new PFG_Gallery( $gallery_id );
+
+ // Extract images and save separately
+ $images = $gallery->get_images();
+ if ( ! empty( $images ) ) {
+ update_post_meta( $gallery_id, '_pfg_images', $images );
+ }
+
+ // Save new format settings
+ $gallery->save();
+
+ // Keep legacy data as backup
+ update_post_meta( $gallery_id, '_pfg_legacy_backup', $legacy );
+
+ // Mark as migrated
+ update_post_meta( $gallery_id, '_pfg_migrated', self::CURRENT_VERSION );
+
+ $this->log( "Migrated gallery #{$gallery_id}" );
+
+ return true;
+ }
+
+ /**
+ * Migrate global filters.
+ */
+ protected function migrate_filters() {
+ $old_filters = get_option( 'awl_portfolio_filter_gallery_categories', array() );
+
+ if ( empty( $old_filters ) || ! is_array( $old_filters ) ) {
+ return;
+ }
+
+ // Create a cleaner format
+ $new_filters = array();
+ $index = 0;
+
+ foreach ( $old_filters as $id => $name ) {
+ // Skip if name is not a string (malformed data)
+ if ( is_array( $name ) ) {
+ // Try to extract name from array if it has a 'name' key
+ if ( isset( $name['name'] ) && is_string( $name['name'] ) ) {
+ $name = $name['name'];
+ } else {
+ // Skip this filter entry
+ $this->log( "Skipped malformed filter: " . print_r( $name, true ), 'warning' );
+ continue;
+ }
+ }
+
+ if ( ! is_string( $name ) ) {
+ continue;
+ }
+
+ $new_filters[] = array(
+ 'id' => sanitize_key( $id ) ?: 'filter' . substr( md5( $name ), 0, 8 ),
+ 'name' => sanitize_text_field( $name ),
+ 'slug' => $this->generate_slug_from_name( $name ),
+ 'order' => $index,
+ );
+ $index++;
+ }
+
+ update_option( 'pfg_filters', $new_filters );
+
+ // Auto-repair: fix any URL-encoded slugs from previous migrations
+ $this->repair_broken_slugs();
+
+ // Keep old format as backup
+ update_option( 'pfg_filters_legacy_backup', $old_filters );
+
+ $this->log( 'Migrated ' . count( $new_filters ) . ' filters' );
+ }
+
+ /**
+ * Generate a URL-safe slug from filter name.
+ * Handles non-Latin characters (Japanese, Chinese, Arabic, etc.)
+ *
+ * @param string $name Filter name.
+ * @return string URL-safe slug.
+ */
+ protected function generate_slug_from_name( $name ) {
+ // First try WordPress sanitize_title
+ $slug = sanitize_title( $name );
+
+ // If empty OR URL-encoded (contains %xx hex), create a Unicode-aware slug
+ // sanitize_title() converts Japanese to %e6%97%a5... which we don't want
+ if ( empty( $slug ) || preg_match( '/%[0-9a-f]{2}/i', $slug ) ) {
+ // Keep Unicode letters and numbers, use mb_strtolower for proper UTF-8 handling
+ $slug = mb_strtolower( preg_replace( '/[^\p{L}\p{N}]+/ui', '-', $name ), 'UTF-8' );
+ $slug = trim( $slug, '-' );
+
+ // If still empty, use hash fallback
+ if ( empty( $slug ) ) {
+ $slug = 'filter-' . substr( md5( $name ), 0, 8 );
+ }
+ }
+
+ return $slug;
+ }
+
+ /**
+ * Repair URL-encoded filter slugs from previous migrations.
+ * This fixes slugs created by older versions that used sanitize_title() directly.
+ */
+ protected function repair_broken_slugs() {
+ $filters = get_option( 'pfg_filters', array() );
+
+ if ( empty( $filters ) || ! is_array( $filters ) ) {
+ return;
+ }
+
+ $repaired = 0;
+ $slug_map = array(); // Track old => new for image association updates
+
+ foreach ( $filters as &$filter ) {
+ if ( ! isset( $filter['slug'] ) || ! isset( $filter['name'] ) ) {
+ continue;
+ }
+
+ $old_slug = $filter['slug'];
+
+ // Check if slug contains URL-encoded characters (e.g., %e6%9f%b3)
+ if ( preg_match( '/%[0-9a-f]{2}/i', $old_slug ) ) {
+ $new_slug = $this->generate_slug_from_name( $filter['name'] );
+
+ if ( ! empty( $new_slug ) && $new_slug !== $old_slug ) {
+ $filter['slug'] = $new_slug;
+ $slug_map[ $old_slug ] = $new_slug;
+ $repaired++;
+ }
+ }
+ }
+
+ if ( $repaired > 0 ) {
+ update_option( 'pfg_filters', $filters );
+ $this->log( "Auto-repaired {$repaired} URL-encoded filter slug(s)" );
+
+ // Update image filter associations
+ $this->repair_image_filter_associations( $slug_map );
+ }
+ }
+
+ /**
+ * Update image filter associations after slug repair.
+ *
+ * @param array $slug_map Map of old slug => new slug.
+ */
+ protected function repair_image_filter_associations( $slug_map ) {
+ if ( empty( $slug_map ) ) {
+ return;
+ }
+
+ // Get all galleries
+ $galleries = get_posts( array(
+ 'post_type' => 'awl_filter_gallery',
+ 'posts_per_page' => -1,
+ 'post_status' => 'any',
+ 'fields' => 'ids',
+ ) );
+
+ $images_updated = 0;
+
+ foreach ( $galleries as $gallery_id ) {
+ $images = get_post_meta( $gallery_id, '_pfg_images', true );
+
+ if ( empty( $images ) || ! is_array( $images ) ) {
+ continue;
+ }
+
+ $updated = false;
+
+ foreach ( $images as &$image ) {
+ if ( empty( $image['filters'] ) || ! is_array( $image['filters'] ) ) {
+ continue;
+ }
+
+ $new_filters = array();
+ foreach ( $image['filters'] as $filter_slug ) {
+ if ( isset( $slug_map[ $filter_slug ] ) ) {
+ $new_filters[] = $slug_map[ $filter_slug ];
+ $updated = true;
+ $images_updated++;
+ } else {
+ $new_filters[] = $filter_slug;
+ }
+ }
+ $image['filters'] = $new_filters;
+ }
+
+ if ( $updated ) {
+ update_post_meta( $gallery_id, '_pfg_images', $images );
+ }
+ }
+
+ if ( $images_updated > 0 ) {
+ $this->log( "Updated {$images_updated} image filter association(s)" );
+ }
+ }
+
+ /**
+ * Restore from backup.
+ *
+ * @param string $backup_file Path to backup file.
+ * @return bool
+ */
+ public function restore_backup( $backup_file ) {
+ if ( ! file_exists( $backup_file ) ) {
+ return false;
+ }
+
+ $backup_data = json_decode( file_get_contents( $backup_file ), true );
+
+ if ( ! $backup_data || ! isset( $backup_data['galleries'] ) ) {
+ return false;
+ }
+
+ // Restore filters
+ if ( isset( $backup_data['filters'] ) ) {
+ update_option( 'awl_portfolio_filter_gallery_categories', $backup_data['filters'] );
+ }
+
+ // Restore galleries
+ foreach ( $backup_data['galleries'] as $gallery_id => $data ) {
+ if ( isset( $data['settings'] ) ) {
+ $legacy_key = 'awl_filter_gallery' . $gallery_id;
+ update_post_meta( $gallery_id, $legacy_key, $data['settings'] );
+ }
+
+ // Remove migration marker
+ delete_post_meta( $gallery_id, '_pfg_migrated' );
+ delete_post_meta( $gallery_id, '_pfg_settings' );
+ delete_post_meta( $gallery_id, '_pfg_images' );
+ }
+
+ // Reset version
+ update_option( self::VERSION_OPTION, $backup_data['version'] );
+ update_option( self::STATUS_OPTION, 'restored' );
+
+ $this->log( 'Restored from backup: ' . $backup_file );
+
+ return true;
+ }
+
+ /**
+ * Get migration status.
+ *
+ * @return array
+ */
+ public function get_status() {
+ $total = wp_count_posts( 'awl_filter_gallery' );
+ $total_count = isset( $total->publish ) ? $total->publish : 0;
+
+ $migrated = get_posts( array(
+ 'post_type' => 'awl_filter_gallery',
+ 'posts_per_page' => -1,
+ 'post_status' => 'any',
+ 'fields' => 'ids',
+ 'meta_query' => array(
+ array(
+ 'key' => '_pfg_migrated',
+ 'value' => self::CURRENT_VERSION,
+ ),
+ ),
+ ) );
+
+ return array(
+ 'current_version' => get_option( self::VERSION_OPTION, '1.0.0' ),
+ 'target_version' => self::CURRENT_VERSION,
+ 'status' => get_option( self::STATUS_OPTION, 'pending' ),
+ 'total_galleries' => $total_count,
+ 'migrated' => count( $migrated ),
+ 'last_backup' => get_option( 'pfg_last_backup', '' ),
+ 'last_backup_date'=> get_option( 'pfg_last_backup_date', '' ),
+ );
+ }
+
+ /**
+ * Log migration events.
+ *
+ * @param string $message Log message.
+ * @param string $level Log level (info, error, warning).
+ */
+ protected function log( $message, $level = 'info' ) {
+ $log = get_option( 'pfg_migration_log', array() );
+
+ $log[] = array(
+ 'time' => current_time( 'mysql' ),
+ 'level' => $level,
+ 'message' => $message,
+ );
+
+ // Keep only last 100 entries
+ if ( count( $log ) > 100 ) {
+ $log = array_slice( $log, -100 );
+ }
+
+ update_option( 'pfg_migration_log', $log );
+ }
+
+ /**
+ * Get migration log.
+ *
+ * @return array
+ */
+ public function get_log() {
+ return get_option( 'pfg_migration_log', array() );
+ }
+
+ /**
+ * Clear migration log.
+ */
+ public function clear_log() {
+ delete_option( 'pfg_migration_log' );
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-templates.php b/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-templates.php
new file mode 100644
index 0000000..722b4ec
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/data/class-pfg-templates.php
@@ -0,0 +1,289 @@
+ array(
+ 'name' => __( 'Minimal Grid', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Clean, minimal grid layout with subtle hover effects.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/minimal-grid.jpg',
+ 'settings' => array(
+ 'layout_type' => 'grid',
+ 'columns_xl' => 4,
+ 'columns_lg' => 3,
+ 'columns_md' => 2,
+ 'columns_sm' => 1,
+ 'gap' => 20,
+ 'hover_effect' => 'fade',
+ 'show_title' => false,
+ 'border_width' => 0,
+ 'border_radius' => 0,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'masonry-portfolio' => array(
+ 'name' => __( 'Masonry Portfolio', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Pinterest-style masonry layout perfect for portfolios.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/masonry-portfolio.jpg',
+ 'settings' => array(
+ 'layout_type' => 'masonry',
+ 'columns_xl' => 4,
+ 'columns_lg' => 3,
+ 'columns_md' => 2,
+ 'columns_sm' => 1,
+ 'gap' => 15,
+ 'hover_effect' => 'slide-up',
+ 'show_title' => true,
+ 'border_width' => 0,
+ 'border_radius' => 8,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'instagram-style' => array(
+ 'name' => __( 'Instagram Style', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Square grid with minimal spacing, like Instagram.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/instagram.jpg',
+ 'settings' => array(
+ 'layout_type' => 'grid',
+ 'columns_xl' => 4,
+ 'columns_lg' => 3,
+ 'columns_md' => 3,
+ 'columns_sm' => 2,
+ 'gap' => 3,
+ 'hover_effect' => 'overlay-zoom',
+ 'show_title' => false,
+ 'border_width' => 0,
+ 'border_radius' => 0,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'modern-cards' => array(
+ 'name' => __( 'Modern Cards', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Card-style layout with title and category below image.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/modern-cards.jpg',
+ 'settings' => array(
+ 'layout_type' => 'masonry',
+ 'columns_xl' => 3,
+ 'columns_lg' => 3,
+ 'columns_md' => 2,
+ 'columns_sm' => 1,
+ 'gap' => 30,
+ 'hover_effect' => 'lift',
+ 'show_title' => true,
+ 'title_position' => 'below',
+ 'show_categories'=> true,
+ 'border_width' => 0,
+ 'border_radius' => 12,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'elegant-gallery' => array(
+ 'name' => __( 'Elegant Gallery', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Grayscale to color effect with elegant hover.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/elegant-gallery.jpg',
+ 'settings' => array(
+ 'layout_type' => 'grid',
+ 'columns_xl' => 4,
+ 'columns_lg' => 3,
+ 'columns_md' => 2,
+ 'columns_sm' => 1,
+ 'gap' => 10,
+ 'hover_effect' => 'color-reveal',
+ 'show_title' => true,
+ 'border_width' => 1,
+ 'border_color' => '#e0e0e0',
+ 'border_radius' => 0,
+ 'grayscale' => true,
+ ),
+ ),
+
+ 'full-width' => array(
+ 'name' => __( 'Full Width', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Large images with 2-column layout.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/full-width.jpg',
+ 'settings' => array(
+ 'layout_type' => 'grid',
+ 'columns_xl' => 2,
+ 'columns_lg' => 2,
+ 'columns_md' => 1,
+ 'columns_sm' => 1,
+ 'gap' => 20,
+ 'hover_effect' => 'fade',
+ 'show_title' => true,
+ 'border_width' => 0,
+ 'border_radius' => 4,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'tight-grid' => array(
+ 'name' => __( 'Tight Grid', 'portfolio-filter-gallery' ),
+ 'description' => __( 'No-gap grid for a seamless look.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/tight-grid.jpg',
+ 'settings' => array(
+ 'layout_type' => 'grid',
+ 'columns_xl' => 5,
+ 'columns_lg' => 4,
+ 'columns_md' => 3,
+ 'columns_sm' => 2,
+ 'gap' => 0,
+ 'hover_effect' => 'overlay',
+ 'show_title' => false,
+ 'border_width' => 0,
+ 'border_radius' => 0,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'creative-agency' => array(
+ 'name' => __( 'Creative Agency', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Bold design with animated hover effects.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/creative-agency.jpg',
+ 'settings' => array(
+ 'layout_type' => 'masonry',
+ 'columns_xl' => 3,
+ 'columns_lg' => 3,
+ 'columns_md' => 2,
+ 'columns_sm' => 1,
+ 'gap' => 25,
+ 'hover_effect' => 'slide-in',
+ 'show_title' => true,
+ 'border_width' => 0,
+ 'border_radius' => 16,
+ 'grayscale' => false,
+ 'filter_bg_color' => '#3858e9',
+ ),
+ ),
+
+ 'photography' => array(
+ 'name' => __( 'Photography', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Optimized for photographers with dark overlay.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/photography.jpg',
+ 'settings' => array(
+ 'layout_type' => 'masonry',
+ 'columns_xl' => 4,
+ 'columns_lg' => 3,
+ 'columns_md' => 2,
+ 'columns_sm' => 1,
+ 'gap' => 8,
+ 'hover_effect' => 'dark-overlay',
+ 'show_title' => true,
+ 'border_width' => 0,
+ 'border_radius' => 0,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'minimalist' => array(
+ 'name' => __( 'Minimalist', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Super clean with lots of white space.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/minimalist.jpg',
+ 'settings' => array(
+ 'layout_type' => 'grid',
+ 'columns_xl' => 3,
+ 'columns_lg' => 3,
+ 'columns_md' => 2,
+ 'columns_sm' => 1,
+ 'gap' => 40,
+ 'hover_effect' => 'subtle',
+ 'show_title' => false,
+ 'border_width' => 0,
+ 'border_radius' => 2,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'justified-rows' => array(
+ 'name' => __( 'Justified Rows', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Flickr-style rows that fill the full width.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/justified.jpg',
+ 'settings' => array(
+ 'layout_type' => 'justified',
+ 'justified_row_height' => 200,
+ 'justified_last_row' => 'left',
+ 'gap' => 8,
+ 'hover_effect' => 'fade',
+ 'show_title' => true,
+ 'border_width' => 0,
+ 'border_radius' => 0,
+ 'grayscale' => false,
+ ),
+ ),
+
+ 'mosaic-packed' => array(
+ 'name' => __( 'Mosaic Packed', 'portfolio-filter-gallery' ),
+ 'description' => __( 'Puzzle-like layout with varying item sizes.', 'portfolio-filter-gallery' ),
+ 'preview' => PFG_PLUGIN_URL . 'assets/templates/packed.jpg',
+ 'settings' => array(
+ 'layout_type' => 'packed',
+ 'packed_min_size' => 150,
+ 'gap' => 10,
+ 'hover_effect' => 'overlay-zoom',
+ 'show_title' => false,
+ 'border_width' => 0,
+ 'border_radius' => 8,
+ 'grayscale' => false,
+ ),
+ ),
+ );
+ }
+
+ /**
+ * Get all available templates (alias for get_templates).
+ *
+ * @return array
+ */
+ public static function get_all() {
+ return self::get_templates();
+ }
+
+ /**
+ * Get a single template by name.
+ *
+ * @param string $name Template name/slug.
+ * @return array|null Template data or null.
+ */
+ public static function get_template( $name ) {
+ $templates = self::get_templates();
+ return isset( $templates[ $name ] ) ? $templates[ $name ] : null;
+ }
+
+ /**
+ * Get template names for dropdown.
+ *
+ * @return array Key-value pairs of slug => name.
+ */
+ public static function get_template_options() {
+ $templates = self::get_templates();
+ $options = array( '' => __( 'Select a template...', 'portfolio-filter-gallery' ) );
+
+ foreach ( $templates as $slug => $template ) {
+ $options[ $slug ] = $template['name'];
+ }
+
+ return $options;
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/FontAwesome.otf b/wp-content/plugins/portfolio-filter-gallery/fonts/FontAwesome.otf
new file mode 100644
index 0000000..d4de13e
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/FontAwesome.otf differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.eot b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.eot
new file mode 100644
index 0000000..c7b00d2
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.eot differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.svg b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.svg
new file mode 100644
index 0000000..8b66187
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.svg
@@ -0,0 +1,685 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.ttf b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.ttf
new file mode 100644
index 0000000..f221e50
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.ttf differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.woff b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.woff
new file mode 100644
index 0000000..6e7483c
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.woff differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.woff2 b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.woff2
new file mode 100644
index 0000000..7eb74fd
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/fontawesome-webfont.woff2 differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.eot b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.eot differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.svg b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.ttf b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.ttf differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.woff b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.woff differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.woff2 b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/fonts/glyphicons-halflings-regular.woff2 differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/banner-portfolio-pro-update-jp.jpg b/wp-content/plugins/portfolio-filter-gallery/img/banner-portfolio-pro-update-jp.jpg
new file mode 100644
index 0000000..0b7a1af
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/banner-portfolio-pro-update-jp.jpg differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/close-icon-white.png b/wp-content/plugins/portfolio-filter-gallery/img/close-icon-white.png
new file mode 100644
index 0000000..db5f096
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/close-icon-white.png differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/close.png b/wp-content/plugins/portfolio-filter-gallery/img/close.png
new file mode 100644
index 0000000..1b3a9e9
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/close.png differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/loading-icon.gif b/wp-content/plugins/portfolio-filter-gallery/img/loading-icon.gif
new file mode 100644
index 0000000..07c1dd5
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/loading-icon.gif differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/loading.gif b/wp-content/plugins/portfolio-filter-gallery/img/loading.gif
new file mode 100644
index 0000000..104e4bb
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/loading.gif differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/p-youtube.png b/wp-content/plugins/portfolio-filter-gallery/img/p-youtube.png
new file mode 100644
index 0000000..b7097c2
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/p-youtube.png differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/portfolio-gallery-wordpress.webp b/wp-content/plugins/portfolio-filter-gallery/img/portfolio-gallery-wordpress.webp
new file mode 100644
index 0000000..2d70698
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/portfolio-gallery-wordpress.webp differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/portfolio-side-image-youtube.jpg b/wp-content/plugins/portfolio-filter-gallery/img/portfolio-side-image-youtube.jpg
new file mode 100644
index 0000000..4c06c6f
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/portfolio-side-image-youtube.jpg differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/portfolio-upgrade.jpg b/wp-content/plugins/portfolio-filter-gallery/img/portfolio-upgrade.jpg
new file mode 100644
index 0000000..5fc85e1
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/portfolio-upgrade.jpg differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/video-play-button-icon.png b/wp-content/plugins/portfolio-filter-gallery/img/video-play-button-icon.png
new file mode 100644
index 0000000..f8a863c
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/video-play-button-icon.png differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/img/wordpress-filter-gallery.gif b/wp-content/plugins/portfolio-filter-gallery/img/wordpress-filter-gallery.gif
new file mode 100644
index 0000000..0d6b89b
Binary files /dev/null and b/wp-content/plugins/portfolio-filter-gallery/img/wordpress-filter-gallery.gif differ
diff --git a/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-activator.php b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-activator.php
new file mode 100644
index 0000000..5a23e57
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-activator.php
@@ -0,0 +1,115 @@
+ 'all_' . uniqid(),
+ 'name' => __( 'Web Design', 'portfolio-filter-gallery' ),
+ 'slug' => 'web-design',
+ 'order' => 0,
+ ),
+ array(
+ 'id' => 'all_' . uniqid(),
+ 'name' => __( 'Photography', 'portfolio-filter-gallery' ),
+ 'slug' => 'photography',
+ 'order' => 1,
+ ),
+ array(
+ 'id' => 'all_' . uniqid(),
+ 'name' => __( 'Branding', 'portfolio-filter-gallery' ),
+ 'slug' => 'branding',
+ 'order' => 2,
+ ),
+ );
+ add_option( 'pfg_filters', $default_filters );
+ }
+ }
+
+ /**
+ * Create backup directory.
+ */
+ private static function create_backup_directory() {
+ $upload_dir = wp_upload_dir();
+ $backup_dir = $upload_dir['basedir'] . '/pfg-backups';
+
+ if ( ! file_exists( $backup_dir ) ) {
+ wp_mkdir_p( $backup_dir );
+
+ // Add security files
+ file_put_contents( $backup_dir . '/index.php', ' array( 'tier' => self::FREE ),
+ 'layout_masonry' => array( 'tier' => self::FREE ),
+ 'layout_justified' => array( 'tier' => self::PREMIUM ),
+ 'layout_packed' => array( 'tier' => self::PREMIUM ),
+
+ // Filter features
+ 'basic_filtering' => array( 'tier' => self::FREE ),
+ 'multi_level' => array( 'tier' => self::PREMIUM ),
+ 'and_or_logic' => array( 'tier' => self::PREMIUM ),
+ 'filter_url_sync' => array( 'tier' => self::PREMIUM ),
+
+ // Pagination
+ 'pagination' => array( 'tier' => self::PREMIUM ),
+ 'load_more' => array( 'tier' => self::PREMIUM ),
+ 'infinite_scroll' => array( 'tier' => self::PREMIUM ),
+
+ // Lightbox
+ 'lightbox_basic' => array( 'tier' => self::FREE ),
+ 'lightbox_fancybox' => array( 'tier' => self::FREE ),
+ 'lightbox_photoswipe' => array( 'tier' => self::FREE ),
+
+ // Integrations
+ 'woocommerce' => array( 'tier' => self::PREMIUM ),
+ 'video_galleries' => array( 'tier' => self::PREMIUM ),
+ 'social_sharing' => array( 'tier' => self::PREMIUM ),
+
+ // Other features
+ 'search' => array( 'tier' => self::FREE ),
+ 'sorting' => array( 'tier' => self::PREMIUM ),
+ 'deep_linking' => array( 'tier' => self::PREMIUM ),
+ 'watermark' => array( 'tier' => self::PREMIUM ),
+ 'custom_css' => array( 'tier' => self::FREE ),
+ 'templates' => array( 'tier' => self::FREE, 'limit' => 3 ),
+ 'gutenberg_block' => array( 'tier' => self::FREE ),
+ );
+
+ /**
+ * Setting definitions with their tiers and limits.
+ *
+ * @var array
+ */
+ private static $settings = array(
+ // Columns
+ 'columns_desktop' => array( 'tier' => self::FREE, 'free_min' => 2, 'free_max' => 4, 'premium_min' => 1, 'premium_max' => 8 ),
+ 'columns_tablet' => array( 'tier' => self::FREE, 'free_min' => 1, 'free_max' => 3, 'premium_min' => 1, 'premium_max' => 6 ),
+ 'columns_mobile' => array( 'tier' => self::FREE, 'free_min' => 1, 'free_max' => 2, 'premium_min' => 1, 'premium_max' => 4 ),
+
+ // Filters
+ 'max_filters' => array( 'tier' => self::FREE, 'free_limit' => 5, 'premium_limit' => -1 ), // -1 = unlimited
+
+ // Hover effects
+ 'hover_effect' => array(
+ 'tier' => self::FREE,
+ 'free_options' => array( 'fade', 'slide-up', 'zoom' ),
+ 'premium_options' => array( 'fade', 'slide-up', 'zoom', 'flip', 'rotate', 'blur', 'grayscale', 'shine', '3d-tilt', 'curtain' )
+ ),
+
+ // Pagination settings (premium only)
+ 'pagination_enabled' => array( 'tier' => self::PREMIUM ),
+ 'pagination_type' => array( 'tier' => self::PREMIUM ),
+ 'items_per_page' => array( 'tier' => self::PREMIUM ),
+
+ // Sorting settings (premium only)
+ 'sorting_enabled' => array( 'tier' => self::PREMIUM ),
+ 'sort_options' => array( 'tier' => self::PREMIUM ),
+
+ // Multi-level filter settings (premium only)
+ 'hierarchical_filters' => array( 'tier' => self::PREMIUM ),
+ 'filter_logic' => array( 'tier' => self::PREMIUM ),
+
+ // Deep linking (premium only)
+ 'url_sync_enabled' => array( 'tier' => self::PREMIUM ),
+
+ // WooCommerce settings (premium only)
+ 'woo_enabled' => array( 'tier' => self::PREMIUM ),
+ 'woo_source' => array( 'tier' => self::PREMIUM ),
+ 'woo_show_price' => array( 'tier' => self::PREMIUM ),
+ 'woo_show_cart' => array( 'tier' => self::PREMIUM ),
+
+ // Social sharing settings (premium only)
+ 'social_enabled' => array( 'tier' => self::PREMIUM ),
+ 'social_networks' => array( 'tier' => self::PREMIUM ),
+ );
+
+ /**
+ * Check if premium version is active.
+ *
+ * @return bool
+ */
+ public static function is_premium() {
+ return defined( 'PFG_PREMIUM' ) && PFG_PREMIUM === true;
+ }
+
+ /**
+ * Check if a feature is available.
+ *
+ * @param string $feature Feature name.
+ * @return bool
+ */
+ public static function is_available( $feature ) {
+ if ( ! isset( self::$features[ $feature ] ) ) {
+ return true; // Unknown features are available by default
+ }
+
+ $feature_data = self::$features[ $feature ];
+
+ if ( $feature_data['tier'] === self::FREE ) {
+ return true;
+ }
+
+ return self::is_premium();
+ }
+
+ /**
+ * Check if a setting is available.
+ *
+ * @param string $setting Setting name.
+ * @return bool
+ */
+ public static function is_setting_available( $setting ) {
+ if ( ! isset( self::$settings[ $setting ] ) ) {
+ return true; // Unknown settings are available by default
+ }
+
+ $setting_data = self::$settings[ $setting ];
+
+ if ( $setting_data['tier'] === self::FREE ) {
+ return true;
+ }
+
+ return self::is_premium();
+ }
+
+ /**
+ * Get setting limit for current tier.
+ *
+ * @param string $setting Setting name.
+ * @param string $limit_type Type of limit (min, max, limit, options).
+ * @return mixed
+ */
+ public static function get_setting_limit( $setting, $limit_type ) {
+ if ( ! isset( self::$settings[ $setting ] ) ) {
+ return null;
+ }
+
+ $setting_data = self::$settings[ $setting ];
+ $prefix = self::is_premium() ? 'premium_' : 'free_';
+
+ $key = $prefix . $limit_type;
+
+ if ( isset( $setting_data[ $key ] ) ) {
+ return $setting_data[ $key ];
+ }
+
+ // Fallback to non-prefixed key
+ if ( isset( $setting_data[ $limit_type ] ) ) {
+ return $setting_data[ $limit_type ];
+ }
+
+ return null;
+ }
+
+ /**
+ * Get available options for a setting.
+ *
+ * @param string $setting Setting name.
+ * @return array
+ */
+ public static function get_available_options( $setting ) {
+ return self::get_setting_limit( $setting, 'options' ) ?? array();
+ }
+
+ /**
+ * Check if an option is available for a setting.
+ *
+ * @param string $setting Setting name.
+ * @param string $option Option value.
+ * @return bool
+ */
+ public static function is_option_available( $setting, $option ) {
+ $options = self::get_available_options( $setting );
+
+ if ( empty( $options ) ) {
+ return true; // No restrictions
+ }
+
+ return in_array( $option, $options, true );
+ }
+
+ /**
+ * Get upgrade URL.
+ *
+ * @param string $utm_source Optional UTM source.
+ * @return string
+ */
+ public static function get_upgrade_url( $utm_source = '' ) {
+ $url = 'https://awplife.com/wordpress-plugins/portfolio-filter-gallery-wordpress-plugin/';
+
+ if ( $utm_source ) {
+ $url = add_query_arg( array(
+ 'utm_source' => $utm_source,
+ 'utm_medium' => 'plugin',
+ 'utm_campaign' => 'pfg-upgrade',
+ ), $url );
+ }
+
+ return $url;
+ }
+
+ /**
+ * Get Pro badge HTML.
+ *
+ * @param bool $with_link Include upgrade link.
+ * @return string
+ */
+ public static function get_pro_badge( $with_link = true ) {
+ $badge = 'PRO ';
+
+ if ( $with_link && ! self::is_premium() ) {
+ $url = self::get_upgrade_url( 'pro-badge' );
+ $badge = '' . $badge . ' ';
+ }
+
+ return $badge;
+ }
+
+ /**
+ * Get locked overlay HTML.
+ *
+ * @param string $feature_name Display name of the feature.
+ * @return string
+ */
+ public static function get_locked_overlay( $feature_name = '' ) {
+ if ( self::is_premium() ) {
+ return '';
+ }
+
+ $url = self::get_upgrade_url( 'locked-overlay' );
+
+ ob_start();
+ ?>
+
+
+
+
+
+
+
+
+
+ ';
+ call_user_func( $render_input );
+ echo self::get_locked_overlay( $label );
+ echo '
';
+ }
+ ?>
+
+
+
+
+
+
+ $data ) {
+ $result[ $key ] = array_merge( $data, array(
+ 'available' => self::is_available( $key ),
+ ) );
+ }
+
+ return $result;
+ }
+
+ /**
+ * Get all settings with their availability status.
+ *
+ * @return array
+ */
+ public static function get_all_settings() {
+ $result = array();
+
+ foreach ( self::$settings as $key => $data ) {
+ $result[ $key ] = array_merge( $data, array(
+ 'available' => self::is_setting_available( $key ),
+ ) );
+ }
+
+ return $result;
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-i18n.php b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-i18n.php
new file mode 100644
index 0000000..c26a6a3
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-i18n.php
@@ -0,0 +1,31 @@
+actions = array();
+ $this->filters = array();
+ }
+
+ /**
+ * Add a new action to the collection to be registered with WordPress.
+ *
+ * @param string $hook The name of the WordPress action.
+ * @param object $component A reference to the instance of the object.
+ * @param string $callback The name of the function.
+ * @param int $priority Optional. The priority at which the function should be fired. Default is 10.
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
+ */
+ public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
+ $this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args );
+ }
+
+ /**
+ * Add a new filter to the collection to be registered with WordPress.
+ *
+ * @param string $hook The name of the WordPress filter.
+ * @param object $component A reference to the instance of the object.
+ * @param string $callback The name of the function.
+ * @param int $priority Optional. The priority at which the function should be fired. Default is 10.
+ * @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
+ */
+ public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
+ $this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args );
+ }
+
+ /**
+ * A utility function that is used to register the actions and hooks into a single collection.
+ *
+ * @param array $hooks The collection of hooks.
+ * @param string $hook The name of the WordPress filter.
+ * @param object $component A reference to the instance of the object.
+ * @param string $callback The name of the function.
+ * @param int $priority The priority at which the function should be fired.
+ * @param int $accepted_args The number of arguments that should be passed to the $callback.
+ * @return array The collection of actions and filters registered with WordPress.
+ */
+ private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
+ $hooks[] = array(
+ 'hook' => $hook,
+ 'component' => $component,
+ 'callback' => $callback,
+ 'priority' => $priority,
+ 'accepted_args' => $accepted_args,
+ );
+
+ return $hooks;
+ }
+
+ /**
+ * Register the filters and actions with WordPress.
+ */
+ public function run() {
+ foreach ( $this->filters as $hook ) {
+ add_filter(
+ $hook['hook'],
+ array( $hook['component'], $hook['callback'] ),
+ $hook['priority'],
+ $hook['accepted_args']
+ );
+ }
+
+ foreach ( $this->actions as $hook ) {
+ add_action(
+ $hook['hook'],
+ array( $hook['component'], $hook['callback'] ),
+ $hook['priority'],
+ $hook['accepted_args']
+ );
+ }
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-onboarding-tour.php b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-onboarding-tour.php
new file mode 100644
index 0000000..8902ff9
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-onboarding-tour.php
@@ -0,0 +1,459 @@
+= this.steps.length) {
+ this.complete();
+ return;
+ }
+
+ var step = this.steps[index];
+ var \$el = $(step.element).first();
+
+ if (!\$el.length) {
+ // Skip to next step if element not found
+ this.showStep(index + 1);
+ return;
+ }
+
+ // Highlight element
+ \$el.addClass('pfg-tour-highlight');
+
+ // Scroll to element first, then position tooltip after scroll completes
+ $('html, body').animate({
+ scrollTop: Math.max(0, \$el.offset().top - 150)
+ }, 300, function() {
+ // Create tooltip after scroll completes
+ var tooltip = $('');
+
+ $('body').append(tooltip);
+
+ // Position tooltip after it's in DOM
+ setTimeout(function() {
+ var pos = \$el.offset();
+ var elHeight = \$el.outerHeight();
+ var elWidth = \$el.outerWidth();
+ var tooltipWidth = tooltip.outerWidth();
+ var tooltipHeight = tooltip.outerHeight();
+
+ switch(step.position) {
+ case 'bottom':
+ tooltip.css({
+ top: pos.top + elHeight + 15,
+ left: Math.max(20, pos.left)
+ });
+ break;
+ case 'top':
+ tooltip.css({
+ top: pos.top - tooltipHeight - 15,
+ left: Math.max(20, pos.left)
+ });
+ break;
+ case 'left':
+ tooltip.css({
+ top: pos.top,
+ left: pos.left - tooltipWidth - 15
+ });
+ break;
+ case 'right':
+ tooltip.css({
+ top: pos.top,
+ left: pos.left + elWidth + 15
+ });
+ break;
+ }
+ }, 50);
+
+ // Event handlers
+ tooltip.find('.pfg-tour-next').on('click', function() {
+ self.showStep(index + 1);
+ });
+
+ tooltip.find('.pfg-tour-prev').on('click', function() {
+ self.showStep(index - 1);
+ });
+
+ tooltip.find('.pfg-tour-close').on('click', function() {
+ self.dismiss();
+ });
+ });
+ },
+
+ complete: function() {
+ $('.pfg-tour-tooltip').remove();
+ $('.pfg-tour-highlight').removeClass('pfg-tour-highlight');
+
+ $.post(ajaxurl, {
+ action: 'pfg_complete_tour',
+ security: '" . $nonce . "'
+ });
+ },
+
+ dismiss: function() {
+ $('.pfg-tour-tooltip').remove();
+ $('.pfg-tour-highlight').removeClass('pfg-tour-highlight');
+
+ $.post(ajaxurl, {
+ action: 'pfg_dismiss_tour',
+ security: '" . $nonce . "'
+ });
+ }
+ };
+
+ // Start tour after a short delay
+ setTimeout(function() {
+ PFGTour.init();
+ }, 500);
+ });
+ ";
+ }
+
+ /**
+ * AJAX: Complete tour
+ */
+ public static function ajax_complete_tour() {
+ check_ajax_referer( 'pfg_tour_nonce', 'security' );
+
+ update_option( self::TOUR_COMPLETED_OPTION, true );
+ delete_option( 'pfg_show_tour' );
+
+ wp_send_json_success();
+ }
+
+ /**
+ * AJAX: Dismiss tour
+ */
+ public static function ajax_dismiss_tour() {
+ check_ajax_referer( 'pfg_tour_nonce', 'security' );
+
+ update_option( self::TOUR_COMPLETED_OPTION, true );
+ delete_option( 'pfg_show_tour' );
+
+ wp_send_json_success();
+ }
+
+ /**
+ * Check if tour is completed
+ */
+ public static function is_completed() {
+ return (bool) get_option( self::TOUR_COMPLETED_OPTION );
+ }
+
+ /**
+ * Reset tour (for testing)
+ */
+ public static function reset() {
+ delete_option( self::TOUR_COMPLETED_OPTION );
+ delete_option( 'pfg_show_tour' );
+ }
+}
diff --git a/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-security.php b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-security.php
new file mode 100644
index 0000000..5bc6cab
--- /dev/null
+++ b/wp-content/plugins/portfolio-filter-gallery/includes/class-pfg-security.php
@@ -0,0 +1,271 @@
+ __( 'Security check failed. Please refresh the page and try again.', 'portfolio-filter-gallery' ),
+ 'code' => 'invalid_nonce',
+ ),
+ 403
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Check if current user can manage galleries.
+ *
+ * @return bool
+ */
+ public static function can_manage_galleries() {
+ return current_user_can( 'edit_posts' );
+ }
+
+ /**
+ * Check if current user can edit a specific gallery.
+ *
+ * @param int $gallery_id The gallery post ID.
+ * @return bool
+ */
+ public static function can_edit_gallery( $gallery_id ) {
+ return current_user_can( 'edit_post', $gallery_id );
+ }
+
+ /**
+ * Check if current user can delete galleries.
+ *
+ * @return bool
+ */
+ public static function can_delete_galleries() {
+ return current_user_can( 'delete_posts' );
+ }
+
+ /**
+ * Check if current user is an administrator.
+ *
+ * @return bool
+ */
+ public static function is_admin() {
+ return current_user_can( 'manage_options' );
+ }
+
+ /**
+ * Sanitize input based on type.
+ *
+ * @param mixed $data The data to sanitize.
+ * @param string $type The type of sanitization.
+ * @return mixed Sanitized data.
+ */
+ public static function sanitize( $data, $type = 'text' ) {
+ switch ( $type ) {
+ case 'text':
+ return sanitize_text_field( $data );
+
+ case 'textarea':
+ return sanitize_textarea_field( $data );
+
+ case 'url':
+ return esc_url_raw( $data );
+
+ case 'int':
+ return intval( $data );
+
+ case 'float':
+ return floatval( $data );
+
+ case 'email':
+ return sanitize_email( $data );
+
+ case 'html':
+ return wp_kses_post( $data );
+
+ case 'css':
+ return self::sanitize_css( $data );
+
+ case 'hex_color':
+ return self::sanitize_hex_color( $data );
+
+ case 'bool':
+ return filter_var( $data, FILTER_VALIDATE_BOOLEAN );
+
+ case 'array':
+ return is_array( $data ) ? array_map( 'sanitize_text_field', $data ) : array();
+
+ case 'key':
+ return sanitize_key( $data );
+
+ default:
+ return sanitize_text_field( $data );
+ }
+ }
+
+ /**
+ * Sanitize an array of data based on a schema.
+ *
+ * @param array $data The data to sanitize.
+ * @param array $schema The sanitization schema (field => type).
+ * @return array Sanitized data.
+ */
+ public static function sanitize_array( $data, $schema ) {
+ $sanitized = array();
+
+ foreach ( $schema as $key => $type ) {
+ if ( isset( $data[ $key ] ) ) {
+ $sanitized[ $key ] = self::sanitize( $data[ $key ], $type );
+ }
+ }
+
+ return $sanitized;
+ }
+
+ /**
+ * Sanitize custom CSS to prevent XSS.
+ *
+ * @param string $css The CSS to sanitize.
+ * @return string Sanitized CSS.
+ */
+ public static function sanitize_css( $css ) {
+ // Remove any script tags or JavaScript
+ $css = preg_replace( '/