From 92e1a55bee48491a9c20df5c191c5cd0f0b2a800 Mon Sep 17 00:00:00 2001 From: Glomberg Date: Mon, 20 Jul 2026 15:39:50 +0300 Subject: [PATCH 1/7] Upd. Spam orders.New column `order_date` added. --- .../IntegrationsByClass/Woocommerce.php | 10 ++-- .../ApbctWP/WcSpamOrdersListTable.php | 49 +++++++++++++++++-- lib/Cleantalk/Common/Schema.php | 1 + 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php b/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php index d46112ffc..0b2bd2656 100644 --- a/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php +++ b/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php @@ -322,17 +322,21 @@ public function storeBlockedOrder() { global $wpdb; - $query = 'INSERT INTO ' . APBCT_TBL_WC_SPAM_ORDERS . ' (order_details, customer_details) - VALUES (%s, %s) - ON DUPLICATE KEY UPDATE order_details = %s, customer_details = %s'; + $query = 'INSERT INTO ' . APBCT_TBL_WC_SPAM_ORDERS . ' (order_details, customer_details, order_date) + VALUES (%s, %s, %s) + ON DUPLICATE KEY UPDATE order_details = %s, customer_details = %s, order_date = %s;'; // store blocked order from ajax checkout + // @ToDo $_POST is empty during REST checkout processing if (!empty($_POST)) { + $current_timestamp = time(); $prepared_query = $wpdb->prepare($query, [ json_encode(wc()->session->cart), json_encode($_POST), + $current_timestamp, json_encode(wc()->session->cart), json_encode($_POST), + $current_timestamp, ]); $wpdb->query($prepared_query); diff --git a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php index 1e8bc5415..0e3419a90 100644 --- a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php +++ b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php @@ -44,7 +44,8 @@ public function __construct() public function prepare_items() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps { $columns = $this->get_columns(); - $this->_column_headers = array($columns, array(), array()); + $sortable_columns = $this->get_sortable_columns(); + $this->_column_headers = array($columns, array(), $sortable_columns); // @ToDo implement per page dynamic option /*$per_page_option = ! is_null(get_current_screen()) ? get_current_screen()->get_option( @@ -103,12 +104,14 @@ public function prepare_items() // phpcs:ignore PSR1.Methods.CamelCapsMethodNam $order_details_column = $this->renderOrderDetailsColumn($wc_spam_order->order_details); $customer_details_column = $this->renderCustomerDetailsColumn($wc_spam_order->customer_details); + $order_date_column = $this->renderOrderDateColumn($wc_spam_order->order_date); $this->items[] = array( 'cb' => $wc_spam_order->id, 'ct_order_id' => $order_id_column, 'ct_order_details' => $order_details_column, 'ct_customer_details' => $customer_details_column, + 'ct_order_date' => $order_date_column, ); } } @@ -120,15 +123,23 @@ public function get_columns() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.N 'ct_order_id' => esc_html__('ID', 'cleantalk-spam-protect'), 'ct_order_details' => esc_html__('Order details', 'cleantalk-spam-protect'), 'ct_customer_details' => esc_html__('Customer details', 'cleantalk-spam-protect'), + 'ct_order_date' => esc_html__('Order date', 'cleantalk-spam-protect'), ); return $columns; } + protected function get_sortable_columns() + { + return array( + 'ct_order_date' => array('order_date', false), + ); + } + public function get_bulk_actions() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps { return array( - 'delete' => esc_html__('Delete', 'cleantalk-spam-protect') + 'delete' => esc_html__('Delete', 'cleantalk-spam-protect') ); } @@ -260,6 +271,22 @@ private function renderCustomerDetailsColumn($customer_details) return $result; } + private function renderOrderDateColumn($order_date) + { + if ( ! $order_date ) { + return '-'; + } + + $timestamp = is_numeric($order_date) ? (int) $order_date : strtotime($order_date); + + return sprintf( + '', + esc_attr(date_i18n('c', $timestamp)), // 2023-02-15T20:25:06+00:00 + esc_html(date_i18n('d.m.Y H:i', $timestamp)), // 15.02.2023 20:25 + esc_html(date_i18n('M d, Y', $timestamp)) // Feb 15, 2023 + ); + } + /** * @param $order * @@ -303,11 +330,27 @@ private function getWcSpamOrders() { global $wpdb; - $result = $wpdb->get_results('SELECT * FROM ' . APBCT_TBL_WC_SPAM_ORDERS, OBJECT); + $orderby = $this->getSqlOrderBy(); + $order = Get::getString('order') === 'asc' ? 'ASC' : 'DESC'; + + $sql = 'SELECT * FROM ' . APBCT_TBL_WC_SPAM_ORDERS; + + if ($orderby) { + $sql .= ' ORDER BY ' . $orderby . ' ' . $order; + } + + $result = $wpdb->get_results($sql, OBJECT); return is_array($result) ? $result : array(); } + private function getSqlOrderBy() + { + $order_by = Get::getString('orderby'); + $allowed_order_by = array_keys($this->get_sortable_columns()); + return in_array('ct_' . $order_by, $allowed_order_by) ? $order_by : ''; + } + private function getWcSpamOrder($id) { global $wpdb; diff --git a/lib/Cleantalk/Common/Schema.php b/lib/Cleantalk/Common/Schema.php index 0d2788b7a..8bdcec140 100644 --- a/lib/Cleantalk/Common/Schema.php +++ b/lib/Cleantalk/Common/Schema.php @@ -97,6 +97,7 @@ class Schema 'id' => 'INT NOT NULL AUTO_INCREMENT', 'order_details' => 'TEXT NULL DEFAULT NULL', 'customer_details' => 'TEXT NULL DEFAULT NULL', + 'order_date' => 'INT(11) NULL DEFAULT NULL', '__indexes' => 'PRIMARY KEY (`id`)', '__createkey' => 'INT unsigned primary KEY AUTO_INCREMENT FIRST' ), From fe5a2db166110e1b55cb2eafb09f4d57dc2cc03f Mon Sep 17 00:00:00 2001 From: Glomberg Date: Mon, 20 Jul 2026 15:55:10 +0300 Subject: [PATCH 2/7] Fix. Code. Copilot review notice foxed #1. --- lib/Cleantalk/Common/Schema.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Cleantalk/Common/Schema.php b/lib/Cleantalk/Common/Schema.php index 8bdcec140..deefa0cb2 100644 --- a/lib/Cleantalk/Common/Schema.php +++ b/lib/Cleantalk/Common/Schema.php @@ -97,8 +97,8 @@ class Schema 'id' => 'INT NOT NULL AUTO_INCREMENT', 'order_details' => 'TEXT NULL DEFAULT NULL', 'customer_details' => 'TEXT NULL DEFAULT NULL', - 'order_date' => 'INT(11) NULL DEFAULT NULL', - '__indexes' => 'PRIMARY KEY (`id`)', + 'order_date' => 'INT UNSIGNED NULL DEFAULT NULL', + '__indexes' => 'PRIMARY KEY (`id`), INDEX (`order_date`)', '__createkey' => 'INT unsigned primary KEY AUTO_INCREMENT FIRST' ), 'rate_limits' => array( From 45d0d95b945a24c3b969b40742082bbf6cdc659c Mon Sep 17 00:00:00 2001 From: Glomberg Date: Mon, 20 Jul 2026 15:56:44 +0300 Subject: [PATCH 3/7] Fix. Code. Copilot review notice foxed #2. --- lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php index 0e3419a90..e139e0b55 100644 --- a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php +++ b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php @@ -279,6 +279,10 @@ private function renderOrderDateColumn($order_date) $timestamp = is_numeric($order_date) ? (int) $order_date : strtotime($order_date); + if ( ! $timestamp ) { + return '-'; + } + return sprintf( '', esc_attr(date_i18n('c', $timestamp)), // 2023-02-15T20:25:06+00:00 From 91af926ec06bfeee976f1b299a7069409e46ef0e Mon Sep 17 00:00:00 2001 From: Glomberg Date: Mon, 20 Jul 2026 16:01:03 +0300 Subject: [PATCH 4/7] Fix. Code. Copilot review notice foxed #3. --- lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php b/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php index 0b2bd2656..bafa1e415 100644 --- a/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php +++ b/lib/Cleantalk/Antispam/IntegrationsByClass/Woocommerce.php @@ -322,14 +322,13 @@ public function storeBlockedOrder() { global $wpdb; + $current_timestamp = time(); $query = 'INSERT INTO ' . APBCT_TBL_WC_SPAM_ORDERS . ' (order_details, customer_details, order_date) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE order_details = %s, customer_details = %s, order_date = %s;'; // store blocked order from ajax checkout - // @ToDo $_POST is empty during REST checkout processing if (!empty($_POST)) { - $current_timestamp = time(); $prepared_query = $wpdb->prepare($query, [ json_encode(wc()->session->cart), json_encode($_POST), @@ -373,8 +372,10 @@ public function storeBlockedOrder() $prepared_query = $wpdb->prepare($query, [ json_encode(wc()->session->cart), json_encode($customer_data), + $current_timestamp, json_encode(wc()->session->cart), json_encode($customer_data), + $current_timestamp, ]); $wpdb->query($prepared_query); From c8ee6025b86e55379d5accb9cb2a7cce2a11a002 Mon Sep 17 00:00:00 2001 From: Glomberg Date: Mon, 20 Jul 2026 16:09:54 +0300 Subject: [PATCH 5/7] Fix. Code. Code style fixed. --- lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php index e139e0b55..5b75f7aca 100644 --- a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php +++ b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php @@ -129,7 +129,7 @@ public function get_columns() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.N return $columns; } - protected function get_sortable_columns() + protected function get_sortable_columns() // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps { return array( 'ct_order_date' => array('order_date', false), @@ -284,10 +284,10 @@ private function renderOrderDateColumn($order_date) } return sprintf( - '', - esc_attr(date_i18n('c', $timestamp)), // 2023-02-15T20:25:06+00:00 - esc_html(date_i18n('d.m.Y H:i', $timestamp)), // 15.02.2023 20:25 - esc_html(date_i18n('M d, Y', $timestamp)) // Feb 15, 2023 + '', + esc_attr(date_i18n('c', $timestamp)), // 2023-02-15T20:25:06+00:00 + esc_html(date_i18n('d.m.Y H:i', $timestamp)), // 15.02.2023 20:25 + esc_html(date_i18n('M d, Y', $timestamp)) // Feb 15, 2023 ); } From ff506d709da6adc3ffb5d09dc7e6eeb692a4e880 Mon Sep 17 00:00:00 2001 From: Glomberg Date: Tue, 21 Jul 2026 13:58:34 +0300 Subject: [PATCH 6/7] Fix. Code. WC spam orders - Unused code removed #2. --- lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php index 6063b00ab..b5afb11d8 100644 --- a/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php +++ b/lib/Cleantalk/ApbctWP/WcSpamOrdersListTable.php @@ -304,16 +304,6 @@ private function getSqlOrderBy() return in_array('ct_' . $order_by, $allowed_order_by) ? $order_by : ''; } - private function getWcSpamOrder($id) - { - global $wpdb; - - return $wpdb->get_results( - "SELECT * FROM " . APBCT_TBL_WC_SPAM_ORDERS . " WHERE id = '$id' LIMIT 1", - OBJECT - ); - } - private function removeSpam($ids) { global $wpdb; From 9dbfcfb1017c2b5b903ad107a914f219eb9827b8 Mon Sep 17 00:00:00 2001 From: Glomberg Date: Thu, 23 Jul 2026 10:46:02 +0300 Subject: [PATCH 7/7] Fix. Code. React bundle rebuilt. --- js/public/apbct-react-bundle.js | 2 +- js/public/apbct-react-bundle.js.LICENSE.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/public/apbct-react-bundle.js b/js/public/apbct-react-bundle.js index 980fc4806..c5432005b 100644 --- a/js/public/apbct-react-bundle.js +++ b/js/public/apbct-react-bundle.js @@ -1,2 +1,2 @@ /*! For license information please see apbct-react-bundle.js.LICENSE.txt */ -(()=>{"use strict";var e={606(e,t,n){var r=n(601),a=n.n(r),o=n(314),i=n.n(o),l=n(417),u=n.n(l),c=new URL(n(199),n.b),s=i()(a()),f=u()(c);s.push([e.id,`.apbct-signup-wizard {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 100vh;\n background: #F0F0F1;\n font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n color: #444444;\n}\n.apbct-signup-wizard * {\n box-sizing: border-box;\n}\n.apbct-signup-wizard-card {\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 4px 15px rgba(132, 132, 132, 0.25);\n width: 60%;\n padding: 32px;\n display: flex;\n justify-content: space-between;\n}\n@media (max-width: 1600px) {\n .apbct-signup-wizard-card {\n width: 80%;\n }\n}\n@media (max-width: 1024px) {\n .apbct-signup-wizard-card {\n width: 100%;\n padding: 24px;\n }\n}\n.apbct-signup-wizard-card.existing-user,\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error,\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success {\n flex-direction: column;\n}\n\n.apbct-signup-wizard-title {\n font-size: 20px;\n font-weight: 500;\n color: #000;\n margin: 0;\n margin-bottom: 32px;\n}\n.apbct-signup-wizard-subtitle {\n font-size: 18px;\n line-height: 22px;\n font-weight: 600;\n color: #000;\n margin-bottom: 12px;\n}\n.apbct-signup-wizard-card > div {\n width: 50%;\n border-radius: 8px;\n}\n.apbct-signup-wizard-card.existing-user > div,\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error > div,\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success > div\n{\n width: 100%;\n}\n.apbct-signup-wizard-checked-ico {\n display: inline-block;\n width: 18px;\n height: 18px;\n position: relative;\n padding: 2px 12px 0 0;\n margin-right: 12px;\n}\n.apbct-signup-wizard-checked-ico::after {\n content: '';\n position: absolute;\n left: 4px;\n top: 1px;\n width: 8px;\n height: 13px;\n border: solid #026E88;\n border-width: 0 2.5px 2.5px 0;\n transform: rotate(45deg);\n}\n.apbct-signup-wizard-card-left > svg {\n margin-bottom: 22px;\n}\n.apbct-signup-wizard-card-left > div {\n padding: 0 32px;\n}\n.apbct-signup-wizard-card-left p {\n font-size: 16px;\n line-height: 22px;\n display: flex;\n margin: 0 0 18px 0;\n}\n.apbct-signup-wizard-card .apbct-signup-wizard-beautiful-digits {\n font-size: 16px;\n line-height: 22px;\n}\n.apbct-signup-wizard-card-left p.apbct-signup-wizard-title {\n font-size: 24px;\n font-weight: 500;\n line-height: 29px;\n color: #000;\n}\n.apbct-signup-wizard-card-left .apbct-signup-wizard-what-next {\n margin-top: 64px;\n}\n.apbct-signup-wizard-card-left .apbct-signup-wizard-what-next-title {\n display: inline-block;\n background: #F3F6F9;\n border-radius: 18px;\n padding: 8px 16px;\n font-size: 16px;\n font-weight: 500;\n line-height: 19px;\n color: #000;\n}\n.apbct-signup-wizard-card-left .apbct-signup-wizard-what-next-hint{\n display: inline-block;\n font-size: 14px;\n line-height: 22px;\n margin-top: 8px;\n}\n.apbct-signup-wizard-card-right {\n background: #F3F6F9;\n padding: 48px 62px;\n text-align: center;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.apbct-signup-wizard-form-group {\n position: relative;\n margin-bottom: 12px;\n}\n.apbct-signup-wizard-form-group input,\n.apbct-signup-wizard-form-group button {\n width: 100%;\n height: 44px;\n}\n.apbct-signup-wizard-form-group input[type="email"],\n.apbct-signup-wizard-form-group input[type="text"] {\n border: 1px solid #026E88;\n border-radius: 7px;\n box-shadow: none;\n}\n.apbct-signup-wizard-form-group .apbct-signup-wizard-input-title {\n color: #026E88;\n font-size: 12px;\n position: absolute;\n top: -1px;\n left: 10px;\n background: #F3F6F9;\n height: 2px;\n line-height: 0;\n padding: 0 5px;\n}\n.apbct-signup-wizard-form-group.checkbox-block {\n text-align: left;\n height: 18px;\n}\n.apbct-signup-wizard-form-group.checkbox-block input[type="checkbox"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n margin: 0;\n}\n.apbct-signup-wizard-form-group.checkbox-block input[type="checkbox"] + label {\n display: inline-flex;\n align-items: center;\n gap: 10px;\n cursor: pointer;\n user-select: none;\n height: 18px;\n color: #646464;\n}\n.apbct-signup-wizard-form-group.checkbox-block input[type="checkbox"] + label:before {\n content: '';\n width: 16px;\n height: 16px;\n background-color: #fff;\n border: 1px solid #026E88;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n.apbct-signup-wizard-form-group.checkbox-block input[type="checkbox"]:checked + label:before {\n background-color: #026E88;\n border-color: #026E88;\n background-image: url(${f});\n background-repeat: no-repeat;\n background-position: center;\n background-size: 14px;\n}\n.apbct-signup-wizard-form-group.checkbox-block input[type="checkbox"] + label:hover::before {\n border-color: #026E88;\n}\n.apbct-signup-wizard-form-group.checkbox-block a {\n color: #646464;\n text-decoration: none;\n transition: color .1s cubic-bezier(.39,.575,.565,1)\n}\n.apbct-signup-wizard-form-group.checkbox-block a:hover {\n color: #026E88;\n}\n.apbct-signup-wizard-form-group button,\n.apbct-signup-wizard-form-group a.apbct-signup-wizard-link-button {\n transition: opacity .1s cubic-bezier(.39,.575,.565,1);\n font-size: 16px;\n font-weight: 500;\n border-radius: 8px;\n margin-bottom: 20px;\n cursor: pointer;\n}\n.apbct-signup-wizard-form-group button:hover,\n.apbct-signup-wizard-form-group a.apbct-signup-wizard-link-button:hover {\n opacity: .75;\n}\n.apbct-signup-wizard-form-group button[type="submit"] {\n background: #026E88;\n color: #FFFFFF;\n border: none;\n font-weight: 400;\n}\n.apbct-signup-wizard-form-group.apbct-signup-wizard-subtitle {\n text-align: left;\n}\n.apbct-signup-wizard-form-group button[name="existingUser"] {\n background: #DFE4E9;\n border: 1px solid #D6D8DB;\n color: #444444;\n}\n.apbct-signup-wizard-card .apbct-signup-wizard-skip-wizard-link,\n.apbct-signup-wizard-card .apbct-signup-wizard-skip-wizard-link:hover {\n color: #646464;\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n}\n.apbct-signup-wizard-card.existing-user a {\n text-decoration: none;\n display: flex;\n gap: 4px;\n}\n.apbct-signup-wizard-card.existing-user a:hover,\n.apbct-signup-wizard-card.existing-user a:focus {\n text-decoration: underline;\n}\n.apbct-signup-wizard-card.existing-user p {\n font-size: 16px;\n}\n.apbct-signup-wizard-card.existing-user p a.apbct-signup-wizard-inline-link {\n display: inline;\n color: #646464;\n text-decoration: underline;\n transition: color .1s cubic-bezier(.39,.575,.565,1);\n}\n.apbct-signup-wizard-card.existing-user p a.apbct-signup-wizard-inline-link:hover,\n.apbct-signup-wizard-card.existing-user p a.apbct-signup-wizard-inline-link:focus {\n color: #026E88;\n}\n.apbct-signup-wizard-card.existing-user .apbct-signup-wizard-card-inner {\n padding: 32px;\n}\n.apbct-signup-wizard-card.existing-user .apbct-signup-wizard-title {\n font-weight: 500;\n font-size: 24px;\n line-height: 29px;\n margin-bottom: 16px;\n}\n.apbct-signup-wizard-card.existing-user form {\n background: #F3F6F9;\n border-radius: 8px;\n padding: 32px;\n display: flex;\n gap: 24px;\n}\n.apbct-signup-wizard-card.existing-user .apbct-signup-wizard-form-group,\n.apbct-signup-wizard-card.existing-user .apbct-signup-wizard-form-group input,\n.apbct-signup-wizard-card.existing-user .apbct-signup-wizard-form-group button {\n margin: 0;\n}\n.apbct-signup-wizard-card.existing-user .apbct-signup-wizard-form-group:first-child {\n flex-grow: 1;\n}\n.apbct-signup-wizard-card.existing-user .apbct-signup-wizard-form-group button {\n padding: 0 48px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error .apbct-signup-wizard-error-head,\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success .apbct-signup-wizard-success-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error .apbct-signup-wizard-error-title {\n display: flex;\n align-items: center;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error .apbct-signup-wizard-error-title svg {\n margin-right: 12px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error .apbct-signup-wizard-error-title h2 {\n font-size: 24px;\n font-weight: 500;\n color: #A94442;\n margin: 0;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error .apbct-signup-wizard-title {\n padding: 32px;\n color: #000;\n font-size: 16px;\n font-weight: 400;\n line-height: 22px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-error .apbct-signup-wizard-error-links a {\n color: #444444;\n margin-right: 16px;\n font-size: 14px;\n font-weight: 400;\n line-height: 22px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success p {\n margin: 0 0 32px;\n text-align: center;\n font-size: 16px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success p.apbct-signup-wizard-title {\n margin-bottom: 14px;\n margin-top: 18px;\n font-size: 24px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success p.apbct-signup-wizard-title svg {\n margin-right: 8px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success .apbct-signup-wizard-form-group {\n text-align: center;\n margin-bottom: 0;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-success .apbct-signup-wizard-form-group a.apbct-signup-wizard-link-button {\n background: #026E88;\n color: #FFF;\n border: none;\n font-weight: 400;\n width: auto;\n padding: 10px 20px;\n margin-bottom: 0;\n text-decoration: none;\n outline: none;\n}\n.apbct-signup-wizard-connecting-gif img {\n width: 100%;\n border-radius: 8px;\n}\n.apbct-signup-wizard-card-left > div.apbct-signup-wizard-connecting-gif {\n padding: 0 24px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-connecting {\n padding-bottom: 64px;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-connecting .apbct-signup-wizard-card-inner {\n padding: 0 24px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n.apbct-signup-wizard-card.apbct-signup-wizard-card-connecting .apbct-signup-wizard-title {\n font-size: 24px;\n font-weight: 500;\n line-height: 29px;\n margin-bottom: 24px;\n}\n.apbct-signup-wizard-card .apbct-signup-wizard-progressbar-legend {\n font-size: 14px;\n display: flex;\n justify-content: space-between;\n margin-bottom: 8px;\n}\n.apbct-signup-wizard-card .apbct-signup-wizard-progressbar-legend .apbct-signup-wizard-progressbar-legend-percent {\n color: #026E88;\n}\n.apbct-signup-wizard-card .apbct-signup-wizard-progressbar {\n height: 10px;\n border-radius: 5px;\n background: #E1ECF1;\n position: relative;\n}\n.apbct-signup-wizard-card .apbct-signup-wizard-progressbar div {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 10px;\n border-radius: 5px;\n background-image: linear-gradient(to right, #BAB9F9, #026E88);\n background-size: 500px 100%;\n background-repeat: no-repeat;\n transition: width .3s cubic-bezier(.39,.575,.565,1);\n}\n`,""]);const d=s;n.d(t,["A",0,d])},567(e,t,n){var r=n(601),a=n.n(r),o=n(314),i=n.n(o)()(a());i.push([e.id,".apbct-signup-wizard-shell {\n max-width: 720px;\n margin: 24px 0 40px;\n padding: 32px 36px;\n background: #fff;\n border: 1px solid #dce4ea;\n border-radius: 12px;\n box-shadow: 0 8px 24px rgba(30, 42, 50, 0.06);\n}\n\n.apbct-signup-wizard-shell__title {\n margin: 0 0 8px;\n font-size: 22px;\n line-height: 1.3;\n color: #1e2a32;\n}\n\n.apbct-signup-wizard-shell__hint {\n margin: 0;\n font-size: 14px;\n color: #5c6b76;\n}\n",""]);const l=i;n.d(t,["A",0,l])},314(e){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n}).join("")},t.i=function(e,n,r,a,o){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=o),n&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=n):s[2]=n),a&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=a):s[4]="".concat(a)),t.push(s))}},t}},417(e){e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},601(e){e.exports=function(e){return e[1]}},551(e,t,n){var r=n(540),a=n(982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n