From 757331203847ec37dcfa213ae0cbb3b75b5ecde8 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Sun, 22 Feb 2026 00:44:03 +0100 Subject: [PATCH] feat: Add Gemini AI integration for product title and description optimization - Implemented Gemini API service for generating optimized product titles and descriptions based on Google Merchant Center guidelines. - Added settings for Gemini API key and model selection in user settings. - Enhanced product management views to support AI-generated suggestions for titles and descriptions. - Enabled state saving for various data tables across campaign, terms, logs, and products views. - Introduced AI prompt templates for generating product descriptions and categories. --- .claude/settings.local.json | 7 +- autoload/controls/class.Products.php | 21 +- autoload/controls/class.Users.php | 22 + autoload/services/class.ClaudeApi.php | 108 +++-- autoload/services/class.GeminiApi.php | 349 ++++++++++++++++ autoload/services/class.OpenAiApi.php | 536 +++++++++++++++++++++--- index.php | 2 + layout/style.css | 2 +- layout/style.css.map | 2 +- layout/style.scss | 555 +++++++------------------ templates/campaign_terms/main_view.php | 4 + templates/campaigns/main_view.php | 1 + templates/facebook_ads/main_view.php | 1 + templates/logs/main_view.php | 1 + templates/products/main_view.php | 104 ++++- templates/products/product_history.php | 1 + templates/users/settings.php | 79 ++++ 17 files changed, 1259 insertions(+), 536 deletions(-) create mode 100644 autoload/services/class.GeminiApi.php diff --git a/.claude/settings.local.json b/.claude/settings.local.json index c2ad339..4947039 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -22,7 +22,12 @@ "Bash(py --version)", "Bash(where:*)", "Bash(python:*)", - "Bash(ls -la \"c:\\\\visual studio code\\\\projekty\\\\adsPRO\\\\docs\"\" 2>/dev/null || echo \"docs dir not found \")" + "Bash(ls -la \"c:\\\\visual studio code\\\\projekty\\\\adsPRO\\\\docs\"\" 2>/dev/null || echo \"docs dir not found \")", + "WebFetch(domain:ai.google.dev)" ] + }, + "statusLine": { + "type": "command", + "command": "npx -y @owloops/claude-powerline@latest --style=powerline" } } diff --git a/autoload/controls/class.Products.php b/autoload/controls/class.Products.php index 52598b3..930ff07 100644 --- a/autoload/controls/class.Products.php +++ b/autoload/controls/class.Products.php @@ -679,6 +679,19 @@ class Products exit; } } + else if ( $provider === 'gemini' ) + { + if ( \services\GoogleAdsApi::get_setting( 'gemini_enabled' ) === '0' ) + { + echo json_encode( [ 'status' => 'error', 'message' => 'Gemini jest wyłączony. Włącz go w Ustawieniach.' ] ); + exit; + } + if ( !\services\GeminiApi::is_configured() ) + { + echo json_encode( [ 'status' => 'error', 'message' => 'Klucz API Gemini nie jest skonfigurowany. Przejdź do Ustawień.' ] ); + exit; + } + } else { if ( \services\GoogleAdsApi::get_setting( 'openai_enabled' ) === '0' ) @@ -713,7 +726,7 @@ class Products $warnings = []; $should_enrich_with_keyword_planner = in_array( $field, [ 'title', 'description' ], true ) - && in_array( $provider, [ 'openai', 'claude' ], true ); + && in_array( $provider, [ 'openai', 'claude', 'gemini' ], true ); if ( $should_enrich_with_keyword_planner && $keyword_source_url !== '' && filter_var( $keyword_source_url, FILTER_VALIDATE_URL ) ) { @@ -765,7 +778,11 @@ class Products 'keyword_planner_terms' => $keyword_terms, ]; - $api = $provider === 'claude' ? \services\ClaudeApi::class : \services\OpenAiApi::class; + $api_map = [ + 'claude' => \services\ClaudeApi::class, + 'gemini' => \services\GeminiApi::class, + ]; + $api = $api_map[ $provider ] ?? \services\OpenAiApi::class; switch ( $field ) { diff --git a/autoload/controls/class.Users.php b/autoload/controls/class.Users.php index b74d4a1..c74b126 100644 --- a/autoload/controls/class.Users.php +++ b/autoload/controls/class.Users.php @@ -149,6 +149,27 @@ class Users exit; } + public static function settings_save_gemini() + { + \services\GoogleAdsApi::set_setting( 'gemini_enabled', \S::get( 'gemini_enabled' ) ? '1' : '0' ); + \services\GoogleAdsApi::set_setting( 'gemini_api_key', \S::get( 'gemini_api_key' ) ); + \services\GoogleAdsApi::set_setting( 'gemini_model', \S::get( 'gemini_model' ) ); + + \S::alert( 'Ustawienia Gemini zostały zapisane.' ); + header( 'Location: /settings' ); + exit; + } + + public static function settings_save_ai_prompts() + { + \services\GoogleAdsApi::set_setting( 'ai_prompt_title_template', trim( (string) \S::get( 'ai_prompt_title_template' ) ) ); + \services\GoogleAdsApi::set_setting( 'ai_prompt_description_template', trim( (string) \S::get( 'ai_prompt_description_template' ) ) ); + + \S::alert( 'Prompty AI zostały zapisane.' ); + header( 'Location: /settings' ); + exit; + } + private static function get_cron_dashboard_data() { global $mdb, $settings; @@ -521,3 +542,4 @@ class Users } } + diff --git a/autoload/services/class.ClaudeApi.php b/autoload/services/class.ClaudeApi.php index 662c0df..a6c73aa 100644 --- a/autoload/services/class.ClaudeApi.php +++ b/autoload/services/class.ClaudeApi.php @@ -150,6 +150,28 @@ Twoje odpowiedzi muszą być: return implode( "\n", $lines ); } + static private function get_prompt_template( $setting_key, $default_template ) + { + $template = trim( (string) GoogleAdsApi::get_setting( $setting_key ) ); + if ( $template === '' ) + { + return $default_template; + } + + return $template; + } + + static private function expand_prompt_template( $template, $vars ) + { + $result = (string) $template; + foreach ( (array) $vars as $key => $value ) + { + $result = str_replace( '{{' . $key . '}}', (string) $value, $result ); + } + + return $result; + } + static public function suggest_title( $context ) { $context_text = self::build_context_text( $context ); @@ -179,27 +201,38 @@ Twoje odpowiedzi muszą być: } } - $prompt = 'Zaproponuj zoptymalizowany tytuł produktu dla Google Merchant Center. + $prompt_template = self::get_prompt_template( 'ai_prompt_title_template', OpenAiApi::get_default_title_prompt_template() ); -WYMAGANIA: -- Max 150 znaków, najważniejsze info w pierwszych 70 znakach -- Struktura: [Marka jeśli jest w nazwie] [Typ produktu] [Kluczowe cechy z nazwy] [Dla kogo/okazja jeśli wynika z nazwy] -- Pisownia zdaniowa lub tytułowa, naturalny język -- Tytuł musi brzmieć jak wpis w katalogu produktowym + if ( strpos( $prompt_template, '{{context}}' ) === false ) + { + $prompt_template .= "\n\n{{context}}"; + } + if ( strpos( $prompt_template, '{{keyword_terms}}' ) === false ) + { + $prompt_template .= "{{keyword_terms}}"; + } -BEZWZGLĘDNY ZAKAZ (odrzucenie przez Google): -- Słowa promocyjne: bestseller, hit, idealny, najlepszy, polecamy, okazja, nowość, TOP -- Wykrzykniki (!), emotikony, symbole dekoracyjne -- WIELKIE LITERY (wyjątek: LED, USB, TV) -- Wezwania do działania, informacje o cenie/dostawie -- Cechy wymyślone — opisuj TYLKO to co wynika z oryginalnej nazwy lub treści strony produktu -- Jeśli podano treść ze strony produktu, wykorzystaj ją do wzbogacenia tytułu o rzeczywiste cechy (marka, materiał, kolor, rozmiar itp.) + $prompt = self::expand_prompt_template( $prompt_template, [ + 'context' => $context_text, + 'keyword_terms' => $keyword_planner_text + ] ); + $prompt .= "\n\nWygeneruj 3 różne warianty tytułu (A/B/C). Zwróć WYŁĄCZNIE poprawny JSON: {\"titles\":[\"wariant A\",\"wariant B\",\"wariant C\"]}."; -' . $context_text . $keyword_planner_text . ' + $result = self::call_api( self::$system_prompt, $prompt, 1200 ); + if ( ( $result['status'] ?? '' ) !== 'ok' ) + { + return $result; + } -Zwróć TYLKO tytuł, bez cudzysłowów, bez wyjaśnień.'; + $candidates = OpenAiApi::parse_title_candidates( (string) ( $result['suggestion'] ?? '' ) ); + $best_title = OpenAiApi::pick_best_title_candidate( $candidates, $context ); + if ( $best_title !== '' ) + { + $result['suggestion'] = $best_title; + $result['title_candidates'] = $candidates; + } - return self::call_api( self::$system_prompt, $prompt ); + return $result; } static public function suggest_description( $context ) @@ -239,33 +272,26 @@ Zwróć TYLKO tytuł, bez cudzysłowów, bez wyjaśnień.'; : '- Napisz opis o długości ok. 1000 znaków (800-1200) — jeśli brak szczegółów, opisz ogólnie zastosowanie i grupę docelową - Opisuj TYLKO to co wynika z oryginalnej nazwy — nie wymyślaj konkretnych parametrów'; - $prompt = 'Napisz zoptymalizowany opis produktu dla Google Merchant Center. + $prompt_template = self::get_prompt_template( 'ai_prompt_description_template', OpenAiApi::get_default_description_prompt_template() ); -WYMAGANIA: -' . $length_guide . ' -- Najważniejsze info na początku (pierwsze 160 znaków widoczne w wynikach) -- Rzeczowo opisz: co to jest, z czego się składa, do czego służy, dla kogo -- Ton neutralny, informacyjny — jak w specyfikacji produktowej -- Każdy akapit musi zawierać INNĄ informację niż poprzedni — NIGDY nie powtarzaj tych samych elementów + if ( strpos( $prompt_template, '{{length_guide}}' ) === false ) + { + $prompt_template .= "\n\n{{length_guide}}"; + } + if ( strpos( $prompt_template, '{{context}}' ) === false ) + { + $prompt_template .= "\n\n{{context}}"; + } + if ( strpos( $prompt_template, '{{keyword_terms}}' ) === false ) + { + $prompt_template .= "{{keyword_terms}}"; + } -FORMATOWANIE — Google Merchant Center obsługuje podstawowe HTML: -- Używaj
do oddzielania akapitów/sekcji -- Używaj pogrubienia dla kluczowych cech (np. nazwy elementów zestawu, materiał) -- Używaj gdy wymieniasz elementy zestawu lub listę cech -- NIE używaj innych tagów HTML (h1, p, div, span, img, a, table itp.) -- NIE używaj Markdown — tylko dozwolone tagi HTML - -BEZWZGLĘDNY ZAKAZ (odrzucenie przez Google): -- Słowa promocyjne: bestseller, hit, okazja, najlepszy, polecamy, nowość, idealny -- Wykrzykniki (!), emotikony, WIELKIE LITERY -- Wezwania do działania: kup teraz, zamów, sprawdź, dodaj do koszyka -- Informacje o cenie, dostawie, promocjach, nazwie sklepu -- Opisy akcesoriów/produktów nie wchodzących w skład oferty -- Cechy wymyślone — opisuj TYLKO to co wynika z nazwy lub treści strony produktu - -' . $context_text . $keyword_planner_text . ' - -Zwróć TYLKO opis w formacie HTML (używając dozwolonych tagów), bez cudzysłowów, bez wyjaśnień.'; + $prompt = self::expand_prompt_template( $prompt_template, [ + 'length_guide' => $length_guide, + 'context' => $context_text, + 'keyword_terms' => $keyword_planner_text + ] ); $tokens = $has_page ? 1500 : 1000; return self::call_api( self::$system_prompt, $prompt, $tokens ); diff --git a/autoload/services/class.GeminiApi.php b/autoload/services/class.GeminiApi.php new file mode 100644 index 0000000..d6ee5a2 --- /dev/null +++ b/autoload/services/class.GeminiApi.php @@ -0,0 +1,349 @@ + [ + 'parts' => [ [ 'text' => $system_prompt ] ] + ], + 'contents' => [ + [ + 'role' => 'user', + 'parts' => [ [ 'text' => $user_prompt ] ] + ] + ], + 'generationConfig' => [ + 'maxOutputTokens' => $effective_max_tokens, + 'temperature' => $temperature + ] + ]; + + $ch = curl_init( $url ); + curl_setopt_array( $ch, [ + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POST => true, + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/json' + ], + CURLOPT_POSTFIELDS => json_encode( $payload ), + CURLOPT_TIMEOUT => 60 + ] ); + + $response = curl_exec( $ch ); + $http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); + curl_close( $ch ); + + if ( $http_code !== 200 ) + { + $error = json_decode( $response, true ); + return [ 'status' => 'error', 'message' => $error['error']['message'] ?? 'Błąd API Gemini (HTTP ' . $http_code . ')' ]; + } + + $data = json_decode( $response, true ); + $parts = $data['candidates'][0]['content']['parts'] ?? []; + $content = ''; + + foreach ( $parts as $part ) + { + if ( !empty( $part['thought'] ) ) + { + continue; + } + if ( isset( $part['text'] ) && trim( (string) $part['text'] ) !== '' ) + { + $content = trim( (string) $part['text'] ); + break; + } + } + + if ( $content === '' ) + { + $finish_reason = $data['candidates'][0]['finishReason'] ?? ''; + $message = 'Gemini nie zwróciło treści.'; + if ( $finish_reason !== '' && $finish_reason !== 'STOP' ) + { + $message .= ' (finishReason: ' . $finish_reason . ')'; + } + return [ 'status' => 'error', 'message' => $message ]; + } + + return [ 'status' => 'ok', 'suggestion' => $content ]; + } + + static private function build_context_text( $context ) + { + $lines = []; + $lines[] = 'Nazwa produktu: ' . ( $context['original_name'] ?? '—' ); + + if ( !empty( $context['current_title'] ) ) + $lines[] = 'Obecny tytuł (custom): ' . $context['current_title']; + + if ( !empty( $context['current_description'] ) ) + $lines[] = 'Obecny opis: ' . $context['current_description']; + + if ( !empty( $context['current_category'] ) ) + $lines[] = 'Obecna kategoria Google: ' . $context['current_category']; + + if ( !empty( $context['offer_id'] ) ) + $lines[] = 'ID oferty: ' . $context['offer_id']; + + if ( !empty( $context['custom_label_4'] ) ) + $lines[] = 'Status produktu: ' . $context['custom_label_4']; + + $lines[] = ''; + $lines[] = 'Metryki reklamowe (ostatnie 30 dni):'; + $lines[] = '- Wyświetlenia: ' . ( $context['impressions_30'] ?? 0 ); + $lines[] = '- Kliknięcia: ' . ( $context['clicks_30'] ?? 0 ); + $lines[] = '- CTR: ' . ( $context['ctr'] ?? 0 ) . '%'; + $lines[] = '- Koszt: ' . ( $context['cost'] ?? 0 ) . ' PLN'; + $lines[] = '- Konwersje: ' . ( $context['conversions'] ?? 0 ); + $lines[] = '- Wartość konwersji: ' . ( $context['conversions_value'] ?? 0 ) . ' PLN'; + $lines[] = '- ROAS: ' . ( $context['roas'] ?? 0 ) . '%'; + + if ( !empty( $context['page_content'] ) ) + { + $lines[] = ''; + $lines[] = 'Treść ze strony produktu (użyj tych informacji do stworzenia dokładniejszego opisu):'; + $lines[] = $context['page_content']; + } + + return implode( "\n", $lines ); + } + + static private function get_prompt_template( $setting_key, $default_template ) + { + $template = trim( (string) GoogleAdsApi::get_setting( $setting_key ) ); + if ( $template === '' ) + { + return $default_template; + } + + return $template; + } + + static private function expand_prompt_template( $template, $vars ) + { + $result = (string) $template; + foreach ( (array) $vars as $key => $value ) + { + $result = str_replace( '{{' . $key . '}}', (string) $value, $result ); + } + + return $result; + } + + static public function suggest_title( $context ) + { + $context_text = self::build_context_text( $context ); + $keyword_planner_text = ''; + + if ( !empty( $context['keyword_planner_terms'] ) && is_array( $context['keyword_planner_terms'] ) ) + { + $keyword_lines = []; + $keyword_lines[] = 'Najpopularniejsze frazy z Google Ads Keyword Planner (na bazie URL produktu, posortowane malejąco po średniej liczbie wyszukiwań):'; + + foreach ( array_slice( $context['keyword_planner_terms'], 0, 15 ) as $term ) + { + $text = trim( (string) ( $term['keyword_text'] ?? '' ) ); + if ( $text === '' ) + { + continue; + } + + $avg_monthly = (int) ( $term['avg_monthly_searches'] ?? 0 ); + $keyword_lines[] = '- ' . $text . ' (avg miesięcznie: ' . $avg_monthly . ')'; + } + + if ( count( $keyword_lines ) > 1 ) + { + $keyword_lines[] = 'Użyj tych fraz WYBIÓRCZO i naturalnie (bez upychania słów kluczowych), tylko jeśli pasują do produktu.'; + $keyword_planner_text = "\n\n" . implode( "\n", $keyword_lines ); + } + } + + $prompt_template = self::get_prompt_template( 'ai_prompt_title_template', OpenAiApi::get_default_title_prompt_template() ); + + if ( strpos( $prompt_template, '{{context}}' ) === false ) + { + $prompt_template .= "\n\n{{context}}"; + } + if ( strpos( $prompt_template, '{{keyword_terms}}' ) === false ) + { + $prompt_template .= "{{keyword_terms}}"; + } + + $prompt = self::expand_prompt_template( $prompt_template, [ + 'context' => $context_text, + 'keyword_terms' => $keyword_planner_text + ] ); + $prompt .= "\n\nWygeneruj 3 różne warianty tytułu (A/B/C). Zwróć WYŁĄCZNIE poprawny JSON: {\"titles\":[\"wariant A\",\"wariant B\",\"wariant C\"]}."; + + $result = self::call_api( self::$system_prompt, $prompt, 1200 ); + if ( ( $result['status'] ?? '' ) !== 'ok' ) + { + return $result; + } + + $candidates = OpenAiApi::parse_title_candidates( (string) ( $result['suggestion'] ?? '' ) ); + $best_title = OpenAiApi::pick_best_title_candidate( $candidates, $context ); + if ( $best_title !== '' ) + { + $result['suggestion'] = $best_title; + $result['title_candidates'] = $candidates; + } + + return $result; + } + + static public function suggest_description( $context ) + { + $context_text = self::build_context_text( $context ); + $has_page = !empty( $context['page_content'] ); + $keyword_planner_text = ''; + + if ( !empty( $context['keyword_planner_terms'] ) && is_array( $context['keyword_planner_terms'] ) ) + { + $keyword_lines = []; + $keyword_lines[] = 'Najpopularniejsze frazy z Google Ads Keyword Planner (na bazie URL produktu, posortowane malejąco po średniej liczbie wyszukiwań):'; + + foreach ( array_slice( $context['keyword_planner_terms'], 0, 15 ) as $term ) + { + $text = trim( (string) ( $term['keyword_text'] ?? '' ) ); + if ( $text === '' ) + { + continue; + } + + $avg_monthly = (int) ( $term['avg_monthly_searches'] ?? 0 ); + $keyword_lines[] = '- ' . $text . ' (avg miesięcznie: ' . $avg_monthly . ')'; + } + + if ( count( $keyword_lines ) > 1 ) + { + $keyword_lines[] = 'W opisie wykorzystuj te frazy naturalnie i wyłącznie gdy realnie pasują do produktu (bez keyword stuffing).'; + $keyword_planner_text = "\n\n" . implode( "\n", $keyword_lines ); + } + } + + $length_guide = $has_page + ? '- Napisz rozbudowany, szczegółowy opis: ok. 1000 znaków (800-1200) +- Wykorzystaj szczegóły ze strony produktu: skład zestawu, materiały, wymiary, kolory, przeznaczenie +- Każdy akapit/punkt powinien wnosić NOWĄ informację — NIE powtarzaj tych samych elementów' + : '- Napisz opis o długości ok. 1000 znaków (800-1200) — jeśli brak szczegółów, opisz ogólnie zastosowanie i grupę docelową +- Opisuj TYLKO to co wynika z oryginalnej nazwy — nie wymyślaj konkretnych parametrów'; + + $prompt_template = self::get_prompt_template( 'ai_prompt_description_template', OpenAiApi::get_default_description_prompt_template() ); + + if ( strpos( $prompt_template, '{{length_guide}}' ) === false ) + { + $prompt_template .= "\n\n{{length_guide}}"; + } + if ( strpos( $prompt_template, '{{context}}' ) === false ) + { + $prompt_template .= "\n\n{{context}}"; + } + if ( strpos( $prompt_template, '{{keyword_terms}}' ) === false ) + { + $prompt_template .= "{{keyword_terms}}"; + } + + $prompt = self::expand_prompt_template( $prompt_template, [ + 'length_guide' => $length_guide, + 'context' => $context_text, + 'keyword_terms' => $keyword_planner_text + ] ); + + $tokens = $has_page ? 1500 : 1000; + return self::call_api( self::$system_prompt, $prompt, $tokens ); + } + + static public function suggest_category( $context, $categories = [] ) + { + $context_text = self::build_context_text( $context ); + + $cats_text = ''; + if ( !empty( $categories ) ) + { + $cats_list = array_slice( $categories, 0, 50 ); + $cats_text = "\n\nDostępne kategorie Google Product Taxonomy (format: id - tekst):\n"; + foreach ( $cats_list as $cat ) + { + $cats_text .= $cat['id'] . ' - ' . $cat['text'] . "\n"; + } + } + + $prompt = 'Dopasuj produkt do najlepszej kategorii Google Product Taxonomy. +Wybierz najbardziej szczegółową (najgłębszą) kategorię pasującą do produktu. + +' . $context_text . $cats_text . ' + +Zwróć TYLKO ID kategorii (liczbę), bez wyjaśnień.'; + + return self::call_api( self::$system_prompt, $prompt ); + } +} diff --git a/autoload/services/class.OpenAiApi.php b/autoload/services/class.OpenAiApi.php index 378e00e..08af3b4 100644 --- a/autoload/services/class.OpenAiApi.php +++ b/autoload/services/class.OpenAiApi.php @@ -89,15 +89,91 @@ Twoje odpowiedzi muszą być: $text = strip_tags( $html ); $text = html_entity_decode( $text, ENT_QUOTES, 'UTF-8' ); $text = preg_replace( '/\s+/', ' ', $text ); - $text = trim( $text ); + $text = self::clean_page_content_text( trim( $text ) ); - // Ogranicz do ~3000 znaków - if ( mb_strlen( $text ) > 3000 ) - $text = mb_substr( $text, 0, 3000 ) . '...'; + // Ogranicz do ~1800 znaków + if ( mb_strlen( $text ) > 1800 ) + $text = mb_substr( $text, 0, 1800 ) . '...'; return $text; } + static private function clean_page_content_text( $text ) + { + $text = trim( (string) $text ); + if ( $text === '' ) + { + return ''; + } + + $noise_phrases = [ + 'cookies', + 'polityce prywatności', + 'zaakceptuj wszystkie', + 'odrzuć wszystkie', + 'dostosuj zgody', + 'sklep jest w trybie podglądu', + 'pokaż pełną wersję strony', + 'wersje językowe', + 'strona główna', + 'social media', + 'darmowa dostawa', + 'profesjonalne doradztwo', + 'bezpieczne płatności', + 'szybka wysyłka', + 'produkt miesiąca', + 'niezbędne do działania strony', + 'analityczne', + 'marketingowe', + 'funkcjonalne', + 'shoper' + ]; + + $parts = preg_split( '/(?<=[\.\!\?])\s+|\s{2,}/u', $text ); + $clean_parts = []; + $seen = []; + + foreach ( (array) $parts as $part ) + { + $part = trim( (string) $part ); + if ( mb_strlen( $part ) < 25 ) + { + continue; + } + + $part_l = mb_strtolower( $part ); + $is_noise = false; + foreach ( $noise_phrases as $phrase ) + { + if ( mb_strpos( $part_l, $phrase ) !== false ) + { + $is_noise = true; + break; + } + } + + if ( $is_noise ) + { + continue; + } + + if ( isset( $seen[ $part_l ] ) ) + { + continue; + } + $seen[ $part_l ] = true; + $clean_parts[] = $part; + } + + $result = trim( implode( '. ', $clean_parts ) ); + if ( mb_strlen( $result ) < 80 ) + { + return ''; + } + + return $result; + } + static private function call_api( $system_prompt, $user_prompt, $max_tokens = 500, $temperature = 0.7, $extra_payload = [] ) { $api_key = GoogleAdsApi::get_setting( 'openai_api_key' ); @@ -195,41 +271,320 @@ Twoje odpowiedzi muszą być: return implode( "\n", $lines ); } - static public function suggest_title( $context ) + static private function get_prompt_template( $setting_key, $default_template ) { - $context_text = self::build_context_text( $context ); - $keyword_planner_text = ''; - - if ( !empty( $context['keyword_planner_terms'] ) && is_array( $context['keyword_planner_terms'] ) ) + $template = trim( (string) GoogleAdsApi::get_setting( $setting_key ) ); + if ( $template === '' ) { - $keyword_lines = []; - $keyword_lines[] = 'Najpopularniejsze frazy z Google Ads Keyword Planner (na bazie URL produktu, posortowane malejąco po średniej liczbie wyszukiwań):'; + return $default_template; + } - foreach ( array_slice( $context['keyword_planner_terms'], 0, 15 ) as $term ) + return $template; + } + + static private function expand_prompt_template( $template, $vars ) + { + $result = (string) $template; + foreach ( (array) $vars as $key => $value ) + { + $result = str_replace( '{{' . $key . '}}', (string) $value, $result ); + } + + return $result; + } + + static private function extract_meaningful_tokens( $text ) + { + $text = mb_strtolower( (string) $text ); + $text = preg_replace( '/[^\p{L}\p{N}]+/u', ' ', $text ); + $raw_tokens = preg_split( '/\s+/u', trim( (string) $text ) ); + + $stopwords = [ + 'oraz', 'przez', 'jego', 'jej', 'this', 'that', 'with', 'from', 'jest', + 'dla', 'the', 'and', 'lub', 'czy', 'ten', 'ta', 'to', 'tych', 'taki', + 'takie', 'jako', 'się', 'sie', 'nad', 'pod', 'bez', 'www', 'http', 'https' + ]; + $stop_map = array_fill_keys( $stopwords, true ); + + $tokens = []; + foreach ( (array) $raw_tokens as $token ) + { + $token = trim( (string) $token ); + if ( mb_strlen( $token ) < 4 ) { - $text = trim( (string) ( $term['keyword_text'] ?? '' ) ); - if ( $text === '' ) - { - continue; - } + continue; + } + if ( isset( $stop_map[ $token ] ) ) + { + continue; + } + $tokens[ $token ] = true; + } - $avg_monthly = (int) ( $term['avg_monthly_searches'] ?? 0 ); - $keyword_lines[] = '- ' . $text . ' (avg miesięcznie: ' . $avg_monthly . ')'; + return array_keys( $tokens ); + } + + static private function select_relevant_keyword_terms( $terms, $context, $limit = 10 ) + { + $terms = is_array( $terms ) ? $terms : []; + if ( empty( $terms ) ) + { + return []; + } + + $context_source = trim( (string) ( $context['original_name'] ?? '' ) ) . ' ' . trim( (string) ( $context['page_content'] ?? '' ) ); + $context_tokens = self::extract_meaningful_tokens( $context_source ); + $context_map = array_fill_keys( $context_tokens, true ); + + $scored = []; + foreach ( $terms as $idx => $term ) + { + $keyword_text = trim( (string) ( $term['keyword_text'] ?? '' ) ); + if ( $keyword_text === '' ) + { + continue; } - if ( count( $keyword_lines ) > 1 ) + $kw_tokens = self::extract_meaningful_tokens( $keyword_text ); + $overlap = 0; + foreach ( $kw_tokens as $kw_token ) { - $keyword_lines[] = 'Użyj tych fraz WYBIÓRCZO i naturalnie (bez upychania słów kluczowych), tylko jeśli pasują do produktu.'; - $keyword_planner_text = "\n\n" . implode( "\n", $keyword_lines ); + if ( isset( $context_map[ $kw_token ] ) ) + { + $overlap++; + } + } + + $avg = (int) ( $term['avg_monthly_searches'] ?? 0 ); + $score = ( $overlap * 1000000 ) + $avg - (int) $idx; + if ( $overlap <= 0 ) + { + $score -= 5000000; + } + + $term['_score'] = $score; + $term['_overlap'] = $overlap; + $scored[] = $term; + } + + usort( $scored, function( $a, $b ) + { + return (int) ( $b['_score'] ?? 0 ) <=> (int) ( $a['_score'] ?? 0 ); + } ); + + $filtered = array_values( array_filter( $scored, function( $row ) + { + return (int) ( $row['_overlap'] ?? 0 ) > 0; + } ) ); + + if ( empty( $filtered ) ) + { + $filtered = $scored; + } + + $filtered = array_slice( $filtered, 0, max( 1, (int) $limit ) ); + + foreach ( $filtered as &$row ) + { + unset( $row['_score'], $row['_overlap'] ); + } + unset( $row ); + + return $filtered; + } + + static private function build_keyword_planner_text( $context, $usage_line, $limit = 10 ) + { + $terms = self::select_relevant_keyword_terms( (array) ( $context['keyword_planner_terms'] ?? [] ), $context, $limit ); + if ( empty( $terms ) ) + { + return ''; + } + + $keyword_lines = []; + $keyword_lines[] = 'Najpopularniejsze frazy z Google Ads Keyword Planner (na bazie URL produktu, posortowane malejąco po średniej liczbie wyszukiwań):'; + + foreach ( $terms as $term ) + { + $text = trim( (string) ( $term['keyword_text'] ?? '' ) ); + if ( $text === '' ) + { + continue; + } + + $avg_monthly = (int) ( $term['avg_monthly_searches'] ?? 0 ); + $keyword_lines[] = '- ' . $text . ' (avg miesięcznie: ' . $avg_monthly . ')'; + } + + if ( count( $keyword_lines ) <= 1 ) + { + return ''; + } + + $keyword_lines[] = $usage_line; + return "\n\n" . implode( "\n", $keyword_lines ); + } + + static public function parse_title_candidates( $raw ) + { + $raw = trim( (string) $raw ); + if ( $raw === '' ) + { + return []; + } + + $data = json_decode( $raw, true ); + if ( is_array( $data ) && !empty( $data['titles'] ) && is_array( $data['titles'] ) ) + { + return array_values( array_filter( array_map( 'trim', $data['titles'] ) ) ); + } + + if ( preg_match( '/\{[\s\S]*\}/u', $raw, $m ) ) + { + $data = json_decode( (string) $m[0], true ); + if ( is_array( $data ) && !empty( $data['titles'] ) && is_array( $data['titles'] ) ) + { + return array_values( array_filter( array_map( 'trim', $data['titles'] ) ) ); } } - $prompt = 'Zaproponuj zoptymalizowany tytuł produktu dla Google Merchant Center. + $lines = preg_split( '/\r?\n/u', $raw ); + $titles = []; + foreach ( (array) $lines as $line ) + { + $line = trim( (string) $line ); + $line = preg_replace( '/^\d+[\)\.\-\s]+/u', '', $line ); + $line = trim( (string) $line, " \t\n\r\0\x0B\"'" ); + if ( $line !== '' ) + { + $titles[] = $line; + } + } + + return array_values( array_slice( array_unique( $titles ), 0, 5 ) ); + } + + static private function score_title_candidate( $title, $context ) + { + $title = trim( (string) $title ); + if ( $title === '' ) + { + return -100000; + } + + $score = 0; + $len = mb_strlen( $title ); + + // Kara za przekroczenie limitu Google Merchant Center + if ( $len > 150 ) + { + $score -= 2000; + } + // Sweet spot: 60-120 znaków — tytuł wzbogacony, ale nie za długi + else if ( $len >= 60 && $len <= 120 ) + { + $score += 180; + } + else if ( $len >= 40 && $len <= 140 ) + { + $score += 100; + } + else if ( $len >= 25 ) + { + $score += 30; + } + else + { + $score -= 200; + } + + $bad_words = [ 'bestseller', 'hit', 'okazja', 'tanio', 'gratis', 'promocja', 'najlepszy', 'polecamy', 'nowość' ]; + $title_l = mb_strtolower( $title ); + foreach ( $bad_words as $bad_word ) + { + if ( mb_strpos( $title_l, $bad_word ) !== false ) + { + $score -= 300; + } + } + + $source_tokens = self::extract_meaningful_tokens( (string) ( $context['original_name'] ?? '' ) ); + $title_tokens = self::extract_meaningful_tokens( $title ); + $source_map = array_fill_keys( $source_tokens, true ); + + // Overlap z oryginalną nazwą — zmniejszona waga, żeby nie preferować kopii oryginału + $overlap = 0; + foreach ( $title_tokens as $token ) + { + if ( isset( $source_map[ $token ] ) ) + { + $overlap++; + } + } + $score += ( $overlap * 15 ); + + // Bonus za wzbogacenie tytułu informacjami ze strony produktu + $page_content = trim( (string) ( $context['page_content'] ?? '' ) ); + if ( $page_content !== '' ) + { + $page_tokens = self::extract_meaningful_tokens( $page_content ); + $page_map = array_fill_keys( $page_tokens, true ); + + $enrichment = 0; + foreach ( $title_tokens as $token ) + { + // Token jest ze strony produktu, ale NIE z oryginalnej nazwy = wzbogacenie + if ( isset( $page_map[ $token ] ) && !isset( $source_map[ $token ] ) ) + { + $enrichment++; + } + } + $score += min( $enrichment * 20, 100 ); + } + + if ( preg_match( '/\d+\s?(ml|l|g|kg|cm|mm)/iu', (string) ( $context['original_name'] ?? '' ), $m ) ) + { + if ( preg_match( '/' . preg_quote( $m[0], '/' ) . '/iu', $title ) ) + { + $score += 30; + } + } + + return $score; + } + + static public function pick_best_title_candidate( $candidates, $context ) + { + $best_title = ''; + $best_score = -1000000; + + foreach ( (array) $candidates as $candidate ) + { + $candidate = trim( (string) $candidate ); + if ( $candidate === '' ) + { + continue; + } + + $score = self::score_title_candidate( $candidate, $context ); + if ( $score > $best_score ) + { + $best_score = $score; + $best_title = $candidate; + } + } + + return $best_title; + } + + static public function get_default_title_prompt_template() + { + return 'Zaproponuj zoptymalizowany tytuł produktu dla Google Merchant Center. WYMAGANIA: - Max 150 znaków, najważniejsze info w pierwszych 70 znakach - Struktura: [Marka jeśli jest w nazwie] [Typ produktu] [Kluczowe cechy z nazwy] [Dla kogo/okazja jeśli wynika z nazwy] -- Pisownia zdaniowa lub tytułowa, naturalny język +- Pisownia zdaniowa (wielka litera tylko na początku i w nazwach własnych/markach) — NIE stosuj Title Case / Camel Case, np. "Preparat do laminacji rzęs 20ml" a NIE "Preparat Do Laminacji Rzęs 20ml" - Tytuł musi brzmieć jak wpis w katalogu produktowym BEZWZGLĘDNY ZAKAZ (odrzucenie przez Google): @@ -240,54 +595,17 @@ BEZWZGLĘDNY ZAKAZ (odrzucenie przez Google): - Cechy wymyślone — opisuj TYLKO to co wynika z oryginalnej nazwy lub treści strony produktu - Jeśli podano treść ze strony produktu, wykorzystaj ją do wzbogacenia tytułu o rzeczywiste cechy (marka, materiał, kolor, rozmiar itp.) -' . $context_text . $keyword_planner_text . ' +{{context}}{{keyword_terms}} Zwróć TYLKO tytuł, bez cudzysłowów, bez wyjaśnień.'; - - return self::call_api( self::$system_prompt, $prompt ); } - static public function suggest_description( $context ) + static public function get_default_description_prompt_template() { - $context_text = self::build_context_text( $context ); - $has_page = !empty( $context['page_content'] ); - $keyword_planner_text = ''; - - if ( !empty( $context['keyword_planner_terms'] ) && is_array( $context['keyword_planner_terms'] ) ) - { - $keyword_lines = []; - $keyword_lines[] = 'Najpopularniejsze frazy z Google Ads Keyword Planner (na bazie URL produktu, posortowane malejąco po średniej liczbie wyszukiwań):'; - - foreach ( array_slice( $context['keyword_planner_terms'], 0, 15 ) as $term ) - { - $text = trim( (string) ( $term['keyword_text'] ?? '' ) ); - if ( $text === '' ) - { - continue; - } - - $avg_monthly = (int) ( $term['avg_monthly_searches'] ?? 0 ); - $keyword_lines[] = '- ' . $text . ' (avg miesięcznie: ' . $avg_monthly . ')'; - } - - if ( count( $keyword_lines ) > 1 ) - { - $keyword_lines[] = 'W opisie wykorzystuj te frazy naturalnie i wyłącznie gdy realnie pasują do produktu (bez keyword stuffing).'; - $keyword_planner_text = "\n\n" . implode( "\n", $keyword_lines ); - } - } - - $length_guide = $has_page - ? '- Napisz rozbudowany, szczegółowy opis: ok. 1000 znaków (800-1200) -- Wykorzystaj szczegóły ze strony produktu: skład zestawu, materiały, wymiary, kolory, przeznaczenie -- Każdy akapit/punkt powinien wnosić NOWĄ informację — NIE powtarzaj tych samych elementów' - : '- Napisz opis o długości ok. 1000 znaków (800-1200) — jeśli brak szczegółów, opisz ogólnie zastosowanie i grupę docelową -- Opisuj TYLKO to co wynika z oryginalnej nazwy — nie wymyślaj konkretnych parametrów'; - - $prompt = 'Napisz zoptymalizowany opis produktu dla Google Merchant Center. + return 'Napisz zoptymalizowany opis produktu dla Google Merchant Center. WYMAGANIA: -' . $length_guide . ' +{{length_guide}} - Najważniejsze info na początku (pierwsze 160 znaków widoczne w wynikach) - Rzeczowo opisz: co to jest, z czego się składa, do czego służy, dla kogo - Ton neutralny, informacyjny — jak w specyfikacji produktowej @@ -308,9 +626,95 @@ BEZWZGLĘDNY ZAKAZ (odrzucenie przez Google): - Opisy akcesoriów/produktów nie wchodzących w skład oferty - Cechy wymyślone — opisuj TYLKO to co wynika z nazwy lub treści strony produktu -' . $context_text . $keyword_planner_text . ' +{{context}}{{keyword_terms}} Zwróć TYLKO opis w formacie HTML (używając dozwolonych tagów), bez cudzysłowów, bez wyjaśnień.'; + } + + static public function suggest_title( $context ) + { + $context_text = self::build_context_text( $context ); + $keyword_planner_text = self::build_keyword_planner_text( + $context, + 'Użyj tych fraz WYBIÓRCZO i naturalnie (bez upychania słów kluczowych), tylko jeśli pasują do produktu.', + 8 + ); + + $prompt = self::get_default_title_prompt_template(); + + $prompt_template = self::get_prompt_template( 'ai_prompt_title_template', $prompt ); + + if ( strpos( $prompt_template, '{{context}}' ) === false ) + { + $prompt_template .= "\n\n{{context}}"; + } + if ( strpos( $prompt_template, '{{keyword_terms}}' ) === false ) + { + $prompt_template .= "{{keyword_terms}}"; + } + + $prompt = self::expand_prompt_template( $prompt_template, [ + 'context' => $context_text, + 'keyword_terms' => $keyword_planner_text + ] ); + $prompt .= "\n\nWygeneruj 3 różne warianty tytułu (A/B/C). Zwróć WYŁĄCZNIE poprawny JSON: {\"titles\":[\"wariant A\",\"wariant B\",\"wariant C\"]}."; + + $result = self::call_api( self::$system_prompt, $prompt, 1200 ); + if ( ( $result['status'] ?? '' ) !== 'ok' ) + { + return $result; + } + + $candidates = self::parse_title_candidates( (string) ( $result['suggestion'] ?? '' ) ); + $best_title = self::pick_best_title_candidate( $candidates, $context ); + if ( $best_title !== '' ) + { + $result['suggestion'] = $best_title; + $result['title_candidates'] = $candidates; + } + + return $result; + } + + static public function suggest_description( $context ) + { + $context_text = self::build_context_text( $context ); + $has_page = !empty( $context['page_content'] ); + $keyword_planner_text = self::build_keyword_planner_text( + $context, + 'W opisie wykorzystuj te frazy naturalnie i wyłącznie gdy realnie pasują do produktu (bez keyword stuffing).', + 12 + ); + + $length_guide = $has_page + ? '- Napisz rozbudowany, szczegółowy opis: ok. 1000 znaków (800-1200) +- Wykorzystaj szczegóły ze strony produktu: skład zestawu, materiały, wymiary, kolory, przeznaczenie +- Każdy akapit/punkt powinien wnosić NOWĄ informację — NIE powtarzaj tych samych elementów' + : '- Napisz opis o długości ok. 1000 znaków (800-1200) — jeśli brak szczegółów, opisz ogólnie zastosowanie i grupę docelową +- Opisuj TYLKO to co wynika z oryginalnej nazwy — nie wymyślaj konkretnych parametrów'; + + $prompt = self::get_default_description_prompt_template(); + + $prompt_template = self::get_prompt_template( 'ai_prompt_description_template', $prompt ); + + if ( strpos( $prompt_template, '{{length_guide}}' ) === false ) + { + $prompt_template .= "\n\n{{length_guide}}"; + } + if ( strpos( $prompt_template, '{{context}}' ) === false ) + { + $prompt_template .= "\n\n{{context}}"; + } + if ( strpos( $prompt_template, '{{keyword_terms}}' ) === false ) + { + $prompt_template .= "{{keyword_terms}}"; + } + + $prompt = self::expand_prompt_template( $prompt_template, [ + 'length_guide' => $length_guide, + 'context' => $context_text, + 'keyword_terms' => $keyword_planner_text + ] ); $tokens = $has_page ? 1500 : 1000; return self::call_api( self::$system_prompt, $prompt, $tokens ); diff --git a/index.php b/index.php index ea4240d..7733fb9 100644 --- a/index.php +++ b/index.php @@ -47,6 +47,8 @@ $route_aliases = [ 'settings/save_google_ads' => ['users', 'settings_save_google_ads'], 'settings/save_openai' => ['users', 'settings_save_openai'], 'settings/save_claude' => ['users', 'settings_save_claude'], + 'settings/save_gemini' => ['users', 'settings_save_gemini'], + 'settings/save_ai_prompts' => ['users', 'settings_save_ai_prompts'], 'products/ai_suggest' => ['products', 'ai_suggest'], 'clients/save' => ['clients', 'save'], 'logs' => ['logs', 'main_view'], diff --git a/layout/style.css b/layout/style.css index dcae6c8..09dcdb1 100644 --- a/layout/style.css +++ b/layout/style.css @@ -1 +1 @@ -*{box-sizing:border-box}body{font-family:"Roboto",sans-serif;margin:0;padding:0;font-size:14px;color:#4e5e6a;background:#f4f6f9;max-width:100vw;overflow-x:hidden}.hide{display:none}small{font-size:.75em}.text-right{text-align:right}.text-bold{font-weight:700 !important}.nowrap{white-space:nowrap}body.unlogged{background:#f4f6f9;margin:0;padding:0}.login-container{display:flex;min-height:100vh}.login-brand{flex:0 0 45%;background:linear-gradient(135deg, #1E2A3A 0%, #2C3E57 50%, #6690F4 100%);display:flex;align-items:center;justify-content:center;padding:60px;position:relative;overflow:hidden}.login-brand::before{content:"";position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle, rgba(102, 144, 244, 0.15) 0%, transparent 70%);border-radius:50%}.login-brand .brand-content{position:relative;z-index:1;color:#fff;max-width:400px}.login-brand .brand-logo{font-size:48px;font-weight:300;margin-bottom:20px;letter-spacing:-1px}.login-brand .brand-logo strong{font-weight:700}.login-brand .brand-tagline{font-size:18px;opacity:.85;line-height:1.6;margin-bottom:50px}.login-brand .brand-features .feature{display:flex;align-items:center;gap:15px;margin-bottom:20px;opacity:.8}.login-brand .brand-features .feature i{font-size:20px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);border-radius:10px}.login-brand .brand-features .feature span{font-size:15px}.login-form-wrapper{flex:1;display:flex;align-items:center;justify-content:center;padding:60px;background:#fff}.login-box{width:100%;max-width:420px}.login-box .login-header{margin-bottom:35px}.login-box .login-header h1{font-size:28px;font-weight:700;color:#2d3748;margin:0 0 8px}.login-box .login-header p{color:#718096;font-size:15px;margin:0}.login-box .form-group{margin-bottom:20px}.login-box .form-group label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.login-box .input-with-icon{position:relative}.login-box .input-with-icon i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px}.login-box .input-with-icon .form-control{padding-left:42px}.login-box .form-control{width:100%;height:46px;border:2px solid #e2e8f0;border-radius:8px;padding:0 14px;font-size:14px;font-family:"Roboto",sans-serif;color:#2d3748;transition:border-color .3s,box-shadow .3s}.login-box .form-control::-moz-placeholder{color:#cbd5e0}.login-box .form-control::placeholder{color:#cbd5e0}.login-box .form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.15);outline:none}.login-box .form-error{color:#c00;font-size:12px;margin-top:4px}.login-box .checkbox-group .checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:#718096;font-weight:400}.login-box .checkbox-group .checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:#6690f4}.login-box .btn-login{width:100%;height:48px;font-size:15px;font-weight:600;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:8px}.login-box .btn-login.disabled{opacity:.7;pointer-events:none}.login-box .alert{display:none;padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:20px}.login-box .alert.alert-danger{background:#fff5f5;color:#c00;border:1px solid #fed7d7}.login-box .alert.alert-success{background:#f0fff4;color:#276749;border:1px solid #c6f6d5}@media(max-width: 768px){.login-brand{display:none}.login-form-wrapper{padding:30px 20px}}body.logged{display:flex;min-height:100vh;background:#f4f6f9}.sidebar{width:260px;min-height:100vh;background:#1e2a3a;position:fixed;top:0;left:0;z-index:1000;display:flex;flex-direction:column;transition:width .3s ease;overflow:hidden}.sidebar.collapsed{width:70px}.sidebar.collapsed .sidebar-header{padding:16px 0;justify-content:center}.sidebar.collapsed .sidebar-header .sidebar-logo{display:none}.sidebar.collapsed .sidebar-header .sidebar-toggle i{transform:rotate(180deg)}.sidebar.collapsed .sidebar-nav ul li a{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li a span{display:none}.sidebar.collapsed .sidebar-nav ul li a i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label span{display:none}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-footer .sidebar-user{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-user .user-info{display:none}.sidebar.collapsed .sidebar-footer .sidebar-logout{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-logout span{display:none}.sidebar.collapsed .nav-divider{margin:8px 15px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.sidebar-header .sidebar-logo a{color:#fff;text-decoration:none;font-size:24px;font-weight:300;letter-spacing:-0.5px}.sidebar-header .sidebar-logo a strong{font-weight:700}.sidebar-header .sidebar-toggle{background:none;border:none;color:#a8b7c7;cursor:pointer;padding:6px;border-radius:6px;transition:all .3s}.sidebar-header .sidebar-toggle:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar-header .sidebar-toggle i{transition:transform .3s}.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}.sidebar-nav ul{list-style:none;margin:0;padding:0}.sidebar-nav ul li.nav-group{margin-bottom:4px}.sidebar-nav ul li.nav-group .nav-group-label{display:flex;align-items:center;padding:11px 20px;color:#d5deea;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li.nav-group .nav-group-label i{width:20px;text-align:center;margin-right:12px;font-size:14px;color:#b6c4d3}.sidebar-nav ul li.nav-group .nav-submenu{margin:0;padding:0;list-style:none}.sidebar-nav ul li.nav-group .nav-submenu li a{padding-left:44px}.sidebar-nav ul li.nav-group.active>.nav-group-label{color:#fff;background:rgba(102,144,244,.12);border-left-color:#6690f4}.sidebar-nav ul li.nav-group.active>.nav-group-label i{color:#6690f4}.sidebar-nav ul li.nav-divider{height:1px;background:hsla(0,0%,100%,.08);margin:8px 20px}.sidebar-nav ul li a{display:flex;align-items:center;padding:11px 20px;color:#a8b7c7;text-decoration:none;font-size:14px;transition:all .2s;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li a i{width:20px;text-align:center;margin-right:12px;font-size:15px}.sidebar-nav ul li a:hover{background:#263548;color:#fff}.sidebar-nav ul li.active>a{background:rgba(102,144,244,.15);color:#fff;border-left-color:#6690f4}.sidebar-nav ul li.active>a i{color:#6690f4}.badge-alerts-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:8px;border-radius:50%;font-size:11px;font-weight:600;line-height:1;background:#fff;color:#6690f4}.sidebar-footer{padding:16px 20px;border-top:1px solid hsla(0,0%,100%,.08)}.sidebar-footer .sidebar-user{display:flex;align-items:center;gap:10px;margin-bottom:12px}.sidebar-footer .sidebar-user .user-avatar{width:34px;height:34px;border-radius:50%;background:rgba(102,144,244,.2);display:flex;align-items:center;justify-content:center;color:#6690f4;font-size:14px;flex-shrink:0}.sidebar-footer .sidebar-user .user-info{overflow:hidden}.sidebar-footer .sidebar-user .user-info .user-email{color:#a8b7c7;font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer .sidebar-logout{display:flex;align-items:center;gap:8px;color:#e53e3e;text-decoration:none;font-size:13px;padding:8px 10px;border-radius:6px;transition:all .2s}.sidebar-footer .sidebar-logout i{font-size:14px}.sidebar-footer .sidebar-logout:hover{background:rgba(229,62,62,.1)}.main-wrapper{margin-left:260px;flex:1;min-height:100vh;transition:margin-left .3s ease;display:flex;flex-direction:column}.main-wrapper.expanded{margin-left:70px}.topbar{height:56px;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;padding:0 25px;position:sticky;top:0;z-index:500}.topbar .topbar-toggle{background:none;border:none;color:#4e5e6a;cursor:pointer;padding:8px 10px;border-radius:6px;font-size:16px;margin-right:15px;transition:all .2s}.topbar .topbar-toggle:hover{background:#f4f6f9}.topbar .topbar-breadcrumb{font-size:16px;font-weight:600;color:#2d3748}.content{flex:1;padding:25px}.app-alert{background:#ebf8ff;border:1px solid #bee3f8;color:#2b6cb0;padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:14px}.btn{padding:10px 20px;transition:all .2s ease;color:#fff;border:0;border-radius:6px;cursor:pointer;display:inline-flex;text-decoration:none;gap:6px;justify-content:center;align-items:center;font-size:14px;font-family:"Roboto",sans-serif;font-weight:500}.btn.btn_small,.btn.btn-xs,.btn.btn-sm{padding:5px 10px;font-size:12px}.btn.btn_small i,.btn.btn-xs i,.btn.btn-sm i{font-size:11px}.btn.btn-success{background:#57b951}.btn.btn-success:hover{background:#4a9c3b}.btn.btn-primary{background:#6690f4}.btn.btn-primary:hover{background:#3164db}.btn.btn-danger{background:#c00}.btn.btn-danger:hover{background:#b30000}.btn.disabled{opacity:.6;pointer-events:none}.form-control{border:1px solid #e2e8f0;border-radius:6px;height:38px;width:100%;padding:6px 12px;font-family:"Roboto",sans-serif;font-size:14px;color:#2d3748;transition:border-color .2s,box-shadow .2s}.form-control option{padding:5px}.form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:none}input[type=checkbox]{border:1px solid #e2e8f0}table{border-collapse:collapse;font-size:13px}.table{width:100%}.table th,.table td{border:1px solid #e2e8f0;padding:8px 10px}.table th{background:#f7fafc;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:#718096}.table td.center{text-align:center}.table td.left{text-align:left}.table.table-sm td{padding:5px !important}.table input.form-control{font-size:13px;height:32px}.card{background:#fff;padding:20px;border-radius:8px;color:#2d3748;font-size:14px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.card.mb25{margin-bottom:20px}.card .card-header{font-weight:600;font-size:15px}.card .card-body{padding-top:12px}.card .card-body table th,.card .card-body table td{font-size:13px}.card .card-body table th.bold,.card .card-body table td.bold{font-weight:600}.card .card-body table th.text-right,.card .card-body table td.text-right{text-align:right}.card .card-body table th.text-center,.card .card-body table td.text-center{text-align:center}.action_menu{display:flex;margin-bottom:20px;gap:12px}.action_menu .btn{padding:8px 16px}.action_menu .btn.btn_add{background:#57b951}.action_menu .btn.btn_add:hover{background:#4a9c3b}.action_menu .btn.btn_cancel{background:#c00}.action_menu .btn.btn_cancel:hover{background:#b30000}.settings-tabs{display:flex;gap:8px;margin-bottom:18px}.settings-tabs .settings-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;text-decoration:none;color:#6b7a89;background:#e9eef5;border:1px solid #d8e0ea;font-size:13px;font-weight:600;transition:all .2s}.settings-tabs .settings-tab:hover{color:#2d3748;background:#dde6f2}.settings-tabs .settings-tab.active{color:#fff;background:#6690f4;border-color:#6690f4}.settings-card{background:#fff;border-radius:10px;padding:28px;box-shadow:0 1px 4px rgba(0,0,0,.06)}.settings-card .settings-card-header{display:flex;align-items:center;gap:14px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #e2e8f0}.settings-card .settings-card-header .settings-card-icon{width:44px;height:44px;border-radius:10px;background:rgb(225.706097561,233.7475609756,252.893902439);color:#6690f4;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.settings-card .settings-card-header h3{margin:0;font-size:17px;font-weight:600;color:#2d3748}.settings-card .settings-card-header small{color:#8899a6;font-size:13px}.settings-card .settings-field{margin-bottom:18px}.settings-card .settings-field label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.settings-card .settings-input-wrap{position:relative}.settings-card .settings-input-wrap .settings-input-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px;pointer-events:none}.settings-card .settings-input-wrap .form-control{padding-left:38px}.settings-card .settings-input-wrap .settings-toggle-pw{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;color:#a0aec0;cursor:pointer;padding:6px 10px;font-size:14px;transition:color .2s}.settings-card .settings-input-wrap .settings-toggle-pw:hover{color:#6690f4}.settings-card .settings-field .settings-toggle-label{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;font-weight:500;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:0;width:100%}.settings-card .settings-field .settings-toggle-label .settings-toggle-text{flex:1 1 auto;min-width:0;line-height:1.35}.settings-card .settings-toggle-checkbox{display:none}.settings-card .settings-toggle-checkbox+.settings-toggle-switch{display:inline-block;position:relative;width:44px;height:24px;background:#ccc;border-radius:12px;transition:background .2s;flex-shrink:0}.settings-card .settings-toggle-checkbox+.settings-toggle-switch::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .2s}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch{background:#22c55e}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch::after{transform:translateX(20px)}.settings-card .settings-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}@media(max-width: 768px){.settings-card .settings-fields-grid{grid-template-columns:1fr}}.settings-card .settings-alert-error{display:flex;align-items:center;gap:10px;background:#fff5f5;color:#c00;border:1px solid #fed7d7;border-radius:8px;padding:12px 16px;margin-bottom:20px;font-size:13px}.settings-card .settings-alert-error i{font-size:16px;flex-shrink:0}.clients-page .clients-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.clients-page .clients-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.clients-page .clients-header h2 i{color:#6690f4;margin-right:8px}.clients-page .clients-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.clients-page .clients-table-wrap .table{margin:0}.clients-page .clients-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:14px 20px}.clients-page .clients-table-wrap .table tbody td{padding:14px 20px;vertical-align:middle;border-bottom:1px solid #f1f5f9}.clients-page .clients-table-wrap .table tbody tr:hover{background:#f8fafc}.clients-page .clients-table-wrap .table .client-id{color:#8899a6;font-size:13px;font-weight:600}.clients-page .clients-table-wrap .table .client-name{font-weight:600;color:#2d3748}.clients-page .badge-id{display:inline-block;background:#eef2ff;color:#6690f4;font-size:13px;font-weight:600;padding:4px 10px;border-radius:6px;font-family:monospace}.clients-page .actions-cell{text-align:center;white-space:nowrap}.clients-page .btn-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s;margin:0 2px}.clients-page .btn-icon.btn-icon-edit{background:#eef2ff;color:#6690f4}.clients-page .btn-icon.btn-icon-edit:hover{background:#6690f4;color:#fff}.clients-page .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.clients-page .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.clients-page .btn-icon.btn-icon-sync{background:#f0fdf4;color:#16a34a}.clients-page .btn-icon.btn-icon-sync:hover{background:#16a34a;color:#fff}.clients-page .btn-icon.btn-icon-sync:disabled{opacity:.7;cursor:wait}.clients-page .btn-icon.btn-icon-sync.is-queued{background:#fef3c7;color:#d97706}.clients-page .client-sync-bars{display:flex;flex-direction:column;gap:4px}.clients-page .client-sync-row{display:flex;align-items:center;gap:4px}.clients-page .client-sync-label{font-size:11px;font-weight:600;color:#8899a6;width:18px;flex-shrink:0}.clients-page .client-sync-track{flex:1;height:6px;border-radius:999px;background:#e9eef5;overflow:hidden}.clients-page .client-sync-fill{height:100%;border-radius:999px;background:#cbd5e0;transition:width .4s ease}.clients-page .client-sync-fill.is-active{background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.clients-page .client-sync-fill.is-done{background:#57b951}.clients-page .client-sync-pct{font-size:11px;font-weight:600;color:#8899a6;width:32px;text-align:right;flex-shrink:0}.clients-page .empty-state{text-align:center;padding:50px 20px !important;color:#a0aec0}.clients-page .empty-state i{font-size:40px;margin-bottom:12px;display:block}.clients-page .empty-state p{margin:0;font-size:15px}.btn-secondary{background:#e2e8f0;color:#2d3748;border:none;padding:8px 18px;border-radius:6px;font-size:14px;cursor:pointer;transition:background .2s}.btn-secondary:hover{background:#cbd5e0}.campaigns-page{max-width:100%;overflow-x:hidden;width:100%}.campaigns-page .campaigns-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.campaigns-page .campaigns-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.campaigns-page .campaigns-header h2 i{color:#6690f4;margin-right:8px}.campaigns-page .campaigns-filters{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:20px}.campaigns-page .campaigns-filters .filter-group{flex:1;min-width:0}.campaigns-page .campaigns-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.campaigns-page .campaigns-filters .filter-group label i{margin-right:4px}.campaigns-page .campaigns-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.campaigns-page .campaigns-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .filter-group .filter-with-action{display:flex;align-items:center;gap:8px}.campaigns-page .campaigns-filters .filter-group .filter-with-action .form-control{flex:1}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon{flex-shrink:0;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.campaigns-page .campaigns-filters .filter-group-campaign-multi{flex:2 !important}.campaigns-page .campaigns-filters .campaign-dropdown{flex:1;min-width:0;position:relative}.campaigns-page .campaigns-filters .campaign-dropdown-trigger{width:100%;padding:10px 14px;padding-right:32px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;cursor:pointer;display:flex;align-items:center;transition:border-color .2s;position:relative;min-height:42px;box-sizing:border-box}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text.is-placeholder{color:#8899a6}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-arrow{position:absolute;right:12px;font-size:10px;color:#8899a6;transition:transform .2s}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-trigger{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-arrow{transform:rotate(180deg)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-menu{display:block}.campaigns-page .campaigns-filters .campaign-dropdown-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;max-height:280px;overflow-y:auto;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:4px 0}.campaigns-page .campaigns-filters .campaign-dropdown-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:14px;color:#2d3748;margin:0;transition:background .15s}.campaigns-page .campaigns-filters .campaign-dropdown-item:hover{background:#f8fafc}.campaigns-page .campaigns-filters .campaign-dropdown-item.is-checked{background:#eef2ff}.campaigns-page .campaigns-filters .campaign-dropdown-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;flex-shrink:0;accent-color:#6690f4}.campaigns-page .campaigns-filters .campaign-dropdown-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-list-panel{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);margin-bottom:20px;overflow:hidden}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #e2e8f0;gap:12px}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left{display:flex;align-items:center;gap:8px;font-size:13px;color:#4e5e6a}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left input[type=checkbox]{width:16px;height:16px;cursor:pointer}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin:0}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left .campaigns-selected-count{margin-left:12px;color:#8899a6}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:hover:not(:disabled){background:#c00;color:#fff}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:disabled{opacity:.4;cursor:not-allowed}.campaigns-page .campaigns-list-panel .campaigns-list-items{display:flex;flex-wrap:wrap;gap:0;padding:8px 8px;max-height:220px;overflow-y:auto}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:2px;border-radius:6px;font-size:13px;color:#2d3748;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .15s}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item:hover{background:#f0f4ff}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item input[type=checkbox]{width:15px;height:15px;cursor:pointer;flex-shrink:0}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item .campaigns-list-item-name{white-space:nowrap}.campaigns-page .campaigns-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:20px;min-height:350px;overflow:hidden}.campaigns-page .campaigns-chart-wrap #container{max-width:100%}.campaigns-page .campaigns-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none;max-width:100%}.campaigns-page .campaigns-table-wrap::-webkit-scrollbar{display:none}.campaigns-page .campaigns-table-wrap .table{margin:0;width:100% !important}.campaigns-page .campaigns-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:12px 16px;white-space:nowrap}.campaigns-page .campaigns-table-wrap .table tbody td{padding:10px 16px;vertical-align:middle;border-bottom:1px solid #f1f5f9;font-size:13px}.campaigns-page .campaigns-table-wrap .table tbody tr:hover{background:#f8fafc}.campaigns-page .campaigns-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.campaigns-page .campaigns-table-wrap .dt-layout-row:first-child{display:none}.campaigns-page .campaigns-table-wrap .dt-info{font-size:13px;color:#8899a6}.campaigns-page .campaigns-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:-moz-fit-content;width:fit-content;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.campaigns-page .campaigns-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.campaigns-page .delete-history-entry{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .delete-history-entry:hover{background:#c00;color:#fff}.products-page .products-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.products-page .products-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.products-page .products-header h2 i{color:#6690f4;margin-right:8px}.products-page .products-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:20px;margin-bottom:16px}.products-page .products-filters .filter-group{flex:1 1 220px;min-width:0}.products-page .products-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.products-page .products-filters .filter-group label i{margin-right:4px}.products-page .products-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.products-page .products-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.products-page .products-filters .filter-group select.form-control{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.products-page .products-filters .filter-group.filter-group-client,.products-page .products-filters .filter-group.filter-group-campaign,.products-page .products-filters .filter-group.filter-group-ad-group{flex:1 1 260px}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions{display:flex;gap:8px;align-items:center}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions .form-control{flex:1 1 auto;min-width:0}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group{min-width:38px;height:38px;border-radius:6px;margin:0;background:#dc3545;border:1px solid #dc3545;color:#fff;cursor:pointer}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:hover:not(:disabled){background:#bb2d3b;border-color:#bb2d3b;color:#fff}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:disabled{opacity:.45;cursor:default;background:#dc3545;border-color:#dc3545;color:#fff}.products-page .products-filters .filter-group.filter-group-roas{flex:0 0 200px}.products-page .products-filters .filter-group.filter-group-columns{flex:0 0 240px}.products-page .products-scope-alerts{margin-bottom:12px;border:1px solid #fecaca;background:#fef2f2;border-radius:8px;overflow:hidden}.products-page .products-scope-alerts summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:13px;font-weight:600;color:#991b1b;display:flex;align-items:center;gap:8px}.products-page .products-scope-alerts summary::-webkit-details-marker{display:none}.products-page .products-scope-alerts .products-scope-alerts-list{border-top:1px solid #fecaca;background:#fff;max-height:260px;overflow:auto}.products-page .products-scope-alerts .products-scope-alert-item{padding:10px 12px;border-bottom:1px solid #f1f5f9}.products-page .products-scope-alerts .products-scope-alert-item:last-child{border-bottom:none}.products-page .products-scope-alerts .products-scope-alert-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:11px;color:#64748b}.products-page .products-scope-alerts .products-scope-alert-type{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:#eef2ff;color:#4338ca;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.products-page .products-scope-alerts .products-scope-alert-message{font-size:13px;color:#2d3748;line-height:1.45}.products-page .products-actions{margin-bottom:12px}.products-page .products-actions .btn-danger{padding:7px 14px;font-size:13px;border-radius:6px;border:none;cursor:pointer;transition:all .2s}.products-page .products-actions .btn-danger:disabled{opacity:.4;cursor:default}.products-page .products-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.products-page .products-table-wrap .table{margin:0;width:100% !important}.products-page .products-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:#8899a6;padding:10px 8px;white-space:nowrap}.products-page .products-table-wrap .table tbody td{padding:6px 8px;vertical-align:middle;border-bottom:1px solid #f1f5f9;font-size:12px}.products-page .products-table-wrap .table tbody tr:hover{background:#f8fafc}.products-page .products-table-wrap .table input.min_roas,.products-page .products-table-wrap .table input.form-control-sm,.products-page .products-table-wrap .table select.custom_label_4,.products-page .products-table-wrap .table select.form-control-sm{padding:3px 6px;font-size:12px;border:1px solid #e2e8f0;border-radius:4px;background:#fff}.products-page .products-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.products-page .products-table-wrap .dt-layout-row:first-child{display:none}.products-page .products-table-wrap .dt-info{font-size:13px;color:#8899a6}.products-page .products-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.products-page .products-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.products-page .products-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.products-page .products-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.products-page .products-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.products-page .products-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.products-page .delete-product{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.products-page .delete-product:hover{background:#c00;color:#fff}.products-page .edit-product-title{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#eef2ff;color:#6690f4;transition:all .2s}.products-page .edit-product-title:hover{background:#6690f4;color:#fff}.desc-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.desc-header label{margin:0}.desc-tabs{display:flex;gap:2px;background:#eee;border-radius:6px;padding:2px}.desc-tab{border:none;background:rgba(0,0,0,0);padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;color:#666;transition:all .15s ease}.desc-tab i{margin-right:4px}.desc-tab.active{background:#fff;color:#333;box-shadow:0 1px 3px rgba(0,0,0,.12);font-weight:500}.desc-tab:hover:not(.active){color:#333}.desc-wrap{flex:1;min-width:0}.desc-preview ul,.desc-preview ol{margin:6px 0;padding-left:20px}.desc-preview li{margin-bottom:3px}.desc-preview b,.desc-preview strong{font-weight:600}.input-with-ai{display:flex;gap:8px;align-items:flex-start}.input-with-ai .form-control{flex:1}.btn-ai-suggest{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:8px;border:1px solid #c084fc;background:linear-gradient(135deg, #F3E8FF, #EDE9FE);color:#7c3aed;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;min-height:38px}.btn-ai-suggest i{font-size:13px}.btn-ai-suggest:hover{background:linear-gradient(135deg, #7C3AED, #6D28D9);color:#fff;border-color:#6d28d9}.btn-ai-suggest:disabled{opacity:.7;cursor:wait}.btn-ai-suggest.btn-ai-claude{border-color:#d97706;background:linear-gradient(135deg, #FEF3C7, #FDE68A);color:#92400e}.btn-ai-suggest.btn-ai-claude:hover{background:linear-gradient(135deg, #D97706, #B45309);color:#fff;border-color:#b45309}.form_container{background:#fff;padding:25px;max-width:1300px;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.form_container.full{max-width:100%}.form_container .form_group{margin-bottom:12px;display:flex}.form_container .form_group>.label{width:300px;display:inline-flex;align-items:flex-start;justify-content:right;padding-right:12px}.form_container .form_group .input{width:calc(100% - 300px)}.default_popup{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);display:none;z-index:2000}.default_popup .popup_content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);background:#fff;padding:25px;border-radius:10px;max-width:1140px;width:95%;box-shadow:0 20px 60px rgba(0,0,0,.15)}.default_popup .popup_content .popup_header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.default_popup .popup_content .popup_header .title{font-size:18px;font-weight:600}.default_popup .popup_content .close{cursor:pointer;color:#a0aec0;font-size:18px;padding:4px}.default_popup .popup_content .close:hover{color:#c00}.dt-layout-table{margin-bottom:20px}.pagination button{border:1px solid #e2e8f0;background:#fff;display:inline-flex;height:32px;width:32px;align-items:center;justify-content:center;margin:0 2px;border-radius:4px;transition:all .2s;cursor:pointer}.pagination button:hover{background:#f4f6f9;border-color:#6690f4}table#products a{color:inherit;text-decoration:none}table#products .table-product-title{display:flex;justify-content:space-between}table#products .edit-product-title{display:flex;height:25px;align-items:center;justify-content:center;width:25px;cursor:pointer;background:#fff;border:1px solid #cbd5e0;color:#cbd5e0;border-radius:4px}table#products .edit-product-title:hover{background:#cbd5e0;color:#fff}table#products a.custom_name{color:#57b951 !important}.product-history-page .product-history-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.product-history-page .product-history-meta span{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:600;color:#4e5e6a;background:#eef2ff;border:1px solid #d9e2ff}.product-history-page .product-history-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:16px}.product-history-page .chart-with-form{display:flex;gap:20px;align-items:flex-start}.product-history-page .chart-area{flex:1 1 auto;min-width:0}.product-history-page .product-history-chart{min-height:360px}.product-history-page .comment-form{width:340px;flex:0 0 340px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px}.product-history-page .comment-form .form-group{margin-bottom:12px}.product-history-page .comment-form label{display:block;font-weight:600;margin-bottom:6px;font-size:13px;color:#52606d}.product-history-page .comment-form input[type=date],.product-history-page .comment-form textarea{width:100%;border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px;font-size:14px;font-family:"Roboto",sans-serif;background:#fff}.product-history-page .comment-form input[type=date]:focus,.product-history-page .comment-form textarea:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.product-history-page .comment-form textarea{min-height:110px;resize:vertical}.product-history-page .comment-form .btn{width:100%;justify-content:center;padding:10px 16px}.product-history-page .comment-form .btn[disabled]{opacity:.6;cursor:not-allowed}.product-history-page .products-table-wrap{overflow-x:auto}.product-history-page .products-table-wrap .table{min-width:980px}.product-history-page .products-table-wrap .comment-cell{display:flex;align-items:center;justify-content:space-between;gap:10px}.product-history-page .products-table-wrap .comment-text{word-break:break-word}.product-history-page .products-table-wrap .delete-comment{color:#c00;text-decoration:none;font-weight:600;white-space:nowrap}.product-history-page .products-table-wrap .delete-comment:hover{text-decoration:underline}.product-history-page .products-table-wrap .dt-paging .pagination .page-item{list-style:none}.cron-status-overview{display:flex;flex-wrap:wrap;gap:10px 20px;margin-bottom:20px;color:#4e5e6a;font-size:13px}.cron-progress-list{margin-bottom:20px}.cron-schedule-list{margin-bottom:20px}.cron-schedule-item{border:1px solid #dfe7f0;background:#f4f8fd;border-radius:8px;padding:9px 12px;margin-bottom:8px}.cron-schedule-item:last-child{margin-bottom:0}.cron-schedule-item strong{display:block;color:#2d3748;font-size:13px;font-weight:700;margin-bottom:2px}.cron-schedule-item small{display:block;color:#678;font-size:12px;line-height:1.35}.cron-progress-item{margin-bottom:14px}.cron-progress-item:last-child{margin-bottom:0}.cron-progress-item .cron-progress-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;font-size:13px}.cron-progress-item .cron-progress-head strong{color:#2d3748;font-weight:600}.cron-progress-item .cron-progress-head span{color:#6b7a89;font-size:12px;font-weight:600;white-space:nowrap}.cron-progress-item small{display:block;margin-top:5px;color:#789;font-size:12px}.cron-progress-bar{width:100%;height:10px;border-radius:999px;background:#e9eef5;overflow:hidden}.cron-progress-bar>span{display:block;height:100%;background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.cron-url-list{margin-bottom:20px}.cron-url-item{border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;padding:10px 12px;margin-bottom:10px}.cron-url-item:last-child{margin-bottom:0}.cron-url-item .cron-url-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}.cron-url-item .cron-url-top strong{color:#2d3748;font-size:13px;font-weight:600}.cron-url-item .cron-url-top small{color:#7a8794;font-size:11px;white-space:nowrap}.cron-url-item code{display:block;background:#eef2f7;border:1px solid #dde4ed;border-radius:6px;padding:6px 8px;color:#2e3b49;font-size:12px;overflow-x:auto}.cron-url-item .cron-url-plan{display:block;color:#6c7b8a;font-size:11px;margin-bottom:6px}@media(max-width: 1200px){.product-history-page .chart-with-form{flex-direction:column}.product-history-page .comment-form{width:100%;flex:1 1 auto}}.jconfirm-box .form-group .select2-container,.adspro-dialog-box .form-group .select2-container{width:100% !important;margin-top:8px}.jconfirm-box .select2-container--default .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;min-height:42px;display:flex;align-items:center;padding:4px 12px;box-shadow:none;transition:border-color .2s,box-shadow .2s;font-size:14px}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__rendered,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;line-height:1.4;color:#495057}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__placeholder,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__placeholder{color:#cbd5e0}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__arrow,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%;right:8px}.jconfirm-box .select2-container--default.select2-container--focus .select2-selection--single,.jconfirm-box .select2-container--default .select2-selection--single:hover,.adspro-dialog-box .select2-container--default.select2-container--focus .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single:hover{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:0}.jconfirm-box .select2-container .select2-dropdown,.adspro-dialog-box .select2-container .select2-dropdown{border-color:#e2e8f0;border-radius:0 0 6px 6px;font-size:14px}.jconfirm-box .select2-container .select2-search--dropdown .select2-search__field,.adspro-dialog-box .select2-container .select2-search--dropdown .select2-search__field{padding:6px 10px;border-radius:4px;border:1px solid #e2e8f0;font-size:14px}.jconfirm-box .select2-container--default .select2-results__option--highlighted[aria-selected],.adspro-dialog-box .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#6690f4;color:#fff}@media(max-width: 992px){.sidebar{transform:translateX(-100%)}.sidebar.mobile-open{transform:translateX(0)}.main-wrapper{margin-left:0 !important}}.campaign-terms-wrap{display:flex;flex-direction:column;gap:20px;margin-top:20px}.campaign-terms-page{max-width:100%;overflow:hidden}.campaign-terms-page .campaigns-filters{flex-wrap:wrap}.campaign-terms-page .campaigns-filters .filter-group{min-width:220px}.campaign-terms-page .campaigns-filters .filter-group.terms-columns-group{min-width:280px}.campaign-terms-page .terms-card-toggle{margin-left:auto;width:28px;height:28px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#475569;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-card-toggle:hover{background:#f8fafc;border-color:#cbd5e1}.campaign-terms-page .terms-adgroups-card.is-collapsed .campaigns-extra-table-wrap{display:none}.campaign-terms-page .terms-search-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-search-toolbar label{font-size:12px;font-weight:600;color:#475569;display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap}.campaign-terms-page .terms-search-toolbar .terms-search-toolbar-label{min-width:86px}.campaign-terms-page .terms-search-toolbar #terms_min_clicks_all,.campaign-terms-page .terms-search-toolbar #terms_max_clicks_all{width:160px;height:32px}.campaign-terms-page .terms-search-toolbar #terms_min_conversions_all,.campaign-terms-page .terms-search-toolbar #terms_max_conversions_all{width:130px;max-width:130px}.campaign-terms-page .terms-search-selected-label{margin:0;font-size:12px;color:#475569;font-weight:600;white-space:nowrap}.campaign-terms-page .terms-ai-analyze-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-ai-analyze-btn:hover{background:#dbeafe;border-color:#93c5fd}.campaign-terms-page .terms-ai-analyze-btn:disabled{opacity:.6;cursor:wait}.campaign-terms-page .terms-negative-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-negative-bulk-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #fecaca;background:#fef2f2;color:#dc2626;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-negative-bulk-btn:hover{background:#fee2e2;border-color:#fca5a5}.campaign-terms-page .terms-negative-bulk-btn:disabled{opacity:.5;cursor:not-allowed}.campaign-terms-page table.campaigns-extra-table>thead>tr>th{position:sticky;top:0;z-index:2;background-color:#111827 !important;color:#e5e7eb !important;border-bottom:1px solid #0b1220 !important;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 12px;white-space:nowrap}.campaign-terms-page #terms_search_table thead th .dt-column-order,.campaign-terms-page #terms_negative_table thead th .dt-column-order{display:none !important}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc{cursor:pointer;padding-right:34px;overflow:hidden}.campaign-terms-page #terms_search_table thead th .dt-column-title,.campaign-terms-page #terms_negative_table thead th .dt-column-title{display:block;overflow:hidden;text-overflow:ellipsis;padding-right:2px}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc::after{content:"↕";position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:999px;font-size:12px;font-weight:700;line-height:16px;text-align:center;color:#e5e7eb;background:#374151}.campaign-terms-page #terms_search_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=ascending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=ascending]::after{content:"▲";color:#fff;background:#2563eb}.campaign-terms-page #terms_search_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=descending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=descending]::after{content:"▼";color:#fff;background:#2563eb}.campaign-terms-page #terms_negative_select_all,.campaign-terms-page .terms-negative-select-row,.campaign-terms-page #terms_search_select_all,.campaign-terms-page .terms-search-select-row{width:14px;height:14px;cursor:pointer}.campaign-terms-page .dt-layout-row:first-child{display:none}.campaign-terms-page .dt-layout-row{padding:10px 12px;margin:0 !important;border-top:1px solid #f1f5f9}.campaign-terms-page .dt-info{font-size:12px;color:#64748b}.campaign-terms-page .dt-paging .pagination{margin:0;padding:0;list-style:none !important;display:flex;align-items:center;gap:6px}.campaign-terms-page .dt-paging .pagination .page-item{list-style:none !important}.campaign-terms-page .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:-moz-fit-content;width:fit-content;height:32px;padding:0 12px;border-radius:6px;font-size:12px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;text-decoration:none;line-height:1;white-space:nowrap}.campaign-terms-page .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.previous .page-link,.campaign-terms-page .dt-paging .pagination .page-item.next .page-link{min-width:72px}.campaign-terms-page .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.terms-columns-box{display:flex;flex-direction:column;gap:6px}.terms-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.terms-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.terms-columns-control summary::-webkit-details-marker{display:none}.terms-columns-control summary::after{content:"▼";float:right;font-size:10px;color:#64748b;margin-top:2px}.terms-columns-control[open] summary::after{content:"▲"}.terms-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:180px;overflow-y:auto}.terms-columns-list .terms-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.terms-columns-list .terms-col-item:last-child{margin-bottom:0}.terms-columns-list .terms-col-item input[type=checkbox]{margin:0}.campaigns-extra-card{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.campaigns-extra-card-title{padding:14px 16px;border-bottom:1px solid #e2e8f0;font-size:13px;font-weight:700;color:#334155;display:flex;align-items:center;gap:8px}.campaigns-extra-card-title .terms-card-title-label{display:inline-flex;align-items:center;gap:8px}.campaigns-extra-table-wrap{overflow:auto}.campaigns-extra-table{margin:0;width:100%;table-layout:fixed}.campaigns-extra-table tbody td{padding:9px 12px;border-bottom:1px solid #f1f5f9;font-size:13px;color:#334155;vertical-align:middle;white-space:nowrap}.campaigns-extra-table td.num-cell{text-align:right;white-space:nowrap}.campaigns-extra-table td.text-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table th.terms-negative-select-cell,.campaigns-extra-table td.terms-negative-select-cell,.campaigns-extra-table th.terms-search-select-cell,.campaigns-extra-table td.terms-search-select-cell{text-align:center}.campaigns-extra-table th.phrase-nowrap,.campaigns-extra-table td.phrase-nowrap{white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table .terms-add-negative-btn,.campaigns-extra-table .terms-remove-negative-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;cursor:pointer;transition:all .2s}.campaigns-extra-table .terms-add-negative-btn{border:1px solid #e2e8f0;background:#eef2ff;color:#3b82f6}.campaigns-extra-table .terms-add-negative-btn:hover{background:#3b82f6;color:#fff;border-color:#3b82f6}.campaigns-extra-table .terms-remove-negative-btn{border:1px solid #fecaca;background:#fef2f2;color:#dc2626}.campaigns-extra-table .terms-remove-negative-btn:hover{background:#dc2626;color:#fff;border-color:#dc2626}.campaigns-extra-table tbody tr:hover{background:#f8fafc}.campaigns-extra-table tbody tr.term-is-negative td{color:#dc2626}.campaigns-extra-table tbody tr.term-is-negative:hover{background:#fef2f2}.campaigns-empty-row{text-align:center;color:#94a3b8 !important;font-style:italic}.terms-ai-modal-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-ai-modal-toolbar label{font-size:12px;font-weight:600;color:#334155;margin:0}.terms-ai-modal-toolbar .form-control{width:200px;height:32px}.terms-ai-summary{font-size:12px;color:#64748b;margin-bottom:10px}.terms-ai-results-wrap{border:1px solid #e2e8f0;border-radius:8px;max-height:420px;overflow:auto}.terms-ai-results-table{width:100%;border-collapse:collapse;font-size:12px}.terms-ai-results-table th,.terms-ai-results-table td{border-bottom:1px solid #eef2f7;padding:8px;vertical-align:middle}.terms-ai-results-table th{position:sticky;top:0;background:#f8fafc;color:#334155;font-weight:700}.terms-ai-results-table td.term-col{min-width:260px;max-width:380px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.terms-ai-results-table td.reason-col{min-width:320px}.terms-ai-action-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.terms-ai-action-badge.action-exclude{background:#fee2e2;color:#b91c1c}.terms-ai-action-badge.action-keep{background:#dcfce7;color:#166534}.products-page .products-filters .filter-group.filter-group-columns{min-width:240px}.products-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.products-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.products-columns-control summary::-webkit-details-marker{display:none}.products-columns-control summary::after{content:"▼";float:right;font-size:10px;color:#64748b;margin-top:2px}.products-columns-control[open] summary::after{content:"▲"}.products-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:220px;overflow-y:auto}.products-columns-list .products-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.products-columns-list .products-col-item:last-child{margin-bottom:0}.products-columns-list .products-col-item input[type=checkbox]{margin:0}#products th:last-child,#products td:last-child{white-space:nowrap}#products .products-row-actions{display:inline-flex;align-items:center;gap:4px}#products .products-row-actions .btn{width:38px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:4px !important}#products .products-row-actions .btn i{line-height:1}.products-page table#products>thead>tr>th{position:sticky;top:0;z-index:2;background-color:#111827 !important;color:#e5e7eb !important;border-bottom:1px solid #0b1220 !important;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 12px;white-space:nowrap}.products-page #products thead th .dt-column-order{display:none !important}.products-page #products thead th.dt-orderable-asc,.products-page #products thead th.dt-orderable-desc{cursor:pointer;padding-right:34px;overflow:hidden}.products-page #products thead th .dt-column-title{display:block;overflow:hidden;text-overflow:ellipsis;padding-right:2px}.products-page #products thead th.dt-orderable-asc::after,.products-page #products thead th.dt-orderable-desc::after{content:"↕";position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:999px;font-size:12px;font-weight:700;line-height:16px;text-align:center;color:#e5e7eb;background:#374151}.products-page #products thead th.dt-ordering-asc::after,.products-page #products thead th[aria-sort=ascending]::after{content:"▲";color:#fff;background:#2563eb}.products-page #products thead th.dt-ordering-desc::after,.products-page #products thead th[aria-sort=descending]::after{content:"▼";color:#fff;background:#2563eb}.logs-page .logs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.logs-page .logs-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.logs-page .logs-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:16px}.logs-page .logs-filters .filter-group{flex:1 1 160px;min-width:0;max-width:220px}.logs-page .logs-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.logs-page .logs-filters .filter-group .form-control{width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.logs-page .logs-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.logs-page .logs-filters .filter-group select.form-control{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.logs-page .logs-filters .filter-group.filter-group-buttons{flex:0 0 auto;display:flex;gap:6px;max-width:none}.logs-page .logs-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.logs-page .logs-table-wrap .table{margin:0}.logs-page .logs-table-wrap .table thead th{background:#f0f4fa;border-bottom:2px solid #e2e8f0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:12px 14px;white-space:nowrap}.logs-page .logs-table-wrap .table tbody td{padding:10px 14px;font-size:13px;color:#2d3748;vertical-align:middle;border-bottom:1px solid #eef2f7}.logs-page .logs-table-wrap .table tbody tr:hover td{background:#f8fafd}.logs-page .logs-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.logs-page .logs-table-wrap .dt-layout-row:first-child{display:none}.logs-page .logs-table-wrap .dt-info{font-size:13px;color:#8899a6}.logs-page .logs-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.logs-page .logs-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:-moz-fit-content;width:fit-content;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.logs-page .logs-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.logs-page .logs-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.logs-page .logs-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.logs-page .logs-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.logs-page .badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px}.logs-page .badge-success{background:#d1fae5;color:#065f46}.logs-page .badge-danger{background:#fee2e2;color:#991b1b}.logs-page .badge-warning{background:#fef3c7;color:#92400e}/*# sourceMappingURL=style.css.map */ \ No newline at end of file +*{box-sizing:border-box}body{font-family:"Roboto",sans-serif;margin:0;padding:0;font-size:14px;color:#4e5e6a;background:#f4f6f9;max-width:100vw;overflow-x:hidden}.hide{display:none}small{font-size:.75em}.text-right{text-align:right}.text-bold{font-weight:700 !important}.nowrap{white-space:nowrap}body.unlogged{background:#f4f6f9;margin:0;padding:0}.login-container{display:flex;min-height:100vh}.login-brand{flex:0 0 45%;background:linear-gradient(135deg, #1E2A3A 0%, #2C3E57 50%, #6690F4 100%);display:flex;align-items:center;justify-content:center;padding:60px;position:relative;overflow:hidden}.login-brand::before{content:"";position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle, rgba(102, 144, 244, 0.15) 0%, transparent 70%);border-radius:50%}.login-brand .brand-content{position:relative;z-index:1;color:#fff;max-width:400px}.login-brand .brand-logo{font-size:48px;font-weight:300;margin-bottom:20px;letter-spacing:-1px}.login-brand .brand-logo strong{font-weight:700}.login-brand .brand-tagline{font-size:18px;opacity:.85;line-height:1.6;margin-bottom:50px}.login-brand .brand-features .feature{display:flex;align-items:center;gap:15px;margin-bottom:20px;opacity:.8}.login-brand .brand-features .feature i{font-size:20px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);border-radius:10px}.login-brand .brand-features .feature span{font-size:15px}.login-form-wrapper{flex:1;display:flex;align-items:center;justify-content:center;padding:60px;background:#fff}.login-box{width:100%;max-width:420px}.login-box .login-header{margin-bottom:35px}.login-box .login-header h1{font-size:28px;font-weight:700;color:#2d3748;margin:0 0 8px}.login-box .login-header p{color:#718096;font-size:15px;margin:0}.login-box .form-group{margin-bottom:20px}.login-box .form-group label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.login-box .input-with-icon{position:relative}.login-box .input-with-icon i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px}.login-box .input-with-icon .form-control{padding-left:42px}.login-box .form-control{width:100%;height:46px;border:2px solid #e2e8f0;border-radius:8px;padding:0 14px;font-size:14px;font-family:"Roboto",sans-serif;color:#2d3748;transition:border-color .3s,box-shadow .3s}.login-box .form-control::-moz-placeholder{color:#cbd5e0}.login-box .form-control::placeholder{color:#cbd5e0}.login-box .form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.15);outline:none}.login-box .form-error{color:#c00;font-size:12px;margin-top:4px}.login-box .checkbox-group .checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:#718096;font-weight:400}.login-box .checkbox-group .checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:#6690f4}.login-box .btn-login{width:100%;height:48px;font-size:15px;font-weight:600;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:8px}.login-box .btn-login.disabled{opacity:.7;pointer-events:none}.login-box .alert{display:none;padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:20px}.login-box .alert.alert-danger{background:#fff5f5;color:#c00;border:1px solid #fed7d7}.login-box .alert.alert-success{background:#f0fff4;color:#276749;border:1px solid #c6f6d5}@media(max-width: 768px){.login-brand{display:none}.login-form-wrapper{padding:30px 20px}}body.logged{display:flex;min-height:100vh;background:#f4f6f9}.sidebar{width:260px;min-height:100vh;background:#1e2a3a;position:fixed;top:0;left:0;z-index:1000;display:flex;flex-direction:column;transition:width .3s ease;overflow:hidden}.sidebar.collapsed{width:70px}.sidebar.collapsed .sidebar-header{padding:16px 0;justify-content:center}.sidebar.collapsed .sidebar-header .sidebar-logo{display:none}.sidebar.collapsed .sidebar-header .sidebar-toggle i{transform:rotate(180deg)}.sidebar.collapsed .sidebar-nav ul li a{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li a span{display:none}.sidebar.collapsed .sidebar-nav ul li a i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label span{display:none}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-footer .sidebar-user{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-user .user-info{display:none}.sidebar.collapsed .sidebar-footer .sidebar-logout{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-logout span{display:none}.sidebar.collapsed .nav-divider{margin:8px 15px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.sidebar-header .sidebar-logo a{color:#fff;text-decoration:none;font-size:24px;font-weight:300;letter-spacing:-0.5px}.sidebar-header .sidebar-logo a strong{font-weight:700}.sidebar-header .sidebar-toggle{background:none;border:none;color:#a8b7c7;cursor:pointer;padding:6px;border-radius:6px;transition:all .3s}.sidebar-header .sidebar-toggle:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar-header .sidebar-toggle i{transition:transform .3s}.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}.sidebar-nav ul{list-style:none;margin:0;padding:0}.sidebar-nav ul li.nav-group{margin-bottom:4px}.sidebar-nav ul li.nav-group .nav-group-label{display:flex;align-items:center;padding:11px 20px;color:#d5deea;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li.nav-group .nav-group-label i{width:20px;text-align:center;margin-right:12px;font-size:14px;color:#b6c4d3}.sidebar-nav ul li.nav-group .nav-submenu{margin:0;padding:0;list-style:none}.sidebar-nav ul li.nav-group .nav-submenu li a{padding-left:44px}.sidebar-nav ul li.nav-group.active>.nav-group-label{color:#fff;background:rgba(102,144,244,.12);border-left-color:#6690f4}.sidebar-nav ul li.nav-group.active>.nav-group-label i{color:#6690f4}.sidebar-nav ul li.nav-divider{height:1px;background:hsla(0,0%,100%,.08);margin:8px 20px}.sidebar-nav ul li a{display:flex;align-items:center;padding:11px 20px;color:#a8b7c7;text-decoration:none;font-size:14px;transition:all .2s;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li a i{width:20px;text-align:center;margin-right:12px;font-size:15px}.sidebar-nav ul li a:hover{background:#263548;color:#fff}.sidebar-nav ul li.active>a{background:rgba(102,144,244,.15);color:#fff;border-left-color:#6690f4}.sidebar-nav ul li.active>a i{color:#6690f4}.badge-alerts-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:8px;border-radius:50%;font-size:11px;font-weight:600;line-height:1;background:#fff;color:#6690f4}.sidebar-footer{padding:16px 20px;border-top:1px solid hsla(0,0%,100%,.08)}.sidebar-footer .sidebar-user{display:flex;align-items:center;gap:10px;margin-bottom:12px}.sidebar-footer .sidebar-user .user-avatar{width:34px;height:34px;border-radius:50%;background:rgba(102,144,244,.2);display:flex;align-items:center;justify-content:center;color:#6690f4;font-size:14px;flex-shrink:0}.sidebar-footer .sidebar-user .user-info{overflow:hidden}.sidebar-footer .sidebar-user .user-info .user-email{color:#a8b7c7;font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer .sidebar-logout{display:flex;align-items:center;gap:8px;color:#e53e3e;text-decoration:none;font-size:13px;padding:8px 10px;border-radius:6px;transition:all .2s}.sidebar-footer .sidebar-logout i{font-size:14px}.sidebar-footer .sidebar-logout:hover{background:rgba(229,62,62,.1)}.main-wrapper{margin-left:260px;flex:1;min-height:100vh;transition:margin-left .3s ease;display:flex;flex-direction:column}.main-wrapper.expanded{margin-left:70px}.topbar{height:56px;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;padding:0 25px;position:sticky;top:0;z-index:500}.topbar .topbar-toggle{background:none;border:none;color:#4e5e6a;cursor:pointer;padding:8px 10px;border-radius:6px;font-size:16px;margin-right:15px;transition:all .2s}.topbar .topbar-toggle:hover{background:#f4f6f9}.topbar .topbar-breadcrumb{font-size:16px;font-weight:600;color:#2d3748}.content{flex:1;padding:25px}.app-alert{background:#ebf8ff;border:1px solid #bee3f8;color:#2b6cb0;padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:14px}.btn{padding:10px 20px;transition:all .2s ease;color:#fff;border:0;border-radius:6px;cursor:pointer;display:inline-flex;text-decoration:none;gap:6px;justify-content:center;align-items:center;font-size:14px;font-family:"Roboto",sans-serif;font-weight:500}.btn.btn_small,.btn.btn-xs,.btn.btn-sm{padding:5px 10px;font-size:12px}.btn.btn_small i,.btn.btn-xs i,.btn.btn-sm i{font-size:11px}.btn.btn-success{background:#57b951}.btn.btn-success:hover{background:#4a9c3b}.btn.btn-primary{background:#6690f4}.btn.btn-primary:hover{background:#3164db}.btn.btn-danger{background:#c00}.btn.btn-danger:hover{background:#b30000}.btn.disabled{opacity:.6;pointer-events:none}.form-control{border:1px solid #e2e8f0;border-radius:6px;height:38px;width:100%;padding:6px 12px;font-family:"Roboto",sans-serif;font-size:14px;color:#2d3748;transition:border-color .2s,box-shadow .2s}.form-control option{padding:5px}.form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:none}input[type=checkbox]{border:1px solid #e2e8f0}table{border-collapse:collapse;font-size:13px}.table{width:100%}.table th,.table td{border:1px solid #e2e8f0;padding:8px 10px}.table th{background:#f7fafc;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:#718096}.table td.center{text-align:center}.table td.left{text-align:left}.table.table-sm td{padding:5px !important}.table input.form-control{font-size:13px;height:32px}.clients-table-wrap,.campaigns-table-wrap,.products-table-wrap,.logs-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow-x:auto;max-width:100%;-ms-overflow-style:none;scrollbar-width:none}.clients-table-wrap::-webkit-scrollbar,.campaigns-table-wrap::-webkit-scrollbar,.products-table-wrap::-webkit-scrollbar,.logs-table-wrap::-webkit-scrollbar{display:none}.clients-table-wrap .table,.campaigns-table-wrap .table,.products-table-wrap .table,.logs-table-wrap .table{margin:0;width:100% !important}.clients-table-wrap .table thead th,.campaigns-table-wrap .table thead th,.products-table-wrap .table thead th,.logs-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:12px 16px;white-space:nowrap}.clients-table-wrap .table tbody td,.campaigns-table-wrap .table tbody td,.products-table-wrap .table tbody td,.logs-table-wrap .table tbody td{padding:10px 16px;font-size:13px;color:#2d3748;vertical-align:middle;border-bottom:1px solid #f1f5f9}.clients-table-wrap .table tbody tr:hover td,.campaigns-table-wrap .table tbody tr:hover td,.products-table-wrap .table tbody tr:hover td,.logs-table-wrap .table tbody tr:hover td{background:#f8fafc}.clients-table-wrap .dt-layout-row,.campaigns-table-wrap .dt-layout-row,.products-table-wrap .dt-layout-row,.logs-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.clients-table-wrap .dt-layout-row:first-child,.campaigns-table-wrap .dt-layout-row:first-child,.products-table-wrap .dt-layout-row:first-child,.logs-table-wrap .dt-layout-row:first-child{display:none}.clients-table-wrap .dt-info,.campaigns-table-wrap .dt-info,.products-table-wrap .dt-info,.logs-table-wrap .dt-info{font-size:13px;color:#8899a6}.clients-table-wrap .dt-paging .pagination,.campaigns-table-wrap .dt-paging .pagination,.products-table-wrap .dt-paging .pagination,.logs-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.clients-table-wrap .dt-paging .pagination .page-item .page-link,.campaigns-table-wrap .dt-paging .pagination .page-item .page-link,.products-table-wrap .dt-paging .pagination .page-item .page-link,.logs-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:-moz-fit-content;width:fit-content;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.clients-table-wrap .dt-paging .pagination .page-item .page-link:hover,.campaigns-table-wrap .dt-paging .pagination .page-item .page-link:hover,.products-table-wrap .dt-paging .pagination .page-item .page-link:hover,.logs-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.clients-table-wrap .dt-paging .pagination .page-item.active .page-link,.campaigns-table-wrap .dt-paging .pagination .page-item.active .page-link,.products-table-wrap .dt-paging .pagination .page-item.active .page-link,.logs-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.clients-table-wrap .dt-paging .pagination .page-item.disabled .page-link,.campaigns-table-wrap .dt-paging .pagination .page-item.disabled .page-link,.products-table-wrap .dt-paging .pagination .page-item.disabled .page-link,.logs-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.clients-table-wrap .dt-processing,.campaigns-table-wrap .dt-processing,.products-table-wrap .dt-processing,.logs-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.card{background:#fff;padding:20px;border-radius:8px;color:#2d3748;font-size:14px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.card.mb25{margin-bottom:20px}.card .card-header{font-weight:600;font-size:15px}.card .card-body{padding-top:12px}.card .card-body table th,.card .card-body table td{font-size:13px}.card .card-body table th.bold,.card .card-body table td.bold{font-weight:600}.card .card-body table th.text-right,.card .card-body table td.text-right{text-align:right}.card .card-body table th.text-center,.card .card-body table td.text-center{text-align:center}.action_menu{display:flex;margin-bottom:20px;gap:12px}.action_menu .btn{padding:8px 16px}.action_menu .btn.btn_add{background:#57b951}.action_menu .btn.btn_add:hover{background:#4a9c3b}.action_menu .btn.btn_cancel{background:#c00}.action_menu .btn.btn_cancel:hover{background:#b30000}.settings-tabs{display:flex;gap:8px;margin-bottom:18px}.settings-tabs .settings-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;text-decoration:none;color:#6b7a89;background:#e9eef5;border:1px solid #d8e0ea;font-size:13px;font-weight:600;transition:all .2s}.settings-tabs .settings-tab:hover{color:#2d3748;background:#dde6f2}.settings-tabs .settings-tab.active{color:#fff;background:#6690f4;border-color:#6690f4}.settings-card{background:#fff;border-radius:10px;padding:28px;box-shadow:0 1px 4px rgba(0,0,0,.06)}.settings-card .settings-card-header{display:flex;align-items:center;gap:14px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #e2e8f0}.settings-card .settings-card-header .settings-card-icon{width:44px;height:44px;border-radius:10px;background:rgb(225.706097561,233.7475609756,252.893902439);color:#6690f4;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.settings-card .settings-card-header h3{margin:0;font-size:17px;font-weight:600;color:#2d3748}.settings-card .settings-card-header small{color:#8899a6;font-size:13px}.settings-card .settings-field{margin-bottom:18px}.settings-card .settings-field label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.settings-card .settings-input-wrap{position:relative}.settings-card .settings-input-wrap .settings-input-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px;pointer-events:none}.settings-card .settings-input-wrap .form-control{padding-left:38px}.settings-card .settings-input-wrap .settings-toggle-pw{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;color:#a0aec0;cursor:pointer;padding:6px 10px;font-size:14px;transition:color .2s}.settings-card .settings-input-wrap .settings-toggle-pw:hover{color:#6690f4}.settings-card .settings-field .settings-toggle-label{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;font-weight:500;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:0;width:100%}.settings-card .settings-field .settings-toggle-label .settings-toggle-text{flex:1 1 auto;min-width:0;line-height:1.35}.settings-card .settings-toggle-checkbox{display:none}.settings-card .settings-toggle-checkbox+.settings-toggle-switch{display:inline-block;position:relative;width:44px;height:24px;background:#ccc;border-radius:12px;transition:background .2s;flex-shrink:0}.settings-card .settings-toggle-checkbox+.settings-toggle-switch::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .2s}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch{background:#22c55e}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch::after{transform:translateX(20px)}.settings-card .settings-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}@media(max-width: 768px){.settings-card .settings-fields-grid{grid-template-columns:1fr}}.settings-card .settings-alert-error{display:flex;align-items:center;gap:10px;background:#fff5f5;color:#c00;border:1px solid #fed7d7;border-radius:8px;padding:12px 16px;margin-bottom:20px;font-size:13px}.settings-card .settings-alert-error i{font-size:16px;flex-shrink:0}.clients-page .clients-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.clients-page .clients-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.clients-page .clients-header h2 i{color:#6690f4;margin-right:8px}.clients-page .clients-table-wrap .table .client-id{color:#8899a6;font-size:13px;font-weight:600}.clients-page .clients-table-wrap .table .client-name{font-weight:600;color:#2d3748}.clients-page .badge-id{display:inline-block;background:#eef2ff;color:#6690f4;font-size:13px;font-weight:600;padding:4px 10px;border-radius:6px;font-family:monospace}.clients-page .actions-cell{text-align:center;white-space:nowrap}.clients-page .btn-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s;margin:0 2px}.clients-page .btn-icon.btn-icon-edit{background:#eef2ff;color:#6690f4}.clients-page .btn-icon.btn-icon-edit:hover{background:#6690f4;color:#fff}.clients-page .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.clients-page .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.clients-page .btn-icon.btn-icon-sync{background:#f0fdf4;color:#16a34a}.clients-page .btn-icon.btn-icon-sync:hover{background:#16a34a;color:#fff}.clients-page .btn-icon.btn-icon-sync:disabled{opacity:.7;cursor:wait}.clients-page .btn-icon.btn-icon-sync.is-queued{background:#fef3c7;color:#d97706}.clients-page .client-sync-bars{display:flex;flex-direction:column;gap:4px}.clients-page .client-sync-row{display:flex;align-items:center;gap:4px}.clients-page .client-sync-label{font-size:11px;font-weight:600;color:#8899a6;width:18px;flex-shrink:0}.clients-page .client-sync-track{flex:1;height:6px;border-radius:999px;background:#e9eef5;overflow:hidden}.clients-page .client-sync-fill{height:100%;border-radius:999px;background:#cbd5e0;transition:width .4s ease}.clients-page .client-sync-fill.is-active{background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.clients-page .client-sync-fill.is-done{background:#57b951}.clients-page .client-sync-pct{font-size:11px;font-weight:600;color:#8899a6;width:32px;text-align:right;flex-shrink:0}.clients-page .empty-state{text-align:center;padding:50px 20px !important;color:#a0aec0}.clients-page .empty-state i{font-size:40px;margin-bottom:12px;display:block}.clients-page .empty-state p{margin:0;font-size:15px}.btn-secondary{background:#e2e8f0;color:#2d3748;border:none;padding:8px 18px;border-radius:6px;font-size:14px;cursor:pointer;transition:background .2s}.btn-secondary:hover{background:#cbd5e0}.campaigns-page{max-width:100%;overflow-x:hidden;width:100%}.campaigns-page .campaigns-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.campaigns-page .campaigns-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.campaigns-page .campaigns-header h2 i{color:#6690f4;margin-right:8px}.campaigns-page .campaigns-filters{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:20px}.campaigns-page .campaigns-filters .filter-group{flex:1;min-width:0}.campaigns-page .campaigns-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.campaigns-page .campaigns-filters .filter-group label i{margin-right:4px}.campaigns-page .campaigns-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.campaigns-page .campaigns-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .filter-group .filter-with-action{display:flex;align-items:center;gap:8px}.campaigns-page .campaigns-filters .filter-group .filter-with-action .form-control{flex:1}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon{flex-shrink:0;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.campaigns-page .campaigns-filters .filter-group-campaign-multi{flex:2 !important}.campaigns-page .campaigns-filters .campaign-dropdown{flex:1;min-width:0;position:relative}.campaigns-page .campaigns-filters .campaign-dropdown-trigger{width:100%;padding:10px 14px;padding-right:32px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;cursor:pointer;display:flex;align-items:center;transition:border-color .2s;position:relative;min-height:42px;box-sizing:border-box}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text.is-placeholder{color:#8899a6}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-arrow{position:absolute;right:12px;font-size:10px;color:#8899a6;transition:transform .2s}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-trigger{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-arrow{transform:rotate(180deg)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-menu{display:block}.campaigns-page .campaigns-filters .campaign-dropdown-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;max-height:280px;overflow-y:auto;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:4px 0}.campaigns-page .campaigns-filters .campaign-dropdown-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:14px;color:#2d3748;margin:0;transition:background .15s}.campaigns-page .campaigns-filters .campaign-dropdown-item:hover{background:#f8fafc}.campaigns-page .campaigns-filters .campaign-dropdown-item.is-checked{background:#eef2ff}.campaigns-page .campaigns-filters .campaign-dropdown-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;flex-shrink:0;accent-color:#6690f4}.campaigns-page .campaigns-filters .campaign-dropdown-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-list-panel{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);margin-bottom:20px;overflow:hidden}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #e2e8f0;gap:12px}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left{display:flex;align-items:center;gap:8px;font-size:13px;color:#4e5e6a}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left input[type=checkbox]{width:16px;height:16px;cursor:pointer}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin:0}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left .campaigns-selected-count{margin-left:12px;color:#8899a6}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:hover:not(:disabled){background:#c00;color:#fff}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:disabled{opacity:.4;cursor:not-allowed}.campaigns-page .campaigns-list-panel .campaigns-list-items{display:flex;flex-wrap:wrap;gap:0;padding:8px 8px;max-height:220px;overflow-y:auto}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:2px;border-radius:6px;font-size:13px;color:#2d3748;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .15s}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item:hover{background:#f0f4ff}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item input[type=checkbox]{width:15px;height:15px;cursor:pointer;flex-shrink:0}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item .campaigns-list-item-name{white-space:nowrap}.campaigns-page .campaigns-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:20px;min-height:350px;overflow:hidden}.campaigns-page .campaigns-chart-wrap #container{max-width:100%}.campaigns-page .campaigns-table-wrap .table{width:100%}.campaigns-page .delete-history-entry{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .delete-history-entry:hover{background:#c00;color:#fff}.products-page .products-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.products-page .products-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.products-page .products-header h2 i{color:#6690f4;margin-right:8px}.products-page .products-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:20px;margin-bottom:16px}.products-page .products-filters .filter-group{flex:1 1 220px;min-width:0}.products-page .products-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.products-page .products-filters .filter-group label i{margin-right:4px}.products-page .products-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.products-page .products-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.products-page .products-filters .filter-group select.form-control{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.products-page .products-filters .filter-group.filter-group-client,.products-page .products-filters .filter-group.filter-group-campaign,.products-page .products-filters .filter-group.filter-group-ad-group{flex:1 1 260px}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions{display:flex;gap:8px;align-items:center}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions .form-control{flex:1 1 auto;min-width:0}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group{min-width:38px;height:38px;border-radius:6px;margin:0;background:#dc3545;border:1px solid #dc3545;color:#fff;cursor:pointer}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:hover:not(:disabled){background:#bb2d3b;border-color:#bb2d3b;color:#fff}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:disabled{opacity:.45;cursor:default;background:#dc3545;border-color:#dc3545;color:#fff}.products-page .products-filters .filter-group.filter-group-roas{flex:0 0 200px}.products-page .products-filters .filter-group.filter-group-columns{flex:0 0 240px}.products-page .products-scope-alerts{margin-bottom:12px;border:1px solid #fecaca;background:#fef2f2;border-radius:8px;overflow:hidden}.products-page .products-scope-alerts summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:13px;font-weight:600;color:#991b1b;display:flex;align-items:center;gap:8px}.products-page .products-scope-alerts summary::-webkit-details-marker{display:none}.products-page .products-scope-alerts .products-scope-alerts-list{border-top:1px solid #fecaca;background:#fff;max-height:260px;overflow:auto}.products-page .products-scope-alerts .products-scope-alert-item{padding:10px 12px;border-bottom:1px solid #f1f5f9}.products-page .products-scope-alerts .products-scope-alert-item:last-child{border-bottom:none}.products-page .products-scope-alerts .products-scope-alert-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:11px;color:#64748b}.products-page .products-scope-alerts .products-scope-alert-type{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:#eef2ff;color:#4338ca;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.products-page .products-scope-alerts .products-scope-alert-message{font-size:13px;color:#2d3748;line-height:1.45}.products-page .products-actions{margin-bottom:12px}.products-page .products-actions .btn-danger{padding:7px 14px;font-size:13px;border-radius:6px;border:none;cursor:pointer;transition:all .2s}.products-page .products-actions .btn-danger:disabled{opacity:.4;cursor:default}.products-page .products-table-wrap .table{width:100%}.products-page .products-table-wrap .table input.min_roas,.products-page .products-table-wrap .table input.form-control-sm,.products-page .products-table-wrap .table select.custom_label_4,.products-page .products-table-wrap .table select.form-control-sm{padding:3px 6px;font-size:12px;border:1px solid #e2e8f0;border-radius:4px;background:#fff}.products-page .delete-product{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.products-page .delete-product:hover{background:#c00;color:#fff}.products-page .edit-product-title{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#eef2ff;color:#6690f4;transition:all .2s}.products-page .edit-product-title:hover{background:#6690f4;color:#fff}.desc-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.desc-header label{margin:0}.desc-tabs{display:flex;gap:2px;background:#eee;border-radius:6px;padding:2px}.desc-tab{border:none;background:rgba(0,0,0,0);padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;color:#666;transition:all .15s ease}.desc-tab i{margin-right:4px}.desc-tab.active{background:#fff;color:#333;box-shadow:0 1px 3px rgba(0,0,0,.12);font-weight:500}.desc-tab:hover:not(.active){color:#333}.desc-wrap{flex:1;min-width:0}.desc-preview ul,.desc-preview ol{margin:6px 0;padding-left:20px}.desc-preview li{margin-bottom:3px}.desc-preview b,.desc-preview strong{font-weight:600}.input-with-ai{display:flex;gap:8px;align-items:flex-start}.input-with-ai .form-control{flex:1}.btn-ai-suggest{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:8px;border:1px solid #c084fc;background:linear-gradient(135deg, #F3E8FF, #EDE9FE);color:#7c3aed;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;min-height:38px}.btn-ai-suggest i{font-size:13px}.btn-ai-suggest:hover{background:linear-gradient(135deg, #7C3AED, #6D28D9);color:#fff;border-color:#6d28d9}.btn-ai-suggest:disabled{opacity:.7;cursor:wait}.btn-ai-suggest.btn-ai-claude{border-color:#d97706;background:linear-gradient(135deg, #FEF3C7, #FDE68A);color:#92400e}.btn-ai-suggest.btn-ai-claude:hover{background:linear-gradient(135deg, #D97706, #B45309);color:#fff;border-color:#b45309}.btn-ai-suggest.btn-ai-gemini{border-color:#4285f4;background:linear-gradient(135deg, #E8F0FE, #D2E3FC);color:#1a73e8}.btn-ai-suggest.btn-ai-gemini:hover{background:linear-gradient(135deg, #4285F4, #1A73E8);color:#fff;border-color:#1a73e8}.form_container{background:#fff;padding:25px;max-width:1300px;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.form_container.full{max-width:100%}.form_container .form_group{margin-bottom:12px;display:flex}.form_container .form_group>.label{width:300px;display:inline-flex;align-items:flex-start;justify-content:right;padding-right:12px}.form_container .form_group .input{width:calc(100% - 300px)}.default_popup{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);display:none;z-index:2000}.default_popup .popup_content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);background:#fff;padding:25px;border-radius:10px;max-width:1140px;width:95%;box-shadow:0 20px 60px rgba(0,0,0,.15)}.default_popup .popup_content .popup_header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.default_popup .popup_content .popup_header .title{font-size:18px;font-weight:600}.default_popup .popup_content .close{cursor:pointer;color:#a0aec0;font-size:18px;padding:4px}.default_popup .popup_content .close:hover{color:#c00}.dt-layout-table{margin-bottom:20px}.pagination button{border:1px solid #e2e8f0;background:#fff;display:inline-flex;height:32px;width:32px;align-items:center;justify-content:center;margin:0 2px;border-radius:4px;transition:all .2s;cursor:pointer}.pagination button:hover{background:#f4f6f9;border-color:#6690f4}table#products a{color:inherit;text-decoration:none}table#products .table-product-title{display:flex;justify-content:space-between}table#products .edit-product-title{display:flex;height:25px;align-items:center;justify-content:center;width:25px;cursor:pointer;background:#fff;border:1px solid #cbd5e0;color:#cbd5e0;border-radius:4px}table#products .edit-product-title:hover{background:#cbd5e0;color:#fff}table#products a.custom_name{color:#57b951 !important}.product-history-page .product-history-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.product-history-page .product-history-meta span{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:600;color:#4e5e6a;background:#eef2ff;border:1px solid #d9e2ff}.product-history-page .product-history-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:16px}.product-history-page .chart-with-form{display:flex;gap:20px;align-items:flex-start}.product-history-page .chart-area{flex:1 1 auto;min-width:0}.product-history-page .product-history-chart{min-height:360px}.product-history-page .comment-form{width:340px;flex:0 0 340px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px}.product-history-page .comment-form .form-group{margin-bottom:12px}.product-history-page .comment-form label{display:block;font-weight:600;margin-bottom:6px;font-size:13px;color:#52606d}.product-history-page .comment-form input[type=date],.product-history-page .comment-form textarea{width:100%;border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px;font-size:14px;font-family:"Roboto",sans-serif;background:#fff}.product-history-page .comment-form input[type=date]:focus,.product-history-page .comment-form textarea:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.product-history-page .comment-form textarea{min-height:110px;resize:vertical}.product-history-page .comment-form .btn{width:100%;justify-content:center;padding:10px 16px}.product-history-page .comment-form .btn[disabled]{opacity:.6;cursor:not-allowed}.product-history-page .products-table-wrap{overflow-x:auto}.product-history-page .products-table-wrap .table{min-width:980px}.product-history-page .products-table-wrap .comment-cell{display:flex;align-items:center;justify-content:space-between;gap:10px}.product-history-page .products-table-wrap .comment-text{word-break:break-word}.product-history-page .products-table-wrap .delete-comment{color:#c00;text-decoration:none;font-weight:600;white-space:nowrap}.product-history-page .products-table-wrap .delete-comment:hover{text-decoration:underline}.product-history-page .products-table-wrap .dt-paging .pagination .page-item{list-style:none}.cron-status-overview{display:flex;flex-wrap:wrap;gap:10px 20px;margin-bottom:20px;color:#4e5e6a;font-size:13px}.cron-progress-list{margin-bottom:20px}.cron-schedule-list{margin-bottom:20px}.cron-schedule-item{border:1px solid #dfe7f0;background:#f4f8fd;border-radius:8px;padding:9px 12px;margin-bottom:8px}.cron-schedule-item:last-child{margin-bottom:0}.cron-schedule-item strong{display:block;color:#2d3748;font-size:13px;font-weight:700;margin-bottom:2px}.cron-schedule-item small{display:block;color:#678;font-size:12px;line-height:1.35}.cron-progress-item{margin-bottom:14px}.cron-progress-item:last-child{margin-bottom:0}.cron-progress-item .cron-progress-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;font-size:13px}.cron-progress-item .cron-progress-head strong{color:#2d3748;font-weight:600}.cron-progress-item .cron-progress-head span{color:#6b7a89;font-size:12px;font-weight:600;white-space:nowrap}.cron-progress-item small{display:block;margin-top:5px;color:#789;font-size:12px}.cron-progress-bar{width:100%;height:10px;border-radius:999px;background:#e9eef5;overflow:hidden}.cron-progress-bar>span{display:block;height:100%;background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.cron-url-list{margin-bottom:20px}.cron-url-item{border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;padding:10px 12px;margin-bottom:10px}.cron-url-item:last-child{margin-bottom:0}.cron-url-item .cron-url-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}.cron-url-item .cron-url-top strong{color:#2d3748;font-size:13px;font-weight:600}.cron-url-item .cron-url-top small{color:#7a8794;font-size:11px;white-space:nowrap}.cron-url-item code{display:block;background:#eef2f7;border:1px solid #dde4ed;border-radius:6px;padding:6px 8px;color:#2e3b49;font-size:12px;overflow-x:auto}.cron-url-item .cron-url-plan{display:block;color:#6c7b8a;font-size:11px;margin-bottom:6px}@media(max-width: 1200px){.product-history-page .chart-with-form{flex-direction:column}.product-history-page .comment-form{width:100%;flex:1 1 auto}}.jconfirm-box .form-group .select2-container,.adspro-dialog-box .form-group .select2-container{width:100% !important;margin-top:8px}.jconfirm-box .select2-container--default .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;min-height:42px;display:flex;align-items:center;padding:4px 12px;box-shadow:none;transition:border-color .2s,box-shadow .2s;font-size:14px}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__rendered,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;line-height:1.4;color:#495057}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__placeholder,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__placeholder{color:#cbd5e0}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__arrow,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%;right:8px}.jconfirm-box .select2-container--default.select2-container--focus .select2-selection--single,.jconfirm-box .select2-container--default .select2-selection--single:hover,.adspro-dialog-box .select2-container--default.select2-container--focus .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single:hover{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:0}.jconfirm-box .select2-container .select2-dropdown,.adspro-dialog-box .select2-container .select2-dropdown{border-color:#e2e8f0;border-radius:0 0 6px 6px;font-size:14px}.jconfirm-box .select2-container .select2-search--dropdown .select2-search__field,.adspro-dialog-box .select2-container .select2-search--dropdown .select2-search__field{padding:6px 10px;border-radius:4px;border:1px solid #e2e8f0;font-size:14px}.jconfirm-box .select2-container--default .select2-results__option--highlighted[aria-selected],.adspro-dialog-box .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#6690f4;color:#fff}@media(max-width: 992px){.sidebar{transform:translateX(-100%)}.sidebar.mobile-open{transform:translateX(0)}.main-wrapper{margin-left:0 !important}}.campaign-terms-wrap{display:flex;flex-direction:column;gap:20px;margin-top:20px}.campaign-terms-page{max-width:100%;overflow:hidden}.campaign-terms-page .campaigns-filters{flex-wrap:wrap}.campaign-terms-page .campaigns-filters .filter-group{min-width:220px}.campaign-terms-page .campaigns-filters .filter-group.terms-columns-group{min-width:280px}.campaign-terms-page .terms-card-toggle{margin-left:auto;width:28px;height:28px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#475569;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-card-toggle:hover{background:#f8fafc;border-color:#cbd5e1}.campaign-terms-page .terms-adgroups-card.is-collapsed .campaigns-extra-table-wrap{display:none}.campaign-terms-page .terms-search-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-search-toolbar label{font-size:12px;font-weight:600;color:#475569;display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap}.campaign-terms-page .terms-search-toolbar .terms-search-toolbar-label{min-width:86px}.campaign-terms-page .terms-search-toolbar #terms_min_clicks_all,.campaign-terms-page .terms-search-toolbar #terms_max_clicks_all{width:160px;height:32px}.campaign-terms-page .terms-search-toolbar #terms_min_conversions_all,.campaign-terms-page .terms-search-toolbar #terms_max_conversions_all{width:130px;max-width:130px}.campaign-terms-page .terms-search-selected-label{margin:0;font-size:12px;color:#475569;font-weight:600;white-space:nowrap}.campaign-terms-page .terms-ai-analyze-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-ai-analyze-btn:hover{background:#dbeafe;border-color:#93c5fd}.campaign-terms-page .terms-ai-analyze-btn:disabled{opacity:.6;cursor:wait}.campaign-terms-page .terms-negative-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-negative-bulk-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #fecaca;background:#fef2f2;color:#dc2626;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-negative-bulk-btn:hover{background:#fee2e2;border-color:#fca5a5}.campaign-terms-page .terms-negative-bulk-btn:disabled{opacity:.5;cursor:not-allowed}.campaign-terms-page table.campaigns-extra-table>thead>tr>th{position:sticky;top:0;z-index:2;background-color:#111827 !important;color:#e5e7eb !important;border-bottom:1px solid #0b1220 !important;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 12px;white-space:nowrap}.campaign-terms-page #terms_search_table thead th .dt-column-order,.campaign-terms-page #terms_negative_table thead th .dt-column-order{display:none !important}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc{cursor:pointer;padding-right:34px;overflow:hidden}.campaign-terms-page #terms_search_table thead th .dt-column-title,.campaign-terms-page #terms_negative_table thead th .dt-column-title{display:block;overflow:hidden;text-overflow:ellipsis;padding-right:2px}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc::after{content:"↕";position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:999px;font-size:12px;font-weight:700;line-height:16px;text-align:center;color:#e5e7eb;background:#374151}.campaign-terms-page #terms_search_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=ascending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=ascending]::after{content:"▲";color:#fff;background:#2563eb}.campaign-terms-page #terms_search_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=descending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=descending]::after{content:"▼";color:#fff;background:#2563eb}.campaign-terms-page #terms_negative_select_all,.campaign-terms-page .terms-negative-select-row,.campaign-terms-page #terms_search_select_all,.campaign-terms-page .terms-search-select-row{width:14px;height:14px;cursor:pointer}.campaign-terms-page .dt-layout-row:first-child{display:none}.campaign-terms-page .dt-layout-row{padding:10px 12px;margin:0 !important;border-top:1px solid #f1f5f9}.campaign-terms-page .dt-info{font-size:12px;color:#64748b}.campaign-terms-page .dt-paging .pagination{margin:0;padding:0;list-style:none !important;display:flex;align-items:center;gap:6px}.campaign-terms-page .dt-paging .pagination .page-item{list-style:none !important}.campaign-terms-page .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:-moz-fit-content;width:fit-content;height:32px;padding:0 12px;border-radius:6px;font-size:12px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;text-decoration:none;line-height:1;white-space:nowrap}.campaign-terms-page .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.previous .page-link,.campaign-terms-page .dt-paging .pagination .page-item.next .page-link{min-width:72px}.campaign-terms-page .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.terms-columns-box{display:flex;flex-direction:column;gap:6px}.terms-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.terms-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.terms-columns-control summary::-webkit-details-marker{display:none}.terms-columns-control summary::after{content:"▼";float:right;font-size:10px;color:#64748b;margin-top:2px}.terms-columns-control[open] summary::after{content:"▲"}.terms-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:180px;overflow-y:auto}.terms-columns-list .terms-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.terms-columns-list .terms-col-item:last-child{margin-bottom:0}.terms-columns-list .terms-col-item input[type=checkbox]{margin:0}.campaigns-extra-card{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.campaigns-extra-card-title{padding:14px 16px;border-bottom:1px solid #e2e8f0;font-size:13px;font-weight:700;color:#334155;display:flex;align-items:center;gap:8px}.campaigns-extra-card-title .terms-card-title-label{display:inline-flex;align-items:center;gap:8px}.campaigns-extra-table-wrap{overflow:auto}.campaigns-extra-table{margin:0;width:100%;table-layout:fixed}.campaigns-extra-table tbody td{padding:9px 12px;border-bottom:1px solid #f1f5f9;font-size:13px;color:#334155;vertical-align:middle;white-space:nowrap}.campaigns-extra-table td.num-cell{text-align:right;white-space:nowrap}.campaigns-extra-table td.text-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table th.terms-negative-select-cell,.campaigns-extra-table td.terms-negative-select-cell,.campaigns-extra-table th.terms-search-select-cell,.campaigns-extra-table td.terms-search-select-cell{text-align:center}.campaigns-extra-table th.phrase-nowrap,.campaigns-extra-table td.phrase-nowrap{white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table .terms-add-negative-btn,.campaigns-extra-table .terms-remove-negative-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;cursor:pointer;transition:all .2s}.campaigns-extra-table .terms-add-negative-btn{border:1px solid #e2e8f0;background:#eef2ff;color:#3b82f6}.campaigns-extra-table .terms-add-negative-btn:hover{background:#3b82f6;color:#fff;border-color:#3b82f6}.campaigns-extra-table .terms-remove-negative-btn{border:1px solid #fecaca;background:#fef2f2;color:#dc2626}.campaigns-extra-table .terms-remove-negative-btn:hover{background:#dc2626;color:#fff;border-color:#dc2626}.campaigns-extra-table tbody tr:hover{background:#f8fafc}.campaigns-extra-table tbody tr.term-is-negative td{color:#dc2626}.campaigns-extra-table tbody tr.term-is-negative:hover{background:#fef2f2}.campaigns-empty-row{text-align:center;color:#94a3b8 !important;font-style:italic}.terms-ai-modal-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-ai-modal-toolbar label{font-size:12px;font-weight:600;color:#334155;margin:0}.terms-ai-modal-toolbar .form-control{width:200px;height:32px}.terms-ai-summary{font-size:12px;color:#64748b;margin-bottom:10px}.terms-ai-results-wrap{border:1px solid #e2e8f0;border-radius:8px;max-height:420px;overflow:auto}.terms-ai-results-table{width:100%;border-collapse:collapse;font-size:12px}.terms-ai-results-table th,.terms-ai-results-table td{border-bottom:1px solid #eef2f7;padding:8px;vertical-align:middle}.terms-ai-results-table th{position:sticky;top:0;background:#f8fafc;color:#334155;font-weight:700}.terms-ai-results-table td.term-col{min-width:260px;max-width:380px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.terms-ai-results-table td.reason-col{min-width:320px}.terms-ai-action-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.terms-ai-action-badge.action-exclude{background:#fee2e2;color:#b91c1c}.terms-ai-action-badge.action-keep{background:#dcfce7;color:#166534}.products-page .products-filters .filter-group.filter-group-columns{min-width:240px}.products-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.products-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.products-columns-control summary::-webkit-details-marker{display:none}.products-columns-control summary::after{content:"▼";float:right;font-size:10px;color:#64748b;margin-top:2px}.products-columns-control[open] summary::after{content:"▲"}.products-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:220px;overflow-y:auto}.products-columns-list .products-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.products-columns-list .products-col-item:last-child{margin-bottom:0}.products-columns-list .products-col-item input[type=checkbox]{margin:0}#products th:last-child,#products td:last-child{white-space:nowrap}#products .products-row-actions{display:inline-flex;align-items:center;gap:4px}#products .products-row-actions .btn{width:38px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:4px !important}#products .products-row-actions .btn i{line-height:1}.logs-page .logs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.logs-page .logs-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.logs-page .logs-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:16px}.logs-page .logs-filters .filter-group{flex:1 1 160px;min-width:0;max-width:220px}.logs-page .logs-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.logs-page .logs-filters .filter-group .form-control{width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.logs-page .logs-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.logs-page .logs-filters .filter-group select.form-control{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.logs-page .logs-filters .filter-group.filter-group-buttons{flex:0 0 auto;display:flex;gap:6px;max-width:none}.logs-page .logs-table-wrap .table{width:100%}.logs-page .badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px}.logs-page .badge-success{background:#d1fae5;color:#065f46}.logs-page .badge-danger{background:#fee2e2;color:#991b1b}.logs-page .badge-warning{background:#fef3c7;color:#92400e}.js-title-alt-apply{color:#000;justify-content:flex-start}/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/layout/style.css.map b/layout/style.css.map index f244c3d..45233ed 100644 --- a/layout/style.css.map +++ b/layout/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","style.scss"],"names":[],"mappings":"AAAA,EC4BA,qBACE,CAAA,KAGF,+BACE,CAAA,QACA,CAAA,SACA,CAAA,cACA,CAAA,aAxBM,CAAA,kBAFK,CAAA,eA6BX,CAAA,iBACA,CAAA,MAGF,YACE,CAAA,MAIF,eACE,CAAA,YAGF,gBACE,CAAA,WAGF,0BACE,CAAA,QAGF,kBACE,CAAA,cAMF,kBAzDa,CAAA,QA2DX,CAAA,SACA,CAAA,iBAGF,YACE,CAAA,gBACA,CAAA,aAGF,YACE,CAAA,yEACA,CAAA,YACA,CAAA,kBACA,CAAA,sBACA,CAAA,YACA,CAAA,iBACA,CAAA,eACA,CAAA,qBAEA,UACE,CAAA,iBACA,CAAA,QACA,CAAA,UACA,CAAA,UACA,CAAA,WACA,CAAA,iFACA,CAAA,iBACA,CAAA,4BAGF,iBACE,CAAA,SACA,CAAA,UA1FK,CAAA,eA4FL,CAAA,yBAGF,cACE,CAAA,eACA,CAAA,kBACA,CAAA,mBACA,CAAA,gCAEA,eACE,CAAA,4BAIJ,cACE,CAAA,WACA,CAAA,eACA,CAAA,kBACA,CAAA,sCAIA,YACE,CAAA,kBACA,CAAA,QACA,CAAA,kBACA,CAAA,UACA,CAAA,wCAEA,cACE,CAAA,UACA,CAAA,WACA,CAAA,YACA,CAAA,kBACA,CAAA,sBACA,CAAA,6BACA,CAAA,kBACA,CAAA,2CAGF,cACE,CAAA,oBAMR,MACE,CAAA,YACA,CAAA,kBACA,CAAA,sBACA,CAAA,YACA,CAAA,eAhJO,CAAA,WAoJT,UACE,CAAA,eACA,CAAA,yBAEA,kBACE,CAAA,4BAEA,cACE,CAAA,eACA,CAAA,aA3JM,CAAA,cA6JN,CAAA,2BAGF,aACE,CAAA,cACA,CAAA,QACA,CAAA,uBAIJ,kBACE,CAAA,6BAEA,aACE,CAAA,cACA,CAAA,eACA,CAAA,aA7KM,CAAA,iBA+KN,CAAA,4BAIJ,iBACE,CAAA,8BAEA,iBACE,CAAA,SACA,CAAA,OACA,CAAA,0BACA,CAAA,aACA,CAAA,cACA,CAAA,0CAGF,iBACE,CAAA,yBAIJ,UACE,CAAA,WACA,CAAA,wBACA,CAAA,iBACA,CAAA,cACA,CAAA,cACA,CAAA,+BACA,CAAA,aA3MQ,CAAA,0CA6MR,CAAA,2CAEA,aACE,CAHF,sCAEA,aACE,CAAA,+BAGF,oBA5NO,CAAA,0CA8NL,CAAA,YACA,CAAA,uBAIJ,UAtNQ,CAAA,cAwNN,CAAA,cACA,CAAA,2CAIA,YACE,CAAA,kBACA,CAAA,OACA,CAAA,cACA,CAAA,cACA,CAAA,aACA,CAAA,eACA,CAAA,gEAEA,UACE,CAAA,WACA,CAAA,oBArPG,CAAA,sBA2PT,UACE,CAAA,WACA,CAAA,cACA,CAAA,eACA,CAAA,iBACA,CAAA,YACA,CAAA,kBACA,CAAA,sBACA,CAAA,OACA,CAAA,+BAEA,UACE,CAAA,mBACA,CAAA,kBAIJ,YACE,CAAA,iBACA,CAAA,iBACA,CAAA,cACA,CAAA,kBACA,CAAA,+BAEA,kBACE,CAAA,UAvQI,CAAA,wBAyQJ,CAAA,gCAGF,kBACE,CAAA,aACA,CAAA,wBACA,CAAA,yBAMN,aACE,YACE,CAAA,oBAGF,iBACE,CAAA,CAAA,YAOJ,YACE,CAAA,gBACA,CAAA,kBA3SW,CAAA,SAgTb,WApSe,CAAA,gBAsSb,CAAA,kBAtTW,CAAA,cAwTX,CAAA,KACA,CAAA,MACA,CAAA,YACA,CAAA,YACA,CAAA,qBACA,CAAA,yBACA,CAAA,eACA,CAAA,mBAEA,UAhTiB,CAAA,mCAmTf,cACE,CAAA,sBACA,CAAA,iDAEA,YACE,CAAA,qDAGF,wBACE,CAAA,wCAIJ,cACE,CAAA,sBACA,CAAA,6CAEA,YACE,CAAA,0CAGF,cACE,CAAA,cACA,CAAA,iEAIJ,cACE,CAAA,sBACA,CAAA,sEAEA,YACE,CAAA,mEAGF,cACE,CAAA,cACA,CAAA,iDAKF,sBACE,CAAA,4DAEA,YACE,CAAA,mDAIJ,sBACE,CAAA,wDAEA,YACE,CAAA,gCAKN,eACE,CAAA,gBAKN,YACE,CAAA,kBACA,CAAA,6BACA,CAAA,sBACA,CAAA,2CACA,CAAA,gCAEA,UAvYO,CAAA,oBAyYL,CAAA,cACA,CAAA,eACA,CAAA,qBACA,CAAA,uCAEA,eACE,CAAA,gCAIJ,eACE,CAAA,WACA,CAAA,aAzZW,CAAA,cA2ZX,CAAA,WACA,CAAA,iBACA,CAAA,kBACA,CAAA,sCAEA,8BACE,CAAA,UA7ZG,CAAA,kCAiaL,wBACE,CAAA,aAKN,MACE,CAAA,cACA,CAAA,eACA,CAAA,gBAEA,eACE,CAAA,QACA,CAAA,SACA,CAAA,6BAGE,iBACE,CAAA,8CAEA,YACE,CAAA,kBACA,CAAA,iBACA,CAAA,aACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,mCACA,CAAA,gDAEA,UACE,CAAA,iBACA,CAAA,iBACA,CAAA,cACA,CAAA,aACA,CAAA,0CAIJ,QACE,CAAA,SACA,CAAA,eACA,CAAA,+CAEA,iBACE,CAAA,qDAIJ,UAndC,CAAA,gCAqdC,CAAA,yBA5dC,CAAA,uDA+dD,aA/dC,CAAA,+BAqeL,UACE,CAAA,8BACA,CAAA,eACA,CAAA,qBAGF,YACE,CAAA,kBACA,CAAA,iBACA,CAAA,aA3eO,CAAA,oBA6eP,CAAA,cACA,CAAA,kBACA,CAAA,mCACA,CAAA,uBAEA,UACE,CAAA,iBACA,CAAA,iBACA,CAAA,cACA,CAAA,2BAGF,kBAxfQ,CAAA,UAGP,CAAA,4BA2fH,gCACE,CAAA,UA5fC,CAAA,yBAPE,CAAA,8BAugBH,aAvgBG,CAAA,oBA+gBX,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,cACA,CAAA,WACA,CAAA,aACA,CAAA,eACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,aACA,CAAA,eAnhBO,CAAA,aAPE,CAAA,gBA+hBX,iBACE,CAAA,wCACA,CAAA,8BAEA,YACE,CAAA,kBACA,CAAA,QACA,CAAA,kBACA,CAAA,2CAEA,UACE,CAAA,WACA,CAAA,iBACA,CAAA,+BACA,CAAA,YACA,CAAA,kBACA,CAAA,sBACA,CAAA,aAhjBK,CAAA,cAkjBL,CAAA,aACA,CAAA,yCAGF,eACE,CAAA,qDAEA,aAtjBS,CAAA,cAwjBP,CAAA,aACA,CAAA,kBACA,CAAA,eACA,CAAA,sBACA,CAAA,gCAKN,YACE,CAAA,kBACA,CAAA,OACA,CAAA,aACA,CAAA,oBACA,CAAA,cACA,CAAA,gBACA,CAAA,iBACA,CAAA,kBACA,CAAA,kCAEA,cACE,CAAA,sCAGF,6BACE,CAAA,cAMN,iBAxkBe,CAAA,MA0kBb,CAAA,gBACA,CAAA,+BACA,CAAA,YACA,CAAA,qBACA,CAAA,uBAEA,gBA/kBiB,CAAA,QAqlBnB,WAplBe,CAAA,eAbN,CAAA,+BAomBP,CAAA,YACA,CAAA,kBACA,CAAA,cACA,CAAA,eACA,CAAA,KACA,CAAA,WACA,CAAA,uBAEA,eACE,CAAA,WACA,CAAA,aA7mBI,CAAA,cA+mBJ,CAAA,gBACA,CAAA,iBACA,CAAA,cACA,CAAA,iBACA,CAAA,kBACA,CAAA,6BAEA,kBAxnBS,CAAA,2BA6nBX,cACE,CAAA,eACA,CAAA,aA5nBQ,CAAA,SAkoBZ,MACE,CAAA,YACA,CAAA,WAGF,kBACE,CAAA,wBACA,CAAA,aACA,CAAA,iBACA,CAAA,iBACA,CAAA,kBACA,CAAA,cACA,CAAA,KAQF,iBACE,CAAA,uBACA,CAAA,UA1pBO,CAAA,QA4pBP,CAAA,iBACA,CAAA,cACA,CAAA,mBACA,CAAA,oBACA,CAAA,OACA,CAAA,sBACA,CAAA,kBACA,CAAA,cACA,CAAA,+BACA,CAAA,eACA,CAAA,uCAEA,gBAGE,CAAA,cACA,CAAA,6CAEA,cACE,CAAA,iBAIJ,kBA/qBS,CAAA,uBAkrBP,kBAjrBW,CAAA,iBAsrBb,kBAlsBS,CAAA,uBAqsBP,kBApsBW,CAAA,gBAysBb,eA7rBQ,CAAA,sBAgsBN,kBA/rBU,CAAA,cAosBZ,UACE,CAAA,mBACA,CAAA,cAKJ,wBACE,CAAA,iBACA,CAAA,WACA,CAAA,UACA,CAAA,gBACA,CAAA,+BACA,CAAA,cACA,CAAA,aAvtBU,CAAA,0CAytBV,CAAA,qBAEA,WACE,CAAA,oBAGF,oBAxuBS,CAAA,yCA0uBP,CAAA,YACA,CAAA,qBAIJ,wBACE,CAAA,MAIF,wBACE,CAAA,cACA,CAAA,OAGF,UACE,CAAA,oBAEA,wBAEE,CAAA,gBACA,CAAA,UAGF,kBACE,CAAA,eACA,CAAA,cACA,CAAA,wBACA,CAAA,oBACA,CAAA,aACA,CAAA,iBAGF,iBACE,CAAA,eAGF,eACE,CAAA,mBAGF,sBACE,CAAA,0BAGF,cACE,CAAA,WACA,CAAA,MAKJ,eAvxBS,CAAA,YAyxBP,CAAA,iBACA,CAAA,aAxxBU,CAAA,cA0xBV,CAAA,oCACA,CAAA,WAEA,kBACE,CAAA,mBAGF,eACE,CAAA,cACA,CAAA,iBAGF,gBACE,CAAA,oDAIE,cAEE,CAAA,8DAEA,eACE,CAAA,0EAGF,gBACE,CAAA,4EAGF,iBACE,CAAA,aAQV,YACE,CAAA,kBACA,CAAA,QACA,CAAA,kBAEA,gBACE,CAAA,0BAEA,kBAt0BO,CAAA,gCAy0BL,kBAx0BS,CAAA,6BA60BX,eA50BM,CAAA,mCA+0BJ,kBA90BQ,CAAA,eAs1Bd,YACE,CAAA,OACA,CAAA,kBACA,CAAA,6BAEA,mBACE,CAAA,kBACA,CAAA,OACA,CAAA,gBACA,CAAA,iBACA,CAAA,oBACA,CAAA,aACA,CAAA,kBACA,CAAA,wBACA,CAAA,cACA,CAAA,eACA,CAAA,kBACA,CAAA,mCAEA,aA92BQ,CAAA,kBAg3BN,CAAA,oCAGF,UAr3BK,CAAA,kBAPE,CAAA,oBAAA,CAAA,eAo4BX,eA73BS,CAAA,kBA+3BP,CAAA,YACA,CAAA,oCACA,CAAA,qCAEA,YACE,CAAA,kBACA,CAAA,QACA,CAAA,kBACA,CAAA,mBACA,CAAA,+BACA,CAAA,yDAEA,UACE,CAAA,WACA,CAAA,kBACA,CAAA,0DACA,CAAA,aAt5BK,CAAA,YAw5BL,CAAA,kBACA,CAAA,sBACA,CAAA,cACA,CAAA,aACA,CAAA,wCAGF,QACE,CAAA,cACA,CAAA,eACA,CAAA,aAz5BM,CAAA,2CA65BR,aACE,CAAA,cACA,CAAA,+BAIJ,kBACE,CAAA,qCAEA,aACE,CAAA,cACA,CAAA,eACA,CAAA,aAz6BM,CAAA,iBA26BN,CAAA,oCAIJ,iBACE,CAAA,yDAEA,iBACE,CAAA,SACA,CAAA,OACA,CAAA,0BACA,CAAA,aACA,CAAA,cACA,CAAA,mBACA,CAAA,kDAGF,iBACE,CAAA,wDAGF,iBACE,CAAA,SACA,CAAA,OACA,CAAA,0BACA,CAAA,eACA,CAAA,WACA,CAAA,aACA,CAAA,cACA,CAAA,gBACA,CAAA,cACA,CAAA,oBACA,CAAA,8DAEA,aAt9BK,CAAA,sDA49BT,mBACE,CAAA,kBACA,CAAA,QACA,CAAA,cACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CADA,qBACA,CADA,gBACA,CAAA,eACA,CAAA,UACA,CAAA,4EAEA,aACE,CAAA,WACA,CAAA,gBACA,CAAA,yCAIJ,YACE,CAAA,iEAEA,oBACE,CAAA,iBACA,CAAA,UACA,CAAA,WACA,CAAA,eACA,CAAA,kBACA,CAAA,yBACA,CAAA,aACA,CAAA,wEAEA,UACE,CAAA,iBACA,CAAA,OACA,CAAA,QACA,CAAA,UACA,CAAA,WACA,CAAA,eACA,CAAA,iBACA,CAAA,wBACA,CAAA,yEAIJ,kBACE,CAAA,gFAEA,0BACE,CAAA,qCAKN,YACE,CAAA,6BACA,CAAA,UACA,CAAA,yBAEA,qCALF,yBAMI,CAAA,CAAA,qCAIJ,YACE,CAAA,kBACA,CAAA,QACA,CAAA,kBACA,CAAA,UAlhCM,CAAA,wBAohCN,CAAA,iBACA,CAAA,iBACA,CAAA,kBACA,CAAA,cACA,CAAA,uCAEA,cACE,CAAA,aACA,CAAA,8BAOJ,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,kBACA,CAAA,iCAEA,QACE,CAAA,cACA,CAAA,eACA,CAAA,aAhjCM,CAAA,mCAmjCN,aA5jCK,CAAA,gBA8jCH,CAAA,kCAKN,eA5jCO,CAAA,kBA8jCL,CAAA,oCACA,CAAA,eACA,CAAA,yCAEA,QACE,CAAA,kDAEA,kBACE,CAAA,+BACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,aACA,CAAA,iBACA,CAAA,kDAGF,iBACE,CAAA,qBACA,CAAA,+BACA,CAAA,wDAGF,kBACE,CAAA,oDAGF,aACE,CAAA,cACA,CAAA,eACA,CAAA,sDAGF,eACE,CAAA,aA/lCI,CAAA,wBAqmCV,oBACE,CAAA,kBACA,CAAA,aAhnCO,CAAA,cAknCP,CAAA,eACA,CAAA,gBACA,CAAA,iBACA,CAAA,qBACA,CAAA,4BAGF,iBACE,CAAA,kBACA,CAAA,wBAGF,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,UACA,CAAA,WACA,CAAA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,cACA,CAAA,kBACA,CAAA,YACA,CAAA,sCAEA,kBACE,CAAA,aA5oCK,CAAA,4CA+oCL,kBA/oCK,CAAA,UAOF,CAAA,wCA8oCL,kBACE,CAAA,UAzoCI,CAAA,8CA4oCJ,eA5oCI,CAAA,UAND,CAAA,sCAwpCL,kBACE,CAAA,aACA,CAAA,4CAEA,kBACE,CAAA,UA7pCC,CAAA,+CAiqCH,UACE,CAAA,WACA,CAAA,gDAGF,kBACE,CAAA,aACA,CAAA,gCAKN,YACE,CAAA,qBACA,CAAA,OACA,CAAA,+BAGF,YACE,CAAA,kBACA,CAAA,OACA,CAAA,iCAGF,cACE,CAAA,eACA,CAAA,aACA,CAAA,UACA,CAAA,aACA,CAAA,iCAGF,MACE,CAAA,UACA,CAAA,mBACA,CAAA,kBACA,CAAA,eACA,CAAA,gCAGF,WACE,CAAA,mBACA,CAAA,kBACA,CAAA,yBACA,CAAA,0CAEA,2DACE,CAAA,wCAGF,kBA/sCO,CAAA,+BAotCT,cACE,CAAA,eACA,CAAA,aACA,CAAA,UACA,CAAA,gBACA,CAAA,aACA,CAAA,2BAGF,iBACE,CAAA,4BACA,CAAA,aACA,CAAA,6BAEA,cACE,CAAA,kBACA,CAAA,aACA,CAAA,6BAGF,QACE,CAAA,cACA,CAAA,eAKN,kBACE,CAAA,aAlvCU,CAAA,WAovCV,CAAA,gBACA,CAAA,iBACA,CAAA,cACA,CAAA,cACA,CAAA,yBACA,CAAA,qBAEA,kBACE,CAAA,gBAOJ,cACE,CAAA,iBACA,CAAA,UACA,CAAA,kCAEA,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,kBACA,CAAA,qCAEA,QACE,CAAA,cACA,CAAA,eACA,CAAA,aAjxCM,CAAA,uCAoxCN,aA7xCK,CAAA,gBA+xCH,CAAA,mCAKN,YACE,CAAA,cACA,CAAA,QACA,CAAA,kBACA,CAAA,iDAEA,MACE,CAAA,WACA,CAAA,uDAEA,aACE,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,aACA,CAAA,iBACA,CAAA,yDAEA,gBACE,CAAA,+DAIJ,UACE,CAAA,iBACA,CAAA,wBACA,CAAA,iBACA,CAAA,cACA,CAAA,aAxzCI,CAAA,eAFH,CAAA,2BA6zCD,CAAA,oBACA,CADA,eACA,CAAA,uBACA,CAAA,yLACA,CAAA,2BACA,CAAA,qCACA,CAAA,kBACA,CAAA,qEAEA,YACE,CAAA,oBA70CC,CAAA,yCA+0CD,CAAA,qEAIJ,YACE,CAAA,kBACA,CAAA,OACA,CAAA,mFAEA,MACE,CAAA,+EAGF,aACE,CAAA,UACA,CAAA,WACA,CAAA,mBACA,CAAA,kBACA,CAAA,sBACA,CAAA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,cACA,CAAA,kBACA,CAAA,+FAEA,kBACE,CAAA,UA71CF,CAAA,qGAg2CE,eAh2CF,CAAA,UAND,CAAA,gEA+2CL,iBACE,CAAA,sDAGF,MACE,CAAA,WACA,CAAA,iBACA,CAAA,8DAGF,UACE,CAAA,iBACA,CAAA,kBACA,CAAA,wBACA,CAAA,iBACA,CAAA,cACA,CAAA,aA73CM,CAAA,eAFH,CAAA,cAk4CH,CAAA,YACA,CAAA,kBACA,CAAA,2BACA,CAAA,iBACA,CAAA,eACA,CAAA,qBACA,CAAA,sFAEA,MACE,CAAA,WACA,CAAA,eACA,CAAA,sBACA,CAAA,kBACA,CAAA,qGAEA,aACE,CAAA,uFAIJ,iBACE,CAAA,UACA,CAAA,cACA,CAAA,aACA,CAAA,wBACA,CAAA,yFAKF,oBAv6CK,CAAA,yCAy6CH,CAAA,uFAGF,wBACE,CAAA,sFAGF,aACE,CAAA,2DAIJ,YACE,CAAA,iBACA,CAAA,oBACA,CAAA,MACA,CAAA,OACA,CAAA,WACA,CAAA,gBACA,CAAA,eACA,CAAA,eAt7CG,CAAA,wBAw7CH,CAAA,iBACA,CAAA,oCACA,CAAA,aACA,CAAA,2DAGF,YACE,CAAA,kBACA,CAAA,OACA,CAAA,gBACA,CAAA,cACA,CAAA,cACA,CAAA,aAl8CM,CAAA,QAo8CN,CAAA,0BACA,CAAA,iEAEA,kBACE,CAAA,sEAGF,kBACE,CAAA,gFAGF,UACE,CAAA,WACA,CAAA,cACA,CAAA,aACA,CAAA,oBA59CG,CAAA,gEAg+CL,MACE,CAAA,WACA,CAAA,eACA,CAAA,sBACA,CAAA,kBACA,CAAA,sCAKN,eAn+CO,CAAA,kBAq+CL,CAAA,oCACA,CAAA,kBACA,CAAA,eACA,CAAA,8DAEA,YACE,CAAA,kBACA,CAAA,6BACA,CAAA,iBACA,CAAA,+BACA,CAAA,QACA,CAAA,mEAEA,YACE,CAAA,kBACA,CAAA,OACA,CAAA,cACA,CAAA,aAr/CA,CAAA,wFAw/CA,UACE,CAAA,WACA,CAAA,cACA,CAAA,yEAGF,cACE,CAAA,wBACA,CADA,qBACA,CADA,gBACA,CAAA,QACA,CAAA,6FAGF,gBACE,CAAA,aACA,CAAA,+FAKF,mBACE,CAAA,kBACA,CAAA,OACA,CAAA,gBACA,CAAA,WACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,cACA,CAAA,kBACA,CAAA,UAhhDA,CAAA,kBAkhDA,CAAA,oHAEA,eAphDA,CAAA,UAND,CAAA,wGA+hDC,UACE,CAAA,kBACA,CAAA,4DAMR,YACE,CAAA,cACA,CAAA,KACA,CAAA,eACA,CAAA,gBACA,CAAA,eACA,CAAA,iFAEA,YACE,CAAA,kBACA,CAAA,OACA,CAAA,gBACA,CAAA,UACA,CAAA,iBACA,CAAA,cACA,CAAA,aApjDI,CAAA,cAsjDJ,CAAA,wBACA,CADA,qBACA,CADA,gBACA,CAAA,0BACA,CAAA,uFAEA,kBACE,CAAA,sGAGF,UACE,CAAA,WACA,CAAA,cACA,CAAA,aACA,CAAA,2GAGF,kBACE,CAAA,sCAMR,eA9kDO,CAAA,kBAglDL,CAAA,oCACA,CAAA,YACA,CAAA,kBACA,CAAA,gBACA,CAAA,eACA,CAAA,iDAEA,cACE,CAAA,sCAIJ,eA5lDO,CAAA,kBA8lDL,CAAA,oCACA,CAAA,eACA,CAAA,uBACA,CAAA,oBACA,CAAA,cACA,CAAA,yDAEA,YACE,CAAA,6CAGF,QACE,CAAA,qBACA,CAAA,sDAEA,kBACE,CAAA,+BACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,aACA,CAAA,iBACA,CAAA,kBACA,CAAA,sDAGF,iBACE,CAAA,qBACA,CAAA,+BACA,CAAA,cACA,CAAA,4DAGF,kBACE,CAAA,qDAKJ,iBACE,CAAA,mBACA,CAAA,4BACA,CAAA,iEAGA,YACE,CAAA,+CAIJ,cACE,CAAA,aACA,CAAA,6DAIA,QACE,CAAA,SACA,CAAA,eACA,CAAA,YACA,CAAA,kBACA,CAAA,OACA,CAAA,mFAGE,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,cACA,CAAA,sBACA,CADA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,eA3qDH,CAAA,aACD,CAAA,cA6qDI,CAAA,kBACA,CAAA,oBACA,CAAA,aACA,CAAA,kBACA,CAAA,yFAEA,kBACE,CAAA,aA5rDH,CAAA,oBAAA,CAAA,0FAksDD,kBAlsDC,CAAA,UAOF,CAAA,oBAPE,CAAA,eAssDC,CAAA,4FAGF,WACE,CAAA,cACA,CAAA,mBACA,CAAA,qDAMR,6BACE,CAAA,aA3sDE,CAAA,cA6sDF,CAAA,sCAIJ,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,UACA,CAAA,WACA,CAAA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,cACA,CAAA,kBACA,CAAA,UAttDM,CAAA,kBAwtDN,CAAA,4CAEA,eA1tDM,CAAA,UAND,CAAA,gCA2uDP,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,kBACA,CAAA,mCAEA,QACE,CAAA,cACA,CAAA,eACA,CAAA,aAlvDM,CAAA,qCAqvDN,aA9vDK,CAAA,gBAgwDH,CAAA,iCAKN,YACE,CAAA,cACA,CAAA,oBACA,CAAA,QACA,CAAA,kBACA,CAAA,+CAEA,cACE,CAAA,WACA,CAAA,qDAEA,aACE,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,aACA,CAAA,iBACA,CAAA,uDAEA,gBACE,CAAA,6DAIJ,UACE,CAAA,iBACA,CAAA,wBACA,CAAA,iBACA,CAAA,cACA,CAAA,aA1xDI,CAAA,eAFH,CAAA,2BA+xDD,CAAA,mEAEA,YACE,CAAA,oBAzyDC,CAAA,yCA2yDD,CAAA,mEAIJ,oBACE,CADF,eACE,CAAA,uBACA,CAAA,yLACA,CAAA,2BACA,CAAA,qCACA,CAAA,kBACA,CAAA,6MAGF,cAGE,CAAA,8FAIA,YACE,CAAA,OACA,CAAA,kBACA,CAAA,4GAEA,aACE,CAAA,WACA,CAAA,+FAIJ,cACE,CAAA,WACA,CAAA,iBACA,CAAA,QACA,CAAA,kBACA,CAAA,wBACA,CAAA,UACA,CAAA,cACA,CAAA,oHAEA,kBACE,CAAA,oBACA,CAAA,UACA,CAAA,wGAGF,WACE,CAAA,cACA,CAAA,kBACA,CAAA,oBACA,CAAA,UACA,CAAA,iEAKN,cACE,CAAA,oEAGF,cACE,CAAA,sCAKN,kBACE,CAAA,wBACA,CAAA,kBACA,CAAA,iBACA,CAAA,eACA,CAAA,8CAEA,cACE,CAAA,eACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,aACA,CAAA,YACA,CAAA,kBACA,CAAA,OACA,CAAA,sEAEA,YACE,CAAA,kEAIJ,4BACE,CAAA,eACA,CAAA,gBACA,CAAA,aACA,CAAA,iEAGF,iBACE,CAAA,+BACA,CAAA,4EAEA,kBACE,CAAA,iEAIJ,YACE,CAAA,kBACA,CAAA,OACA,CAAA,iBACA,CAAA,cACA,CAAA,aACA,CAAA,iEAGF,mBACE,CAAA,kBACA,CAAA,eACA,CAAA,mBACA,CAAA,kBACA,CAAA,aACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,oEAGF,cACE,CAAA,aAl6DM,CAAA,gBAo6DN,CAAA,iCAIJ,kBACE,CAAA,6CAEA,gBACE,CAAA,cACA,CAAA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,kBACA,CAAA,sDAEA,UACE,CAAA,cACA,CAAA,oCAKN,eA57DO,CAAA,kBA87DL,CAAA,oCACA,CAAA,eACA,CAAA,2CAEA,QACE,CAAA,qBACA,CAAA,oDAEA,kBACE,CAAA,+BACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,aACA,CAAA,gBACA,CAAA,kBACA,CAAA,oDAGF,eACE,CAAA,qBACA,CAAA,+BACA,CAAA,cACA,CAAA,0DAGF,kBACE,CAAA,8PAIF,eAIE,CAAA,cACA,CAAA,wBACA,CAAA,iBACA,CAAA,eAr+DC,CAAA,mDA2+DL,iBACE,CAAA,mBACA,CAAA,4BACA,CAAA,+DAEA,YACE,CAAA,6CAIJ,cACE,CAAA,aACA,CAAA,2DAIA,QACE,CAAA,SACA,CAAA,eACA,CAAA,YACA,CAAA,kBACA,CAAA,OACA,CAAA,iFAGE,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,cACA,CAAA,WACA,CAAA,cACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,eA9gEH,CAAA,aACD,CAAA,cAghEI,CAAA,kBACA,CAAA,oBACA,CAAA,aACA,CAAA,kBACA,CAAA,uFAEA,kBACE,CAAA,aA/hEH,CAAA,oBAAA,CAAA,wFAqiED,kBAriEC,CAAA,UAOF,CAAA,oBAPE,CAAA,eAyiEC,CAAA,0FAGF,WACE,CAAA,cACA,CAAA,mBACA,CAAA,mDAMR,6BACE,CAAA,aA9iEE,CAAA,cAgjEF,CAAA,+BAKJ,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,UACA,CAAA,WACA,CAAA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,cACA,CAAA,kBACA,CAAA,UA1jEM,CAAA,kBA4jEN,CAAA,qCAEA,eA9jEM,CAAA,UAND,CAAA,mCA2kEP,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,UACA,CAAA,WACA,CAAA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,cACA,CAAA,kBACA,CAAA,aA5lEO,CAAA,kBA8lEP,CAAA,yCAEA,kBAhmEO,CAAA,UAOF,CAAA,aAimET,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,iBACA,CAAA,mBAEA,QACE,CAAA,WAIJ,YACE,CAAA,OACA,CAAA,eACA,CAAA,iBACA,CAAA,WACA,CAAA,UAGF,WACE,CAAA,wBACA,CAAA,gBACA,CAAA,cACA,CAAA,iBACA,CAAA,cACA,CAAA,UACA,CAAA,wBACA,CAAA,YAEA,gBACE,CAAA,iBAGF,eACE,CAAA,UACA,CAAA,oCACA,CAAA,eACA,CAAA,6BAGF,UACE,CAAA,WAIJ,MACE,CAAA,WACA,CAAA,kCAKA,YAEE,CAAA,iBACA,CAAA,iBAGF,iBACE,CAAA,qCAGF,eAEE,CAAA,eAIJ,YACE,CAAA,OACA,CAAA,sBACA,CAAA,6BAEA,MACE,CAAA,gBAIJ,mBACE,CAAA,kBACA,CAAA,OACA,CAAA,gBACA,CAAA,iBACA,CAAA,wBACA,CAAA,oDACA,CAAA,aACA,CAAA,cACA,CAAA,eACA,CAAA,cACA,CAAA,kBACA,CAAA,kBACA,CAAA,eACA,CAAA,kBAEA,cACE,CAAA,sBAGF,oDACE,CAAA,UACA,CAAA,oBACA,CAAA,yBAGF,UACE,CAAA,WACA,CAAA,8BAGF,oBACE,CAAA,oDACA,CAAA,aACA,CAAA,oCAEA,oDACE,CAAA,UACA,CAAA,oBACA,CAAA,gBAMN,eA5tES,CAAA,YA8tEP,CAAA,gBACA,CAAA,iBACA,CAAA,oCACA,CAAA,qBAEA,cACE,CAAA,4BAGF,kBACE,CAAA,YACA,CAAA,mCAEA,WACE,CAAA,mBACA,CAAA,sBACA,CAAA,qBACA,CAAA,kBACA,CAAA,mCAGF,wBACE,CAAA,eAMN,cACE,CAAA,KACA,CAAA,MACA,CAAA,UACA,CAAA,WACA,CAAA,0BACA,CAAA,YACA,CAAA,YACA,CAAA,8BAEA,iBACE,CAAA,OACA,CAAA,QACA,CAAA,+BACA,CAAA,eAxwEK,CAAA,YA0wEL,CAAA,kBACA,CAAA,gBACA,CAAA,SACA,CAAA,sCACA,CAAA,4CAEA,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,kBACA,CAAA,mDAEA,cACE,CAAA,eACA,CAAA,qCAIJ,cACE,CAAA,aACA,CAAA,cACA,CAAA,WACA,CAAA,2CAEA,UA5xEI,CAAA,iBAoyEV,kBACE,CAAA,mBAIA,wBACE,CAAA,eAhzEK,CAAA,mBAkzEL,CAAA,WACA,CAAA,UACA,CAAA,kBACA,CAAA,sBACA,CAAA,YACA,CAAA,iBACA,CAAA,kBACA,CAAA,cACA,CAAA,yBAEA,kBA7zES,CAAA,oBANF,CAAA,iBA80ET,aACE,CAAA,oBACA,CAAA,oCAGF,YACE,CAAA,6BACA,CAAA,mCAGF,YACE,CAAA,WACA,CAAA,kBACA,CAAA,sBACA,CAAA,UACA,CAAA,cACA,CAAA,eAv1EK,CAAA,wBAy1EL,CAAA,aACA,CAAA,iBACA,CAAA,yCAEA,kBACE,CAAA,UA91EG,CAAA,6BAm2EP,wBACE,CAAA,4CAMF,YACE,CAAA,cACA,CAAA,OACA,CAAA,kBACA,CAAA,iDAEA,mBACE,CAAA,kBACA,CAAA,gBACA,CAAA,mBACA,CAAA,cACA,CAAA,eACA,CAAA,aAr3EE,CAAA,kBAu3EF,CAAA,wBACA,CAAA,kDAIJ,eA73EO,CAAA,kBA+3EL,CAAA,oCACA,CAAA,YACA,CAAA,kBACA,CAAA,uCAGF,YACE,CAAA,QACA,CAAA,sBACA,CAAA,kCAGF,aACE,CAAA,WACA,CAAA,6CAGF,gBACE,CAAA,oCAGF,WACE,CAAA,cACA,CAAA,kBACA,CAAA,wBACA,CAAA,kBACA,CAAA,YACA,CAAA,gDAEA,kBACE,CAAA,0CAGF,aACE,CAAA,eACA,CAAA,iBACA,CAAA,cACA,CAAA,aACA,CAAA,kGAGF,UAEE,CAAA,wBACA,CAAA,iBACA,CAAA,gBACA,CAAA,cACA,CAAA,+BACA,CAAA,eA/6EG,CAAA,8GAk7EH,YACE,CAAA,oBA17EG,CAAA,yCA47EH,CAAA,6CAIJ,gBACE,CAAA,eACA,CAAA,yCAGF,UACE,CAAA,sBACA,CAAA,iBACA,CAAA,mDAGF,UACE,CAAA,kBACA,CAAA,2CAIJ,eACE,CAAA,kDAEA,eACE,CAAA,yDAGF,YACE,CAAA,kBACA,CAAA,6BACA,CAAA,QACA,CAAA,yDAGF,qBACE,CAAA,2DAGF,UAt9EM,CAAA,oBAw9EJ,CAAA,eACA,CAAA,kBACA,CAAA,iEAEA,yBACE,CAAA,6EAIJ,eACE,CAAA,sBAKN,YACE,CAAA,cACA,CAAA,aACA,CAAA,kBACA,CAAA,aAh/EM,CAAA,cAk/EN,CAAA,oBAGF,kBACE,CAAA,oBAGF,kBACE,CAAA,oBAGF,wBACE,CAAA,kBACA,CAAA,iBACA,CAAA,gBACA,CAAA,iBACA,CAAA,+BAEA,eACE,CAAA,2BAGF,aACE,CAAA,aAxgFQ,CAAA,cA0gFR,CAAA,eACA,CAAA,iBACA,CAAA,0BAGF,aACE,CAAA,UACA,CAAA,cACA,CAAA,gBACA,CAAA,oBAIJ,kBACE,CAAA,+BAEA,eACE,CAAA,wCAGF,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,QACA,CAAA,iBACA,CAAA,cACA,CAAA,+CAEA,aAtiFQ,CAAA,eAwiFN,CAAA,6CAGF,aACE,CAAA,cACA,CAAA,eACA,CAAA,kBACA,CAAA,0BAIJ,aACE,CAAA,cACA,CAAA,UACA,CAAA,cACA,CAAA,mBAIJ,UACE,CAAA,WACA,CAAA,mBACA,CAAA,kBACA,CAAA,eACA,CAAA,wBAEA,aACE,CAAA,WACA,CAAA,2DACA,CAAA,eAIJ,kBACE,CAAA,eAGF,wBACE,CAAA,iBACA,CAAA,kBACA,CAAA,iBACA,CAAA,kBACA,CAAA,0BAEA,eACE,CAAA,6BAGF,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,OACA,CAAA,iBACA,CAAA,oCAEA,aA/lFQ,CAAA,cAimFN,CAAA,eACA,CAAA,mCAGF,aACE,CAAA,cACA,CAAA,kBACA,CAAA,oBAIJ,aACE,CAAA,kBACA,CAAA,wBACA,CAAA,iBACA,CAAA,eACA,CAAA,aACA,CAAA,cACA,CAAA,eACA,CAAA,8BAGF,aACE,CAAA,aACA,CAAA,cACA,CAAA,iBACA,CAAA,0BAIJ,uCAEI,qBACE,CAAA,oCAGF,UACE,CAAA,aACA,CAAA,CAAA,+FAMN,qBAEE,CAAA,cACA,CAAA,+IAGF,qBArpFS,CAAA,wBAwpFP,CAAA,iBACA,CAAA,eACA,CAAA,YACA,CAAA,kBACA,CAAA,gBACA,CAAA,eACA,CAAA,0CACA,CAAA,cACA,CAAA,yMAGF,cAEE,CAAA,eACA,CAAA,aACA,CAAA,+MAGF,aAEE,CAAA,mMAGF,WAEE,CAAA,SACA,CAAA,4VAGF,oBA5rFW,CAAA,yCAisFT,CAAA,SACA,CAAA,2GAGF,oBA3rFU,CAAA,yBA8rFR,CAAA,cACA,CAAA,yKAGF,gBAEE,CAAA,iBACA,CAAA,wBACA,CAAA,cACA,CAAA,mMAGF,wBAptFW,CAAA,UAOF,CAAA,yBAstFT,SACE,2BACE,CAAA,qBAEA,uBACE,CAAA,cAIJ,wBACE,CAAA,CAAA,qBAOJ,YACE,CAAA,qBACA,CAAA,QACA,CAAA,eACA,CAAA,qBAGF,cACE,CAAA,eACA,CAAA,wCAEA,cACE,CAAA,sDAEA,eACE,CAAA,0EAEA,eACE,CAAA,wCAKN,gBACE,CAAA,UACA,CAAA,WACA,CAAA,wBACA,CAAA,iBACA,CAAA,eACA,CAAA,aACA,CAAA,mBACA,CAAA,kBACA,CAAA,sBACA,CAAA,cACA,CAAA,kBACA,CAAA,8CAEA,kBACE,CAAA,oBACA,CAAA,mFAIJ,YACE,CAAA,2CAGF,YACE,CAAA,kBACA,CAAA,QACA,CAAA,iBACA,CAAA,+BACA,CAAA,eACA,CAAA,iDAEA,cACE,CAAA,eACA,CAAA,aACA,CAAA,mBACA,CAAA,kBACA,CAAA,OACA,CAAA,QACA,CAAA,kBACA,CAAA,uEAGF,cACE,CAAA,kIAGF,WAEE,CAAA,WACA,CAAA,4IAGF,WAEE,CAAA,eACA,CAAA,kDAIJ,QACE,CAAA,cACA,CAAA,aACA,CAAA,eACA,CAAA,kBACA,CAAA,2CAGF,gBACE,CAAA,mBACA,CAAA,kBACA,CAAA,OACA,CAAA,WACA,CAAA,cACA,CAAA,iBACA,CAAA,wBACA,CAAA,kBACA,CAAA,aACA,CAAA,cACA,CAAA,eACA,CAAA,cACA,CAAA,kBACA,CAAA,iDAEA,kBACE,CAAA,oBACA,CAAA,oDAGF,UACE,CAAA,WACA,CAAA,6CAIJ,YACE,CAAA,kBACA,CAAA,QACA,CAAA,iBACA,CAAA,+BACA,CAAA,eACA,CAAA,8CAGF,mBACE,CAAA,kBACA,CAAA,OACA,CAAA,WACA,CAAA,cACA,CAAA,iBACA,CAAA,wBACA,CAAA,kBACA,CAAA,aACA,CAAA,cACA,CAAA,eACA,CAAA,cACA,CAAA,kBACA,CAAA,oDAEA,kBACE,CAAA,oBACA,CAAA,uDAGF,UACE,CAAA,kBACA,CAAA,6DAIJ,eACE,CAAA,KACA,CAAA,SACA,CAAA,mCACA,CAAA,wBACA,CAAA,0CACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,iBACA,CAAA,kBACA,CAAA,wIAGF,uBAEE,CAAA,kRAGF,cAIE,CAAA,kBACA,CAAA,eACA,CAAA,wIAGF,aAEE,CAAA,eACA,CAAA,sBACA,CAAA,iBACA,CAAA,8SAGF,WAIE,CAAA,iBACA,CAAA,UACA,CAAA,OACA,CAAA,0BACA,CAAA,UACA,CAAA,WACA,CAAA,mBACA,CAAA,cACA,CAAA,eACA,CAAA,gBACA,CAAA,iBACA,CAAA,aACA,CAAA,kBACA,CAAA,kTAGF,WAIE,CAAA,UACA,CAAA,kBACA,CAAA,sTAGF,WAIE,CAAA,UACA,CAAA,kBACA,CAAA,4LAGF,UAIE,CAAA,WACA,CAAA,cACA,CAAA,gDAGF,YACE,CAAA,oCAGF,iBACE,CAAA,mBACA,CAAA,4BACA,CAAA,8BAGF,cACE,CAAA,aACA,CAAA,4CAGF,QACE,CAAA,SACA,CAAA,0BACA,CAAA,YACA,CAAA,kBACA,CAAA,OACA,CAAA,uDAEA,0BACE,CAAA,kEAEA,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,cACA,CAAA,sBACA,CADA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,eACA,CAAA,aACA,CAAA,oBACA,CAAA,aACA,CAAA,kBACA,CAAA,wEAEA,kBACE,CAAA,aACA,CAAA,oBACA,CAAA,kJAIJ,cAEE,CAAA,yEAGF,kBACE,CAAA,UACA,CAAA,oBACA,CAAA,2EAGF,WACE,CAAA,cACA,CAAA,mBACA,CAAA,mBAMR,YACE,CAAA,qBACA,CAAA,OACA,CAAA,uBAGF,wBACE,CAAA,iBACA,CAAA,eACA,CAAA,eACA,CAAA,+BAEA,cACE,CAAA,gBACA,CAAA,cACA,CAAA,eACA,CAAA,aACA,CAAA,eACA,CAAA,uDAEA,YACE,CAAA,sCAGF,WACE,CAAA,WACA,CAAA,cACA,CAAA,aACA,CAAA,cACA,CAAA,4CAIJ,WACE,CAAA,oBAIJ,4BACE,CAAA,gBACA,CAAA,gBACA,CAAA,eACA,CAAA,oCAEA,YACE,CAAA,kBACA,CAAA,OACA,CAAA,cACA,CAAA,aACA,CAAA,iBACA,CAAA,+CAEA,eACE,CAAA,yDAGF,QACE,CAAA,sBAKN,eACE,CAAA,kBACA,CAAA,oCACA,CAAA,eACA,CAAA,4BAGF,iBACE,CAAA,+BACA,CAAA,cACA,CAAA,eACA,CAAA,aACA,CAAA,YACA,CAAA,kBACA,CAAA,OACA,CAAA,oDAEA,mBACE,CAAA,kBACA,CAAA,OACA,CAAA,4BAIJ,aACE,CAAA,uBAGF,QACE,CAAA,UACA,CAAA,kBACA,CAAA,gCAEA,gBACE,CAAA,+BACA,CAAA,cACA,CAAA,aACA,CAAA,qBACA,CAAA,kBACA,CAAA,mCAGF,gBACE,CAAA,kBACA,CAAA,oCAGF,kBACE,CAAA,eACA,CAAA,sBACA,CAAA,gNAGF,iBAIE,CAAA,gFAGF,6BAEE,CAAA,eACA,CAAA,sBACA,CAAA,iGAGF,mBAEE,CAAA,kBACA,CAAA,sBACA,CAAA,UACA,CAAA,WACA,CAAA,iBACA,CAAA,cACA,CAAA,kBACA,CAAA,+CAGF,wBACE,CAAA,kBACA,CAAA,aACA,CAAA,qDAEA,kBACE,CAAA,UACA,CAAA,oBACA,CAAA,kDAIJ,wBACE,CAAA,kBACA,CAAA,aACA,CAAA,wDAEA,kBACE,CAAA,UACA,CAAA,oBACA,CAAA,sCAIJ,kBACE,CAAA,oDAGF,aACE,CAAA,uDAGF,kBACE,CAAA,qBAIJ,iBACE,CAAA,wBACA,CAAA,iBACA,CAAA,wBAGF,YACE,CAAA,kBACA,CAAA,QACA,CAAA,kBACA,CAAA,8BAEA,cACE,CAAA,eACA,CAAA,aACA,CAAA,QACA,CAAA,sCAGF,WACE,CAAA,WACA,CAAA,kBAIJ,cACE,CAAA,aACA,CAAA,kBACA,CAAA,uBAGF,wBACE,CAAA,iBACA,CAAA,gBACA,CAAA,aACA,CAAA,wBAGF,UACE,CAAA,wBACA,CAAA,cACA,CAAA,sDAEA,+BAEE,CAAA,WACA,CAAA,qBACA,CAAA,2BAGF,eACE,CAAA,KACA,CAAA,kBACA,CAAA,aACA,CAAA,eACA,CAAA,oCAGF,eACE,CAAA,eACA,CAAA,kBACA,CAAA,eACA,CAAA,sBACA,CAAA,sCAGF,eACE,CAAA,uBAIJ,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,mBACA,CAAA,eACA,CAAA,cACA,CAAA,eACA,CAAA,sCAEA,kBACE,CAAA,aACA,CAAA,mCAGF,kBACE,CAAA,aACA,CAAA,oEAOJ,eACE,CAAA,0BAGF,wBACE,CAAA,iBACA,CAAA,eACA,CAAA,eACA,CAAA,kCAEA,cACE,CAAA,gBACA,CAAA,cACA,CAAA,eACA,CAAA,aACA,CAAA,eACA,CAAA,0DAEA,YACE,CAAA,yCAGF,WACE,CAAA,WACA,CAAA,cACA,CAAA,aACA,CAAA,cACA,CAAA,+CAIJ,WACE,CAAA,uBAIJ,4BACE,CAAA,gBACA,CAAA,gBACA,CAAA,eACA,CAAA,0CAEA,YACE,CAAA,kBACA,CAAA,OACA,CAAA,cACA,CAAA,aACA,CAAA,iBACA,CAAA,qDAEA,eACE,CAAA,+DAGF,QACE,CAAA,gDAOJ,kBAEE,CAAA,gCAGF,mBACE,CAAA,kBACA,CAAA,OACA,CAAA,qCAEA,UACE,CAAA,WACA,CAAA,SACA,CAAA,mBACA,CAAA,kBACA,CAAA,sBACA,CAAA,4BACA,CAAA,uCAEA,aACE,CAAA,0CAMR,eACE,CAAA,KACA,CAAA,SACA,CAAA,mCACA,CAAA,wBACA,CAAA,0CACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,iBACA,CAAA,kBACA,CAAA,mDAGF,uBACE,CAAA,uGAGF,cAEE,CAAA,kBACA,CAAA,eACA,CAAA,mDAGF,aACE,CAAA,eACA,CAAA,sBACA,CAAA,iBACA,CAAA,qHAGF,WAEE,CAAA,iBACA,CAAA,UACA,CAAA,OACA,CAAA,0BACA,CAAA,UACA,CAAA,WACA,CAAA,mBACA,CAAA,cACA,CAAA,eACA,CAAA,gBACA,CAAA,iBACA,CAAA,aACA,CAAA,kBACA,CAAA,uHAGF,WAEE,CAAA,UACA,CAAA,kBACA,CAAA,yHAGF,WAEE,CAAA,UACA,CAAA,kBACA,CAAA,wBAOA,YACE,CAAA,6BACA,CAAA,kBACA,CAAA,kBACA,CAAA,2BAEA,QACE,CAAA,cACA,CAAA,eACA,CAAA,aA/8GM,CAAA,yBAo9GV,YACE,CAAA,cACA,CAAA,oBACA,CAAA,QACA,CAAA,kBACA,CAAA,uCAEA,cACE,CAAA,WACA,CAAA,eACA,CAAA,6CAEA,aACE,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,aACA,CAAA,iBACA,CAAA,qDAGF,UACE,CAAA,gBACA,CAAA,wBACA,CAAA,iBACA,CAAA,cACA,CAAA,aA/+GI,CAAA,eAFH,CAAA,2BAo/GD,CAAA,2DAEA,YACE,CAAA,oBA9/GC,CAAA,yCAggHD,CAAA,2DAIJ,oBACE,CADF,eACE,CAAA,uBACA,CAAA,yLACA,CAAA,2BACA,CAAA,qCACA,CAAA,kBACA,CAAA,4DAGF,aACE,CAAA,YACA,CAAA,OACA,CAAA,cACA,CAAA,4BAKN,eA/gHO,CAAA,kBAihHL,CAAA,oCACA,CAAA,eACA,CAAA,mCAEA,QACE,CAAA,4CAEA,kBACE,CAAA,+BACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,aACA,CAAA,iBACA,CAAA,kBACA,CAAA,4CAGF,iBACE,CAAA,cACA,CAAA,aApiHI,CAAA,qBAsiHJ,CAAA,+BACA,CAAA,qDAGF,kBACE,CAAA,2CAIJ,iBACE,CAAA,mBACA,CAAA,4BACA,CAAA,uDAEA,YACE,CAAA,qCAIJ,cACE,CAAA,aACA,CAAA,mDAIA,QACE,CAAA,SACA,CAAA,eACA,CAAA,YACA,CAAA,kBACA,CAAA,OACA,CAAA,yEAGE,mBACE,CAAA,kBACA,CAAA,sBACA,CAAA,cACA,CAAA,sBACA,CADA,iBACA,CAAA,WACA,CAAA,cACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,eArlHH,CAAA,aACD,CAAA,cAulHI,CAAA,kBACA,CAAA,oBACA,CAAA,aACA,CAAA,kBACA,CAAA,+EAEA,kBACE,CAAA,aAtmHH,CAAA,oBAAA,CAAA,gFA4mHD,kBA5mHC,CAAA,UAOF,CAAA,oBAPE,CAAA,eAgnHC,CAAA,kFAGF,WACE,CAAA,cACA,CAAA,mBACA,CAAA,2CAMR,6BACE,CAAA,aArnHE,CAAA,cAunHF,CAAA,kBAIJ,oBACE,CAAA,eACA,CAAA,iBACA,CAAA,cACA,CAAA,eACA,CAAA,wBACA,CAAA,mBACA,CAAA,0BAGF,kBACE,CAAA,aACA,CAAA,yBAGF,kBACE,CAAA,aACA,CAAA,0BAGF,kBACE,CAAA,aACA","file":"style.css","sourcesContent":["*{box-sizing:border-box}body{font-family:\"Roboto\",sans-serif;margin:0;padding:0;font-size:14px;color:#4e5e6a;background:#f4f6f9;max-width:100vw;overflow-x:hidden}.hide{display:none}small{font-size:.75em}.text-right{text-align:right}.text-bold{font-weight:700 !important}.nowrap{white-space:nowrap}body.unlogged{background:#f4f6f9;margin:0;padding:0}.login-container{display:flex;min-height:100vh}.login-brand{flex:0 0 45%;background:linear-gradient(135deg, #1E2A3A 0%, #2C3E57 50%, #6690F4 100%);display:flex;align-items:center;justify-content:center;padding:60px;position:relative;overflow:hidden}.login-brand::before{content:\"\";position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle, rgba(102, 144, 244, 0.15) 0%, transparent 70%);border-radius:50%}.login-brand .brand-content{position:relative;z-index:1;color:#fff;max-width:400px}.login-brand .brand-logo{font-size:48px;font-weight:300;margin-bottom:20px;letter-spacing:-1px}.login-brand .brand-logo strong{font-weight:700}.login-brand .brand-tagline{font-size:18px;opacity:.85;line-height:1.6;margin-bottom:50px}.login-brand .brand-features .feature{display:flex;align-items:center;gap:15px;margin-bottom:20px;opacity:.8}.login-brand .brand-features .feature i{font-size:20px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);border-radius:10px}.login-brand .brand-features .feature span{font-size:15px}.login-form-wrapper{flex:1;display:flex;align-items:center;justify-content:center;padding:60px;background:#fff}.login-box{width:100%;max-width:420px}.login-box .login-header{margin-bottom:35px}.login-box .login-header h1{font-size:28px;font-weight:700;color:#2d3748;margin:0 0 8px}.login-box .login-header p{color:#718096;font-size:15px;margin:0}.login-box .form-group{margin-bottom:20px}.login-box .form-group label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.login-box .input-with-icon{position:relative}.login-box .input-with-icon i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px}.login-box .input-with-icon .form-control{padding-left:42px}.login-box .form-control{width:100%;height:46px;border:2px solid #e2e8f0;border-radius:8px;padding:0 14px;font-size:14px;font-family:\"Roboto\",sans-serif;color:#2d3748;transition:border-color .3s,box-shadow .3s}.login-box .form-control::placeholder{color:#cbd5e0}.login-box .form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.15);outline:none}.login-box .form-error{color:#c00;font-size:12px;margin-top:4px}.login-box .checkbox-group .checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:#718096;font-weight:400}.login-box .checkbox-group .checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:#6690f4}.login-box .btn-login{width:100%;height:48px;font-size:15px;font-weight:600;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:8px}.login-box .btn-login.disabled{opacity:.7;pointer-events:none}.login-box .alert{display:none;padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:20px}.login-box .alert.alert-danger{background:#fff5f5;color:#c00;border:1px solid #fed7d7}.login-box .alert.alert-success{background:#f0fff4;color:#276749;border:1px solid #c6f6d5}@media(max-width: 768px){.login-brand{display:none}.login-form-wrapper{padding:30px 20px}}body.logged{display:flex;min-height:100vh;background:#f4f6f9}.sidebar{width:260px;min-height:100vh;background:#1e2a3a;position:fixed;top:0;left:0;z-index:1000;display:flex;flex-direction:column;transition:width .3s ease;overflow:hidden}.sidebar.collapsed{width:70px}.sidebar.collapsed .sidebar-header{padding:16px 0;justify-content:center}.sidebar.collapsed .sidebar-header .sidebar-logo{display:none}.sidebar.collapsed .sidebar-header .sidebar-toggle i{transform:rotate(180deg)}.sidebar.collapsed .sidebar-nav ul li a{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li a span{display:none}.sidebar.collapsed .sidebar-nav ul li a i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label span{display:none}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-footer .sidebar-user{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-user .user-info{display:none}.sidebar.collapsed .sidebar-footer .sidebar-logout{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-logout span{display:none}.sidebar.collapsed .nav-divider{margin:8px 15px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.sidebar-header .sidebar-logo a{color:#fff;text-decoration:none;font-size:24px;font-weight:300;letter-spacing:-0.5px}.sidebar-header .sidebar-logo a strong{font-weight:700}.sidebar-header .sidebar-toggle{background:none;border:none;color:#a8b7c7;cursor:pointer;padding:6px;border-radius:6px;transition:all .3s}.sidebar-header .sidebar-toggle:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar-header .sidebar-toggle i{transition:transform .3s}.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}.sidebar-nav ul{list-style:none;margin:0;padding:0}.sidebar-nav ul li.nav-group{margin-bottom:4px}.sidebar-nav ul li.nav-group .nav-group-label{display:flex;align-items:center;padding:11px 20px;color:#d5deea;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li.nav-group .nav-group-label i{width:20px;text-align:center;margin-right:12px;font-size:14px;color:#b6c4d3}.sidebar-nav ul li.nav-group .nav-submenu{margin:0;padding:0;list-style:none}.sidebar-nav ul li.nav-group .nav-submenu li a{padding-left:44px}.sidebar-nav ul li.nav-group.active>.nav-group-label{color:#fff;background:rgba(102,144,244,.12);border-left-color:#6690f4}.sidebar-nav ul li.nav-group.active>.nav-group-label i{color:#6690f4}.sidebar-nav ul li.nav-divider{height:1px;background:hsla(0,0%,100%,.08);margin:8px 20px}.sidebar-nav ul li a{display:flex;align-items:center;padding:11px 20px;color:#a8b7c7;text-decoration:none;font-size:14px;transition:all .2s;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li a i{width:20px;text-align:center;margin-right:12px;font-size:15px}.sidebar-nav ul li a:hover{background:#263548;color:#fff}.sidebar-nav ul li.active>a{background:rgba(102,144,244,.15);color:#fff;border-left-color:#6690f4}.sidebar-nav ul li.active>a i{color:#6690f4}.badge-alerts-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:8px;border-radius:50%;font-size:11px;font-weight:600;line-height:1;background:#fff;color:#6690f4}.sidebar-footer{padding:16px 20px;border-top:1px solid hsla(0,0%,100%,.08)}.sidebar-footer .sidebar-user{display:flex;align-items:center;gap:10px;margin-bottom:12px}.sidebar-footer .sidebar-user .user-avatar{width:34px;height:34px;border-radius:50%;background:rgba(102,144,244,.2);display:flex;align-items:center;justify-content:center;color:#6690f4;font-size:14px;flex-shrink:0}.sidebar-footer .sidebar-user .user-info{overflow:hidden}.sidebar-footer .sidebar-user .user-info .user-email{color:#a8b7c7;font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer .sidebar-logout{display:flex;align-items:center;gap:8px;color:#e53e3e;text-decoration:none;font-size:13px;padding:8px 10px;border-radius:6px;transition:all .2s}.sidebar-footer .sidebar-logout i{font-size:14px}.sidebar-footer .sidebar-logout:hover{background:rgba(229,62,62,.1)}.main-wrapper{margin-left:260px;flex:1;min-height:100vh;transition:margin-left .3s ease;display:flex;flex-direction:column}.main-wrapper.expanded{margin-left:70px}.topbar{height:56px;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;padding:0 25px;position:sticky;top:0;z-index:500}.topbar .topbar-toggle{background:none;border:none;color:#4e5e6a;cursor:pointer;padding:8px 10px;border-radius:6px;font-size:16px;margin-right:15px;transition:all .2s}.topbar .topbar-toggle:hover{background:#f4f6f9}.topbar .topbar-breadcrumb{font-size:16px;font-weight:600;color:#2d3748}.content{flex:1;padding:25px}.app-alert{background:#ebf8ff;border:1px solid #bee3f8;color:#2b6cb0;padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:14px}.btn{padding:10px 20px;transition:all .2s ease;color:#fff;border:0;border-radius:6px;cursor:pointer;display:inline-flex;text-decoration:none;gap:6px;justify-content:center;align-items:center;font-size:14px;font-family:\"Roboto\",sans-serif;font-weight:500}.btn.btn_small,.btn.btn-xs,.btn.btn-sm{padding:5px 10px;font-size:12px}.btn.btn_small i,.btn.btn-xs i,.btn.btn-sm i{font-size:11px}.btn.btn-success{background:#57b951}.btn.btn-success:hover{background:#4a9c3b}.btn.btn-primary{background:#6690f4}.btn.btn-primary:hover{background:#3164db}.btn.btn-danger{background:#c00}.btn.btn-danger:hover{background:#b30000}.btn.disabled{opacity:.6;pointer-events:none}.form-control{border:1px solid #e2e8f0;border-radius:6px;height:38px;width:100%;padding:6px 12px;font-family:\"Roboto\",sans-serif;font-size:14px;color:#2d3748;transition:border-color .2s,box-shadow .2s}.form-control option{padding:5px}.form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:none}input[type=checkbox]{border:1px solid #e2e8f0}table{border-collapse:collapse;font-size:13px}.table{width:100%}.table th,.table td{border:1px solid #e2e8f0;padding:8px 10px}.table th{background:#f7fafc;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:#718096}.table td.center{text-align:center}.table td.left{text-align:left}.table.table-sm td{padding:5px !important}.table input.form-control{font-size:13px;height:32px}.card{background:#fff;padding:20px;border-radius:8px;color:#2d3748;font-size:14px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.card.mb25{margin-bottom:20px}.card .card-header{font-weight:600;font-size:15px}.card .card-body{padding-top:12px}.card .card-body table th,.card .card-body table td{font-size:13px}.card .card-body table th.bold,.card .card-body table td.bold{font-weight:600}.card .card-body table th.text-right,.card .card-body table td.text-right{text-align:right}.card .card-body table th.text-center,.card .card-body table td.text-center{text-align:center}.action_menu{display:flex;margin-bottom:20px;gap:12px}.action_menu .btn{padding:8px 16px}.action_menu .btn.btn_add{background:#57b951}.action_menu .btn.btn_add:hover{background:#4a9c3b}.action_menu .btn.btn_cancel{background:#c00}.action_menu .btn.btn_cancel:hover{background:#b30000}.settings-tabs{display:flex;gap:8px;margin-bottom:18px}.settings-tabs .settings-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;text-decoration:none;color:#6b7a89;background:#e9eef5;border:1px solid #d8e0ea;font-size:13px;font-weight:600;transition:all .2s}.settings-tabs .settings-tab:hover{color:#2d3748;background:#dde6f2}.settings-tabs .settings-tab.active{color:#fff;background:#6690f4;border-color:#6690f4}.settings-card{background:#fff;border-radius:10px;padding:28px;box-shadow:0 1px 4px rgba(0,0,0,.06)}.settings-card .settings-card-header{display:flex;align-items:center;gap:14px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #e2e8f0}.settings-card .settings-card-header .settings-card-icon{width:44px;height:44px;border-radius:10px;background:rgb(225.706097561,233.7475609756,252.893902439);color:#6690f4;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.settings-card .settings-card-header h3{margin:0;font-size:17px;font-weight:600;color:#2d3748}.settings-card .settings-card-header small{color:#8899a6;font-size:13px}.settings-card .settings-field{margin-bottom:18px}.settings-card .settings-field label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.settings-card .settings-input-wrap{position:relative}.settings-card .settings-input-wrap .settings-input-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px;pointer-events:none}.settings-card .settings-input-wrap .form-control{padding-left:38px}.settings-card .settings-input-wrap .settings-toggle-pw{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;color:#a0aec0;cursor:pointer;padding:6px 10px;font-size:14px;transition:color .2s}.settings-card .settings-input-wrap .settings-toggle-pw:hover{color:#6690f4}.settings-card .settings-field .settings-toggle-label{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;font-weight:500;user-select:none;margin-bottom:0;width:100%}.settings-card .settings-field .settings-toggle-label .settings-toggle-text{flex:1 1 auto;min-width:0;line-height:1.35}.settings-card .settings-toggle-checkbox{display:none}.settings-card .settings-toggle-checkbox+.settings-toggle-switch{display:inline-block;position:relative;width:44px;height:24px;background:#ccc;border-radius:12px;transition:background .2s;flex-shrink:0}.settings-card .settings-toggle-checkbox+.settings-toggle-switch::after{content:\"\";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .2s}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch{background:#22c55e}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch::after{transform:translateX(20px)}.settings-card .settings-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}@media(max-width: 768px){.settings-card .settings-fields-grid{grid-template-columns:1fr}}.settings-card .settings-alert-error{display:flex;align-items:center;gap:10px;background:#fff5f5;color:#c00;border:1px solid #fed7d7;border-radius:8px;padding:12px 16px;margin-bottom:20px;font-size:13px}.settings-card .settings-alert-error i{font-size:16px;flex-shrink:0}.clients-page .clients-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.clients-page .clients-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.clients-page .clients-header h2 i{color:#6690f4;margin-right:8px}.clients-page .clients-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.clients-page .clients-table-wrap .table{margin:0}.clients-page .clients-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:14px 20px}.clients-page .clients-table-wrap .table tbody td{padding:14px 20px;vertical-align:middle;border-bottom:1px solid #f1f5f9}.clients-page .clients-table-wrap .table tbody tr:hover{background:#f8fafc}.clients-page .clients-table-wrap .table .client-id{color:#8899a6;font-size:13px;font-weight:600}.clients-page .clients-table-wrap .table .client-name{font-weight:600;color:#2d3748}.clients-page .badge-id{display:inline-block;background:#eef2ff;color:#6690f4;font-size:13px;font-weight:600;padding:4px 10px;border-radius:6px;font-family:monospace}.clients-page .actions-cell{text-align:center;white-space:nowrap}.clients-page .btn-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s;margin:0 2px}.clients-page .btn-icon.btn-icon-edit{background:#eef2ff;color:#6690f4}.clients-page .btn-icon.btn-icon-edit:hover{background:#6690f4;color:#fff}.clients-page .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.clients-page .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.clients-page .btn-icon.btn-icon-sync{background:#f0fdf4;color:#16a34a}.clients-page .btn-icon.btn-icon-sync:hover{background:#16a34a;color:#fff}.clients-page .btn-icon.btn-icon-sync:disabled{opacity:.7;cursor:wait}.clients-page .btn-icon.btn-icon-sync.is-queued{background:#fef3c7;color:#d97706}.clients-page .client-sync-bars{display:flex;flex-direction:column;gap:4px}.clients-page .client-sync-row{display:flex;align-items:center;gap:4px}.clients-page .client-sync-label{font-size:11px;font-weight:600;color:#8899a6;width:18px;flex-shrink:0}.clients-page .client-sync-track{flex:1;height:6px;border-radius:999px;background:#e9eef5;overflow:hidden}.clients-page .client-sync-fill{height:100%;border-radius:999px;background:#cbd5e0;transition:width .4s ease}.clients-page .client-sync-fill.is-active{background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.clients-page .client-sync-fill.is-done{background:#57b951}.clients-page .client-sync-pct{font-size:11px;font-weight:600;color:#8899a6;width:32px;text-align:right;flex-shrink:0}.clients-page .empty-state{text-align:center;padding:50px 20px !important;color:#a0aec0}.clients-page .empty-state i{font-size:40px;margin-bottom:12px;display:block}.clients-page .empty-state p{margin:0;font-size:15px}.btn-secondary{background:#e2e8f0;color:#2d3748;border:none;padding:8px 18px;border-radius:6px;font-size:14px;cursor:pointer;transition:background .2s}.btn-secondary:hover{background:#cbd5e0}.campaigns-page{max-width:100%;overflow-x:hidden;width:100%}.campaigns-page .campaigns-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.campaigns-page .campaigns-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.campaigns-page .campaigns-header h2 i{color:#6690f4;margin-right:8px}.campaigns-page .campaigns-filters{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:20px}.campaigns-page .campaigns-filters .filter-group{flex:1;min-width:0}.campaigns-page .campaigns-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.campaigns-page .campaigns-filters .filter-group label i{margin-right:4px}.campaigns-page .campaigns-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.campaigns-page .campaigns-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .filter-group .filter-with-action{display:flex;align-items:center;gap:8px}.campaigns-page .campaigns-filters .filter-group .filter-with-action .form-control{flex:1}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon{flex-shrink:0;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.campaigns-page .campaigns-filters .filter-group-campaign-multi{flex:2 !important}.campaigns-page .campaigns-filters .campaign-dropdown{flex:1;min-width:0;position:relative}.campaigns-page .campaigns-filters .campaign-dropdown-trigger{width:100%;padding:10px 14px;padding-right:32px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;cursor:pointer;display:flex;align-items:center;transition:border-color .2s;position:relative;min-height:42px;box-sizing:border-box}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text.is-placeholder{color:#8899a6}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-arrow{position:absolute;right:12px;font-size:10px;color:#8899a6;transition:transform .2s}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-trigger{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-arrow{transform:rotate(180deg)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-menu{display:block}.campaigns-page .campaigns-filters .campaign-dropdown-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;max-height:280px;overflow-y:auto;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:4px 0}.campaigns-page .campaigns-filters .campaign-dropdown-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:14px;color:#2d3748;margin:0;transition:background .15s}.campaigns-page .campaigns-filters .campaign-dropdown-item:hover{background:#f8fafc}.campaigns-page .campaigns-filters .campaign-dropdown-item.is-checked{background:#eef2ff}.campaigns-page .campaigns-filters .campaign-dropdown-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;flex-shrink:0;accent-color:#6690f4}.campaigns-page .campaigns-filters .campaign-dropdown-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-list-panel{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);margin-bottom:20px;overflow:hidden}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #e2e8f0;gap:12px}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left{display:flex;align-items:center;gap:8px;font-size:13px;color:#4e5e6a}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left input[type=checkbox]{width:16px;height:16px;cursor:pointer}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left label{cursor:pointer;user-select:none;margin:0}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left .campaigns-selected-count{margin-left:12px;color:#8899a6}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:hover:not(:disabled){background:#c00;color:#fff}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:disabled{opacity:.4;cursor:not-allowed}.campaigns-page .campaigns-list-panel .campaigns-list-items{display:flex;flex-wrap:wrap;gap:0;padding:8px 8px;max-height:220px;overflow-y:auto}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:2px;border-radius:6px;font-size:13px;color:#2d3748;cursor:pointer;user-select:none;transition:background .15s}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item:hover{background:#f0f4ff}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item input[type=checkbox]{width:15px;height:15px;cursor:pointer;flex-shrink:0}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item .campaigns-list-item-name{white-space:nowrap}.campaigns-page .campaigns-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:20px;min-height:350px;overflow:hidden}.campaigns-page .campaigns-chart-wrap #container{max-width:100%}.campaigns-page .campaigns-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none;max-width:100%}.campaigns-page .campaigns-table-wrap::-webkit-scrollbar{display:none}.campaigns-page .campaigns-table-wrap .table{margin:0;width:100% !important}.campaigns-page .campaigns-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:12px 16px;white-space:nowrap}.campaigns-page .campaigns-table-wrap .table tbody td{padding:10px 16px;vertical-align:middle;border-bottom:1px solid #f1f5f9;font-size:13px}.campaigns-page .campaigns-table-wrap .table tbody tr:hover{background:#f8fafc}.campaigns-page .campaigns-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.campaigns-page .campaigns-table-wrap .dt-layout-row:first-child{display:none}.campaigns-page .campaigns-table-wrap .dt-info{font-size:13px;color:#8899a6}.campaigns-page .campaigns-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:fit-content;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.campaigns-page .campaigns-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.campaigns-page .campaigns-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.campaigns-page .delete-history-entry{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .delete-history-entry:hover{background:#c00;color:#fff}.products-page .products-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.products-page .products-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.products-page .products-header h2 i{color:#6690f4;margin-right:8px}.products-page .products-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:20px;margin-bottom:16px}.products-page .products-filters .filter-group{flex:1 1 220px;min-width:0}.products-page .products-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.products-page .products-filters .filter-group label i{margin-right:4px}.products-page .products-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.products-page .products-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.products-page .products-filters .filter-group select.form-control{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.products-page .products-filters .filter-group.filter-group-client,.products-page .products-filters .filter-group.filter-group-campaign,.products-page .products-filters .filter-group.filter-group-ad-group{flex:1 1 260px}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions{display:flex;gap:8px;align-items:center}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions .form-control{flex:1 1 auto;min-width:0}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group{min-width:38px;height:38px;border-radius:6px;margin:0;background:#dc3545;border:1px solid #dc3545;color:#fff;cursor:pointer}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:hover:not(:disabled){background:#bb2d3b;border-color:#bb2d3b;color:#fff}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:disabled{opacity:.45;cursor:default;background:#dc3545;border-color:#dc3545;color:#fff}.products-page .products-filters .filter-group.filter-group-roas{flex:0 0 200px}.products-page .products-filters .filter-group.filter-group-columns{flex:0 0 240px}.products-page .products-scope-alerts{margin-bottom:12px;border:1px solid #fecaca;background:#fef2f2;border-radius:8px;overflow:hidden}.products-page .products-scope-alerts summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:13px;font-weight:600;color:#991b1b;display:flex;align-items:center;gap:8px}.products-page .products-scope-alerts summary::-webkit-details-marker{display:none}.products-page .products-scope-alerts .products-scope-alerts-list{border-top:1px solid #fecaca;background:#fff;max-height:260px;overflow:auto}.products-page .products-scope-alerts .products-scope-alert-item{padding:10px 12px;border-bottom:1px solid #f1f5f9}.products-page .products-scope-alerts .products-scope-alert-item:last-child{border-bottom:none}.products-page .products-scope-alerts .products-scope-alert-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:11px;color:#64748b}.products-page .products-scope-alerts .products-scope-alert-type{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:#eef2ff;color:#4338ca;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.products-page .products-scope-alerts .products-scope-alert-message{font-size:13px;color:#2d3748;line-height:1.45}.products-page .products-actions{margin-bottom:12px}.products-page .products-actions .btn-danger{padding:7px 14px;font-size:13px;border-radius:6px;border:none;cursor:pointer;transition:all .2s}.products-page .products-actions .btn-danger:disabled{opacity:.4;cursor:default}.products-page .products-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.products-page .products-table-wrap .table{margin:0;width:100% !important}.products-page .products-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:#8899a6;padding:10px 8px;white-space:nowrap}.products-page .products-table-wrap .table tbody td{padding:6px 8px;vertical-align:middle;border-bottom:1px solid #f1f5f9;font-size:12px}.products-page .products-table-wrap .table tbody tr:hover{background:#f8fafc}.products-page .products-table-wrap .table input.min_roas,.products-page .products-table-wrap .table input.form-control-sm,.products-page .products-table-wrap .table select.custom_label_4,.products-page .products-table-wrap .table select.form-control-sm{padding:3px 6px;font-size:12px;border:1px solid #e2e8f0;border-radius:4px;background:#fff}.products-page .products-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.products-page .products-table-wrap .dt-layout-row:first-child{display:none}.products-page .products-table-wrap .dt-info{font-size:13px;color:#8899a6}.products-page .products-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.products-page .products-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.products-page .products-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.products-page .products-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.products-page .products-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.products-page .products-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.products-page .delete-product{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.products-page .delete-product:hover{background:#c00;color:#fff}.products-page .edit-product-title{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#eef2ff;color:#6690f4;transition:all .2s}.products-page .edit-product-title:hover{background:#6690f4;color:#fff}.desc-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.desc-header label{margin:0}.desc-tabs{display:flex;gap:2px;background:#eee;border-radius:6px;padding:2px}.desc-tab{border:none;background:rgba(0,0,0,0);padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;color:#666;transition:all .15s ease}.desc-tab i{margin-right:4px}.desc-tab.active{background:#fff;color:#333;box-shadow:0 1px 3px rgba(0,0,0,.12);font-weight:500}.desc-tab:hover:not(.active){color:#333}.desc-wrap{flex:1;min-width:0}.desc-preview ul,.desc-preview ol{margin:6px 0;padding-left:20px}.desc-preview li{margin-bottom:3px}.desc-preview b,.desc-preview strong{font-weight:600}.input-with-ai{display:flex;gap:8px;align-items:flex-start}.input-with-ai .form-control{flex:1}.btn-ai-suggest{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:8px;border:1px solid #c084fc;background:linear-gradient(135deg, #F3E8FF, #EDE9FE);color:#7c3aed;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;min-height:38px}.btn-ai-suggest i{font-size:13px}.btn-ai-suggest:hover{background:linear-gradient(135deg, #7C3AED, #6D28D9);color:#fff;border-color:#6d28d9}.btn-ai-suggest:disabled{opacity:.7;cursor:wait}.btn-ai-suggest.btn-ai-claude{border-color:#d97706;background:linear-gradient(135deg, #FEF3C7, #FDE68A);color:#92400e}.btn-ai-suggest.btn-ai-claude:hover{background:linear-gradient(135deg, #D97706, #B45309);color:#fff;border-color:#b45309}.form_container{background:#fff;padding:25px;max-width:1300px;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.form_container.full{max-width:100%}.form_container .form_group{margin-bottom:12px;display:flex}.form_container .form_group>.label{width:300px;display:inline-flex;align-items:flex-start;justify-content:right;padding-right:12px}.form_container .form_group .input{width:calc(100% - 300px)}.default_popup{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);display:none;z-index:2000}.default_popup .popup_content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);background:#fff;padding:25px;border-radius:10px;max-width:1140px;width:95%;box-shadow:0 20px 60px rgba(0,0,0,.15)}.default_popup .popup_content .popup_header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.default_popup .popup_content .popup_header .title{font-size:18px;font-weight:600}.default_popup .popup_content .close{cursor:pointer;color:#a0aec0;font-size:18px;padding:4px}.default_popup .popup_content .close:hover{color:#c00}.dt-layout-table{margin-bottom:20px}.pagination button{border:1px solid #e2e8f0;background:#fff;display:inline-flex;height:32px;width:32px;align-items:center;justify-content:center;margin:0 2px;border-radius:4px;transition:all .2s;cursor:pointer}.pagination button:hover{background:#f4f6f9;border-color:#6690f4}table#products a{color:inherit;text-decoration:none}table#products .table-product-title{display:flex;justify-content:space-between}table#products .edit-product-title{display:flex;height:25px;align-items:center;justify-content:center;width:25px;cursor:pointer;background:#fff;border:1px solid #cbd5e0;color:#cbd5e0;border-radius:4px}table#products .edit-product-title:hover{background:#cbd5e0;color:#fff}table#products a.custom_name{color:#57b951 !important}.product-history-page .product-history-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.product-history-page .product-history-meta span{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:600;color:#4e5e6a;background:#eef2ff;border:1px solid #d9e2ff}.product-history-page .product-history-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:16px}.product-history-page .chart-with-form{display:flex;gap:20px;align-items:flex-start}.product-history-page .chart-area{flex:1 1 auto;min-width:0}.product-history-page .product-history-chart{min-height:360px}.product-history-page .comment-form{width:340px;flex:0 0 340px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px}.product-history-page .comment-form .form-group{margin-bottom:12px}.product-history-page .comment-form label{display:block;font-weight:600;margin-bottom:6px;font-size:13px;color:#52606d}.product-history-page .comment-form input[type=date],.product-history-page .comment-form textarea{width:100%;border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px;font-size:14px;font-family:\"Roboto\",sans-serif;background:#fff}.product-history-page .comment-form input[type=date]:focus,.product-history-page .comment-form textarea:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.product-history-page .comment-form textarea{min-height:110px;resize:vertical}.product-history-page .comment-form .btn{width:100%;justify-content:center;padding:10px 16px}.product-history-page .comment-form .btn[disabled]{opacity:.6;cursor:not-allowed}.product-history-page .products-table-wrap{overflow-x:auto}.product-history-page .products-table-wrap .table{min-width:980px}.product-history-page .products-table-wrap .comment-cell{display:flex;align-items:center;justify-content:space-between;gap:10px}.product-history-page .products-table-wrap .comment-text{word-break:break-word}.product-history-page .products-table-wrap .delete-comment{color:#c00;text-decoration:none;font-weight:600;white-space:nowrap}.product-history-page .products-table-wrap .delete-comment:hover{text-decoration:underline}.product-history-page .products-table-wrap .dt-paging .pagination .page-item{list-style:none}.cron-status-overview{display:flex;flex-wrap:wrap;gap:10px 20px;margin-bottom:20px;color:#4e5e6a;font-size:13px}.cron-progress-list{margin-bottom:20px}.cron-schedule-list{margin-bottom:20px}.cron-schedule-item{border:1px solid #dfe7f0;background:#f4f8fd;border-radius:8px;padding:9px 12px;margin-bottom:8px}.cron-schedule-item:last-child{margin-bottom:0}.cron-schedule-item strong{display:block;color:#2d3748;font-size:13px;font-weight:700;margin-bottom:2px}.cron-schedule-item small{display:block;color:#678;font-size:12px;line-height:1.35}.cron-progress-item{margin-bottom:14px}.cron-progress-item:last-child{margin-bottom:0}.cron-progress-item .cron-progress-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;font-size:13px}.cron-progress-item .cron-progress-head strong{color:#2d3748;font-weight:600}.cron-progress-item .cron-progress-head span{color:#6b7a89;font-size:12px;font-weight:600;white-space:nowrap}.cron-progress-item small{display:block;margin-top:5px;color:#789;font-size:12px}.cron-progress-bar{width:100%;height:10px;border-radius:999px;background:#e9eef5;overflow:hidden}.cron-progress-bar>span{display:block;height:100%;background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.cron-url-list{margin-bottom:20px}.cron-url-item{border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;padding:10px 12px;margin-bottom:10px}.cron-url-item:last-child{margin-bottom:0}.cron-url-item .cron-url-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}.cron-url-item .cron-url-top strong{color:#2d3748;font-size:13px;font-weight:600}.cron-url-item .cron-url-top small{color:#7a8794;font-size:11px;white-space:nowrap}.cron-url-item code{display:block;background:#eef2f7;border:1px solid #dde4ed;border-radius:6px;padding:6px 8px;color:#2e3b49;font-size:12px;overflow-x:auto}.cron-url-item .cron-url-plan{display:block;color:#6c7b8a;font-size:11px;margin-bottom:6px}@media(max-width: 1200px){.product-history-page .chart-with-form{flex-direction:column}.product-history-page .comment-form{width:100%;flex:1 1 auto}}.jconfirm-box .form-group .select2-container,.adspro-dialog-box .form-group .select2-container{width:100% !important;margin-top:8px}.jconfirm-box .select2-container--default .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;min-height:42px;display:flex;align-items:center;padding:4px 12px;box-shadow:none;transition:border-color .2s,box-shadow .2s;font-size:14px}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__rendered,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;line-height:1.4;color:#495057}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__placeholder,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__placeholder{color:#cbd5e0}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__arrow,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%;right:8px}.jconfirm-box .select2-container--default.select2-container--focus .select2-selection--single,.jconfirm-box .select2-container--default .select2-selection--single:hover,.adspro-dialog-box .select2-container--default.select2-container--focus .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single:hover{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:0}.jconfirm-box .select2-container .select2-dropdown,.adspro-dialog-box .select2-container .select2-dropdown{border-color:#e2e8f0;border-radius:0 0 6px 6px;font-size:14px}.jconfirm-box .select2-container .select2-search--dropdown .select2-search__field,.adspro-dialog-box .select2-container .select2-search--dropdown .select2-search__field{padding:6px 10px;border-radius:4px;border:1px solid #e2e8f0;font-size:14px}.jconfirm-box .select2-container--default .select2-results__option--highlighted[aria-selected],.adspro-dialog-box .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#6690f4;color:#fff}@media(max-width: 992px){.sidebar{transform:translateX(-100%)}.sidebar.mobile-open{transform:translateX(0)}.main-wrapper{margin-left:0 !important}}.campaign-terms-wrap{display:flex;flex-direction:column;gap:20px;margin-top:20px}.campaign-terms-page{max-width:100%;overflow:hidden}.campaign-terms-page .campaigns-filters{flex-wrap:wrap}.campaign-terms-page .campaigns-filters .filter-group{min-width:220px}.campaign-terms-page .campaigns-filters .filter-group.terms-columns-group{min-width:280px}.campaign-terms-page .terms-card-toggle{margin-left:auto;width:28px;height:28px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#475569;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-card-toggle:hover{background:#f8fafc;border-color:#cbd5e1}.campaign-terms-page .terms-adgroups-card.is-collapsed .campaigns-extra-table-wrap{display:none}.campaign-terms-page .terms-search-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-search-toolbar label{font-size:12px;font-weight:600;color:#475569;display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap}.campaign-terms-page .terms-search-toolbar .terms-search-toolbar-label{min-width:86px}.campaign-terms-page .terms-search-toolbar #terms_min_clicks_all,.campaign-terms-page .terms-search-toolbar #terms_max_clicks_all{width:160px;height:32px}.campaign-terms-page .terms-search-toolbar #terms_min_conversions_all,.campaign-terms-page .terms-search-toolbar #terms_max_conversions_all{width:130px;max-width:130px}.campaign-terms-page .terms-search-selected-label{margin:0;font-size:12px;color:#475569;font-weight:600;white-space:nowrap}.campaign-terms-page .terms-ai-analyze-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-ai-analyze-btn:hover{background:#dbeafe;border-color:#93c5fd}.campaign-terms-page .terms-ai-analyze-btn:disabled{opacity:.6;cursor:wait}.campaign-terms-page .terms-negative-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-negative-bulk-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #fecaca;background:#fef2f2;color:#dc2626;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-negative-bulk-btn:hover{background:#fee2e2;border-color:#fca5a5}.campaign-terms-page .terms-negative-bulk-btn:disabled{opacity:.5;cursor:not-allowed}.campaign-terms-page table.campaigns-extra-table>thead>tr>th{position:sticky;top:0;z-index:2;background-color:#111827 !important;color:#e5e7eb !important;border-bottom:1px solid #0b1220 !important;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 12px;white-space:nowrap}.campaign-terms-page #terms_search_table thead th .dt-column-order,.campaign-terms-page #terms_negative_table thead th .dt-column-order{display:none !important}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc{cursor:pointer;padding-right:34px;overflow:hidden}.campaign-terms-page #terms_search_table thead th .dt-column-title,.campaign-terms-page #terms_negative_table thead th .dt-column-title{display:block;overflow:hidden;text-overflow:ellipsis;padding-right:2px}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc::after{content:\"↕\";position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:999px;font-size:12px;font-weight:700;line-height:16px;text-align:center;color:#e5e7eb;background:#374151}.campaign-terms-page #terms_search_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=ascending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=ascending]::after{content:\"▲\";color:#fff;background:#2563eb}.campaign-terms-page #terms_search_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=descending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=descending]::after{content:\"▼\";color:#fff;background:#2563eb}.campaign-terms-page #terms_negative_select_all,.campaign-terms-page .terms-negative-select-row,.campaign-terms-page #terms_search_select_all,.campaign-terms-page .terms-search-select-row{width:14px;height:14px;cursor:pointer}.campaign-terms-page .dt-layout-row:first-child{display:none}.campaign-terms-page .dt-layout-row{padding:10px 12px;margin:0 !important;border-top:1px solid #f1f5f9}.campaign-terms-page .dt-info{font-size:12px;color:#64748b}.campaign-terms-page .dt-paging .pagination{margin:0;padding:0;list-style:none !important;display:flex;align-items:center;gap:6px}.campaign-terms-page .dt-paging .pagination .page-item{list-style:none !important}.campaign-terms-page .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:fit-content;height:32px;padding:0 12px;border-radius:6px;font-size:12px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;text-decoration:none;line-height:1;white-space:nowrap}.campaign-terms-page .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.previous .page-link,.campaign-terms-page .dt-paging .pagination .page-item.next .page-link{min-width:72px}.campaign-terms-page .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.terms-columns-box{display:flex;flex-direction:column;gap:6px}.terms-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.terms-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.terms-columns-control summary::-webkit-details-marker{display:none}.terms-columns-control summary::after{content:\"▼\";float:right;font-size:10px;color:#64748b;margin-top:2px}.terms-columns-control[open] summary::after{content:\"▲\"}.terms-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:180px;overflow-y:auto}.terms-columns-list .terms-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.terms-columns-list .terms-col-item:last-child{margin-bottom:0}.terms-columns-list .terms-col-item input[type=checkbox]{margin:0}.campaigns-extra-card{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.campaigns-extra-card-title{padding:14px 16px;border-bottom:1px solid #e2e8f0;font-size:13px;font-weight:700;color:#334155;display:flex;align-items:center;gap:8px}.campaigns-extra-card-title .terms-card-title-label{display:inline-flex;align-items:center;gap:8px}.campaigns-extra-table-wrap{overflow:auto}.campaigns-extra-table{margin:0;width:100%;table-layout:fixed}.campaigns-extra-table tbody td{padding:9px 12px;border-bottom:1px solid #f1f5f9;font-size:13px;color:#334155;vertical-align:middle;white-space:nowrap}.campaigns-extra-table td.num-cell{text-align:right;white-space:nowrap}.campaigns-extra-table td.text-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table th.terms-negative-select-cell,.campaigns-extra-table td.terms-negative-select-cell,.campaigns-extra-table th.terms-search-select-cell,.campaigns-extra-table td.terms-search-select-cell{text-align:center}.campaigns-extra-table th.phrase-nowrap,.campaigns-extra-table td.phrase-nowrap{white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table .terms-add-negative-btn,.campaigns-extra-table .terms-remove-negative-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;cursor:pointer;transition:all .2s}.campaigns-extra-table .terms-add-negative-btn{border:1px solid #e2e8f0;background:#eef2ff;color:#3b82f6}.campaigns-extra-table .terms-add-negative-btn:hover{background:#3b82f6;color:#fff;border-color:#3b82f6}.campaigns-extra-table .terms-remove-negative-btn{border:1px solid #fecaca;background:#fef2f2;color:#dc2626}.campaigns-extra-table .terms-remove-negative-btn:hover{background:#dc2626;color:#fff;border-color:#dc2626}.campaigns-extra-table tbody tr:hover{background:#f8fafc}.campaigns-extra-table tbody tr.term-is-negative td{color:#dc2626}.campaigns-extra-table tbody tr.term-is-negative:hover{background:#fef2f2}.campaigns-empty-row{text-align:center;color:#94a3b8 !important;font-style:italic}.terms-ai-modal-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-ai-modal-toolbar label{font-size:12px;font-weight:600;color:#334155;margin:0}.terms-ai-modal-toolbar .form-control{width:200px;height:32px}.terms-ai-summary{font-size:12px;color:#64748b;margin-bottom:10px}.terms-ai-results-wrap{border:1px solid #e2e8f0;border-radius:8px;max-height:420px;overflow:auto}.terms-ai-results-table{width:100%;border-collapse:collapse;font-size:12px}.terms-ai-results-table th,.terms-ai-results-table td{border-bottom:1px solid #eef2f7;padding:8px;vertical-align:middle}.terms-ai-results-table th{position:sticky;top:0;background:#f8fafc;color:#334155;font-weight:700}.terms-ai-results-table td.term-col{min-width:260px;max-width:380px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.terms-ai-results-table td.reason-col{min-width:320px}.terms-ai-action-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.terms-ai-action-badge.action-exclude{background:#fee2e2;color:#b91c1c}.terms-ai-action-badge.action-keep{background:#dcfce7;color:#166534}.products-page .products-filters .filter-group.filter-group-columns{min-width:240px}.products-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.products-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.products-columns-control summary::-webkit-details-marker{display:none}.products-columns-control summary::after{content:\"▼\";float:right;font-size:10px;color:#64748b;margin-top:2px}.products-columns-control[open] summary::after{content:\"▲\"}.products-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:220px;overflow-y:auto}.products-columns-list .products-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.products-columns-list .products-col-item:last-child{margin-bottom:0}.products-columns-list .products-col-item input[type=checkbox]{margin:0}#products th:last-child,#products td:last-child{white-space:nowrap}#products .products-row-actions{display:inline-flex;align-items:center;gap:4px}#products .products-row-actions .btn{width:38px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:4px !important}#products .products-row-actions .btn i{line-height:1}.products-page table#products>thead>tr>th{position:sticky;top:0;z-index:2;background-color:#111827 !important;color:#e5e7eb !important;border-bottom:1px solid #0b1220 !important;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 12px;white-space:nowrap}.products-page #products thead th .dt-column-order{display:none !important}.products-page #products thead th.dt-orderable-asc,.products-page #products thead th.dt-orderable-desc{cursor:pointer;padding-right:34px;overflow:hidden}.products-page #products thead th .dt-column-title{display:block;overflow:hidden;text-overflow:ellipsis;padding-right:2px}.products-page #products thead th.dt-orderable-asc::after,.products-page #products thead th.dt-orderable-desc::after{content:\"↕\";position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:999px;font-size:12px;font-weight:700;line-height:16px;text-align:center;color:#e5e7eb;background:#374151}.products-page #products thead th.dt-ordering-asc::after,.products-page #products thead th[aria-sort=ascending]::after{content:\"▲\";color:#fff;background:#2563eb}.products-page #products thead th.dt-ordering-desc::after,.products-page #products thead th[aria-sort=descending]::after{content:\"▼\";color:#fff;background:#2563eb}.logs-page .logs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.logs-page .logs-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.logs-page .logs-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:16px}.logs-page .logs-filters .filter-group{flex:1 1 160px;min-width:0;max-width:220px}.logs-page .logs-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.logs-page .logs-filters .filter-group .form-control{width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.logs-page .logs-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.logs-page .logs-filters .filter-group select.form-control{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.logs-page .logs-filters .filter-group.filter-group-buttons{flex:0 0 auto;display:flex;gap:6px;max-width:none}.logs-page .logs-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.logs-page .logs-table-wrap .table{margin:0}.logs-page .logs-table-wrap .table thead th{background:#f0f4fa;border-bottom:2px solid #e2e8f0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:12px 14px;white-space:nowrap}.logs-page .logs-table-wrap .table tbody td{padding:10px 14px;font-size:13px;color:#2d3748;vertical-align:middle;border-bottom:1px solid #eef2f7}.logs-page .logs-table-wrap .table tbody tr:hover td{background:#f8fafd}.logs-page .logs-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.logs-page .logs-table-wrap .dt-layout-row:first-child{display:none}.logs-page .logs-table-wrap .dt-info{font-size:13px;color:#8899a6}.logs-page .logs-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.logs-page .logs-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:fit-content;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.logs-page .logs-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.logs-page .logs-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.logs-page .logs-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.logs-page .logs-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.logs-page .badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px}.logs-page .badge-success{background:#d1fae5;color:#065f46}.logs-page .badge-danger{background:#fee2e2;color:#991b1b}.logs-page .badge-warning{background:#fef3c7;color:#92400e}","@use \"sass:color\";\r\n// === adsPRO - Nowe style ===\r\n\r\n// --- Zmienne ---\r\n$cPrimary: #6690F4;\r\n$cPrimaryDark: #3164db;\r\n$cSidebarBg: #1E2A3A;\r\n$cSidebarText: #A8B7C7;\r\n$cSidebarHover: #263548;\r\n$cSidebarActive: $cPrimary;\r\n$cContentBg: #F4F6F9;\r\n$cWhite: #FFFFFF;\r\n$cText: #4E5E6A;\r\n$cTextDark: #2D3748;\r\n$cBorder: #E2E8F0;\r\n$cSuccess: #57B951;\r\n$cSuccessDark: #4a9c3b;\r\n$cDanger: #CC0000;\r\n$cDangerDark: #b30000;\r\n$cWarning: #FF8C00;\r\n$cGreenLight: #57b951;\r\n\r\n$sidebarWidth: 260px;\r\n$sidebarCollapsed: 70px;\r\n$topbarHeight: 56px;\r\n$transitionSpeed: 0.3s;\r\n\r\n// --- Reset i baza ---\r\n* {\r\n box-sizing: border-box;\r\n}\r\n\r\nbody {\r\n font-family: \"Roboto\", sans-serif;\r\n margin: 0;\r\n padding: 0;\r\n font-size: 14px;\r\n color: $cText;\r\n background: $cContentBg;\r\n max-width: 100vw;\r\n overflow-x: hidden;\r\n}\r\n\r\n.hide {\r\n display: none;\r\n}\r\n\r\n// --- Typografia ---\r\nsmall {\r\n font-size: .75em;\r\n}\r\n\r\n.text-right {\r\n text-align: right;\r\n}\r\n\r\n.text-bold {\r\n font-weight: 700 !important;\r\n}\r\n\r\n.nowrap {\r\n white-space: nowrap;\r\n}\r\n\r\n// ===========================\r\n// LOGIN PAGE (unlogged)\r\n// ===========================\r\nbody.unlogged {\r\n background: $cContentBg;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\n.login-container {\r\n display: flex;\r\n min-height: 100vh;\r\n}\r\n\r\n.login-brand {\r\n flex: 0 0 45%;\r\n background: linear-gradient(135deg, $cSidebarBg 0%, #2C3E57 50%, $cPrimary 100%);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 60px;\r\n position: relative;\r\n overflow: hidden;\r\n\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n top: -50%;\r\n right: -50%;\r\n width: 100%;\r\n height: 100%;\r\n background: radial-gradient(circle, rgba($cPrimary, 0.15) 0%, transparent 70%);\r\n border-radius: 50%;\r\n }\r\n\r\n .brand-content {\r\n position: relative;\r\n z-index: 1;\r\n color: $cWhite;\r\n max-width: 400px;\r\n }\r\n\r\n .brand-logo {\r\n font-size: 48px;\r\n font-weight: 300;\r\n margin-bottom: 20px;\r\n letter-spacing: -1px;\r\n\r\n strong {\r\n font-weight: 700;\r\n }\r\n }\r\n\r\n .brand-tagline {\r\n font-size: 18px;\r\n opacity: 0.85;\r\n line-height: 1.6;\r\n margin-bottom: 50px;\r\n }\r\n\r\n .brand-features {\r\n .feature {\r\n display: flex;\r\n align-items: center;\r\n gap: 15px;\r\n margin-bottom: 20px;\r\n opacity: 0.8;\r\n\r\n i {\r\n font-size: 20px;\r\n width: 40px;\r\n height: 40px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba($cWhite, 0.1);\r\n border-radius: 10px;\r\n }\r\n\r\n span {\r\n font-size: 15px;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.login-form-wrapper {\r\n flex: 1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 60px;\r\n background: $cWhite;\r\n}\r\n\r\n.login-box {\r\n width: 100%;\r\n max-width: 420px;\r\n\r\n .login-header {\r\n margin-bottom: 35px;\r\n\r\n h1 {\r\n font-size: 28px;\r\n font-weight: 700;\r\n color: $cTextDark;\r\n margin: 0 0 8px;\r\n }\r\n\r\n p {\r\n color: #718096;\r\n font-size: 15px;\r\n margin: 0;\r\n }\r\n }\r\n\r\n .form-group {\r\n margin-bottom: 20px;\r\n\r\n label {\r\n display: block;\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n margin-bottom: 6px;\r\n }\r\n }\r\n\r\n .input-with-icon {\r\n position: relative;\r\n\r\n i {\r\n position: absolute;\r\n left: 14px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #A0AEC0;\r\n font-size: 14px;\r\n }\r\n\r\n .form-control {\r\n padding-left: 42px;\r\n }\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n height: 46px;\r\n border: 2px solid $cBorder;\r\n border-radius: 8px;\r\n padding: 0 14px;\r\n font-size: 14px;\r\n font-family: \"Roboto\", sans-serif;\r\n color: $cTextDark;\r\n transition: border-color $transitionSpeed, box-shadow $transitionSpeed;\r\n\r\n &::placeholder {\r\n color: #CBD5E0;\r\n }\r\n\r\n &:focus {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.15);\r\n outline: none;\r\n }\r\n }\r\n\r\n .form-error {\r\n color: $cDanger;\r\n font-size: 12px;\r\n margin-top: 4px;\r\n }\r\n\r\n .checkbox-group {\r\n .checkbox-label {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n cursor: pointer;\r\n font-size: 13px;\r\n color: #718096;\r\n font-weight: 400;\r\n\r\n input[type=\"checkbox\"] {\r\n width: 16px;\r\n height: 16px;\r\n accent-color: $cPrimary;\r\n }\r\n }\r\n }\r\n\r\n .btn-login {\r\n width: 100%;\r\n height: 48px;\r\n font-size: 15px;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 8px;\r\n\r\n &.disabled {\r\n opacity: 0.7;\r\n pointer-events: none;\r\n }\r\n }\r\n\r\n .alert {\r\n display: none;\r\n padding: 12px 16px;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n margin-bottom: 20px;\r\n\r\n &.alert-danger {\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n border: 1px solid #FED7D7;\r\n }\r\n\r\n &.alert-success {\r\n background: #F0FFF4;\r\n color: #276749;\r\n border: 1px solid #C6F6D5;\r\n }\r\n }\r\n}\r\n\r\n// Responsywność logowania\r\n@media (max-width: 768px) {\r\n .login-brand {\r\n display: none;\r\n }\r\n\r\n .login-form-wrapper {\r\n padding: 30px 20px;\r\n }\r\n}\r\n\r\n// ===========================\r\n// LAYOUT (logged) - SIDEBAR\r\n// ===========================\r\nbody.logged {\r\n display: flex;\r\n min-height: 100vh;\r\n background: $cContentBg;\r\n}\r\n\r\n// --- Sidebar ---\r\n.sidebar {\r\n width: $sidebarWidth;\r\n min-height: 100vh;\r\n background: $cSidebarBg;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n z-index: 1000;\r\n display: flex;\r\n flex-direction: column;\r\n transition: width $transitionSpeed ease;\r\n overflow: hidden;\r\n\r\n &.collapsed {\r\n width: $sidebarCollapsed;\r\n\r\n .sidebar-header {\r\n padding: 16px 0;\r\n justify-content: center;\r\n\r\n .sidebar-logo {\r\n display: none;\r\n }\r\n\r\n .sidebar-toggle i {\r\n transform: rotate(180deg);\r\n }\r\n }\r\n\r\n .sidebar-nav ul li a {\r\n padding: 12px 0;\r\n justify-content: center;\r\n\r\n span {\r\n display: none;\r\n }\r\n\r\n i {\r\n margin-right: 0;\r\n font-size: 18px;\r\n }\r\n }\r\n\r\n .sidebar-nav ul li.nav-group .nav-group-label {\r\n padding: 12px 0;\r\n justify-content: center;\r\n\r\n span {\r\n display: none;\r\n }\r\n\r\n i {\r\n margin-right: 0;\r\n font-size: 18px;\r\n }\r\n }\r\n\r\n .sidebar-footer {\r\n .sidebar-user {\r\n justify-content: center;\r\n\r\n .user-info {\r\n display: none;\r\n }\r\n }\r\n\r\n .sidebar-logout {\r\n justify-content: center;\r\n\r\n span {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n .nav-divider {\r\n margin: 8px 15px;\r\n }\r\n }\r\n}\r\n\r\n.sidebar-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 20px 20px 16px;\r\n border-bottom: 1px solid rgba($cWhite, 0.08);\r\n\r\n .sidebar-logo a {\r\n color: $cWhite;\r\n text-decoration: none;\r\n font-size: 24px;\r\n font-weight: 300;\r\n letter-spacing: -0.5px;\r\n\r\n strong {\r\n font-weight: 700;\r\n }\r\n }\r\n\r\n .sidebar-toggle {\r\n background: none;\r\n border: none;\r\n color: $cSidebarText;\r\n cursor: pointer;\r\n padding: 6px;\r\n border-radius: 6px;\r\n transition: all $transitionSpeed;\r\n\r\n &:hover {\r\n background: rgba($cWhite, 0.08);\r\n color: $cWhite;\r\n }\r\n\r\n i {\r\n transition: transform $transitionSpeed;\r\n }\r\n }\r\n}\r\n\r\n.sidebar-nav {\r\n flex: 1;\r\n padding: 12px 0;\r\n overflow-y: auto;\r\n\r\n ul {\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n\r\n li {\r\n &.nav-group {\r\n margin-bottom: 4px;\r\n\r\n .nav-group-label {\r\n display: flex;\r\n align-items: center;\r\n padding: 11px 20px;\r\n color: #D5DEEA;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.6px;\r\n border-left: 3px solid transparent;\r\n\r\n i {\r\n width: 20px;\r\n text-align: center;\r\n margin-right: 12px;\r\n font-size: 14px;\r\n color: #B6C4D3;\r\n }\r\n }\r\n\r\n .nav-submenu {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n\r\n li a {\r\n padding-left: 44px;\r\n }\r\n }\r\n\r\n &.active>.nav-group-label {\r\n color: $cWhite;\r\n background: rgba($cPrimary, 0.12);\r\n border-left-color: $cPrimary;\r\n\r\n i {\r\n color: $cPrimary;\r\n }\r\n }\r\n }\r\n\r\n &.nav-divider {\r\n height: 1px;\r\n background: rgba($cWhite, 0.08);\r\n margin: 8px 20px;\r\n }\r\n\r\n a {\r\n display: flex;\r\n align-items: center;\r\n padding: 11px 20px;\r\n color: $cSidebarText;\r\n text-decoration: none;\r\n font-size: 14px;\r\n transition: all 0.2s;\r\n border-left: 3px solid transparent;\r\n\r\n i {\r\n width: 20px;\r\n text-align: center;\r\n margin-right: 12px;\r\n font-size: 15px;\r\n }\r\n\r\n &:hover {\r\n background: $cSidebarHover;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n &.active>a {\r\n background: rgba($cPrimary, 0.15);\r\n color: $cWhite;\r\n border-left-color: $cPrimary;\r\n\r\n i {\r\n color: $cPrimary;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.badge-alerts-count {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 20px;\r\n height: 20px;\r\n padding: 0 6px;\r\n margin-left: 8px;\r\n border-radius: 50%;\r\n font-size: 11px;\r\n font-weight: 600;\r\n line-height: 1;\r\n background: $cWhite;\r\n color: $cPrimary;\r\n}\r\n\r\n.sidebar-footer {\r\n padding: 16px 20px;\r\n border-top: 1px solid rgba($cWhite, 0.08);\r\n\r\n .sidebar-user {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n margin-bottom: 12px;\r\n\r\n .user-avatar {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background: rgba($cPrimary, 0.2);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: $cPrimary;\r\n font-size: 14px;\r\n flex-shrink: 0;\r\n }\r\n\r\n .user-info {\r\n overflow: hidden;\r\n\r\n .user-email {\r\n color: $cSidebarText;\r\n font-size: 12px;\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n }\r\n }\r\n\r\n .sidebar-logout {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n color: #E53E3E;\r\n text-decoration: none;\r\n font-size: 13px;\r\n padding: 8px 10px;\r\n border-radius: 6px;\r\n transition: all 0.2s;\r\n\r\n i {\r\n font-size: 14px;\r\n }\r\n\r\n &:hover {\r\n background: rgba(#E53E3E, 0.1);\r\n }\r\n }\r\n}\r\n\r\n// --- Main wrapper ---\r\n.main-wrapper {\r\n margin-left: $sidebarWidth;\r\n flex: 1;\r\n min-height: 100vh;\r\n transition: margin-left $transitionSpeed ease;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n &.expanded {\r\n margin-left: $sidebarCollapsed;\r\n }\r\n}\r\n\r\n// --- Topbar ---\r\n.topbar {\r\n height: $topbarHeight;\r\n background: $cWhite;\r\n border-bottom: 1px solid $cBorder;\r\n display: flex;\r\n align-items: center;\r\n padding: 0 25px;\r\n position: sticky;\r\n top: 0;\r\n z-index: 500;\r\n\r\n .topbar-toggle {\r\n background: none;\r\n border: none;\r\n color: $cText;\r\n cursor: pointer;\r\n padding: 8px 10px;\r\n border-radius: 6px;\r\n font-size: 16px;\r\n margin-right: 15px;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cContentBg;\r\n }\r\n }\r\n\r\n .topbar-breadcrumb {\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n}\r\n\r\n// --- Content area ---\r\n.content {\r\n flex: 1;\r\n padding: 25px;\r\n}\r\n\r\n.app-alert {\r\n background: #EBF8FF;\r\n border: 1px solid #BEE3F8;\r\n color: #2B6CB0;\r\n padding: 12px 16px;\r\n border-radius: 8px;\r\n margin-bottom: 20px;\r\n font-size: 14px;\r\n}\r\n\r\n// ===========================\r\n// KOMPONENTY WSPÓLNE\r\n// ===========================\r\n\r\n// --- Buttons ---\r\n.btn {\r\n padding: 10px 20px;\r\n transition: all 0.2s ease;\r\n color: $cWhite;\r\n border: 0;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n display: inline-flex;\r\n text-decoration: none;\r\n gap: 6px;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 14px;\r\n font-family: \"Roboto\", sans-serif;\r\n font-weight: 500;\r\n\r\n &.btn_small,\r\n &.btn-xs,\r\n &.btn-sm {\r\n padding: 5px 10px;\r\n font-size: 12px;\r\n\r\n i {\r\n font-size: 11px;\r\n }\r\n }\r\n\r\n &.btn-success {\r\n background: $cSuccess;\r\n\r\n &:hover {\r\n background: $cSuccessDark;\r\n }\r\n }\r\n\r\n &.btn-primary {\r\n background: $cPrimary;\r\n\r\n &:hover {\r\n background: $cPrimaryDark;\r\n }\r\n }\r\n\r\n &.btn-danger {\r\n background: $cDanger;\r\n\r\n &:hover {\r\n background: $cDangerDark;\r\n }\r\n }\r\n\r\n &.disabled {\r\n opacity: 0.6;\r\n pointer-events: none;\r\n }\r\n}\r\n\r\n// --- Form controls ---\r\n.form-control {\r\n border: 1px solid $cBorder;\r\n border-radius: 6px;\r\n height: 38px;\r\n width: 100%;\r\n padding: 6px 12px;\r\n font-family: \"Roboto\", sans-serif;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n transition: border-color 0.2s, box-shadow 0.2s;\r\n\r\n option {\r\n padding: 5px;\r\n }\r\n\r\n &:focus {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n outline: none;\r\n }\r\n}\r\n\r\ninput[type=\"checkbox\"] {\r\n border: 1px solid $cBorder;\r\n}\r\n\r\n// --- Tables ---\r\ntable {\r\n border-collapse: collapse;\r\n font-size: 13px;\r\n}\r\n\r\n.table {\r\n width: 100%;\r\n\r\n th,\r\n td {\r\n border: 1px solid $cBorder;\r\n padding: 8px 10px;\r\n }\r\n\r\n th {\r\n background: #F7FAFC;\r\n font-weight: 600;\r\n font-size: 12px;\r\n text-transform: uppercase;\r\n letter-spacing: 0.03em;\r\n color: #718096;\r\n }\r\n\r\n td.center {\r\n text-align: center;\r\n }\r\n\r\n td.left {\r\n text-align: left;\r\n }\r\n\r\n &.table-sm td {\r\n padding: 5px !important;\r\n }\r\n\r\n input.form-control {\r\n font-size: 13px;\r\n height: 32px;\r\n }\r\n}\r\n\r\n// --- Cards ---\r\n.card {\r\n background: $cWhite;\r\n padding: 20px;\r\n border-radius: 8px;\r\n color: $cTextDark;\r\n font-size: 14px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\r\n\r\n &.mb25 {\r\n margin-bottom: 20px;\r\n }\r\n\r\n .card-header {\r\n font-weight: 600;\r\n font-size: 15px;\r\n }\r\n\r\n .card-body {\r\n padding-top: 12px;\r\n\r\n table {\r\n\r\n th,\r\n td {\r\n font-size: 13px;\r\n\r\n &.bold {\r\n font-weight: 600;\r\n }\r\n\r\n &.text-right {\r\n text-align: right;\r\n }\r\n\r\n &.text-center {\r\n text-align: center;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n// --- Action menu ---\r\n.action_menu {\r\n display: flex;\r\n margin-bottom: 20px;\r\n gap: 12px;\r\n\r\n .btn {\r\n padding: 8px 16px;\r\n\r\n &.btn_add {\r\n background: $cSuccess;\r\n\r\n &:hover {\r\n background: $cSuccessDark;\r\n }\r\n }\r\n\r\n &.btn_cancel {\r\n background: $cDanger;\r\n\r\n &:hover {\r\n background: $cDangerDark;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// --- Settings page ---\r\n.settings-tabs {\r\n display: flex;\r\n gap: 8px;\r\n margin-bottom: 18px;\r\n\r\n .settings-tab {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 8px 14px;\r\n border-radius: 8px;\r\n text-decoration: none;\r\n color: #6B7A89;\r\n background: #E9EEF5;\r\n border: 1px solid #D8E0EA;\r\n font-size: 13px;\r\n font-weight: 600;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n color: $cTextDark;\r\n background: #DDE6F2;\r\n }\r\n\r\n &.active {\r\n color: $cWhite;\r\n background: $cPrimary;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n}\r\n\r\n.settings-card {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n padding: 28px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n\r\n .settings-card-header {\r\n display: flex;\r\n align-items: center;\r\n gap: 14px;\r\n margin-bottom: 24px;\r\n padding-bottom: 16px;\r\n border-bottom: 1px solid $cBorder;\r\n\r\n .settings-card-icon {\r\n width: 44px;\r\n height: 44px;\r\n border-radius: 10px;\r\n background: color.adjust($cPrimary, $lightness: 26%);\r\n color: $cPrimary;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 18px;\r\n flex-shrink: 0;\r\n }\r\n\r\n h3 {\r\n margin: 0;\r\n font-size: 17px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n\r\n small {\r\n color: #8899A6;\r\n font-size: 13px;\r\n }\r\n }\r\n\r\n .settings-field {\r\n margin-bottom: 18px;\r\n\r\n label {\r\n display: block;\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n margin-bottom: 6px;\r\n }\r\n }\r\n\r\n .settings-input-wrap {\r\n position: relative;\r\n\r\n .settings-input-icon {\r\n position: absolute;\r\n left: 12px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #A0AEC0;\r\n font-size: 14px;\r\n pointer-events: none;\r\n }\r\n\r\n .form-control {\r\n padding-left: 38px;\r\n }\r\n\r\n .settings-toggle-pw {\r\n position: absolute;\r\n right: 4px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: none;\r\n border: none;\r\n color: #A0AEC0;\r\n cursor: pointer;\r\n padding: 6px 10px;\r\n font-size: 14px;\r\n transition: color 0.2s;\r\n\r\n &:hover {\r\n color: $cPrimary;\r\n }\r\n }\r\n }\r\n\r\n .settings-field .settings-toggle-label {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 10px;\r\n cursor: pointer;\r\n font-size: 14px;\r\n font-weight: 500;\r\n user-select: none;\r\n margin-bottom: 0;\r\n width: 100%;\r\n\r\n .settings-toggle-text {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n line-height: 1.35;\r\n }\r\n }\r\n\r\n .settings-toggle-checkbox {\r\n display: none;\r\n\r\n &+.settings-toggle-switch {\r\n display: inline-block;\r\n position: relative;\r\n width: 44px;\r\n height: 24px;\r\n background: #ccc;\r\n border-radius: 12px;\r\n transition: background 0.2s;\r\n flex-shrink: 0;\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n top: 3px;\r\n left: 3px;\r\n width: 18px;\r\n height: 18px;\r\n background: #fff;\r\n border-radius: 50%;\r\n transition: transform 0.2s;\r\n }\r\n }\r\n\r\n &:checked+.settings-toggle-switch {\r\n background: #22C55E;\r\n\r\n &::after {\r\n transform: translateX(20px);\r\n }\r\n }\r\n }\r\n\r\n .settings-fields-grid {\r\n display: grid;\r\n grid-template-columns: 1fr 1fr;\r\n gap: 0 24px;\r\n\r\n @media (max-width: 768px) {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n\r\n .settings-alert-error {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n border: 1px solid #FED7D7;\r\n border-radius: 8px;\r\n padding: 12px 16px;\r\n margin-bottom: 20px;\r\n font-size: 13px;\r\n\r\n i {\r\n font-size: 16px;\r\n flex-shrink: 0;\r\n }\r\n }\r\n}\r\n\r\n// --- Clients page ---\r\n.clients-page {\r\n .clients-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n\r\n i {\r\n color: $cPrimary;\r\n margin-right: 8px;\r\n }\r\n }\r\n }\r\n\r\n .clients-table-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n overflow: hidden;\r\n\r\n .table {\r\n margin: 0;\r\n\r\n thead th {\r\n background: #F8FAFC;\r\n border-bottom: 2px solid $cBorder;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n padding: 14px 20px;\r\n }\r\n\r\n tbody td {\r\n padding: 14px 20px;\r\n vertical-align: middle;\r\n border-bottom: 1px solid #F1F5F9;\r\n }\r\n\r\n tbody tr:hover {\r\n background: #F8FAFC;\r\n }\r\n\r\n .client-id {\r\n color: #8899A6;\r\n font-size: 13px;\r\n font-weight: 600;\r\n }\r\n\r\n .client-name {\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n }\r\n }\r\n\r\n .badge-id {\r\n display: inline-block;\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n font-size: 13px;\r\n font-weight: 600;\r\n padding: 4px 10px;\r\n border-radius: 6px;\r\n font-family: monospace;\r\n }\r\n\r\n .actions-cell {\r\n text-align: center;\r\n white-space: nowrap;\r\n }\r\n\r\n .btn-icon {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 8px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 14px;\r\n transition: all 0.2s;\r\n margin: 0 2px;\r\n\r\n &.btn-icon-edit {\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n\r\n &:hover {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n &.btn-icon-delete {\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n &.btn-icon-sync {\r\n background: #F0FDF4;\r\n color: #16a34a;\r\n\r\n &:hover {\r\n background: #16a34a;\r\n color: $cWhite;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.7;\r\n cursor: wait;\r\n }\r\n\r\n &.is-queued {\r\n background: #FEF3C7;\r\n color: #D97706;\r\n }\r\n }\r\n }\r\n\r\n .client-sync-bars {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n\r\n .client-sync-row {\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n }\r\n\r\n .client-sync-label {\r\n font-size: 11px;\r\n font-weight: 600;\r\n color: #8899A6;\r\n width: 18px;\r\n flex-shrink: 0;\r\n }\r\n\r\n .client-sync-track {\r\n flex: 1;\r\n height: 6px;\r\n border-radius: 999px;\r\n background: #E9EEF5;\r\n overflow: hidden;\r\n }\r\n\r\n .client-sync-fill {\r\n height: 100%;\r\n border-radius: 999px;\r\n background: #CBD5E0;\r\n transition: width 0.4s ease;\r\n\r\n &.is-active {\r\n background: linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%);\r\n }\r\n\r\n &.is-done {\r\n background: $cSuccess;\r\n }\r\n }\r\n\r\n .client-sync-pct {\r\n font-size: 11px;\r\n font-weight: 600;\r\n color: #8899A6;\r\n width: 32px;\r\n text-align: right;\r\n flex-shrink: 0;\r\n }\r\n\r\n .empty-state {\r\n text-align: center;\r\n padding: 50px 20px !important;\r\n color: #A0AEC0;\r\n\r\n i {\r\n font-size: 40px;\r\n margin-bottom: 12px;\r\n display: block;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n font-size: 15px;\r\n }\r\n }\r\n}\r\n\r\n.btn-secondary {\r\n background: #E2E8F0;\r\n color: $cTextDark;\r\n border: none;\r\n padding: 8px 18px;\r\n border-radius: 6px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background 0.2s;\r\n\r\n &:hover {\r\n background: #CBD5E0;\r\n }\r\n}\r\n\r\n// ===========================\r\n// CAMPAIGNS PAGE\r\n// ===========================\r\n.campaigns-page {\r\n max-width: 100%;\r\n overflow-x: hidden;\r\n width: 100%;\r\n\r\n .campaigns-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n\r\n i {\r\n color: $cPrimary;\r\n margin-right: 8px;\r\n }\r\n }\r\n }\r\n\r\n .campaigns-filters {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 20px;\r\n margin-bottom: 20px;\r\n\r\n .filter-group {\r\n flex: 1;\r\n min-width: 0;\r\n\r\n label {\r\n display: block;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n margin-bottom: 6px;\r\n\r\n i {\r\n margin-right: 4px;\r\n }\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n padding: 10px 14px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n transition: border-color 0.2s;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n padding-right: 32px;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n .filter-with-action {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n .form-control {\r\n flex: 1;\r\n }\r\n\r\n .btn-icon {\r\n flex-shrink: 0;\r\n width: 42px;\r\n height: 42px;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 8px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 14px;\r\n transition: all 0.2s;\r\n\r\n &.btn-icon-delete {\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n .filter-group-campaign-multi {\r\n flex: 2 !important;\r\n }\r\n\r\n .campaign-dropdown {\r\n flex: 1;\r\n min-width: 0;\r\n position: relative;\r\n }\r\n\r\n .campaign-dropdown-trigger {\r\n width: 100%;\r\n padding: 10px 14px;\r\n padding-right: 32px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n transition: border-color 0.2s;\r\n position: relative;\r\n min-height: 42px;\r\n box-sizing: border-box;\r\n\r\n .campaign-dropdown-text {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n &.is-placeholder {\r\n color: #8899A6;\r\n }\r\n }\r\n\r\n .campaign-dropdown-arrow {\r\n position: absolute;\r\n right: 12px;\r\n font-size: 10px;\r\n color: #8899A6;\r\n transition: transform 0.2s;\r\n }\r\n }\r\n\r\n .campaign-dropdown.is-open {\r\n .campaign-dropdown-trigger {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n\r\n .campaign-dropdown-arrow {\r\n transform: rotate(180deg);\r\n }\r\n\r\n .campaign-dropdown-menu {\r\n display: block;\r\n }\r\n }\r\n\r\n .campaign-dropdown-menu {\r\n display: none;\r\n position: absolute;\r\n top: calc(100% + 4px);\r\n left: 0;\r\n right: 0;\r\n z-index: 100;\r\n max-height: 280px;\r\n overflow-y: auto;\r\n background: $cWhite;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n padding: 4px 0;\r\n }\r\n\r\n .campaign-dropdown-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n padding: 8px 12px;\r\n cursor: pointer;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n margin: 0;\r\n transition: background 0.15s;\r\n\r\n &:hover {\r\n background: #F8FAFC;\r\n }\r\n\r\n &.is-checked {\r\n background: #EEF2FF;\r\n }\r\n\r\n input[type=\"checkbox\"] {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n flex-shrink: 0;\r\n accent-color: $cPrimary;\r\n }\r\n\r\n span {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n\r\n .campaigns-list-panel {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n margin-bottom: 20px;\r\n overflow: hidden;\r\n\r\n .campaigns-list-toolbar {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 12px 16px;\r\n border-bottom: 1px solid $cBorder;\r\n gap: 12px;\r\n\r\n &-left {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-size: 13px;\r\n color: $cText;\r\n\r\n input[type=\"checkbox\"] {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n\r\n label {\r\n cursor: pointer;\r\n user-select: none;\r\n margin: 0;\r\n }\r\n\r\n .campaigns-selected-count {\r\n margin-left: 12px;\r\n color: #8899A6;\r\n }\r\n }\r\n\r\n &-right {\r\n .campaigns-bulk-delete-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 8px 16px;\r\n border: none;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n transition: all 0.2s;\r\n\r\n &:hover:not(:disabled) {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.4;\r\n cursor: not-allowed;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .campaigns-list-items {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 0;\r\n padding: 8px 8px;\r\n max-height: 220px;\r\n overflow-y: auto;\r\n\r\n .campaigns-list-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n padding: 6px 12px;\r\n margin: 2px;\r\n border-radius: 6px;\r\n font-size: 13px;\r\n color: $cTextDark;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background 0.15s;\r\n\r\n &:hover {\r\n background: #F0F4FF;\r\n }\r\n\r\n input[type=\"checkbox\"] {\r\n width: 15px;\r\n height: 15px;\r\n cursor: pointer;\r\n flex-shrink: 0;\r\n }\r\n\r\n .campaigns-list-item-name {\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .campaigns-chart-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n padding: 20px;\r\n margin-bottom: 20px;\r\n min-height: 350px;\r\n overflow: hidden;\r\n\r\n #container {\r\n max-width: 100%;\r\n }\r\n }\r\n\r\n .campaigns-table-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n overflow-x: auto;\r\n -ms-overflow-style: none;\r\n scrollbar-width: none;\r\n max-width: 100%;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n .table {\r\n margin: 0;\r\n width: 100% !important;\r\n\r\n thead th {\r\n background: #F8FAFC;\r\n border-bottom: 2px solid $cBorder;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n padding: 12px 16px;\r\n white-space: nowrap;\r\n }\r\n\r\n tbody td {\r\n padding: 10px 16px;\r\n vertical-align: middle;\r\n border-bottom: 1px solid #F1F5F9;\r\n font-size: 13px;\r\n }\r\n\r\n tbody tr:hover {\r\n background: #F8FAFC;\r\n }\r\n }\r\n\r\n // DataTables 2.x overrides\r\n .dt-layout-row {\r\n padding: 14px 20px;\r\n margin: 0 !important;\r\n border-top: 1px solid #F1F5F9;\r\n\r\n // Ukryj wiersz z search/length jeśli pusty\r\n &:first-child {\r\n display: none;\r\n }\r\n }\r\n\r\n .dt-info {\r\n font-size: 13px;\r\n color: #8899A6;\r\n }\r\n\r\n .dt-paging {\r\n .pagination {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n\r\n .page-item {\r\n .page-link {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 36px;\r\n width: fit-content;\r\n height: 36px;\r\n padding: 0 14px;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n font-weight: 500;\r\n border: 1px solid $cBorder;\r\n background: $cWhite;\r\n color: $cText;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n text-decoration: none;\r\n line-height: 1;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n\r\n &.active .page-link {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n border-color: $cPrimary;\r\n font-weight: 600;\r\n }\r\n\r\n &.disabled .page-link {\r\n opacity: 0.35;\r\n cursor: default;\r\n pointer-events: none;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .dt-processing {\r\n background: rgba($cWhite, 0.9);\r\n color: $cText;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n .delete-history-entry {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 12px;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n}\r\n\r\n// ===========================\r\n// PRODUCTS PAGE\r\n// ===========================\r\n.products-page {\r\n .products-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n\r\n i {\r\n color: $cPrimary;\r\n margin-right: 8px;\r\n }\r\n }\r\n }\r\n\r\n .products-filters {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: flex-end;\r\n gap: 20px;\r\n margin-bottom: 16px;\r\n\r\n .filter-group {\r\n flex: 1 1 220px;\r\n min-width: 0;\r\n\r\n label {\r\n display: block;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n margin-bottom: 6px;\r\n\r\n i {\r\n margin-right: 4px;\r\n }\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n padding: 10px 14px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n transition: border-color 0.2s;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n select.form-control {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n padding-right: 32px;\r\n }\r\n\r\n &.filter-group-client,\r\n &.filter-group-campaign,\r\n &.filter-group-ad-group {\r\n flex: 1 1 260px;\r\n }\r\n\r\n &.filter-group-ad-group {\r\n .ad-group-filter-actions {\r\n display: flex;\r\n gap: 8px;\r\n align-items: center;\r\n\r\n .form-control {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n }\r\n\r\n #delete-products-ad-group {\r\n min-width: 38px;\r\n height: 38px;\r\n border-radius: 6px;\r\n margin: 0;\r\n background: #dc3545;\r\n border: 1px solid #dc3545;\r\n color: #fff;\r\n cursor: pointer;\r\n\r\n &:hover:not(:disabled) {\r\n background: #bb2d3b;\r\n border-color: #bb2d3b;\r\n color: #fff;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.45;\r\n cursor: default;\r\n background: #dc3545;\r\n border-color: #dc3545;\r\n color: #fff;\r\n }\r\n }\r\n }\r\n\r\n &.filter-group-roas {\r\n flex: 0 0 200px;\r\n }\r\n\r\n &.filter-group-columns {\r\n flex: 0 0 240px;\r\n }\r\n }\r\n }\r\n\r\n .products-scope-alerts {\r\n margin-bottom: 12px;\r\n border: 1px solid #FECACA;\r\n background: #FEF2F2;\r\n border-radius: 8px;\r\n overflow: hidden;\r\n\r\n summary {\r\n cursor: pointer;\r\n list-style: none;\r\n padding: 10px 12px;\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: #991B1B;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n &::-webkit-details-marker {\r\n display: none;\r\n }\r\n }\r\n\r\n .products-scope-alerts-list {\r\n border-top: 1px solid #FECACA;\r\n background: #FFF;\r\n max-height: 260px;\r\n overflow: auto;\r\n }\r\n\r\n .products-scope-alert-item {\r\n padding: 10px 12px;\r\n border-bottom: 1px solid #F1F5F9;\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n }\r\n\r\n .products-scope-alert-meta {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-bottom: 4px;\r\n font-size: 11px;\r\n color: #64748B;\r\n }\r\n\r\n .products-scope-alert-type {\r\n display: inline-flex;\r\n align-items: center;\r\n padding: 2px 6px;\r\n border-radius: 999px;\r\n background: #EEF2FF;\r\n color: #4338CA;\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.3px;\r\n }\r\n\r\n .products-scope-alert-message {\r\n font-size: 13px;\r\n color: $cTextDark;\r\n line-height: 1.45;\r\n }\r\n }\r\n\r\n .products-actions {\r\n margin-bottom: 12px;\r\n\r\n .btn-danger {\r\n padding: 7px 14px;\r\n font-size: 13px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:disabled {\r\n opacity: 0.4;\r\n cursor: default;\r\n }\r\n }\r\n }\r\n\r\n .products-table-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n overflow: hidden;\r\n\r\n .table {\r\n margin: 0;\r\n width: 100% !important;\r\n\r\n thead th {\r\n background: #F8FAFC;\r\n border-bottom: 2px solid $cBorder;\r\n font-size: 11px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.3px;\r\n color: #8899A6;\r\n padding: 10px 8px;\r\n white-space: nowrap;\r\n }\r\n\r\n tbody td {\r\n padding: 6px 8px;\r\n vertical-align: middle;\r\n border-bottom: 1px solid #F1F5F9;\r\n font-size: 12px;\r\n }\r\n\r\n tbody tr:hover {\r\n background: #F8FAFC;\r\n }\r\n\r\n // Kompaktowe inputy w tabeli\r\n input.min_roas,\r\n input.form-control-sm,\r\n select.custom_label_4,\r\n select.form-control-sm {\r\n padding: 3px 6px;\r\n font-size: 12px;\r\n border: 1px solid $cBorder;\r\n border-radius: 4px;\r\n background: $cWhite;\r\n }\r\n }\r\n\r\n // DataTables 2.x overrides (identyczne z campaigns)\r\n .dt-layout-row {\r\n padding: 14px 20px;\r\n margin: 0 !important;\r\n border-top: 1px solid #F1F5F9;\r\n\r\n &:first-child {\r\n display: none;\r\n }\r\n }\r\n\r\n .dt-info {\r\n font-size: 13px;\r\n color: #8899A6;\r\n }\r\n\r\n .dt-paging {\r\n .pagination {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n\r\n .page-item {\r\n .page-link {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 36px;\r\n height: 36px;\r\n padding: 0 14px;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n font-weight: 500;\r\n border: 1px solid $cBorder;\r\n background: $cWhite;\r\n color: $cText;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n text-decoration: none;\r\n line-height: 1;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n\r\n &.active .page-link {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n border-color: $cPrimary;\r\n font-weight: 600;\r\n }\r\n\r\n &.disabled .page-link {\r\n opacity: 0.35;\r\n cursor: default;\r\n pointer-events: none;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .dt-processing {\r\n background: rgba($cWhite, 0.9);\r\n color: $cText;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n // Przycisk usuwania w wierszu\r\n .delete-product {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 12px;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n // Przycisk edycji w wierszu\r\n .edit-product-title {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 12px;\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n }\r\n }\r\n}\r\n\r\n// --- Popup edycji produktu: AI suggest ---\r\n.desc-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 4px;\r\n\r\n label {\r\n margin: 0;\r\n }\r\n}\r\n\r\n.desc-tabs {\r\n display: flex;\r\n gap: 2px;\r\n background: #eee;\r\n border-radius: 6px;\r\n padding: 2px;\r\n}\r\n\r\n.desc-tab {\r\n border: none;\r\n background: transparent;\r\n padding: 4px 12px;\r\n font-size: 12px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n color: #666;\r\n transition: all .15s ease;\r\n\r\n i {\r\n margin-right: 4px;\r\n }\r\n\r\n &.active {\r\n background: #fff;\r\n color: #333;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, .12);\r\n font-weight: 500;\r\n }\r\n\r\n &:hover:not(.active) {\r\n color: #333;\r\n }\r\n}\r\n\r\n.desc-wrap {\r\n flex: 1;\r\n min-width: 0;\r\n}\r\n\r\n.desc-preview {\r\n\r\n ul,\r\n ol {\r\n margin: 6px 0;\r\n padding-left: 20px;\r\n }\r\n\r\n li {\r\n margin-bottom: 3px;\r\n }\r\n\r\n b,\r\n strong {\r\n font-weight: 600;\r\n }\r\n}\r\n\r\n.input-with-ai {\r\n display: flex;\r\n gap: 8px;\r\n align-items: flex-start;\r\n\r\n .form-control {\r\n flex: 1;\r\n }\r\n}\r\n\r\n.btn-ai-suggest {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n padding: 6px 12px;\r\n border-radius: 8px;\r\n border: 1px solid #C084FC;\r\n background: linear-gradient(135deg, #F3E8FF, #EDE9FE);\r\n color: #7C3AED;\r\n font-size: 12px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n white-space: nowrap;\r\n min-height: 38px;\r\n\r\n i {\r\n font-size: 13px;\r\n }\r\n\r\n &:hover {\r\n background: linear-gradient(135deg, #7C3AED, #6D28D9);\r\n color: #FFF;\r\n border-color: #6D28D9;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.7;\r\n cursor: wait;\r\n }\r\n\r\n &.btn-ai-claude {\r\n border-color: #D97706;\r\n background: linear-gradient(135deg, #FEF3C7, #FDE68A);\r\n color: #92400E;\r\n\r\n &:hover {\r\n background: linear-gradient(135deg, #D97706, #B45309);\r\n color: #FFF;\r\n border-color: #B45309;\r\n }\r\n }\r\n}\r\n\r\n// --- Form container ---\r\n.form_container {\r\n background: $cWhite;\r\n padding: 25px;\r\n max-width: 1300px;\r\n border-radius: 8px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\r\n\r\n &.full {\r\n max-width: 100%;\r\n }\r\n\r\n .form_group {\r\n margin-bottom: 12px;\r\n display: flex;\r\n\r\n >.label {\r\n width: 300px;\r\n display: inline-flex;\r\n align-items: flex-start;\r\n justify-content: right;\r\n padding-right: 12px;\r\n }\r\n\r\n .input {\r\n width: calc(100% - 300px);\r\n }\r\n }\r\n}\r\n\r\n// --- Default popup ---\r\n.default_popup {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.45);\r\n display: none;\r\n z-index: 2000;\r\n\r\n .popup_content {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n background: $cWhite;\r\n padding: 25px;\r\n border-radius: 10px;\r\n max-width: 1140px;\r\n width: 95%;\r\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);\r\n\r\n .popup_header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 15px;\r\n\r\n .title {\r\n font-size: 18px;\r\n font-weight: 600;\r\n }\r\n }\r\n\r\n .close {\r\n cursor: pointer;\r\n color: #A0AEC0;\r\n font-size: 18px;\r\n padding: 4px;\r\n\r\n &:hover {\r\n color: $cDanger;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// --- DataTables override ---\r\n.dt-layout-table {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.pagination {\r\n button {\r\n border: 1px solid $cBorder;\r\n background: $cWhite;\r\n display: inline-flex;\r\n height: 32px;\r\n width: 32px;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 0 2px;\r\n border-radius: 4px;\r\n transition: all 0.2s;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: $cContentBg;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n}\r\n\r\n// ===========================\r\n// PRODUCTS specific\r\n// ===========================\r\ntable#products {\r\n a {\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n\r\n .table-product-title {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n\r\n .edit-product-title {\r\n display: flex;\r\n height: 25px;\r\n align-items: center;\r\n justify-content: center;\r\n width: 25px;\r\n cursor: pointer;\r\n background: $cWhite;\r\n border: 1px solid #CBD5E0;\r\n color: #CBD5E0;\r\n border-radius: 4px;\r\n\r\n &:hover {\r\n background: #CBD5E0;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n a.custom_name {\r\n color: $cGreenLight !important;\r\n }\r\n}\r\n\r\n// --- Product history ---\r\n.product-history-page {\r\n .product-history-meta {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n margin-bottom: 14px;\r\n\r\n span {\r\n display: inline-flex;\r\n align-items: center;\r\n padding: 5px 10px;\r\n border-radius: 999px;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: $cText;\r\n background: #EEF2FF;\r\n border: 1px solid #D9E2FF;\r\n }\r\n }\r\n\r\n .product-history-chart-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n padding: 20px;\r\n margin-bottom: 16px;\r\n }\r\n\r\n .chart-with-form {\r\n display: flex;\r\n gap: 20px;\r\n align-items: flex-start;\r\n }\r\n\r\n .chart-area {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n\r\n .product-history-chart {\r\n min-height: 360px;\r\n }\r\n\r\n .comment-form {\r\n width: 340px;\r\n flex: 0 0 340px;\r\n background: #F8FAFC;\r\n border: 1px solid $cBorder;\r\n border-radius: 10px;\r\n padding: 14px;\r\n\r\n .form-group {\r\n margin-bottom: 12px;\r\n }\r\n\r\n label {\r\n display: block;\r\n font-weight: 600;\r\n margin-bottom: 6px;\r\n font-size: 13px;\r\n color: #52606D;\r\n }\r\n\r\n input[type=\"date\"],\r\n textarea {\r\n width: 100%;\r\n border: 1px solid $cBorder;\r\n border-radius: 6px;\r\n padding: 8px 12px;\r\n font-size: 14px;\r\n font-family: \"Roboto\", sans-serif;\r\n background: $cWhite;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n textarea {\r\n min-height: 110px;\r\n resize: vertical;\r\n }\r\n\r\n .btn {\r\n width: 100%;\r\n justify-content: center;\r\n padding: 10px 16px;\r\n }\r\n\r\n .btn[disabled] {\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n }\r\n }\r\n\r\n .products-table-wrap {\r\n overflow-x: auto;\r\n\r\n .table {\r\n min-width: 980px;\r\n }\r\n\r\n .comment-cell {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 10px;\r\n }\r\n\r\n .comment-text {\r\n word-break: break-word;\r\n }\r\n\r\n .delete-comment {\r\n color: $cDanger;\r\n text-decoration: none;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n .dt-paging .pagination .page-item {\r\n list-style: none;\r\n }\r\n }\r\n}\r\n\r\n.cron-status-overview {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 10px 20px;\r\n margin-bottom: 20px;\r\n color: $cText;\r\n font-size: 13px;\r\n}\r\n\r\n.cron-progress-list {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.cron-schedule-list {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.cron-schedule-item {\r\n border: 1px solid #DFE7F0;\r\n background: #F4F8FD;\r\n border-radius: 8px;\r\n padding: 9px 12px;\r\n margin-bottom: 8px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n strong {\r\n display: block;\r\n color: $cTextDark;\r\n font-size: 13px;\r\n font-weight: 700;\r\n margin-bottom: 2px;\r\n }\r\n\r\n small {\r\n display: block;\r\n color: #667788;\r\n font-size: 12px;\r\n line-height: 1.35;\r\n }\r\n}\r\n\r\n.cron-progress-item {\r\n margin-bottom: 14px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .cron-progress-head {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n gap: 12px;\r\n margin-bottom: 6px;\r\n font-size: 13px;\r\n\r\n strong {\r\n color: $cTextDark;\r\n font-weight: 600;\r\n }\r\n\r\n span {\r\n color: #6B7A89;\r\n font-size: 12px;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n }\r\n }\r\n\r\n small {\r\n display: block;\r\n margin-top: 5px;\r\n color: #778899;\r\n font-size: 12px;\r\n }\r\n}\r\n\r\n.cron-progress-bar {\r\n width: 100%;\r\n height: 10px;\r\n border-radius: 999px;\r\n background: #E9EEF5;\r\n overflow: hidden;\r\n\r\n >span {\r\n display: block;\r\n height: 100%;\r\n background: linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%);\r\n }\r\n}\r\n\r\n.cron-url-list {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.cron-url-item {\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n background: #F8FAFC;\r\n padding: 10px 12px;\r\n margin-bottom: 10px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .cron-url-top {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n gap: 8px;\r\n margin-bottom: 6px;\r\n\r\n strong {\r\n color: $cTextDark;\r\n font-size: 13px;\r\n font-weight: 600;\r\n }\r\n\r\n small {\r\n color: #7A8794;\r\n font-size: 11px;\r\n white-space: nowrap;\r\n }\r\n }\r\n\r\n code {\r\n display: block;\r\n background: #EEF2F7;\r\n border: 1px solid #DDE4ED;\r\n border-radius: 6px;\r\n padding: 6px 8px;\r\n color: #2E3B49;\r\n font-size: 12px;\r\n overflow-x: auto;\r\n }\r\n\r\n .cron-url-plan {\r\n display: block;\r\n color: #6C7B8A;\r\n font-size: 11px;\r\n margin-bottom: 6px;\r\n }\r\n}\r\n\r\n@media (max-width: 1200px) {\r\n .product-history-page {\r\n .chart-with-form {\r\n flex-direction: column;\r\n }\r\n\r\n .comment-form {\r\n width: 100%;\r\n flex: 1 1 auto;\r\n }\r\n }\r\n}\r\n\r\n// --- Select2 w modalu ---\r\n.jconfirm-box .form-group .select2-container,\r\n.adspro-dialog-box .form-group .select2-container {\r\n width: 100% !important;\r\n margin-top: 8px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single {\r\n background-color: $cWhite;\r\n border: 1px solid $cBorder;\r\n border-radius: 6px;\r\n min-height: 42px;\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 12px;\r\n box-shadow: none;\r\n transition: border-color 0.2s, box-shadow 0.2s;\r\n font-size: 14px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__rendered,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__rendered {\r\n padding-left: 0;\r\n line-height: 1.4;\r\n color: #495057;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__placeholder,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__placeholder {\r\n color: #CBD5E0;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__arrow,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__arrow {\r\n height: 100%;\r\n right: 8px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default.select2-container--focus .select2-selection--single,\r\n.jconfirm-box .select2-container--default .select2-selection--single:hover,\r\n.adspro-dialog-box .select2-container--default.select2-container--focus .select2-selection--single,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single:hover {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n outline: 0;\r\n}\r\n\r\n.jconfirm-box .select2-container .select2-dropdown,\r\n.adspro-dialog-box .select2-container .select2-dropdown {\r\n border-color: $cBorder;\r\n border-radius: 0 0 6px 6px;\r\n font-size: 14px;\r\n}\r\n\r\n.jconfirm-box .select2-container .select2-search--dropdown .select2-search__field,\r\n.adspro-dialog-box .select2-container .select2-search--dropdown .select2-search__field {\r\n padding: 6px 10px;\r\n border-radius: 4px;\r\n border: 1px solid $cBorder;\r\n font-size: 14px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-results__option--highlighted[aria-selected],\r\n.adspro-dialog-box .select2-container--default .select2-results__option--highlighted[aria-selected] {\r\n background-color: $cPrimary;\r\n color: $cWhite;\r\n}\r\n\r\n// ===========================\r\n// RESPONSYWNOŚĆ\r\n// ===========================\r\n@media (max-width: 992px) {\r\n .sidebar {\r\n transform: translateX(-100%);\r\n\r\n &.mobile-open {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n .main-wrapper {\r\n margin-left: 0 !important;\r\n }\r\n}\r\n\r\n// ===========================\r\n// CAMPAIGN TERMS VIEW\r\n// ===========================\r\n.campaign-terms-wrap {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 20px;\r\n margin-top: 20px;\r\n}\r\n\r\n.campaign-terms-page {\r\n max-width: 100%;\r\n overflow: hidden;\r\n\r\n .campaigns-filters {\r\n flex-wrap: wrap;\r\n\r\n .filter-group {\r\n min-width: 220px;\r\n\r\n &.terms-columns-group {\r\n min-width: 280px;\r\n }\r\n }\r\n }\r\n\r\n .terms-card-toggle {\r\n margin-left: auto;\r\n width: 28px;\r\n height: 28px;\r\n border: 1px solid #E2E8F0;\r\n border-radius: 6px;\r\n background: #FFFFFF;\r\n color: #475569;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: #F8FAFC;\r\n border-color: #CBD5E1;\r\n }\r\n }\r\n\r\n .terms-adgroups-card.is-collapsed .campaigns-extra-table-wrap {\r\n display: none;\r\n }\r\n\r\n .terms-search-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n padding: 10px 12px;\r\n border-bottom: 1px solid #EEF2F7;\r\n background: #FFFFFF;\r\n\r\n label {\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #475569;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n margin: 0;\r\n white-space: nowrap;\r\n }\r\n\r\n .terms-search-toolbar-label {\r\n min-width: 86px;\r\n }\r\n\r\n #terms_min_clicks_all,\r\n #terms_max_clicks_all {\r\n width: 160px;\r\n height: 32px;\r\n }\r\n\r\n #terms_min_conversions_all,\r\n #terms_max_conversions_all {\r\n width: 130px;\r\n max-width: 130px;\r\n }\r\n }\r\n\r\n .terms-search-selected-label {\r\n margin: 0;\r\n font-size: 12px;\r\n color: #475569;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n }\r\n\r\n .terms-ai-analyze-btn {\r\n margin-left: auto;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n height: 32px;\r\n padding: 0 12px;\r\n border-radius: 6px;\r\n border: 1px solid #BFDBFE;\r\n background: #EFF6FF;\r\n color: #1D4ED8;\r\n font-size: 12px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: #DBEAFE;\r\n border-color: #93C5FD;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.6;\r\n cursor: wait;\r\n }\r\n }\r\n\r\n .terms-negative-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n padding: 10px 12px;\r\n border-bottom: 1px solid #EEF2F7;\r\n background: #FFFFFF;\r\n }\r\n\r\n .terms-negative-bulk-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n height: 32px;\r\n padding: 0 12px;\r\n border-radius: 6px;\r\n border: 1px solid #FECACA;\r\n background: #FEF2F2;\r\n color: #DC2626;\r\n font-size: 12px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: #FEE2E2;\r\n border-color: #FCA5A5;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n }\r\n\r\n table.campaigns-extra-table>thead>tr>th {\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n background-color: #111827 !important;\r\n color: #E5E7EB !important;\r\n border-bottom: 1px solid #0B1220 !important;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: .4px;\r\n padding: 10px 12px;\r\n white-space: nowrap;\r\n }\r\n\r\n #terms_search_table thead th .dt-column-order,\r\n #terms_negative_table thead th .dt-column-order {\r\n display: none !important;\r\n }\r\n\r\n #terms_search_table thead th.dt-orderable-asc,\r\n #terms_search_table thead th.dt-orderable-desc,\r\n #terms_negative_table thead th.dt-orderable-asc,\r\n #terms_negative_table thead th.dt-orderable-desc {\r\n cursor: pointer;\r\n padding-right: 34px;\r\n overflow: hidden;\r\n }\r\n\r\n #terms_search_table thead th .dt-column-title,\r\n #terms_negative_table thead th .dt-column-title {\r\n display: block;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-right: 2px;\r\n }\r\n\r\n #terms_search_table thead th.dt-orderable-asc::after,\r\n #terms_search_table thead th.dt-orderable-desc::after,\r\n #terms_negative_table thead th.dt-orderable-asc::after,\r\n #terms_negative_table thead th.dt-orderable-desc::after {\r\n content: '\\2195';\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 16px;\r\n height: 16px;\r\n border-radius: 999px;\r\n font-size: 12px;\r\n font-weight: 700;\r\n line-height: 16px;\r\n text-align: center;\r\n color: #E5E7EB;\r\n background: #374151;\r\n }\r\n\r\n #terms_search_table thead th.dt-ordering-asc::after,\r\n #terms_negative_table thead th.dt-ordering-asc::after,\r\n #terms_search_table thead th[aria-sort=\"ascending\"]::after,\r\n #terms_negative_table thead th[aria-sort=\"ascending\"]::after {\r\n content: '\\25B2';\r\n color: #FFFFFF;\r\n background: #2563EB;\r\n }\r\n\r\n #terms_search_table thead th.dt-ordering-desc::after,\r\n #terms_negative_table thead th.dt-ordering-desc::after,\r\n #terms_search_table thead th[aria-sort=\"descending\"]::after,\r\n #terms_negative_table thead th[aria-sort=\"descending\"]::after {\r\n content: '\\25BC';\r\n color: #FFFFFF;\r\n background: #2563EB;\r\n }\r\n\r\n #terms_negative_select_all,\r\n .terms-negative-select-row,\r\n #terms_search_select_all,\r\n .terms-search-select-row {\r\n width: 14px;\r\n height: 14px;\r\n cursor: pointer;\r\n }\r\n\r\n .dt-layout-row:first-child {\r\n display: none;\r\n }\r\n\r\n .dt-layout-row {\r\n padding: 10px 12px;\r\n margin: 0 !important;\r\n border-top: 1px solid #F1F5F9;\r\n }\r\n\r\n .dt-info {\r\n font-size: 12px;\r\n color: #64748B;\r\n }\r\n\r\n .dt-paging .pagination {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none !important;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n\r\n .page-item {\r\n list-style: none !important;\r\n\r\n .page-link {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 36px;\r\n width: fit-content;\r\n height: 32px;\r\n padding: 0 12px;\r\n border-radius: 6px;\r\n font-size: 12px;\r\n font-weight: 500;\r\n border: 1px solid #E2E8F0;\r\n background: #FFFFFF;\r\n color: #4E5E6A;\r\n text-decoration: none;\r\n line-height: 1;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background: #EEF2FF;\r\n color: #6690F4;\r\n border-color: #6690F4;\r\n }\r\n }\r\n\r\n &.previous .page-link,\r\n &.next .page-link {\r\n min-width: 72px;\r\n }\r\n\r\n &.active .page-link {\r\n background: #6690F4;\r\n color: #FFFFFF;\r\n border-color: #6690F4;\r\n }\r\n\r\n &.disabled .page-link {\r\n opacity: 0.35;\r\n cursor: default;\r\n pointer-events: none;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.terms-columns-box {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 6px;\r\n}\r\n\r\n.terms-columns-control {\r\n border: 1px solid #E2E8F0;\r\n border-radius: 6px;\r\n background: #FFFFFF;\r\n overflow: hidden;\r\n\r\n summary {\r\n cursor: pointer;\r\n padding: 8px 10px;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #334155;\r\n list-style: none;\r\n\r\n &::-webkit-details-marker {\r\n display: none;\r\n }\r\n\r\n &::after {\r\n content: '\\25BC';\r\n float: right;\r\n font-size: 10px;\r\n color: #64748B;\r\n margin-top: 2px;\r\n }\r\n }\r\n\r\n &[open] summary::after {\r\n content: '\\25B2';\r\n }\r\n}\r\n\r\n.terms-columns-list {\r\n border-top: 1px solid #EEF2F7;\r\n padding: 8px 10px;\r\n max-height: 180px;\r\n overflow-y: auto;\r\n\r\n .terms-col-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-size: 12px;\r\n color: #334155;\r\n margin-bottom: 6px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n input[type=checkbox] {\r\n margin: 0;\r\n }\r\n }\r\n}\r\n\r\n.campaigns-extra-card {\r\n background: #FFFFFF;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n overflow: hidden;\r\n}\r\n\r\n.campaigns-extra-card-title {\r\n padding: 14px 16px;\r\n border-bottom: 1px solid #E2E8F0;\r\n font-size: 13px;\r\n font-weight: 700;\r\n color: #334155;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n .terms-card-title-label {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n}\r\n\r\n.campaigns-extra-table-wrap {\r\n overflow: auto;\r\n}\r\n\r\n.campaigns-extra-table {\r\n margin: 0;\r\n width: 100%;\r\n table-layout: fixed;\r\n\r\n tbody td {\r\n padding: 9px 12px;\r\n border-bottom: 1px solid #F1F5F9;\r\n font-size: 13px;\r\n color: #334155;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n }\r\n\r\n td.num-cell {\r\n text-align: right;\r\n white-space: nowrap;\r\n }\r\n\r\n td.text-cell {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n th.terms-negative-select-cell,\r\n td.terms-negative-select-cell,\r\n th.terms-search-select-cell,\r\n td.terms-search-select-cell {\r\n text-align: center;\r\n }\r\n\r\n th.phrase-nowrap,\r\n td.phrase-nowrap {\r\n white-space: nowrap !important;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .terms-add-negative-btn,\r\n .terms-remove-negative-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n }\r\n\r\n .terms-add-negative-btn {\r\n border: 1px solid #E2E8F0;\r\n background: #EEF2FF;\r\n color: #3B82F6;\r\n\r\n &:hover {\r\n background: #3B82F6;\r\n color: #FFFFFF;\r\n border-color: #3B82F6;\r\n }\r\n }\r\n\r\n .terms-remove-negative-btn {\r\n border: 1px solid #FECACA;\r\n background: #FEF2F2;\r\n color: #DC2626;\r\n\r\n &:hover {\r\n background: #DC2626;\r\n color: #FFFFFF;\r\n border-color: #DC2626;\r\n }\r\n }\r\n\r\n tbody tr:hover {\r\n background: #F8FAFC;\r\n }\r\n\r\n tbody tr.term-is-negative td {\r\n color: #DC2626;\r\n }\r\n\r\n tbody tr.term-is-negative:hover {\r\n background: #FEF2F2;\r\n }\r\n}\r\n\r\n.campaigns-empty-row {\r\n text-align: center;\r\n color: #94A3B8 !important;\r\n font-style: italic;\r\n}\r\n\r\n.terms-ai-modal-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n margin-bottom: 10px;\r\n\r\n label {\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #334155;\r\n margin: 0;\r\n }\r\n\r\n .form-control {\r\n width: 200px;\r\n height: 32px;\r\n }\r\n}\r\n\r\n.terms-ai-summary {\r\n font-size: 12px;\r\n color: #64748B;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.terms-ai-results-wrap {\r\n border: 1px solid #E2E8F0;\r\n border-radius: 8px;\r\n max-height: 420px;\r\n overflow: auto;\r\n}\r\n\r\n.terms-ai-results-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n font-size: 12px;\r\n\r\n th,\r\n td {\r\n border-bottom: 1px solid #EEF2F7;\r\n padding: 8px;\r\n vertical-align: middle;\r\n }\r\n\r\n th {\r\n position: sticky;\r\n top: 0;\r\n background: #F8FAFC;\r\n color: #334155;\r\n font-weight: 700;\r\n }\r\n\r\n td.term-col {\r\n min-width: 260px;\r\n max-width: 380px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n td.reason-col {\r\n min-width: 320px;\r\n }\r\n}\r\n\r\n.terms-ai-action-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 999px;\r\n padding: 2px 8px;\r\n font-size: 11px;\r\n font-weight: 700;\r\n\r\n &.action-exclude {\r\n background: #FEE2E2;\r\n color: #B91C1C;\r\n }\r\n\r\n &.action-keep {\r\n background: #DCFCE7;\r\n color: #166534;\r\n }\r\n}\r\n\r\n// ===========================\r\n// PRODUCTS VIEW (INLINE MOVED)\r\n// ===========================\r\n.products-page .products-filters .filter-group.filter-group-columns {\r\n min-width: 240px;\r\n}\r\n\r\n.products-columns-control {\r\n border: 1px solid #E2E8F0;\r\n border-radius: 6px;\r\n background: #FFFFFF;\r\n overflow: hidden;\r\n\r\n summary {\r\n cursor: pointer;\r\n padding: 8px 10px;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #334155;\r\n list-style: none;\r\n\r\n &::-webkit-details-marker {\r\n display: none;\r\n }\r\n\r\n &::after {\r\n content: '\\25BC';\r\n float: right;\r\n font-size: 10px;\r\n color: #64748B;\r\n margin-top: 2px;\r\n }\r\n }\r\n\r\n &[open] summary::after {\r\n content: '\\25B2';\r\n }\r\n}\r\n\r\n.products-columns-list {\r\n border-top: 1px solid #EEF2F7;\r\n padding: 8px 10px;\r\n max-height: 220px;\r\n overflow-y: auto;\r\n\r\n .products-col-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-size: 12px;\r\n color: #334155;\r\n margin-bottom: 6px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n input[type=checkbox] {\r\n margin: 0;\r\n }\r\n }\r\n}\r\n\r\n#products {\r\n\r\n th:last-child,\r\n td:last-child {\r\n white-space: nowrap;\r\n }\r\n\r\n .products-row-actions {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n\r\n .btn {\r\n width: 38px;\r\n height: 32px;\r\n padding: 0;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 4px !important;\r\n\r\n i {\r\n line-height: 1;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.products-page table#products>thead>tr>th {\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n background-color: #111827 !important;\r\n color: #E5E7EB !important;\r\n border-bottom: 1px solid #0B1220 !important;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: .4px;\r\n padding: 10px 12px;\r\n white-space: nowrap;\r\n}\r\n\r\n.products-page #products thead th .dt-column-order {\r\n display: none !important;\r\n}\r\n\r\n.products-page #products thead th.dt-orderable-asc,\r\n.products-page #products thead th.dt-orderable-desc {\r\n cursor: pointer;\r\n padding-right: 34px;\r\n overflow: hidden;\r\n}\r\n\r\n.products-page #products thead th .dt-column-title {\r\n display: block;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-right: 2px;\r\n}\r\n\r\n.products-page #products thead th.dt-orderable-asc::after,\r\n.products-page #products thead th.dt-orderable-desc::after {\r\n content: '\\2195';\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 16px;\r\n height: 16px;\r\n border-radius: 999px;\r\n font-size: 12px;\r\n font-weight: 700;\r\n line-height: 16px;\r\n text-align: center;\r\n color: #E5E7EB;\r\n background: #374151;\r\n}\r\n\r\n.products-page #products thead th.dt-ordering-asc::after,\r\n.products-page #products thead th[aria-sort=\"ascending\"]::after {\r\n content: '\\25B2';\r\n color: #FFFFFF;\r\n background: #2563EB;\r\n}\r\n\r\n.products-page #products thead th.dt-ordering-desc::after,\r\n.products-page #products thead th[aria-sort=\"descending\"]::after {\r\n content: '\\25BC';\r\n color: #FFFFFF;\r\n background: #2563EB;\r\n}\r\n\r\n// ===========================\r\n// LOGS PAGE\r\n// ===========================\r\n.logs-page {\r\n .logs-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n }\r\n\r\n .logs-filters {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: flex-end;\r\n gap: 14px;\r\n margin-bottom: 16px;\r\n\r\n .filter-group {\r\n flex: 1 1 160px;\r\n min-width: 0;\r\n max-width: 220px;\r\n\r\n label {\r\n display: block;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n margin-bottom: 6px;\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n transition: border-color 0.2s;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n select.form-control {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n padding-right: 32px;\r\n }\r\n\r\n &.filter-group-buttons {\r\n flex: 0 0 auto;\r\n display: flex;\r\n gap: 6px;\r\n max-width: none;\r\n }\r\n }\r\n }\r\n\r\n .logs-table-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n overflow: hidden;\r\n\r\n .table {\r\n margin: 0;\r\n\r\n thead th {\r\n background: #F0F4FA;\r\n border-bottom: 2px solid $cBorder;\r\n font-size: 11px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n padding: 12px 14px;\r\n white-space: nowrap;\r\n }\r\n\r\n tbody td {\r\n padding: 10px 14px;\r\n font-size: 13px;\r\n color: $cTextDark;\r\n vertical-align: middle;\r\n border-bottom: 1px solid #EEF2F7;\r\n }\r\n\r\n tbody tr:hover td {\r\n background: #F8FAFD;\r\n }\r\n }\r\n\r\n .dt-layout-row {\r\n padding: 14px 20px;\r\n margin: 0 !important;\r\n border-top: 1px solid #F1F5F9;\r\n\r\n &:first-child {\r\n display: none;\r\n }\r\n }\r\n\r\n .dt-info {\r\n font-size: 13px;\r\n color: #8899A6;\r\n }\r\n\r\n .dt-paging {\r\n .pagination {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n\r\n .page-item {\r\n .page-link {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 36px;\r\n width: fit-content;\r\n height: 36px;\r\n padding: 0 14px;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n font-weight: 500;\r\n border: 1px solid $cBorder;\r\n background: $cWhite;\r\n color: $cText;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n text-decoration: none;\r\n line-height: 1;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n\r\n &.active .page-link {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n border-color: $cPrimary;\r\n font-weight: 600;\r\n }\r\n\r\n &.disabled .page-link {\r\n opacity: 0.35;\r\n cursor: default;\r\n pointer-events: none;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .dt-processing {\r\n background: rgba($cWhite, 0.9);\r\n color: $cText;\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n .badge {\r\n display: inline-block;\r\n padding: 3px 8px;\r\n border-radius: 4px;\r\n font-size: 11px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.3px;\r\n }\r\n\r\n .badge-success {\r\n background: #D1FAE5;\r\n color: #065F46;\r\n }\r\n\r\n .badge-danger {\r\n background: #FEE2E2;\r\n color: #991B1B;\r\n }\r\n\r\n .badge-warning {\r\n background: #FEF3C7;\r\n color: #92400E;\r\n }\r\n}"]} \ No newline at end of file +{"version":3,"sources":["style.css","style.scss"],"names":[],"mappings":"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","file":"style.css","sourcesContent":["*{box-sizing:border-box}body{font-family:\"Roboto\",sans-serif;margin:0;padding:0;font-size:14px;color:#4e5e6a;background:#f4f6f9;max-width:100vw;overflow-x:hidden}.hide{display:none}small{font-size:.75em}.text-right{text-align:right}.text-bold{font-weight:700 !important}.nowrap{white-space:nowrap}body.unlogged{background:#f4f6f9;margin:0;padding:0}.login-container{display:flex;min-height:100vh}.login-brand{flex:0 0 45%;background:linear-gradient(135deg, #1E2A3A 0%, #2C3E57 50%, #6690F4 100%);display:flex;align-items:center;justify-content:center;padding:60px;position:relative;overflow:hidden}.login-brand::before{content:\"\";position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle, rgba(102, 144, 244, 0.15) 0%, transparent 70%);border-radius:50%}.login-brand .brand-content{position:relative;z-index:1;color:#fff;max-width:400px}.login-brand .brand-logo{font-size:48px;font-weight:300;margin-bottom:20px;letter-spacing:-1px}.login-brand .brand-logo strong{font-weight:700}.login-brand .brand-tagline{font-size:18px;opacity:.85;line-height:1.6;margin-bottom:50px}.login-brand .brand-features .feature{display:flex;align-items:center;gap:15px;margin-bottom:20px;opacity:.8}.login-brand .brand-features .feature i{font-size:20px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);border-radius:10px}.login-brand .brand-features .feature span{font-size:15px}.login-form-wrapper{flex:1;display:flex;align-items:center;justify-content:center;padding:60px;background:#fff}.login-box{width:100%;max-width:420px}.login-box .login-header{margin-bottom:35px}.login-box .login-header h1{font-size:28px;font-weight:700;color:#2d3748;margin:0 0 8px}.login-box .login-header p{color:#718096;font-size:15px;margin:0}.login-box .form-group{margin-bottom:20px}.login-box .form-group label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.login-box .input-with-icon{position:relative}.login-box .input-with-icon i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px}.login-box .input-with-icon .form-control{padding-left:42px}.login-box .form-control{width:100%;height:46px;border:2px solid #e2e8f0;border-radius:8px;padding:0 14px;font-size:14px;font-family:\"Roboto\",sans-serif;color:#2d3748;transition:border-color .3s,box-shadow .3s}.login-box .form-control::placeholder{color:#cbd5e0}.login-box .form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.15);outline:none}.login-box .form-error{color:#c00;font-size:12px;margin-top:4px}.login-box .checkbox-group .checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:#718096;font-weight:400}.login-box .checkbox-group .checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:#6690f4}.login-box .btn-login{width:100%;height:48px;font-size:15px;font-weight:600;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:8px}.login-box .btn-login.disabled{opacity:.7;pointer-events:none}.login-box .alert{display:none;padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:20px}.login-box .alert.alert-danger{background:#fff5f5;color:#c00;border:1px solid #fed7d7}.login-box .alert.alert-success{background:#f0fff4;color:#276749;border:1px solid #c6f6d5}@media(max-width: 768px){.login-brand{display:none}.login-form-wrapper{padding:30px 20px}}body.logged{display:flex;min-height:100vh;background:#f4f6f9}.sidebar{width:260px;min-height:100vh;background:#1e2a3a;position:fixed;top:0;left:0;z-index:1000;display:flex;flex-direction:column;transition:width .3s ease;overflow:hidden}.sidebar.collapsed{width:70px}.sidebar.collapsed .sidebar-header{padding:16px 0;justify-content:center}.sidebar.collapsed .sidebar-header .sidebar-logo{display:none}.sidebar.collapsed .sidebar-header .sidebar-toggle i{transform:rotate(180deg)}.sidebar.collapsed .sidebar-nav ul li a{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li a span{display:none}.sidebar.collapsed .sidebar-nav ul li a i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label{padding:12px 0;justify-content:center}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label span{display:none}.sidebar.collapsed .sidebar-nav ul li.nav-group .nav-group-label i{margin-right:0;font-size:18px}.sidebar.collapsed .sidebar-footer .sidebar-user{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-user .user-info{display:none}.sidebar.collapsed .sidebar-footer .sidebar-logout{justify-content:center}.sidebar.collapsed .sidebar-footer .sidebar-logout span{display:none}.sidebar.collapsed .nav-divider{margin:8px 15px}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:20px 20px 16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.sidebar-header .sidebar-logo a{color:#fff;text-decoration:none;font-size:24px;font-weight:300;letter-spacing:-0.5px}.sidebar-header .sidebar-logo a strong{font-weight:700}.sidebar-header .sidebar-toggle{background:none;border:none;color:#a8b7c7;cursor:pointer;padding:6px;border-radius:6px;transition:all .3s}.sidebar-header .sidebar-toggle:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar-header .sidebar-toggle i{transition:transform .3s}.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}.sidebar-nav ul{list-style:none;margin:0;padding:0}.sidebar-nav ul li.nav-group{margin-bottom:4px}.sidebar-nav ul li.nav-group .nav-group-label{display:flex;align-items:center;padding:11px 20px;color:#d5deea;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li.nav-group .nav-group-label i{width:20px;text-align:center;margin-right:12px;font-size:14px;color:#b6c4d3}.sidebar-nav ul li.nav-group .nav-submenu{margin:0;padding:0;list-style:none}.sidebar-nav ul li.nav-group .nav-submenu li a{padding-left:44px}.sidebar-nav ul li.nav-group.active>.nav-group-label{color:#fff;background:rgba(102,144,244,.12);border-left-color:#6690f4}.sidebar-nav ul li.nav-group.active>.nav-group-label i{color:#6690f4}.sidebar-nav ul li.nav-divider{height:1px;background:hsla(0,0%,100%,.08);margin:8px 20px}.sidebar-nav ul li a{display:flex;align-items:center;padding:11px 20px;color:#a8b7c7;text-decoration:none;font-size:14px;transition:all .2s;border-left:3px solid rgba(0,0,0,0)}.sidebar-nav ul li a i{width:20px;text-align:center;margin-right:12px;font-size:15px}.sidebar-nav ul li a:hover{background:#263548;color:#fff}.sidebar-nav ul li.active>a{background:rgba(102,144,244,.15);color:#fff;border-left-color:#6690f4}.sidebar-nav ul li.active>a i{color:#6690f4}.badge-alerts-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:8px;border-radius:50%;font-size:11px;font-weight:600;line-height:1;background:#fff;color:#6690f4}.sidebar-footer{padding:16px 20px;border-top:1px solid hsla(0,0%,100%,.08)}.sidebar-footer .sidebar-user{display:flex;align-items:center;gap:10px;margin-bottom:12px}.sidebar-footer .sidebar-user .user-avatar{width:34px;height:34px;border-radius:50%;background:rgba(102,144,244,.2);display:flex;align-items:center;justify-content:center;color:#6690f4;font-size:14px;flex-shrink:0}.sidebar-footer .sidebar-user .user-info{overflow:hidden}.sidebar-footer .sidebar-user .user-info .user-email{color:#a8b7c7;font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer .sidebar-logout{display:flex;align-items:center;gap:8px;color:#e53e3e;text-decoration:none;font-size:13px;padding:8px 10px;border-radius:6px;transition:all .2s}.sidebar-footer .sidebar-logout i{font-size:14px}.sidebar-footer .sidebar-logout:hover{background:rgba(229,62,62,.1)}.main-wrapper{margin-left:260px;flex:1;min-height:100vh;transition:margin-left .3s ease;display:flex;flex-direction:column}.main-wrapper.expanded{margin-left:70px}.topbar{height:56px;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;padding:0 25px;position:sticky;top:0;z-index:500}.topbar .topbar-toggle{background:none;border:none;color:#4e5e6a;cursor:pointer;padding:8px 10px;border-radius:6px;font-size:16px;margin-right:15px;transition:all .2s}.topbar .topbar-toggle:hover{background:#f4f6f9}.topbar .topbar-breadcrumb{font-size:16px;font-weight:600;color:#2d3748}.content{flex:1;padding:25px}.app-alert{background:#ebf8ff;border:1px solid #bee3f8;color:#2b6cb0;padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:14px}.btn{padding:10px 20px;transition:all .2s ease;color:#fff;border:0;border-radius:6px;cursor:pointer;display:inline-flex;text-decoration:none;gap:6px;justify-content:center;align-items:center;font-size:14px;font-family:\"Roboto\",sans-serif;font-weight:500}.btn.btn_small,.btn.btn-xs,.btn.btn-sm{padding:5px 10px;font-size:12px}.btn.btn_small i,.btn.btn-xs i,.btn.btn-sm i{font-size:11px}.btn.btn-success{background:#57b951}.btn.btn-success:hover{background:#4a9c3b}.btn.btn-primary{background:#6690f4}.btn.btn-primary:hover{background:#3164db}.btn.btn-danger{background:#c00}.btn.btn-danger:hover{background:#b30000}.btn.disabled{opacity:.6;pointer-events:none}.form-control{border:1px solid #e2e8f0;border-radius:6px;height:38px;width:100%;padding:6px 12px;font-family:\"Roboto\",sans-serif;font-size:14px;color:#2d3748;transition:border-color .2s,box-shadow .2s}.form-control option{padding:5px}.form-control:focus{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:none}input[type=checkbox]{border:1px solid #e2e8f0}table{border-collapse:collapse;font-size:13px}.table{width:100%}.table th,.table td{border:1px solid #e2e8f0;padding:8px 10px}.table th{background:#f7fafc;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:#718096}.table td.center{text-align:center}.table td.left{text-align:left}.table.table-sm td{padding:5px !important}.table input.form-control{font-size:13px;height:32px}.clients-table-wrap,.campaigns-table-wrap,.products-table-wrap,.logs-table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow-x:auto;max-width:100%;-ms-overflow-style:none;scrollbar-width:none}.clients-table-wrap::-webkit-scrollbar,.campaigns-table-wrap::-webkit-scrollbar,.products-table-wrap::-webkit-scrollbar,.logs-table-wrap::-webkit-scrollbar{display:none}.clients-table-wrap .table,.campaigns-table-wrap .table,.products-table-wrap .table,.logs-table-wrap .table{margin:0;width:100% !important}.clients-table-wrap .table thead th,.campaigns-table-wrap .table thead th,.products-table-wrap .table thead th,.logs-table-wrap .table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;padding:12px 16px;white-space:nowrap}.clients-table-wrap .table tbody td,.campaigns-table-wrap .table tbody td,.products-table-wrap .table tbody td,.logs-table-wrap .table tbody td{padding:10px 16px;font-size:13px;color:#2d3748;vertical-align:middle;border-bottom:1px solid #f1f5f9}.clients-table-wrap .table tbody tr:hover td,.campaigns-table-wrap .table tbody tr:hover td,.products-table-wrap .table tbody tr:hover td,.logs-table-wrap .table tbody tr:hover td{background:#f8fafc}.clients-table-wrap .dt-layout-row,.campaigns-table-wrap .dt-layout-row,.products-table-wrap .dt-layout-row,.logs-table-wrap .dt-layout-row{padding:14px 20px;margin:0 !important;border-top:1px solid #f1f5f9}.clients-table-wrap .dt-layout-row:first-child,.campaigns-table-wrap .dt-layout-row:first-child,.products-table-wrap .dt-layout-row:first-child,.logs-table-wrap .dt-layout-row:first-child{display:none}.clients-table-wrap .dt-info,.campaigns-table-wrap .dt-info,.products-table-wrap .dt-info,.logs-table-wrap .dt-info{font-size:13px;color:#8899a6}.clients-table-wrap .dt-paging .pagination,.campaigns-table-wrap .dt-paging .pagination,.products-table-wrap .dt-paging .pagination,.logs-table-wrap .dt-paging .pagination{margin:0;padding:0;list-style:none;display:flex;align-items:center;gap:6px}.clients-table-wrap .dt-paging .pagination .page-item .page-link,.campaigns-table-wrap .dt-paging .pagination .page-item .page-link,.products-table-wrap .dt-paging .pagination .page-item .page-link,.logs-table-wrap .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:fit-content;height:36px;padding:0 14px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;cursor:pointer;transition:all .2s;text-decoration:none;line-height:1;white-space:nowrap}.clients-table-wrap .dt-paging .pagination .page-item .page-link:hover,.campaigns-table-wrap .dt-paging .pagination .page-item .page-link:hover,.products-table-wrap .dt-paging .pagination .page-item .page-link:hover,.logs-table-wrap .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.clients-table-wrap .dt-paging .pagination .page-item.active .page-link,.campaigns-table-wrap .dt-paging .pagination .page-item.active .page-link,.products-table-wrap .dt-paging .pagination .page-item.active .page-link,.logs-table-wrap .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4;font-weight:600}.clients-table-wrap .dt-paging .pagination .page-item.disabled .page-link,.campaigns-table-wrap .dt-paging .pagination .page-item.disabled .page-link,.products-table-wrap .dt-paging .pagination .page-item.disabled .page-link,.logs-table-wrap .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.clients-table-wrap .dt-processing,.campaigns-table-wrap .dt-processing,.products-table-wrap .dt-processing,.logs-table-wrap .dt-processing{background:hsla(0,0%,100%,.9);color:#4e5e6a;font-size:14px}.card{background:#fff;padding:20px;border-radius:8px;color:#2d3748;font-size:14px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.card.mb25{margin-bottom:20px}.card .card-header{font-weight:600;font-size:15px}.card .card-body{padding-top:12px}.card .card-body table th,.card .card-body table td{font-size:13px}.card .card-body table th.bold,.card .card-body table td.bold{font-weight:600}.card .card-body table th.text-right,.card .card-body table td.text-right{text-align:right}.card .card-body table th.text-center,.card .card-body table td.text-center{text-align:center}.action_menu{display:flex;margin-bottom:20px;gap:12px}.action_menu .btn{padding:8px 16px}.action_menu .btn.btn_add{background:#57b951}.action_menu .btn.btn_add:hover{background:#4a9c3b}.action_menu .btn.btn_cancel{background:#c00}.action_menu .btn.btn_cancel:hover{background:#b30000}.settings-tabs{display:flex;gap:8px;margin-bottom:18px}.settings-tabs .settings-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;text-decoration:none;color:#6b7a89;background:#e9eef5;border:1px solid #d8e0ea;font-size:13px;font-weight:600;transition:all .2s}.settings-tabs .settings-tab:hover{color:#2d3748;background:#dde6f2}.settings-tabs .settings-tab.active{color:#fff;background:#6690f4;border-color:#6690f4}.settings-card{background:#fff;border-radius:10px;padding:28px;box-shadow:0 1px 4px rgba(0,0,0,.06)}.settings-card .settings-card-header{display:flex;align-items:center;gap:14px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #e2e8f0}.settings-card .settings-card-header .settings-card-icon{width:44px;height:44px;border-radius:10px;background:rgb(225.706097561,233.7475609756,252.893902439);color:#6690f4;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.settings-card .settings-card-header h3{margin:0;font-size:17px;font-weight:600;color:#2d3748}.settings-card .settings-card-header small{color:#8899a6;font-size:13px}.settings-card .settings-field{margin-bottom:18px}.settings-card .settings-field label{display:block;font-size:13px;font-weight:600;color:#2d3748;margin-bottom:6px}.settings-card .settings-input-wrap{position:relative}.settings-card .settings-input-wrap .settings-input-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#a0aec0;font-size:14px;pointer-events:none}.settings-card .settings-input-wrap .form-control{padding-left:38px}.settings-card .settings-input-wrap .settings-toggle-pw{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;color:#a0aec0;cursor:pointer;padding:6px 10px;font-size:14px;transition:color .2s}.settings-card .settings-input-wrap .settings-toggle-pw:hover{color:#6690f4}.settings-card .settings-field .settings-toggle-label{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;font-weight:500;user-select:none;margin-bottom:0;width:100%}.settings-card .settings-field .settings-toggle-label .settings-toggle-text{flex:1 1 auto;min-width:0;line-height:1.35}.settings-card .settings-toggle-checkbox{display:none}.settings-card .settings-toggle-checkbox+.settings-toggle-switch{display:inline-block;position:relative;width:44px;height:24px;background:#ccc;border-radius:12px;transition:background .2s;flex-shrink:0}.settings-card .settings-toggle-checkbox+.settings-toggle-switch::after{content:\"\";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform .2s}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch{background:#22c55e}.settings-card .settings-toggle-checkbox:checked+.settings-toggle-switch::after{transform:translateX(20px)}.settings-card .settings-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}@media(max-width: 768px){.settings-card .settings-fields-grid{grid-template-columns:1fr}}.settings-card .settings-alert-error{display:flex;align-items:center;gap:10px;background:#fff5f5;color:#c00;border:1px solid #fed7d7;border-radius:8px;padding:12px 16px;margin-bottom:20px;font-size:13px}.settings-card .settings-alert-error i{font-size:16px;flex-shrink:0}.clients-page .clients-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.clients-page .clients-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.clients-page .clients-header h2 i{color:#6690f4;margin-right:8px}.clients-page .clients-table-wrap .table .client-id{color:#8899a6;font-size:13px;font-weight:600}.clients-page .clients-table-wrap .table .client-name{font-weight:600;color:#2d3748}.clients-page .badge-id{display:inline-block;background:#eef2ff;color:#6690f4;font-size:13px;font-weight:600;padding:4px 10px;border-radius:6px;font-family:monospace}.clients-page .actions-cell{text-align:center;white-space:nowrap}.clients-page .btn-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s;margin:0 2px}.clients-page .btn-icon.btn-icon-edit{background:#eef2ff;color:#6690f4}.clients-page .btn-icon.btn-icon-edit:hover{background:#6690f4;color:#fff}.clients-page .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.clients-page .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.clients-page .btn-icon.btn-icon-sync{background:#f0fdf4;color:#16a34a}.clients-page .btn-icon.btn-icon-sync:hover{background:#16a34a;color:#fff}.clients-page .btn-icon.btn-icon-sync:disabled{opacity:.7;cursor:wait}.clients-page .btn-icon.btn-icon-sync.is-queued{background:#fef3c7;color:#d97706}.clients-page .client-sync-bars{display:flex;flex-direction:column;gap:4px}.clients-page .client-sync-row{display:flex;align-items:center;gap:4px}.clients-page .client-sync-label{font-size:11px;font-weight:600;color:#8899a6;width:18px;flex-shrink:0}.clients-page .client-sync-track{flex:1;height:6px;border-radius:999px;background:#e9eef5;overflow:hidden}.clients-page .client-sync-fill{height:100%;border-radius:999px;background:#cbd5e0;transition:width .4s ease}.clients-page .client-sync-fill.is-active{background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.clients-page .client-sync-fill.is-done{background:#57b951}.clients-page .client-sync-pct{font-size:11px;font-weight:600;color:#8899a6;width:32px;text-align:right;flex-shrink:0}.clients-page .empty-state{text-align:center;padding:50px 20px !important;color:#a0aec0}.clients-page .empty-state i{font-size:40px;margin-bottom:12px;display:block}.clients-page .empty-state p{margin:0;font-size:15px}.btn-secondary{background:#e2e8f0;color:#2d3748;border:none;padding:8px 18px;border-radius:6px;font-size:14px;cursor:pointer;transition:background .2s}.btn-secondary:hover{background:#cbd5e0}.campaigns-page{max-width:100%;overflow-x:hidden;width:100%}.campaigns-page .campaigns-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.campaigns-page .campaigns-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.campaigns-page .campaigns-header h2 i{color:#6690f4;margin-right:8px}.campaigns-page .campaigns-filters{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:20px}.campaigns-page .campaigns-filters .filter-group{flex:1;min-width:0}.campaigns-page .campaigns-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.campaigns-page .campaigns-filters .filter-group label i{margin-right:4px}.campaigns-page .campaigns-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.campaigns-page .campaigns-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .filter-group .filter-with-action{display:flex;align-items:center;gap:8px}.campaigns-page .campaigns-filters .filter-group .filter-with-action .form-control{flex:1}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon{flex-shrink:0;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete{background:#fff5f5;color:#c00}.campaigns-page .campaigns-filters .filter-group .filter-with-action .btn-icon.btn-icon-delete:hover{background:#c00;color:#fff}.campaigns-page .campaigns-filters .filter-group-campaign-multi{flex:2 !important}.campaigns-page .campaigns-filters .campaign-dropdown{flex:1;min-width:0;position:relative}.campaigns-page .campaigns-filters .campaign-dropdown-trigger{width:100%;padding:10px 14px;padding-right:32px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;cursor:pointer;display:flex;align-items:center;transition:border-color .2s;position:relative;min-height:42px;box-sizing:border-box}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-text.is-placeholder{color:#8899a6}.campaigns-page .campaigns-filters .campaign-dropdown-trigger .campaign-dropdown-arrow{position:absolute;right:12px;font-size:10px;color:#8899a6;transition:transform .2s}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-trigger{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-arrow{transform:rotate(180deg)}.campaigns-page .campaigns-filters .campaign-dropdown.is-open .campaign-dropdown-menu{display:block}.campaigns-page .campaigns-filters .campaign-dropdown-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;max-height:280px;overflow-y:auto;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1);padding:4px 0}.campaigns-page .campaigns-filters .campaign-dropdown-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;font-size:14px;color:#2d3748;margin:0;transition:background .15s}.campaigns-page .campaigns-filters .campaign-dropdown-item:hover{background:#f8fafc}.campaigns-page .campaigns-filters .campaign-dropdown-item.is-checked{background:#eef2ff}.campaigns-page .campaigns-filters .campaign-dropdown-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;flex-shrink:0;accent-color:#6690f4}.campaigns-page .campaigns-filters .campaign-dropdown-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaigns-page .campaigns-list-panel{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);margin-bottom:20px;overflow:hidden}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #e2e8f0;gap:12px}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left{display:flex;align-items:center;gap:8px;font-size:13px;color:#4e5e6a}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left input[type=checkbox]{width:16px;height:16px;cursor:pointer}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left label{cursor:pointer;user-select:none;margin:0}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-left .campaigns-selected-count{margin-left:12px;color:#8899a6}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:hover:not(:disabled){background:#c00;color:#fff}.campaigns-page .campaigns-list-panel .campaigns-list-toolbar-right .campaigns-bulk-delete-btn:disabled{opacity:.4;cursor:not-allowed}.campaigns-page .campaigns-list-panel .campaigns-list-items{display:flex;flex-wrap:wrap;gap:0;padding:8px 8px;max-height:220px;overflow-y:auto}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item{display:flex;align-items:center;gap:8px;padding:6px 12px;margin:2px;border-radius:6px;font-size:13px;color:#2d3748;cursor:pointer;user-select:none;transition:background .15s}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item:hover{background:#f0f4ff}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item input[type=checkbox]{width:15px;height:15px;cursor:pointer;flex-shrink:0}.campaigns-page .campaigns-list-panel .campaigns-list-items .campaigns-list-item .campaigns-list-item-name{white-space:nowrap}.campaigns-page .campaigns-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:20px;min-height:350px;overflow:hidden}.campaigns-page .campaigns-chart-wrap #container{max-width:100%}.campaigns-page .campaigns-table-wrap .table{width:100%}.campaigns-page .delete-history-entry{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.campaigns-page .delete-history-entry:hover{background:#c00;color:#fff}.products-page .products-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.products-page .products-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.products-page .products-header h2 i{color:#6690f4;margin-right:8px}.products-page .products-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:20px;margin-bottom:16px}.products-page .products-filters .filter-group{flex:1 1 220px;min-width:0}.products-page .products-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.products-page .products-filters .filter-group label i{margin-right:4px}.products-page .products-filters .filter-group .form-control{width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.products-page .products-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.products-page .products-filters .filter-group select.form-control{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.products-page .products-filters .filter-group.filter-group-client,.products-page .products-filters .filter-group.filter-group-campaign,.products-page .products-filters .filter-group.filter-group-ad-group{flex:1 1 260px}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions{display:flex;gap:8px;align-items:center}.products-page .products-filters .filter-group.filter-group-ad-group .ad-group-filter-actions .form-control{flex:1 1 auto;min-width:0}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group{min-width:38px;height:38px;border-radius:6px;margin:0;background:#dc3545;border:1px solid #dc3545;color:#fff;cursor:pointer}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:hover:not(:disabled){background:#bb2d3b;border-color:#bb2d3b;color:#fff}.products-page .products-filters .filter-group.filter-group-ad-group #delete-products-ad-group:disabled{opacity:.45;cursor:default;background:#dc3545;border-color:#dc3545;color:#fff}.products-page .products-filters .filter-group.filter-group-roas{flex:0 0 200px}.products-page .products-filters .filter-group.filter-group-columns{flex:0 0 240px}.products-page .products-scope-alerts{margin-bottom:12px;border:1px solid #fecaca;background:#fef2f2;border-radius:8px;overflow:hidden}.products-page .products-scope-alerts summary{cursor:pointer;list-style:none;padding:10px 12px;font-size:13px;font-weight:600;color:#991b1b;display:flex;align-items:center;gap:8px}.products-page .products-scope-alerts summary::-webkit-details-marker{display:none}.products-page .products-scope-alerts .products-scope-alerts-list{border-top:1px solid #fecaca;background:#fff;max-height:260px;overflow:auto}.products-page .products-scope-alerts .products-scope-alert-item{padding:10px 12px;border-bottom:1px solid #f1f5f9}.products-page .products-scope-alerts .products-scope-alert-item:last-child{border-bottom:none}.products-page .products-scope-alerts .products-scope-alert-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:11px;color:#64748b}.products-page .products-scope-alerts .products-scope-alert-type{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:#eef2ff;color:#4338ca;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.products-page .products-scope-alerts .products-scope-alert-message{font-size:13px;color:#2d3748;line-height:1.45}.products-page .products-actions{margin-bottom:12px}.products-page .products-actions .btn-danger{padding:7px 14px;font-size:13px;border-radius:6px;border:none;cursor:pointer;transition:all .2s}.products-page .products-actions .btn-danger:disabled{opacity:.4;cursor:default}.products-page .products-table-wrap .table{width:100%}.products-page .products-table-wrap .table input.min_roas,.products-page .products-table-wrap .table input.form-control-sm,.products-page .products-table-wrap .table select.custom_label_4,.products-page .products-table-wrap .table select.form-control-sm{padding:3px 6px;font-size:12px;border:1px solid #e2e8f0;border-radius:4px;background:#fff}.products-page .delete-product{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#fff5f5;color:#c00;transition:all .2s}.products-page .delete-product:hover{background:#c00;color:#fff}.products-page .edit-product-title{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:none;cursor:pointer;font-size:12px;background:#eef2ff;color:#6690f4;transition:all .2s}.products-page .edit-product-title:hover{background:#6690f4;color:#fff}.desc-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.desc-header label{margin:0}.desc-tabs{display:flex;gap:2px;background:#eee;border-radius:6px;padding:2px}.desc-tab{border:none;background:rgba(0,0,0,0);padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer;color:#666;transition:all .15s ease}.desc-tab i{margin-right:4px}.desc-tab.active{background:#fff;color:#333;box-shadow:0 1px 3px rgba(0,0,0,.12);font-weight:500}.desc-tab:hover:not(.active){color:#333}.desc-wrap{flex:1;min-width:0}.desc-preview ul,.desc-preview ol{margin:6px 0;padding-left:20px}.desc-preview li{margin-bottom:3px}.desc-preview b,.desc-preview strong{font-weight:600}.input-with-ai{display:flex;gap:8px;align-items:flex-start}.input-with-ai .form-control{flex:1}.btn-ai-suggest{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:8px;border:1px solid #c084fc;background:linear-gradient(135deg, #F3E8FF, #EDE9FE);color:#7c3aed;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;min-height:38px}.btn-ai-suggest i{font-size:13px}.btn-ai-suggest:hover{background:linear-gradient(135deg, #7C3AED, #6D28D9);color:#fff;border-color:#6d28d9}.btn-ai-suggest:disabled{opacity:.7;cursor:wait}.btn-ai-suggest.btn-ai-claude{border-color:#d97706;background:linear-gradient(135deg, #FEF3C7, #FDE68A);color:#92400e}.btn-ai-suggest.btn-ai-claude:hover{background:linear-gradient(135deg, #D97706, #B45309);color:#fff;border-color:#b45309}.btn-ai-suggest.btn-ai-gemini{border-color:#4285f4;background:linear-gradient(135deg, #E8F0FE, #D2E3FC);color:#1a73e8}.btn-ai-suggest.btn-ai-gemini:hover{background:linear-gradient(135deg, #4285F4, #1A73E8);color:#fff;border-color:#1a73e8}.form_container{background:#fff;padding:25px;max-width:1300px;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.form_container.full{max-width:100%}.form_container .form_group{margin-bottom:12px;display:flex}.form_container .form_group>.label{width:300px;display:inline-flex;align-items:flex-start;justify-content:right;padding-right:12px}.form_container .form_group .input{width:calc(100% - 300px)}.default_popup{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);display:none;z-index:2000}.default_popup .popup_content{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);background:#fff;padding:25px;border-radius:10px;max-width:1140px;width:95%;box-shadow:0 20px 60px rgba(0,0,0,.15)}.default_popup .popup_content .popup_header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.default_popup .popup_content .popup_header .title{font-size:18px;font-weight:600}.default_popup .popup_content .close{cursor:pointer;color:#a0aec0;font-size:18px;padding:4px}.default_popup .popup_content .close:hover{color:#c00}.dt-layout-table{margin-bottom:20px}.pagination button{border:1px solid #e2e8f0;background:#fff;display:inline-flex;height:32px;width:32px;align-items:center;justify-content:center;margin:0 2px;border-radius:4px;transition:all .2s;cursor:pointer}.pagination button:hover{background:#f4f6f9;border-color:#6690f4}table#products a{color:inherit;text-decoration:none}table#products .table-product-title{display:flex;justify-content:space-between}table#products .edit-product-title{display:flex;height:25px;align-items:center;justify-content:center;width:25px;cursor:pointer;background:#fff;border:1px solid #cbd5e0;color:#cbd5e0;border-radius:4px}table#products .edit-product-title:hover{background:#cbd5e0;color:#fff}table#products a.custom_name{color:#57b951 !important}.product-history-page .product-history-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.product-history-page .product-history-meta span{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:600;color:#4e5e6a;background:#eef2ff;border:1px solid #d9e2ff}.product-history-page .product-history-chart-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:20px;margin-bottom:16px}.product-history-page .chart-with-form{display:flex;gap:20px;align-items:flex-start}.product-history-page .chart-area{flex:1 1 auto;min-width:0}.product-history-page .product-history-chart{min-height:360px}.product-history-page .comment-form{width:340px;flex:0 0 340px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px}.product-history-page .comment-form .form-group{margin-bottom:12px}.product-history-page .comment-form label{display:block;font-weight:600;margin-bottom:6px;font-size:13px;color:#52606d}.product-history-page .comment-form input[type=date],.product-history-page .comment-form textarea{width:100%;border:1px solid #e2e8f0;border-radius:6px;padding:8px 12px;font-size:14px;font-family:\"Roboto\",sans-serif;background:#fff}.product-history-page .comment-form input[type=date]:focus,.product-history-page .comment-form textarea:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.product-history-page .comment-form textarea{min-height:110px;resize:vertical}.product-history-page .comment-form .btn{width:100%;justify-content:center;padding:10px 16px}.product-history-page .comment-form .btn[disabled]{opacity:.6;cursor:not-allowed}.product-history-page .products-table-wrap{overflow-x:auto}.product-history-page .products-table-wrap .table{min-width:980px}.product-history-page .products-table-wrap .comment-cell{display:flex;align-items:center;justify-content:space-between;gap:10px}.product-history-page .products-table-wrap .comment-text{word-break:break-word}.product-history-page .products-table-wrap .delete-comment{color:#c00;text-decoration:none;font-weight:600;white-space:nowrap}.product-history-page .products-table-wrap .delete-comment:hover{text-decoration:underline}.product-history-page .products-table-wrap .dt-paging .pagination .page-item{list-style:none}.cron-status-overview{display:flex;flex-wrap:wrap;gap:10px 20px;margin-bottom:20px;color:#4e5e6a;font-size:13px}.cron-progress-list{margin-bottom:20px}.cron-schedule-list{margin-bottom:20px}.cron-schedule-item{border:1px solid #dfe7f0;background:#f4f8fd;border-radius:8px;padding:9px 12px;margin-bottom:8px}.cron-schedule-item:last-child{margin-bottom:0}.cron-schedule-item strong{display:block;color:#2d3748;font-size:13px;font-weight:700;margin-bottom:2px}.cron-schedule-item small{display:block;color:#678;font-size:12px;line-height:1.35}.cron-progress-item{margin-bottom:14px}.cron-progress-item:last-child{margin-bottom:0}.cron-progress-item .cron-progress-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;font-size:13px}.cron-progress-item .cron-progress-head strong{color:#2d3748;font-weight:600}.cron-progress-item .cron-progress-head span{color:#6b7a89;font-size:12px;font-weight:600;white-space:nowrap}.cron-progress-item small{display:block;margin-top:5px;color:#789;font-size:12px}.cron-progress-bar{width:100%;height:10px;border-radius:999px;background:#e9eef5;overflow:hidden}.cron-progress-bar>span{display:block;height:100%;background:linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%)}.cron-url-list{margin-bottom:20px}.cron-url-item{border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;padding:10px 12px;margin-bottom:10px}.cron-url-item:last-child{margin-bottom:0}.cron-url-item .cron-url-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}.cron-url-item .cron-url-top strong{color:#2d3748;font-size:13px;font-weight:600}.cron-url-item .cron-url-top small{color:#7a8794;font-size:11px;white-space:nowrap}.cron-url-item code{display:block;background:#eef2f7;border:1px solid #dde4ed;border-radius:6px;padding:6px 8px;color:#2e3b49;font-size:12px;overflow-x:auto}.cron-url-item .cron-url-plan{display:block;color:#6c7b8a;font-size:11px;margin-bottom:6px}@media(max-width: 1200px){.product-history-page .chart-with-form{flex-direction:column}.product-history-page .comment-form{width:100%;flex:1 1 auto}}.jconfirm-box .form-group .select2-container,.adspro-dialog-box .form-group .select2-container{width:100% !important;margin-top:8px}.jconfirm-box .select2-container--default .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;min-height:42px;display:flex;align-items:center;padding:4px 12px;box-shadow:none;transition:border-color .2s,box-shadow .2s;font-size:14px}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__rendered,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__rendered{padding-left:0;line-height:1.4;color:#495057}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__placeholder,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__placeholder{color:#cbd5e0}.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__arrow,.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__arrow{height:100%;right:8px}.jconfirm-box .select2-container--default.select2-container--focus .select2-selection--single,.jconfirm-box .select2-container--default .select2-selection--single:hover,.adspro-dialog-box .select2-container--default.select2-container--focus .select2-selection--single,.adspro-dialog-box .select2-container--default .select2-selection--single:hover{border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1);outline:0}.jconfirm-box .select2-container .select2-dropdown,.adspro-dialog-box .select2-container .select2-dropdown{border-color:#e2e8f0;border-radius:0 0 6px 6px;font-size:14px}.jconfirm-box .select2-container .select2-search--dropdown .select2-search__field,.adspro-dialog-box .select2-container .select2-search--dropdown .select2-search__field{padding:6px 10px;border-radius:4px;border:1px solid #e2e8f0;font-size:14px}.jconfirm-box .select2-container--default .select2-results__option--highlighted[aria-selected],.adspro-dialog-box .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#6690f4;color:#fff}@media(max-width: 992px){.sidebar{transform:translateX(-100%)}.sidebar.mobile-open{transform:translateX(0)}.main-wrapper{margin-left:0 !important}}.campaign-terms-wrap{display:flex;flex-direction:column;gap:20px;margin-top:20px}.campaign-terms-page{max-width:100%;overflow:hidden}.campaign-terms-page .campaigns-filters{flex-wrap:wrap}.campaign-terms-page .campaigns-filters .filter-group{min-width:220px}.campaign-terms-page .campaigns-filters .filter-group.terms-columns-group{min-width:280px}.campaign-terms-page .terms-card-toggle{margin-left:auto;width:28px;height:28px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#475569;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-card-toggle:hover{background:#f8fafc;border-color:#cbd5e1}.campaign-terms-page .terms-adgroups-card.is-collapsed .campaigns-extra-table-wrap{display:none}.campaign-terms-page .terms-search-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-search-toolbar label{font-size:12px;font-weight:600;color:#475569;display:inline-flex;align-items:center;gap:6px;margin:0;white-space:nowrap}.campaign-terms-page .terms-search-toolbar .terms-search-toolbar-label{min-width:86px}.campaign-terms-page .terms-search-toolbar #terms_min_clicks_all,.campaign-terms-page .terms-search-toolbar #terms_max_clicks_all{width:160px;height:32px}.campaign-terms-page .terms-search-toolbar #terms_min_conversions_all,.campaign-terms-page .terms-search-toolbar #terms_max_conversions_all{width:130px;max-width:130px}.campaign-terms-page .terms-search-selected-label{margin:0;font-size:12px;color:#475569;font-weight:600;white-space:nowrap}.campaign-terms-page .terms-ai-analyze-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-ai-analyze-btn:hover{background:#dbeafe;border-color:#93c5fd}.campaign-terms-page .terms-ai-analyze-btn:disabled{opacity:.6;cursor:wait}.campaign-terms-page .terms-negative-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #eef2f7;background:#fff}.campaign-terms-page .terms-negative-bulk-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:6px;border:1px solid #fecaca;background:#fef2f2;color:#dc2626;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.campaign-terms-page .terms-negative-bulk-btn:hover{background:#fee2e2;border-color:#fca5a5}.campaign-terms-page .terms-negative-bulk-btn:disabled{opacity:.5;cursor:not-allowed}.campaign-terms-page table.campaigns-extra-table>thead>tr>th{position:sticky;top:0;z-index:2;background-color:#111827 !important;color:#e5e7eb !important;border-bottom:1px solid #0b1220 !important;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 12px;white-space:nowrap}.campaign-terms-page #terms_search_table thead th .dt-column-order,.campaign-terms-page #terms_negative_table thead th .dt-column-order{display:none !important}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc{cursor:pointer;padding-right:34px;overflow:hidden}.campaign-terms-page #terms_search_table thead th .dt-column-title,.campaign-terms-page #terms_negative_table thead th .dt-column-title{display:block;overflow:hidden;text-overflow:ellipsis;padding-right:2px}.campaign-terms-page #terms_search_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_search_table thead th.dt-orderable-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-orderable-desc::after{content:\"↕\";position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:999px;font-size:12px;font-weight:700;line-height:16px;text-align:center;color:#e5e7eb;background:#374151}.campaign-terms-page #terms_search_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-asc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=ascending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=ascending]::after{content:\"▲\";color:#fff;background:#2563eb}.campaign-terms-page #terms_search_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_negative_table thead th.dt-ordering-desc::after,.campaign-terms-page #terms_search_table thead th[aria-sort=descending]::after,.campaign-terms-page #terms_negative_table thead th[aria-sort=descending]::after{content:\"▼\";color:#fff;background:#2563eb}.campaign-terms-page #terms_negative_select_all,.campaign-terms-page .terms-negative-select-row,.campaign-terms-page #terms_search_select_all,.campaign-terms-page .terms-search-select-row{width:14px;height:14px;cursor:pointer}.campaign-terms-page .dt-layout-row:first-child{display:none}.campaign-terms-page .dt-layout-row{padding:10px 12px;margin:0 !important;border-top:1px solid #f1f5f9}.campaign-terms-page .dt-info{font-size:12px;color:#64748b}.campaign-terms-page .dt-paging .pagination{margin:0;padding:0;list-style:none !important;display:flex;align-items:center;gap:6px}.campaign-terms-page .dt-paging .pagination .page-item{list-style:none !important}.campaign-terms-page .dt-paging .pagination .page-item .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:36px;width:fit-content;height:32px;padding:0 12px;border-radius:6px;font-size:12px;font-weight:500;border:1px solid #e2e8f0;background:#fff;color:#4e5e6a;text-decoration:none;line-height:1;white-space:nowrap}.campaign-terms-page .dt-paging .pagination .page-item .page-link:hover{background:#eef2ff;color:#6690f4;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.previous .page-link,.campaign-terms-page .dt-paging .pagination .page-item.next .page-link{min-width:72px}.campaign-terms-page .dt-paging .pagination .page-item.active .page-link{background:#6690f4;color:#fff;border-color:#6690f4}.campaign-terms-page .dt-paging .pagination .page-item.disabled .page-link{opacity:.35;cursor:default;pointer-events:none}.terms-columns-box{display:flex;flex-direction:column;gap:6px}.terms-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.terms-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.terms-columns-control summary::-webkit-details-marker{display:none}.terms-columns-control summary::after{content:\"▼\";float:right;font-size:10px;color:#64748b;margin-top:2px}.terms-columns-control[open] summary::after{content:\"▲\"}.terms-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:180px;overflow-y:auto}.terms-columns-list .terms-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.terms-columns-list .terms-col-item:last-child{margin-bottom:0}.terms-columns-list .terms-col-item input[type=checkbox]{margin:0}.campaigns-extra-card{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden}.campaigns-extra-card-title{padding:14px 16px;border-bottom:1px solid #e2e8f0;font-size:13px;font-weight:700;color:#334155;display:flex;align-items:center;gap:8px}.campaigns-extra-card-title .terms-card-title-label{display:inline-flex;align-items:center;gap:8px}.campaigns-extra-table-wrap{overflow:auto}.campaigns-extra-table{margin:0;width:100%;table-layout:fixed}.campaigns-extra-table tbody td{padding:9px 12px;border-bottom:1px solid #f1f5f9;font-size:13px;color:#334155;vertical-align:middle;white-space:nowrap}.campaigns-extra-table td.num-cell{text-align:right;white-space:nowrap}.campaigns-extra-table td.text-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table th.terms-negative-select-cell,.campaigns-extra-table td.terms-negative-select-cell,.campaigns-extra-table th.terms-search-select-cell,.campaigns-extra-table td.terms-search-select-cell{text-align:center}.campaigns-extra-table th.phrase-nowrap,.campaigns-extra-table td.phrase-nowrap{white-space:nowrap !important;overflow:hidden;text-overflow:ellipsis}.campaigns-extra-table .terms-add-negative-btn,.campaigns-extra-table .terms-remove-negative-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;cursor:pointer;transition:all .2s}.campaigns-extra-table .terms-add-negative-btn{border:1px solid #e2e8f0;background:#eef2ff;color:#3b82f6}.campaigns-extra-table .terms-add-negative-btn:hover{background:#3b82f6;color:#fff;border-color:#3b82f6}.campaigns-extra-table .terms-remove-negative-btn{border:1px solid #fecaca;background:#fef2f2;color:#dc2626}.campaigns-extra-table .terms-remove-negative-btn:hover{background:#dc2626;color:#fff;border-color:#dc2626}.campaigns-extra-table tbody tr:hover{background:#f8fafc}.campaigns-extra-table tbody tr.term-is-negative td{color:#dc2626}.campaigns-extra-table tbody tr.term-is-negative:hover{background:#fef2f2}.campaigns-empty-row{text-align:center;color:#94a3b8 !important;font-style:italic}.terms-ai-modal-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px}.terms-ai-modal-toolbar label{font-size:12px;font-weight:600;color:#334155;margin:0}.terms-ai-modal-toolbar .form-control{width:200px;height:32px}.terms-ai-summary{font-size:12px;color:#64748b;margin-bottom:10px}.terms-ai-results-wrap{border:1px solid #e2e8f0;border-radius:8px;max-height:420px;overflow:auto}.terms-ai-results-table{width:100%;border-collapse:collapse;font-size:12px}.terms-ai-results-table th,.terms-ai-results-table td{border-bottom:1px solid #eef2f7;padding:8px;vertical-align:middle}.terms-ai-results-table th{position:sticky;top:0;background:#f8fafc;color:#334155;font-weight:700}.terms-ai-results-table td.term-col{min-width:260px;max-width:380px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.terms-ai-results-table td.reason-col{min-width:320px}.terms-ai-action-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.terms-ai-action-badge.action-exclude{background:#fee2e2;color:#b91c1c}.terms-ai-action-badge.action-keep{background:#dcfce7;color:#166534}.products-page .products-filters .filter-group.filter-group-columns{min-width:240px}.products-columns-control{border:1px solid #e2e8f0;border-radius:6px;background:#fff;overflow:hidden}.products-columns-control summary{cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;color:#334155;list-style:none}.products-columns-control summary::-webkit-details-marker{display:none}.products-columns-control summary::after{content:\"▼\";float:right;font-size:10px;color:#64748b;margin-top:2px}.products-columns-control[open] summary::after{content:\"▲\"}.products-columns-list{border-top:1px solid #eef2f7;padding:8px 10px;max-height:220px;overflow-y:auto}.products-columns-list .products-col-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#334155;margin-bottom:6px}.products-columns-list .products-col-item:last-child{margin-bottom:0}.products-columns-list .products-col-item input[type=checkbox]{margin:0}#products th:last-child,#products td:last-child{white-space:nowrap}#products .products-row-actions{display:inline-flex;align-items:center;gap:4px}#products .products-row-actions .btn{width:38px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:4px !important}#products .products-row-actions .btn i{line-height:1}.logs-page .logs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.logs-page .logs-header h2{margin:0;font-size:20px;font-weight:600;color:#2d3748}.logs-page .logs-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:16px}.logs-page .logs-filters .filter-group{flex:1 1 160px;min-width:0;max-width:220px}.logs-page .logs-filters .filter-group label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#8899a6;margin-bottom:6px}.logs-page .logs-filters .filter-group .form-control{width:100%;padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#2d3748;background:#fff;transition:border-color .2s}.logs-page .logs-filters .filter-group .form-control:focus{outline:none;border-color:#6690f4;box-shadow:0 0 0 3px rgba(102,144,244,.1)}.logs-page .logs-filters .filter-group select.form-control{appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.logs-page .logs-filters .filter-group.filter-group-buttons{flex:0 0 auto;display:flex;gap:6px;max-width:none}.logs-page .logs-table-wrap .table{width:100%}.logs-page .badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px}.logs-page .badge-success{background:#d1fae5;color:#065f46}.logs-page .badge-danger{background:#fee2e2;color:#991b1b}.logs-page .badge-warning{background:#fef3c7;color:#92400e}.js-title-alt-apply{color:#000;justify-content:flex-start}","@use \"sass:color\";\r\n// === adsPRO - Nowe style ===\r\n\r\n// --- Zmienne ---\r\n$cPrimary: #6690F4;\r\n$cPrimaryDark: #3164db;\r\n$cSidebarBg: #1E2A3A;\r\n$cSidebarText: #A8B7C7;\r\n$cSidebarHover: #263548;\r\n$cSidebarActive: $cPrimary;\r\n$cContentBg: #F4F6F9;\r\n$cWhite: #FFFFFF;\r\n$cText: #4E5E6A;\r\n$cTextDark: #2D3748;\r\n$cBorder: #E2E8F0;\r\n$cSuccess: #57B951;\r\n$cSuccessDark: #4a9c3b;\r\n$cDanger: #CC0000;\r\n$cDangerDark: #b30000;\r\n$cWarning: #FF8C00;\r\n$cGreenLight: #57b951;\r\n\r\n$sidebarWidth: 260px;\r\n$sidebarCollapsed: 70px;\r\n$topbarHeight: 56px;\r\n$transitionSpeed: 0.3s;\r\n\r\n// --- Reset i baza ---\r\n* {\r\n box-sizing: border-box;\r\n}\r\n\r\nbody {\r\n font-family: \"Roboto\", sans-serif;\r\n margin: 0;\r\n padding: 0;\r\n font-size: 14px;\r\n color: $cText;\r\n background: $cContentBg;\r\n max-width: 100vw;\r\n overflow-x: hidden;\r\n}\r\n\r\n.hide {\r\n display: none;\r\n}\r\n\r\n// --- Typografia ---\r\nsmall {\r\n font-size: .75em;\r\n}\r\n\r\n.text-right {\r\n text-align: right;\r\n}\r\n\r\n.text-bold {\r\n font-weight: 700 !important;\r\n}\r\n\r\n.nowrap {\r\n white-space: nowrap;\r\n}\r\n\r\n// ===========================\r\n// LOGIN PAGE (unlogged)\r\n// ===========================\r\nbody.unlogged {\r\n background: $cContentBg;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\n.login-container {\r\n display: flex;\r\n min-height: 100vh;\r\n}\r\n\r\n.login-brand {\r\n flex: 0 0 45%;\r\n background: linear-gradient(135deg, $cSidebarBg 0%, #2C3E57 50%, $cPrimary 100%);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 60px;\r\n position: relative;\r\n overflow: hidden;\r\n\r\n &::before {\r\n content: '';\r\n position: absolute;\r\n top: -50%;\r\n right: -50%;\r\n width: 100%;\r\n height: 100%;\r\n background: radial-gradient(circle, rgba($cPrimary, 0.15) 0%, transparent 70%);\r\n border-radius: 50%;\r\n }\r\n\r\n .brand-content {\r\n position: relative;\r\n z-index: 1;\r\n color: $cWhite;\r\n max-width: 400px;\r\n }\r\n\r\n .brand-logo {\r\n font-size: 48px;\r\n font-weight: 300;\r\n margin-bottom: 20px;\r\n letter-spacing: -1px;\r\n\r\n strong {\r\n font-weight: 700;\r\n }\r\n }\r\n\r\n .brand-tagline {\r\n font-size: 18px;\r\n opacity: 0.85;\r\n line-height: 1.6;\r\n margin-bottom: 50px;\r\n }\r\n\r\n .brand-features {\r\n .feature {\r\n display: flex;\r\n align-items: center;\r\n gap: 15px;\r\n margin-bottom: 20px;\r\n opacity: 0.8;\r\n\r\n i {\r\n font-size: 20px;\r\n width: 40px;\r\n height: 40px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba($cWhite, 0.1);\r\n border-radius: 10px;\r\n }\r\n\r\n span {\r\n font-size: 15px;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.login-form-wrapper {\r\n flex: 1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 60px;\r\n background: $cWhite;\r\n}\r\n\r\n.login-box {\r\n width: 100%;\r\n max-width: 420px;\r\n\r\n .login-header {\r\n margin-bottom: 35px;\r\n\r\n h1 {\r\n font-size: 28px;\r\n font-weight: 700;\r\n color: $cTextDark;\r\n margin: 0 0 8px;\r\n }\r\n\r\n p {\r\n color: #718096;\r\n font-size: 15px;\r\n margin: 0;\r\n }\r\n }\r\n\r\n .form-group {\r\n margin-bottom: 20px;\r\n\r\n label {\r\n display: block;\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n margin-bottom: 6px;\r\n }\r\n }\r\n\r\n .input-with-icon {\r\n position: relative;\r\n\r\n i {\r\n position: absolute;\r\n left: 14px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #A0AEC0;\r\n font-size: 14px;\r\n }\r\n\r\n .form-control {\r\n padding-left: 42px;\r\n }\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n height: 46px;\r\n border: 2px solid $cBorder;\r\n border-radius: 8px;\r\n padding: 0 14px;\r\n font-size: 14px;\r\n font-family: \"Roboto\", sans-serif;\r\n color: $cTextDark;\r\n transition: border-color $transitionSpeed, box-shadow $transitionSpeed;\r\n\r\n &::placeholder {\r\n color: #CBD5E0;\r\n }\r\n\r\n &:focus {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.15);\r\n outline: none;\r\n }\r\n }\r\n\r\n .form-error {\r\n color: $cDanger;\r\n font-size: 12px;\r\n margin-top: 4px;\r\n }\r\n\r\n .checkbox-group {\r\n .checkbox-label {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n cursor: pointer;\r\n font-size: 13px;\r\n color: #718096;\r\n font-weight: 400;\r\n\r\n input[type=\"checkbox\"] {\r\n width: 16px;\r\n height: 16px;\r\n accent-color: $cPrimary;\r\n }\r\n }\r\n }\r\n\r\n .btn-login {\r\n width: 100%;\r\n height: 48px;\r\n font-size: 15px;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 8px;\r\n\r\n &.disabled {\r\n opacity: 0.7;\r\n pointer-events: none;\r\n }\r\n }\r\n\r\n .alert {\r\n display: none;\r\n padding: 12px 16px;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n margin-bottom: 20px;\r\n\r\n &.alert-danger {\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n border: 1px solid #FED7D7;\r\n }\r\n\r\n &.alert-success {\r\n background: #F0FFF4;\r\n color: #276749;\r\n border: 1px solid #C6F6D5;\r\n }\r\n }\r\n}\r\n\r\n// Responsywność logowania\r\n@media (max-width: 768px) {\r\n .login-brand {\r\n display: none;\r\n }\r\n\r\n .login-form-wrapper {\r\n padding: 30px 20px;\r\n }\r\n}\r\n\r\n// ===========================\r\n// LAYOUT (logged) - SIDEBAR\r\n// ===========================\r\nbody.logged {\r\n display: flex;\r\n min-height: 100vh;\r\n background: $cContentBg;\r\n}\r\n\r\n// --- Sidebar ---\r\n.sidebar {\r\n width: $sidebarWidth;\r\n min-height: 100vh;\r\n background: $cSidebarBg;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n z-index: 1000;\r\n display: flex;\r\n flex-direction: column;\r\n transition: width $transitionSpeed ease;\r\n overflow: hidden;\r\n\r\n &.collapsed {\r\n width: $sidebarCollapsed;\r\n\r\n .sidebar-header {\r\n padding: 16px 0;\r\n justify-content: center;\r\n\r\n .sidebar-logo {\r\n display: none;\r\n }\r\n\r\n .sidebar-toggle i {\r\n transform: rotate(180deg);\r\n }\r\n }\r\n\r\n .sidebar-nav ul li a {\r\n padding: 12px 0;\r\n justify-content: center;\r\n\r\n span {\r\n display: none;\r\n }\r\n\r\n i {\r\n margin-right: 0;\r\n font-size: 18px;\r\n }\r\n }\r\n\r\n .sidebar-nav ul li.nav-group .nav-group-label {\r\n padding: 12px 0;\r\n justify-content: center;\r\n\r\n span {\r\n display: none;\r\n }\r\n\r\n i {\r\n margin-right: 0;\r\n font-size: 18px;\r\n }\r\n }\r\n\r\n .sidebar-footer {\r\n .sidebar-user {\r\n justify-content: center;\r\n\r\n .user-info {\r\n display: none;\r\n }\r\n }\r\n\r\n .sidebar-logout {\r\n justify-content: center;\r\n\r\n span {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n .nav-divider {\r\n margin: 8px 15px;\r\n }\r\n }\r\n}\r\n\r\n.sidebar-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 20px 20px 16px;\r\n border-bottom: 1px solid rgba($cWhite, 0.08);\r\n\r\n .sidebar-logo a {\r\n color: $cWhite;\r\n text-decoration: none;\r\n font-size: 24px;\r\n font-weight: 300;\r\n letter-spacing: -0.5px;\r\n\r\n strong {\r\n font-weight: 700;\r\n }\r\n }\r\n\r\n .sidebar-toggle {\r\n background: none;\r\n border: none;\r\n color: $cSidebarText;\r\n cursor: pointer;\r\n padding: 6px;\r\n border-radius: 6px;\r\n transition: all $transitionSpeed;\r\n\r\n &:hover {\r\n background: rgba($cWhite, 0.08);\r\n color: $cWhite;\r\n }\r\n\r\n i {\r\n transition: transform $transitionSpeed;\r\n }\r\n }\r\n}\r\n\r\n.sidebar-nav {\r\n flex: 1;\r\n padding: 12px 0;\r\n overflow-y: auto;\r\n\r\n ul {\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n\r\n li {\r\n &.nav-group {\r\n margin-bottom: 4px;\r\n\r\n .nav-group-label {\r\n display: flex;\r\n align-items: center;\r\n padding: 11px 20px;\r\n color: #D5DEEA;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.6px;\r\n border-left: 3px solid transparent;\r\n\r\n i {\r\n width: 20px;\r\n text-align: center;\r\n margin-right: 12px;\r\n font-size: 14px;\r\n color: #B6C4D3;\r\n }\r\n }\r\n\r\n .nav-submenu {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n\r\n li a {\r\n padding-left: 44px;\r\n }\r\n }\r\n\r\n &.active>.nav-group-label {\r\n color: $cWhite;\r\n background: rgba($cPrimary, 0.12);\r\n border-left-color: $cPrimary;\r\n\r\n i {\r\n color: $cPrimary;\r\n }\r\n }\r\n }\r\n\r\n &.nav-divider {\r\n height: 1px;\r\n background: rgba($cWhite, 0.08);\r\n margin: 8px 20px;\r\n }\r\n\r\n a {\r\n display: flex;\r\n align-items: center;\r\n padding: 11px 20px;\r\n color: $cSidebarText;\r\n text-decoration: none;\r\n font-size: 14px;\r\n transition: all 0.2s;\r\n border-left: 3px solid transparent;\r\n\r\n i {\r\n width: 20px;\r\n text-align: center;\r\n margin-right: 12px;\r\n font-size: 15px;\r\n }\r\n\r\n &:hover {\r\n background: $cSidebarHover;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n &.active>a {\r\n background: rgba($cPrimary, 0.15);\r\n color: $cWhite;\r\n border-left-color: $cPrimary;\r\n\r\n i {\r\n color: $cPrimary;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n.badge-alerts-count {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 20px;\r\n height: 20px;\r\n padding: 0 6px;\r\n margin-left: 8px;\r\n border-radius: 50%;\r\n font-size: 11px;\r\n font-weight: 600;\r\n line-height: 1;\r\n background: $cWhite;\r\n color: $cPrimary;\r\n}\r\n\r\n.sidebar-footer {\r\n padding: 16px 20px;\r\n border-top: 1px solid rgba($cWhite, 0.08);\r\n\r\n .sidebar-user {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n margin-bottom: 12px;\r\n\r\n .user-avatar {\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 50%;\r\n background: rgba($cPrimary, 0.2);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: $cPrimary;\r\n font-size: 14px;\r\n flex-shrink: 0;\r\n }\r\n\r\n .user-info {\r\n overflow: hidden;\r\n\r\n .user-email {\r\n color: $cSidebarText;\r\n font-size: 12px;\r\n display: block;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n }\r\n }\r\n\r\n .sidebar-logout {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n color: #E53E3E;\r\n text-decoration: none;\r\n font-size: 13px;\r\n padding: 8px 10px;\r\n border-radius: 6px;\r\n transition: all 0.2s;\r\n\r\n i {\r\n font-size: 14px;\r\n }\r\n\r\n &:hover {\r\n background: rgba(#E53E3E, 0.1);\r\n }\r\n }\r\n}\r\n\r\n// --- Main wrapper ---\r\n.main-wrapper {\r\n margin-left: $sidebarWidth;\r\n flex: 1;\r\n min-height: 100vh;\r\n transition: margin-left $transitionSpeed ease;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n &.expanded {\r\n margin-left: $sidebarCollapsed;\r\n }\r\n}\r\n\r\n// --- Topbar ---\r\n.topbar {\r\n height: $topbarHeight;\r\n background: $cWhite;\r\n border-bottom: 1px solid $cBorder;\r\n display: flex;\r\n align-items: center;\r\n padding: 0 25px;\r\n position: sticky;\r\n top: 0;\r\n z-index: 500;\r\n\r\n .topbar-toggle {\r\n background: none;\r\n border: none;\r\n color: $cText;\r\n cursor: pointer;\r\n padding: 8px 10px;\r\n border-radius: 6px;\r\n font-size: 16px;\r\n margin-right: 15px;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cContentBg;\r\n }\r\n }\r\n\r\n .topbar-breadcrumb {\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n}\r\n\r\n// --- Content area ---\r\n.content {\r\n flex: 1;\r\n padding: 25px;\r\n}\r\n\r\n.app-alert {\r\n background: #EBF8FF;\r\n border: 1px solid #BEE3F8;\r\n color: #2B6CB0;\r\n padding: 12px 16px;\r\n border-radius: 8px;\r\n margin-bottom: 20px;\r\n font-size: 14px;\r\n}\r\n\r\n// ===========================\r\n// KOMPONENTY WSPÓLNE\r\n// ===========================\r\n\r\n// --- Buttons ---\r\n.btn {\r\n padding: 10px 20px;\r\n transition: all 0.2s ease;\r\n color: $cWhite;\r\n border: 0;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n display: inline-flex;\r\n text-decoration: none;\r\n gap: 6px;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 14px;\r\n font-family: \"Roboto\", sans-serif;\r\n font-weight: 500;\r\n\r\n &.btn_small,\r\n &.btn-xs,\r\n &.btn-sm {\r\n padding: 5px 10px;\r\n font-size: 12px;\r\n\r\n i {\r\n font-size: 11px;\r\n }\r\n }\r\n\r\n &.btn-success {\r\n background: $cSuccess;\r\n\r\n &:hover {\r\n background: $cSuccessDark;\r\n }\r\n }\r\n\r\n &.btn-primary {\r\n background: $cPrimary;\r\n\r\n &:hover {\r\n background: $cPrimaryDark;\r\n }\r\n }\r\n\r\n &.btn-danger {\r\n background: $cDanger;\r\n\r\n &:hover {\r\n background: $cDangerDark;\r\n }\r\n }\r\n\r\n &.disabled {\r\n opacity: 0.6;\r\n pointer-events: none;\r\n }\r\n}\r\n\r\n// --- Form controls ---\r\n.form-control {\r\n border: 1px solid $cBorder;\r\n border-radius: 6px;\r\n height: 38px;\r\n width: 100%;\r\n padding: 6px 12px;\r\n font-family: \"Roboto\", sans-serif;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n transition: border-color 0.2s, box-shadow 0.2s;\r\n\r\n option {\r\n padding: 5px;\r\n }\r\n\r\n &:focus {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n outline: none;\r\n }\r\n}\r\n\r\ninput[type=\"checkbox\"] {\r\n border: 1px solid $cBorder;\r\n}\r\n\r\n// --- Tables ---\r\ntable {\r\n border-collapse: collapse;\r\n font-size: 13px;\r\n}\r\n\r\n.table {\r\n width: 100%;\r\n\r\n th,\r\n td {\r\n border: 1px solid $cBorder;\r\n padding: 8px 10px;\r\n }\r\n\r\n th {\r\n background: #F7FAFC;\r\n font-weight: 600;\r\n font-size: 12px;\r\n text-transform: uppercase;\r\n letter-spacing: 0.03em;\r\n color: #718096;\r\n }\r\n\r\n td.center {\r\n text-align: center;\r\n }\r\n\r\n td.left {\r\n text-align: left;\r\n }\r\n\r\n &.table-sm td {\r\n padding: 5px !important;\r\n }\r\n\r\n input.form-control {\r\n font-size: 13px;\r\n height: 32px;\r\n }\r\n}\r\n\r\n// --- Unified app tables (clients/campaigns/products/logs) ---\r\n.clients-table-wrap,\r\n.campaigns-table-wrap,\r\n.products-table-wrap,\r\n.logs-table-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n overflow-x: auto;\r\n max-width: 100%;\r\n -ms-overflow-style: none;\r\n scrollbar-width: none;\r\n\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n\r\n .table {\r\n margin: 0;\r\n width: 100% !important;\r\n\r\n thead th {\r\n background: #F8FAFC;\r\n border-bottom: 2px solid $cBorder;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n padding: 12px 16px;\r\n white-space: nowrap;\r\n }\r\n\r\n tbody td {\r\n padding: 10px 16px;\r\n font-size: 13px;\r\n color: $cTextDark;\r\n vertical-align: middle;\r\n border-bottom: 1px solid #F1F5F9;\r\n }\r\n\r\n tbody tr:hover td {\r\n background: #F8FAFC;\r\n }\r\n }\r\n\r\n .dt-layout-row {\r\n padding: 14px 20px;\r\n margin: 0 !important;\r\n border-top: 1px solid #F1F5F9;\r\n\r\n &:first-child {\r\n display: none;\r\n }\r\n }\r\n\r\n .dt-info {\r\n font-size: 13px;\r\n color: #8899A6;\r\n }\r\n\r\n .dt-paging {\r\n .pagination {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n\r\n .page-item {\r\n .page-link {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 36px;\r\n width: fit-content;\r\n height: 36px;\r\n padding: 0 14px;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n font-weight: 500;\r\n border: 1px solid $cBorder;\r\n background: $cWhite;\r\n color: $cText;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n text-decoration: none;\r\n line-height: 1;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n\r\n &.active .page-link {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n border-color: $cPrimary;\r\n font-weight: 600;\r\n }\r\n\r\n &.disabled .page-link {\r\n opacity: 0.35;\r\n cursor: default;\r\n pointer-events: none;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .dt-processing {\r\n background: rgba($cWhite, 0.9);\r\n color: $cText;\r\n font-size: 14px;\r\n }\r\n}\r\n\r\n// --- Cards ---\r\n.card {\r\n background: $cWhite;\r\n padding: 20px;\r\n border-radius: 8px;\r\n color: $cTextDark;\r\n font-size: 14px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\r\n\r\n &.mb25 {\r\n margin-bottom: 20px;\r\n }\r\n\r\n .card-header {\r\n font-weight: 600;\r\n font-size: 15px;\r\n }\r\n\r\n .card-body {\r\n padding-top: 12px;\r\n\r\n table {\r\n\r\n th,\r\n td {\r\n font-size: 13px;\r\n\r\n &.bold {\r\n font-weight: 600;\r\n }\r\n\r\n &.text-right {\r\n text-align: right;\r\n }\r\n\r\n &.text-center {\r\n text-align: center;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n// --- Action menu ---\r\n.action_menu {\r\n display: flex;\r\n margin-bottom: 20px;\r\n gap: 12px;\r\n\r\n .btn {\r\n padding: 8px 16px;\r\n\r\n &.btn_add {\r\n background: $cSuccess;\r\n\r\n &:hover {\r\n background: $cSuccessDark;\r\n }\r\n }\r\n\r\n &.btn_cancel {\r\n background: $cDanger;\r\n\r\n &:hover {\r\n background: $cDangerDark;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// --- Settings page ---\r\n.settings-tabs {\r\n display: flex;\r\n gap: 8px;\r\n margin-bottom: 18px;\r\n\r\n .settings-tab {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 8px 14px;\r\n border-radius: 8px;\r\n text-decoration: none;\r\n color: #6B7A89;\r\n background: #E9EEF5;\r\n border: 1px solid #D8E0EA;\r\n font-size: 13px;\r\n font-weight: 600;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n color: $cTextDark;\r\n background: #DDE6F2;\r\n }\r\n\r\n &.active {\r\n color: $cWhite;\r\n background: $cPrimary;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n}\r\n\r\n.settings-card {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n padding: 28px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n\r\n .settings-card-header {\r\n display: flex;\r\n align-items: center;\r\n gap: 14px;\r\n margin-bottom: 24px;\r\n padding-bottom: 16px;\r\n border-bottom: 1px solid $cBorder;\r\n\r\n .settings-card-icon {\r\n width: 44px;\r\n height: 44px;\r\n border-radius: 10px;\r\n background: color.adjust($cPrimary, $lightness: 26%);\r\n color: $cPrimary;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 18px;\r\n flex-shrink: 0;\r\n }\r\n\r\n h3 {\r\n margin: 0;\r\n font-size: 17px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n\r\n small {\r\n color: #8899A6;\r\n font-size: 13px;\r\n }\r\n }\r\n\r\n .settings-field {\r\n margin-bottom: 18px;\r\n\r\n label {\r\n display: block;\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n margin-bottom: 6px;\r\n }\r\n }\r\n\r\n .settings-input-wrap {\r\n position: relative;\r\n\r\n .settings-input-icon {\r\n position: absolute;\r\n left: 12px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #A0AEC0;\r\n font-size: 14px;\r\n pointer-events: none;\r\n }\r\n\r\n .form-control {\r\n padding-left: 38px;\r\n }\r\n\r\n .settings-toggle-pw {\r\n position: absolute;\r\n right: 4px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n background: none;\r\n border: none;\r\n color: #A0AEC0;\r\n cursor: pointer;\r\n padding: 6px 10px;\r\n font-size: 14px;\r\n transition: color 0.2s;\r\n\r\n &:hover {\r\n color: $cPrimary;\r\n }\r\n }\r\n }\r\n\r\n .settings-field .settings-toggle-label {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 10px;\r\n cursor: pointer;\r\n font-size: 14px;\r\n font-weight: 500;\r\n user-select: none;\r\n margin-bottom: 0;\r\n width: 100%;\r\n\r\n .settings-toggle-text {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n line-height: 1.35;\r\n }\r\n }\r\n\r\n .settings-toggle-checkbox {\r\n display: none;\r\n\r\n &+.settings-toggle-switch {\r\n display: inline-block;\r\n position: relative;\r\n width: 44px;\r\n height: 24px;\r\n background: #ccc;\r\n border-radius: 12px;\r\n transition: background 0.2s;\r\n flex-shrink: 0;\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n top: 3px;\r\n left: 3px;\r\n width: 18px;\r\n height: 18px;\r\n background: #fff;\r\n border-radius: 50%;\r\n transition: transform 0.2s;\r\n }\r\n }\r\n\r\n &:checked+.settings-toggle-switch {\r\n background: #22C55E;\r\n\r\n &::after {\r\n transform: translateX(20px);\r\n }\r\n }\r\n }\r\n\r\n .settings-fields-grid {\r\n display: grid;\r\n grid-template-columns: 1fr 1fr;\r\n gap: 0 24px;\r\n\r\n @media (max-width: 768px) {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n\r\n .settings-alert-error {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n border: 1px solid #FED7D7;\r\n border-radius: 8px;\r\n padding: 12px 16px;\r\n margin-bottom: 20px;\r\n font-size: 13px;\r\n\r\n i {\r\n font-size: 16px;\r\n flex-shrink: 0;\r\n }\r\n }\r\n}\r\n\r\n// --- Clients page ---\r\n.clients-page {\r\n .clients-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n\r\n i {\r\n color: $cPrimary;\r\n margin-right: 8px;\r\n }\r\n }\r\n }\r\n\r\n .clients-table-wrap {\r\n .table {\r\n .client-id {\r\n color: #8899A6;\r\n font-size: 13px;\r\n font-weight: 600;\r\n }\r\n\r\n .client-name {\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n }\r\n }\r\n\r\n .badge-id {\r\n display: inline-block;\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n font-size: 13px;\r\n font-weight: 600;\r\n padding: 4px 10px;\r\n border-radius: 6px;\r\n font-family: monospace;\r\n }\r\n\r\n .actions-cell {\r\n text-align: center;\r\n white-space: nowrap;\r\n }\r\n\r\n .btn-icon {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 34px;\r\n height: 34px;\r\n border-radius: 8px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 14px;\r\n transition: all 0.2s;\r\n margin: 0 2px;\r\n\r\n &.btn-icon-edit {\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n\r\n &:hover {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n &.btn-icon-delete {\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n &.btn-icon-sync {\r\n background: #F0FDF4;\r\n color: #16a34a;\r\n\r\n &:hover {\r\n background: #16a34a;\r\n color: $cWhite;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.7;\r\n cursor: wait;\r\n }\r\n\r\n &.is-queued {\r\n background: #FEF3C7;\r\n color: #D97706;\r\n }\r\n }\r\n }\r\n\r\n .client-sync-bars {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 4px;\r\n }\r\n\r\n .client-sync-row {\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n }\r\n\r\n .client-sync-label {\r\n font-size: 11px;\r\n font-weight: 600;\r\n color: #8899A6;\r\n width: 18px;\r\n flex-shrink: 0;\r\n }\r\n\r\n .client-sync-track {\r\n flex: 1;\r\n height: 6px;\r\n border-radius: 999px;\r\n background: #E9EEF5;\r\n overflow: hidden;\r\n }\r\n\r\n .client-sync-fill {\r\n height: 100%;\r\n border-radius: 999px;\r\n background: #CBD5E0;\r\n transition: width 0.4s ease;\r\n\r\n &.is-active {\r\n background: linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%);\r\n }\r\n\r\n &.is-done {\r\n background: $cSuccess;\r\n }\r\n }\r\n\r\n .client-sync-pct {\r\n font-size: 11px;\r\n font-weight: 600;\r\n color: #8899A6;\r\n width: 32px;\r\n text-align: right;\r\n flex-shrink: 0;\r\n }\r\n\r\n .empty-state {\r\n text-align: center;\r\n padding: 50px 20px !important;\r\n color: #A0AEC0;\r\n\r\n i {\r\n font-size: 40px;\r\n margin-bottom: 12px;\r\n display: block;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n font-size: 15px;\r\n }\r\n }\r\n}\r\n\r\n.btn-secondary {\r\n background: #E2E8F0;\r\n color: $cTextDark;\r\n border: none;\r\n padding: 8px 18px;\r\n border-radius: 6px;\r\n font-size: 14px;\r\n cursor: pointer;\r\n transition: background 0.2s;\r\n\r\n &:hover {\r\n background: #CBD5E0;\r\n }\r\n}\r\n\r\n// ===========================\r\n// CAMPAIGNS PAGE\r\n// ===========================\r\n.campaigns-page {\r\n max-width: 100%;\r\n overflow-x: hidden;\r\n width: 100%;\r\n\r\n .campaigns-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n\r\n i {\r\n color: $cPrimary;\r\n margin-right: 8px;\r\n }\r\n }\r\n }\r\n\r\n .campaigns-filters {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 20px;\r\n margin-bottom: 20px;\r\n\r\n .filter-group {\r\n flex: 1;\r\n min-width: 0;\r\n\r\n label {\r\n display: block;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n margin-bottom: 6px;\r\n\r\n i {\r\n margin-right: 4px;\r\n }\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n padding: 10px 14px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n transition: border-color 0.2s;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n padding-right: 32px;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n .filter-with-action {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n .form-control {\r\n flex: 1;\r\n }\r\n\r\n .btn-icon {\r\n flex-shrink: 0;\r\n width: 42px;\r\n height: 42px;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 8px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 14px;\r\n transition: all 0.2s;\r\n\r\n &.btn-icon-delete {\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n .filter-group-campaign-multi {\r\n flex: 2 !important;\r\n }\r\n\r\n .campaign-dropdown {\r\n flex: 1;\r\n min-width: 0;\r\n position: relative;\r\n }\r\n\r\n .campaign-dropdown-trigger {\r\n width: 100%;\r\n padding: 10px 14px;\r\n padding-right: 32px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n transition: border-color 0.2s;\r\n position: relative;\r\n min-height: 42px;\r\n box-sizing: border-box;\r\n\r\n .campaign-dropdown-text {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n &.is-placeholder {\r\n color: #8899A6;\r\n }\r\n }\r\n\r\n .campaign-dropdown-arrow {\r\n position: absolute;\r\n right: 12px;\r\n font-size: 10px;\r\n color: #8899A6;\r\n transition: transform 0.2s;\r\n }\r\n }\r\n\r\n .campaign-dropdown.is-open {\r\n .campaign-dropdown-trigger {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n\r\n .campaign-dropdown-arrow {\r\n transform: rotate(180deg);\r\n }\r\n\r\n .campaign-dropdown-menu {\r\n display: block;\r\n }\r\n }\r\n\r\n .campaign-dropdown-menu {\r\n display: none;\r\n position: absolute;\r\n top: calc(100% + 4px);\r\n left: 0;\r\n right: 0;\r\n z-index: 100;\r\n max-height: 280px;\r\n overflow-y: auto;\r\n background: $cWhite;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\r\n padding: 4px 0;\r\n }\r\n\r\n .campaign-dropdown-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n padding: 8px 12px;\r\n cursor: pointer;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n margin: 0;\r\n transition: background 0.15s;\r\n\r\n &:hover {\r\n background: #F8FAFC;\r\n }\r\n\r\n &.is-checked {\r\n background: #EEF2FF;\r\n }\r\n\r\n input[type=\"checkbox\"] {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n flex-shrink: 0;\r\n accent-color: $cPrimary;\r\n }\r\n\r\n span {\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n\r\n .campaigns-list-panel {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n margin-bottom: 20px;\r\n overflow: hidden;\r\n\r\n .campaigns-list-toolbar {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 12px 16px;\r\n border-bottom: 1px solid $cBorder;\r\n gap: 12px;\r\n\r\n &-left {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-size: 13px;\r\n color: $cText;\r\n\r\n input[type=\"checkbox\"] {\r\n width: 16px;\r\n height: 16px;\r\n cursor: pointer;\r\n }\r\n\r\n label {\r\n cursor: pointer;\r\n user-select: none;\r\n margin: 0;\r\n }\r\n\r\n .campaigns-selected-count {\r\n margin-left: 12px;\r\n color: #8899A6;\r\n }\r\n }\r\n\r\n &-right {\r\n .campaigns-bulk-delete-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 8px 16px;\r\n border: none;\r\n border-radius: 8px;\r\n font-size: 13px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n transition: all 0.2s;\r\n\r\n &:hover:not(:disabled) {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.4;\r\n cursor: not-allowed;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .campaigns-list-items {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 0;\r\n padding: 8px 8px;\r\n max-height: 220px;\r\n overflow-y: auto;\r\n\r\n .campaigns-list-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n padding: 6px 12px;\r\n margin: 2px;\r\n border-radius: 6px;\r\n font-size: 13px;\r\n color: $cTextDark;\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background 0.15s;\r\n\r\n &:hover {\r\n background: #F0F4FF;\r\n }\r\n\r\n input[type=\"checkbox\"] {\r\n width: 15px;\r\n height: 15px;\r\n cursor: pointer;\r\n flex-shrink: 0;\r\n }\r\n\r\n .campaigns-list-item-name {\r\n white-space: nowrap;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .campaigns-chart-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n padding: 20px;\r\n margin-bottom: 20px;\r\n min-height: 350px;\r\n overflow: hidden;\r\n\r\n #container {\r\n max-width: 100%;\r\n }\r\n }\r\n\r\n .campaigns-table-wrap {\r\n .table {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .delete-history-entry {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 12px;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n}\r\n\r\n// ===========================\r\n// PRODUCTS PAGE\r\n// ===========================\r\n.products-page {\r\n .products-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n\r\n i {\r\n color: $cPrimary;\r\n margin-right: 8px;\r\n }\r\n }\r\n }\r\n\r\n .products-filters {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: flex-end;\r\n gap: 20px;\r\n margin-bottom: 16px;\r\n\r\n .filter-group {\r\n flex: 1 1 220px;\r\n min-width: 0;\r\n\r\n label {\r\n display: block;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n margin-bottom: 6px;\r\n\r\n i {\r\n margin-right: 4px;\r\n }\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n padding: 10px 14px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n transition: border-color 0.2s;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n select.form-control {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n padding-right: 32px;\r\n }\r\n\r\n &.filter-group-client,\r\n &.filter-group-campaign,\r\n &.filter-group-ad-group {\r\n flex: 1 1 260px;\r\n }\r\n\r\n &.filter-group-ad-group {\r\n .ad-group-filter-actions {\r\n display: flex;\r\n gap: 8px;\r\n align-items: center;\r\n\r\n .form-control {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n }\r\n\r\n #delete-products-ad-group {\r\n min-width: 38px;\r\n height: 38px;\r\n border-radius: 6px;\r\n margin: 0;\r\n background: #dc3545;\r\n border: 1px solid #dc3545;\r\n color: #fff;\r\n cursor: pointer;\r\n\r\n &:hover:not(:disabled) {\r\n background: #bb2d3b;\r\n border-color: #bb2d3b;\r\n color: #fff;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.45;\r\n cursor: default;\r\n background: #dc3545;\r\n border-color: #dc3545;\r\n color: #fff;\r\n }\r\n }\r\n }\r\n\r\n &.filter-group-roas {\r\n flex: 0 0 200px;\r\n }\r\n\r\n &.filter-group-columns {\r\n flex: 0 0 240px;\r\n }\r\n }\r\n }\r\n\r\n .products-scope-alerts {\r\n margin-bottom: 12px;\r\n border: 1px solid #FECACA;\r\n background: #FEF2F2;\r\n border-radius: 8px;\r\n overflow: hidden;\r\n\r\n summary {\r\n cursor: pointer;\r\n list-style: none;\r\n padding: 10px 12px;\r\n font-size: 13px;\r\n font-weight: 600;\r\n color: #991B1B;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n &::-webkit-details-marker {\r\n display: none;\r\n }\r\n }\r\n\r\n .products-scope-alerts-list {\r\n border-top: 1px solid #FECACA;\r\n background: #FFF;\r\n max-height: 260px;\r\n overflow: auto;\r\n }\r\n\r\n .products-scope-alert-item {\r\n padding: 10px 12px;\r\n border-bottom: 1px solid #F1F5F9;\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n }\r\n\r\n .products-scope-alert-meta {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n margin-bottom: 4px;\r\n font-size: 11px;\r\n color: #64748B;\r\n }\r\n\r\n .products-scope-alert-type {\r\n display: inline-flex;\r\n align-items: center;\r\n padding: 2px 6px;\r\n border-radius: 999px;\r\n background: #EEF2FF;\r\n color: #4338CA;\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.3px;\r\n }\r\n\r\n .products-scope-alert-message {\r\n font-size: 13px;\r\n color: $cTextDark;\r\n line-height: 1.45;\r\n }\r\n }\r\n\r\n .products-actions {\r\n margin-bottom: 12px;\r\n\r\n .btn-danger {\r\n padding: 7px 14px;\r\n font-size: 13px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:disabled {\r\n opacity: 0.4;\r\n cursor: default;\r\n }\r\n }\r\n }\r\n\r\n .products-table-wrap {\r\n .table {\r\n width: 100%;\r\n\r\n // Kompaktowe inputy w tabeli\r\n input.min_roas,\r\n input.form-control-sm,\r\n select.custom_label_4,\r\n select.form-control-sm {\r\n padding: 3px 6px;\r\n font-size: 12px;\r\n border: 1px solid $cBorder;\r\n border-radius: 4px;\r\n background: $cWhite;\r\n }\r\n }\r\n }\r\n\r\n // Przycisk usuwania w wierszu\r\n .delete-product {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 12px;\r\n background: #FFF5F5;\r\n color: $cDanger;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cDanger;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n // Przycisk edycji w wierszu\r\n .edit-product-title {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 6px;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 12px;\r\n background: #EEF2FF;\r\n color: $cPrimary;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: $cPrimary;\r\n color: $cWhite;\r\n }\r\n }\r\n}\r\n\r\n// --- Popup edycji produktu: AI suggest ---\r\n.desc-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 4px;\r\n\r\n label {\r\n margin: 0;\r\n }\r\n}\r\n\r\n.desc-tabs {\r\n display: flex;\r\n gap: 2px;\r\n background: #eee;\r\n border-radius: 6px;\r\n padding: 2px;\r\n}\r\n\r\n.desc-tab {\r\n border: none;\r\n background: transparent;\r\n padding: 4px 12px;\r\n font-size: 12px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n color: #666;\r\n transition: all .15s ease;\r\n\r\n i {\r\n margin-right: 4px;\r\n }\r\n\r\n &.active {\r\n background: #fff;\r\n color: #333;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, .12);\r\n font-weight: 500;\r\n }\r\n\r\n &:hover:not(.active) {\r\n color: #333;\r\n }\r\n}\r\n\r\n.desc-wrap {\r\n flex: 1;\r\n min-width: 0;\r\n}\r\n\r\n.desc-preview {\r\n\r\n ul,\r\n ol {\r\n margin: 6px 0;\r\n padding-left: 20px;\r\n }\r\n\r\n li {\r\n margin-bottom: 3px;\r\n }\r\n\r\n b,\r\n strong {\r\n font-weight: 600;\r\n }\r\n}\r\n\r\n.input-with-ai {\r\n display: flex;\r\n gap: 8px;\r\n align-items: flex-start;\r\n\r\n .form-control {\r\n flex: 1;\r\n }\r\n}\r\n\r\n.btn-ai-suggest {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n padding: 6px 12px;\r\n border-radius: 8px;\r\n border: 1px solid #C084FC;\r\n background: linear-gradient(135deg, #F3E8FF, #EDE9FE);\r\n color: #7C3AED;\r\n font-size: 12px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n white-space: nowrap;\r\n min-height: 38px;\r\n\r\n i {\r\n font-size: 13px;\r\n }\r\n\r\n &:hover {\r\n background: linear-gradient(135deg, #7C3AED, #6D28D9);\r\n color: #FFF;\r\n border-color: #6D28D9;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.7;\r\n cursor: wait;\r\n }\r\n\r\n &.btn-ai-claude {\r\n border-color: #D97706;\r\n background: linear-gradient(135deg, #FEF3C7, #FDE68A);\r\n color: #92400E;\r\n\r\n &:hover {\r\n background: linear-gradient(135deg, #D97706, #B45309);\r\n color: #FFF;\r\n border-color: #B45309;\r\n }\r\n }\r\n\r\n &.btn-ai-gemini {\r\n border-color: #4285F4;\r\n background: linear-gradient(135deg, #E8F0FE, #D2E3FC);\r\n color: #1A73E8;\r\n\r\n &:hover {\r\n background: linear-gradient(135deg, #4285F4, #1A73E8);\r\n color: #FFF;\r\n border-color: #1A73E8;\r\n }\r\n }\r\n}\r\n\r\n// --- Form container ---\r\n.form_container {\r\n background: $cWhite;\r\n padding: 25px;\r\n max-width: 1300px;\r\n border-radius: 8px;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);\r\n\r\n &.full {\r\n max-width: 100%;\r\n }\r\n\r\n .form_group {\r\n margin-bottom: 12px;\r\n display: flex;\r\n\r\n >.label {\r\n width: 300px;\r\n display: inline-flex;\r\n align-items: flex-start;\r\n justify-content: right;\r\n padding-right: 12px;\r\n }\r\n\r\n .input {\r\n width: calc(100% - 300px);\r\n }\r\n }\r\n}\r\n\r\n// --- Default popup ---\r\n.default_popup {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.45);\r\n display: none;\r\n z-index: 2000;\r\n\r\n .popup_content {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n background: $cWhite;\r\n padding: 25px;\r\n border-radius: 10px;\r\n max-width: 1140px;\r\n width: 95%;\r\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);\r\n\r\n .popup_header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 15px;\r\n\r\n .title {\r\n font-size: 18px;\r\n font-weight: 600;\r\n }\r\n }\r\n\r\n .close {\r\n cursor: pointer;\r\n color: #A0AEC0;\r\n font-size: 18px;\r\n padding: 4px;\r\n\r\n &:hover {\r\n color: $cDanger;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// --- DataTables override ---\r\n.dt-layout-table {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.pagination {\r\n button {\r\n border: 1px solid $cBorder;\r\n background: $cWhite;\r\n display: inline-flex;\r\n height: 32px;\r\n width: 32px;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 0 2px;\r\n border-radius: 4px;\r\n transition: all 0.2s;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: $cContentBg;\r\n border-color: $cPrimary;\r\n }\r\n }\r\n}\r\n\r\n// ===========================\r\n// PRODUCTS specific\r\n// ===========================\r\ntable#products {\r\n a {\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n\r\n .table-product-title {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n\r\n .edit-product-title {\r\n display: flex;\r\n height: 25px;\r\n align-items: center;\r\n justify-content: center;\r\n width: 25px;\r\n cursor: pointer;\r\n background: $cWhite;\r\n border: 1px solid #CBD5E0;\r\n color: #CBD5E0;\r\n border-radius: 4px;\r\n\r\n &:hover {\r\n background: #CBD5E0;\r\n color: $cWhite;\r\n }\r\n }\r\n\r\n a.custom_name {\r\n color: $cGreenLight !important;\r\n }\r\n}\r\n\r\n// --- Product history ---\r\n.product-history-page {\r\n .product-history-meta {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 8px;\r\n margin-bottom: 14px;\r\n\r\n span {\r\n display: inline-flex;\r\n align-items: center;\r\n padding: 5px 10px;\r\n border-radius: 999px;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: $cText;\r\n background: #EEF2FF;\r\n border: 1px solid #D9E2FF;\r\n }\r\n }\r\n\r\n .product-history-chart-wrap {\r\n background: $cWhite;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n padding: 20px;\r\n margin-bottom: 16px;\r\n }\r\n\r\n .chart-with-form {\r\n display: flex;\r\n gap: 20px;\r\n align-items: flex-start;\r\n }\r\n\r\n .chart-area {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n }\r\n\r\n .product-history-chart {\r\n min-height: 360px;\r\n }\r\n\r\n .comment-form {\r\n width: 340px;\r\n flex: 0 0 340px;\r\n background: #F8FAFC;\r\n border: 1px solid $cBorder;\r\n border-radius: 10px;\r\n padding: 14px;\r\n\r\n .form-group {\r\n margin-bottom: 12px;\r\n }\r\n\r\n label {\r\n display: block;\r\n font-weight: 600;\r\n margin-bottom: 6px;\r\n font-size: 13px;\r\n color: #52606D;\r\n }\r\n\r\n input[type=\"date\"],\r\n textarea {\r\n width: 100%;\r\n border: 1px solid $cBorder;\r\n border-radius: 6px;\r\n padding: 8px 12px;\r\n font-size: 14px;\r\n font-family: \"Roboto\", sans-serif;\r\n background: $cWhite;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n textarea {\r\n min-height: 110px;\r\n resize: vertical;\r\n }\r\n\r\n .btn {\r\n width: 100%;\r\n justify-content: center;\r\n padding: 10px 16px;\r\n }\r\n\r\n .btn[disabled] {\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n }\r\n }\r\n\r\n .products-table-wrap {\r\n overflow-x: auto;\r\n\r\n .table {\r\n min-width: 980px;\r\n }\r\n\r\n .comment-cell {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 10px;\r\n }\r\n\r\n .comment-text {\r\n word-break: break-word;\r\n }\r\n\r\n .delete-comment {\r\n color: $cDanger;\r\n text-decoration: none;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n .dt-paging .pagination .page-item {\r\n list-style: none;\r\n }\r\n }\r\n}\r\n\r\n.cron-status-overview {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 10px 20px;\r\n margin-bottom: 20px;\r\n color: $cText;\r\n font-size: 13px;\r\n}\r\n\r\n.cron-progress-list {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.cron-schedule-list {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.cron-schedule-item {\r\n border: 1px solid #DFE7F0;\r\n background: #F4F8FD;\r\n border-radius: 8px;\r\n padding: 9px 12px;\r\n margin-bottom: 8px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n strong {\r\n display: block;\r\n color: $cTextDark;\r\n font-size: 13px;\r\n font-weight: 700;\r\n margin-bottom: 2px;\r\n }\r\n\r\n small {\r\n display: block;\r\n color: #667788;\r\n font-size: 12px;\r\n line-height: 1.35;\r\n }\r\n}\r\n\r\n.cron-progress-item {\r\n margin-bottom: 14px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .cron-progress-head {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n gap: 12px;\r\n margin-bottom: 6px;\r\n font-size: 13px;\r\n\r\n strong {\r\n color: $cTextDark;\r\n font-weight: 600;\r\n }\r\n\r\n span {\r\n color: #6B7A89;\r\n font-size: 12px;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n }\r\n }\r\n\r\n small {\r\n display: block;\r\n margin-top: 5px;\r\n color: #778899;\r\n font-size: 12px;\r\n }\r\n}\r\n\r\n.cron-progress-bar {\r\n width: 100%;\r\n height: 10px;\r\n border-radius: 999px;\r\n background: #E9EEF5;\r\n overflow: hidden;\r\n\r\n >span {\r\n display: block;\r\n height: 100%;\r\n background: linear-gradient(90deg, #5A9BFF 0%, #2E6BDF 100%);\r\n }\r\n}\r\n\r\n.cron-url-list {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.cron-url-item {\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n background: #F8FAFC;\r\n padding: 10px 12px;\r\n margin-bottom: 10px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .cron-url-top {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n gap: 8px;\r\n margin-bottom: 6px;\r\n\r\n strong {\r\n color: $cTextDark;\r\n font-size: 13px;\r\n font-weight: 600;\r\n }\r\n\r\n small {\r\n color: #7A8794;\r\n font-size: 11px;\r\n white-space: nowrap;\r\n }\r\n }\r\n\r\n code {\r\n display: block;\r\n background: #EEF2F7;\r\n border: 1px solid #DDE4ED;\r\n border-radius: 6px;\r\n padding: 6px 8px;\r\n color: #2E3B49;\r\n font-size: 12px;\r\n overflow-x: auto;\r\n }\r\n\r\n .cron-url-plan {\r\n display: block;\r\n color: #6C7B8A;\r\n font-size: 11px;\r\n margin-bottom: 6px;\r\n }\r\n}\r\n\r\n@media (max-width: 1200px) {\r\n .product-history-page {\r\n .chart-with-form {\r\n flex-direction: column;\r\n }\r\n\r\n .comment-form {\r\n width: 100%;\r\n flex: 1 1 auto;\r\n }\r\n }\r\n}\r\n\r\n// --- Select2 w modalu ---\r\n.jconfirm-box .form-group .select2-container,\r\n.adspro-dialog-box .form-group .select2-container {\r\n width: 100% !important;\r\n margin-top: 8px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single {\r\n background-color: $cWhite;\r\n border: 1px solid $cBorder;\r\n border-radius: 6px;\r\n min-height: 42px;\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 12px;\r\n box-shadow: none;\r\n transition: border-color 0.2s, box-shadow 0.2s;\r\n font-size: 14px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__rendered,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__rendered {\r\n padding-left: 0;\r\n line-height: 1.4;\r\n color: #495057;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__placeholder,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__placeholder {\r\n color: #CBD5E0;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-selection--single .select2-selection__arrow,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single .select2-selection__arrow {\r\n height: 100%;\r\n right: 8px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default.select2-container--focus .select2-selection--single,\r\n.jconfirm-box .select2-container--default .select2-selection--single:hover,\r\n.adspro-dialog-box .select2-container--default.select2-container--focus .select2-selection--single,\r\n.adspro-dialog-box .select2-container--default .select2-selection--single:hover {\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n outline: 0;\r\n}\r\n\r\n.jconfirm-box .select2-container .select2-dropdown,\r\n.adspro-dialog-box .select2-container .select2-dropdown {\r\n border-color: $cBorder;\r\n border-radius: 0 0 6px 6px;\r\n font-size: 14px;\r\n}\r\n\r\n.jconfirm-box .select2-container .select2-search--dropdown .select2-search__field,\r\n.adspro-dialog-box .select2-container .select2-search--dropdown .select2-search__field {\r\n padding: 6px 10px;\r\n border-radius: 4px;\r\n border: 1px solid $cBorder;\r\n font-size: 14px;\r\n}\r\n\r\n.jconfirm-box .select2-container--default .select2-results__option--highlighted[aria-selected],\r\n.adspro-dialog-box .select2-container--default .select2-results__option--highlighted[aria-selected] {\r\n background-color: $cPrimary;\r\n color: $cWhite;\r\n}\r\n\r\n// ===========================\r\n// RESPONSYWNOŚĆ\r\n// ===========================\r\n@media (max-width: 992px) {\r\n .sidebar {\r\n transform: translateX(-100%);\r\n\r\n &.mobile-open {\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n .main-wrapper {\r\n margin-left: 0 !important;\r\n }\r\n}\r\n\r\n// ===========================\r\n// CAMPAIGN TERMS VIEW\r\n// ===========================\r\n.campaign-terms-wrap {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 20px;\r\n margin-top: 20px;\r\n}\r\n\r\n.campaign-terms-page {\r\n max-width: 100%;\r\n overflow: hidden;\r\n\r\n .campaigns-filters {\r\n flex-wrap: wrap;\r\n\r\n .filter-group {\r\n min-width: 220px;\r\n\r\n &.terms-columns-group {\r\n min-width: 280px;\r\n }\r\n }\r\n }\r\n\r\n .terms-card-toggle {\r\n margin-left: auto;\r\n width: 28px;\r\n height: 28px;\r\n border: 1px solid #E2E8F0;\r\n border-radius: 6px;\r\n background: #FFFFFF;\r\n color: #475569;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: #F8FAFC;\r\n border-color: #CBD5E1;\r\n }\r\n }\r\n\r\n .terms-adgroups-card.is-collapsed .campaigns-extra-table-wrap {\r\n display: none;\r\n }\r\n\r\n .terms-search-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n padding: 10px 12px;\r\n border-bottom: 1px solid #EEF2F7;\r\n background: #FFFFFF;\r\n\r\n label {\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #475569;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n margin: 0;\r\n white-space: nowrap;\r\n }\r\n\r\n .terms-search-toolbar-label {\r\n min-width: 86px;\r\n }\r\n\r\n #terms_min_clicks_all,\r\n #terms_max_clicks_all {\r\n width: 160px;\r\n height: 32px;\r\n }\r\n\r\n #terms_min_conversions_all,\r\n #terms_max_conversions_all {\r\n width: 130px;\r\n max-width: 130px;\r\n }\r\n }\r\n\r\n .terms-search-selected-label {\r\n margin: 0;\r\n font-size: 12px;\r\n color: #475569;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n }\r\n\r\n .terms-ai-analyze-btn {\r\n margin-left: auto;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n height: 32px;\r\n padding: 0 12px;\r\n border-radius: 6px;\r\n border: 1px solid #BFDBFE;\r\n background: #EFF6FF;\r\n color: #1D4ED8;\r\n font-size: 12px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: #DBEAFE;\r\n border-color: #93C5FD;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.6;\r\n cursor: wait;\r\n }\r\n }\r\n\r\n .terms-negative-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n padding: 10px 12px;\r\n border-bottom: 1px solid #EEF2F7;\r\n background: #FFFFFF;\r\n }\r\n\r\n .terms-negative-bulk-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n height: 32px;\r\n padding: 0 12px;\r\n border-radius: 6px;\r\n border: 1px solid #FECACA;\r\n background: #FEF2F2;\r\n color: #DC2626;\r\n font-size: 12px;\r\n font-weight: 600;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n\r\n &:hover {\r\n background: #FEE2E2;\r\n border-color: #FCA5A5;\r\n }\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n }\r\n\r\n table.campaigns-extra-table>thead>tr>th {\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n background-color: #111827 !important;\r\n color: #E5E7EB !important;\r\n border-bottom: 1px solid #0B1220 !important;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: .4px;\r\n padding: 10px 12px;\r\n white-space: nowrap;\r\n }\r\n\r\n #terms_search_table thead th .dt-column-order,\r\n #terms_negative_table thead th .dt-column-order {\r\n display: none !important;\r\n }\r\n\r\n #terms_search_table thead th.dt-orderable-asc,\r\n #terms_search_table thead th.dt-orderable-desc,\r\n #terms_negative_table thead th.dt-orderable-asc,\r\n #terms_negative_table thead th.dt-orderable-desc {\r\n cursor: pointer;\r\n padding-right: 34px;\r\n overflow: hidden;\r\n }\r\n\r\n #terms_search_table thead th .dt-column-title,\r\n #terms_negative_table thead th .dt-column-title {\r\n display: block;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-right: 2px;\r\n }\r\n\r\n #terms_search_table thead th.dt-orderable-asc::after,\r\n #terms_search_table thead th.dt-orderable-desc::after,\r\n #terms_negative_table thead th.dt-orderable-asc::after,\r\n #terms_negative_table thead th.dt-orderable-desc::after {\r\n content: '\\2195';\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 16px;\r\n height: 16px;\r\n border-radius: 999px;\r\n font-size: 12px;\r\n font-weight: 700;\r\n line-height: 16px;\r\n text-align: center;\r\n color: #E5E7EB;\r\n background: #374151;\r\n }\r\n\r\n #terms_search_table thead th.dt-ordering-asc::after,\r\n #terms_negative_table thead th.dt-ordering-asc::after,\r\n #terms_search_table thead th[aria-sort=\"ascending\"]::after,\r\n #terms_negative_table thead th[aria-sort=\"ascending\"]::after {\r\n content: '\\25B2';\r\n color: #FFFFFF;\r\n background: #2563EB;\r\n }\r\n\r\n #terms_search_table thead th.dt-ordering-desc::after,\r\n #terms_negative_table thead th.dt-ordering-desc::after,\r\n #terms_search_table thead th[aria-sort=\"descending\"]::after,\r\n #terms_negative_table thead th[aria-sort=\"descending\"]::after {\r\n content: '\\25BC';\r\n color: #FFFFFF;\r\n background: #2563EB;\r\n }\r\n\r\n #terms_negative_select_all,\r\n .terms-negative-select-row,\r\n #terms_search_select_all,\r\n .terms-search-select-row {\r\n width: 14px;\r\n height: 14px;\r\n cursor: pointer;\r\n }\r\n\r\n .dt-layout-row:first-child {\r\n display: none;\r\n }\r\n\r\n .dt-layout-row {\r\n padding: 10px 12px;\r\n margin: 0 !important;\r\n border-top: 1px solid #F1F5F9;\r\n }\r\n\r\n .dt-info {\r\n font-size: 12px;\r\n color: #64748B;\r\n }\r\n\r\n .dt-paging .pagination {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none !important;\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n\r\n .page-item {\r\n list-style: none !important;\r\n\r\n .page-link {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 36px;\r\n width: fit-content;\r\n height: 32px;\r\n padding: 0 12px;\r\n border-radius: 6px;\r\n font-size: 12px;\r\n font-weight: 500;\r\n border: 1px solid #E2E8F0;\r\n background: #FFFFFF;\r\n color: #4E5E6A;\r\n text-decoration: none;\r\n line-height: 1;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background: #EEF2FF;\r\n color: #6690F4;\r\n border-color: #6690F4;\r\n }\r\n }\r\n\r\n &.previous .page-link,\r\n &.next .page-link {\r\n min-width: 72px;\r\n }\r\n\r\n &.active .page-link {\r\n background: #6690F4;\r\n color: #FFFFFF;\r\n border-color: #6690F4;\r\n }\r\n\r\n &.disabled .page-link {\r\n opacity: 0.35;\r\n cursor: default;\r\n pointer-events: none;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.terms-columns-box {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 6px;\r\n}\r\n\r\n.terms-columns-control {\r\n border: 1px solid #E2E8F0;\r\n border-radius: 6px;\r\n background: #FFFFFF;\r\n overflow: hidden;\r\n\r\n summary {\r\n cursor: pointer;\r\n padding: 8px 10px;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #334155;\r\n list-style: none;\r\n\r\n &::-webkit-details-marker {\r\n display: none;\r\n }\r\n\r\n &::after {\r\n content: '\\25BC';\r\n float: right;\r\n font-size: 10px;\r\n color: #64748B;\r\n margin-top: 2px;\r\n }\r\n }\r\n\r\n &[open] summary::after {\r\n content: '\\25B2';\r\n }\r\n}\r\n\r\n.terms-columns-list {\r\n border-top: 1px solid #EEF2F7;\r\n padding: 8px 10px;\r\n max-height: 180px;\r\n overflow-y: auto;\r\n\r\n .terms-col-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-size: 12px;\r\n color: #334155;\r\n margin-bottom: 6px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n input[type=checkbox] {\r\n margin: 0;\r\n }\r\n }\r\n}\r\n\r\n.campaigns-extra-card {\r\n background: #FFFFFF;\r\n border-radius: 10px;\r\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\r\n overflow: hidden;\r\n}\r\n\r\n.campaigns-extra-card-title {\r\n padding: 14px 16px;\r\n border-bottom: 1px solid #E2E8F0;\r\n font-size: 13px;\r\n font-weight: 700;\r\n color: #334155;\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n .terms-card-title-label {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 8px;\r\n }\r\n}\r\n\r\n.campaigns-extra-table-wrap {\r\n overflow: auto;\r\n}\r\n\r\n.campaigns-extra-table {\r\n margin: 0;\r\n width: 100%;\r\n table-layout: fixed;\r\n\r\n tbody td {\r\n padding: 9px 12px;\r\n border-bottom: 1px solid #F1F5F9;\r\n font-size: 13px;\r\n color: #334155;\r\n vertical-align: middle;\r\n white-space: nowrap;\r\n }\r\n\r\n td.num-cell {\r\n text-align: right;\r\n white-space: nowrap;\r\n }\r\n\r\n td.text-cell {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n th.terms-negative-select-cell,\r\n td.terms-negative-select-cell,\r\n th.terms-search-select-cell,\r\n td.terms-search-select-cell {\r\n text-align: center;\r\n }\r\n\r\n th.phrase-nowrap,\r\n td.phrase-nowrap {\r\n white-space: nowrap !important;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .terms-add-negative-btn,\r\n .terms-remove-negative-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 28px;\r\n height: 28px;\r\n border-radius: 6px;\r\n cursor: pointer;\r\n transition: all 0.2s;\r\n }\r\n\r\n .terms-add-negative-btn {\r\n border: 1px solid #E2E8F0;\r\n background: #EEF2FF;\r\n color: #3B82F6;\r\n\r\n &:hover {\r\n background: #3B82F6;\r\n color: #FFFFFF;\r\n border-color: #3B82F6;\r\n }\r\n }\r\n\r\n .terms-remove-negative-btn {\r\n border: 1px solid #FECACA;\r\n background: #FEF2F2;\r\n color: #DC2626;\r\n\r\n &:hover {\r\n background: #DC2626;\r\n color: #FFFFFF;\r\n border-color: #DC2626;\r\n }\r\n }\r\n\r\n tbody tr:hover {\r\n background: #F8FAFC;\r\n }\r\n\r\n tbody tr.term-is-negative td {\r\n color: #DC2626;\r\n }\r\n\r\n tbody tr.term-is-negative:hover {\r\n background: #FEF2F2;\r\n }\r\n}\r\n\r\n.campaigns-empty-row {\r\n text-align: center;\r\n color: #94A3B8 !important;\r\n font-style: italic;\r\n}\r\n\r\n.terms-ai-modal-toolbar {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n margin-bottom: 10px;\r\n\r\n label {\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #334155;\r\n margin: 0;\r\n }\r\n\r\n .form-control {\r\n width: 200px;\r\n height: 32px;\r\n }\r\n}\r\n\r\n.terms-ai-summary {\r\n font-size: 12px;\r\n color: #64748B;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.terms-ai-results-wrap {\r\n border: 1px solid #E2E8F0;\r\n border-radius: 8px;\r\n max-height: 420px;\r\n overflow: auto;\r\n}\r\n\r\n.terms-ai-results-table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n font-size: 12px;\r\n\r\n th,\r\n td {\r\n border-bottom: 1px solid #EEF2F7;\r\n padding: 8px;\r\n vertical-align: middle;\r\n }\r\n\r\n th {\r\n position: sticky;\r\n top: 0;\r\n background: #F8FAFC;\r\n color: #334155;\r\n font-weight: 700;\r\n }\r\n\r\n td.term-col {\r\n min-width: 260px;\r\n max-width: 380px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n td.reason-col {\r\n min-width: 320px;\r\n }\r\n}\r\n\r\n.terms-ai-action-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 999px;\r\n padding: 2px 8px;\r\n font-size: 11px;\r\n font-weight: 700;\r\n\r\n &.action-exclude {\r\n background: #FEE2E2;\r\n color: #B91C1C;\r\n }\r\n\r\n &.action-keep {\r\n background: #DCFCE7;\r\n color: #166534;\r\n }\r\n}\r\n\r\n// ===========================\r\n// PRODUCTS VIEW (INLINE MOVED)\r\n// ===========================\r\n.products-page .products-filters .filter-group.filter-group-columns {\r\n min-width: 240px;\r\n}\r\n\r\n.products-columns-control {\r\n border: 1px solid #E2E8F0;\r\n border-radius: 6px;\r\n background: #FFFFFF;\r\n overflow: hidden;\r\n\r\n summary {\r\n cursor: pointer;\r\n padding: 8px 10px;\r\n font-size: 12px;\r\n font-weight: 600;\r\n color: #334155;\r\n list-style: none;\r\n\r\n &::-webkit-details-marker {\r\n display: none;\r\n }\r\n\r\n &::after {\r\n content: '\\25BC';\r\n float: right;\r\n font-size: 10px;\r\n color: #64748B;\r\n margin-top: 2px;\r\n }\r\n }\r\n\r\n &[open] summary::after {\r\n content: '\\25B2';\r\n }\r\n}\r\n\r\n.products-columns-list {\r\n border-top: 1px solid #EEF2F7;\r\n padding: 8px 10px;\r\n max-height: 220px;\r\n overflow-y: auto;\r\n\r\n .products-col-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-size: 12px;\r\n color: #334155;\r\n margin-bottom: 6px;\r\n\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n input[type=checkbox] {\r\n margin: 0;\r\n }\r\n }\r\n}\r\n\r\n#products {\r\n\r\n th:last-child,\r\n td:last-child {\r\n white-space: nowrap;\r\n }\r\n\r\n .products-row-actions {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n\r\n .btn {\r\n width: 38px;\r\n height: 32px;\r\n padding: 0;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 4px !important;\r\n\r\n i {\r\n line-height: 1;\r\n }\r\n }\r\n }\r\n}\r\n\r\n// ===========================\r\n// LOGS PAGE\r\n// ===========================\r\n.logs-page {\r\n .logs-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n margin: 0;\r\n font-size: 20px;\r\n font-weight: 600;\r\n color: $cTextDark;\r\n }\r\n }\r\n\r\n .logs-filters {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: flex-end;\r\n gap: 14px;\r\n margin-bottom: 16px;\r\n\r\n .filter-group {\r\n flex: 1 1 160px;\r\n min-width: 0;\r\n max-width: 220px;\r\n\r\n label {\r\n display: block;\r\n font-size: 12px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.5px;\r\n color: #8899A6;\r\n margin-bottom: 6px;\r\n }\r\n\r\n .form-control {\r\n width: 100%;\r\n padding: 8px 12px;\r\n border: 1px solid $cBorder;\r\n border-radius: 8px;\r\n font-size: 14px;\r\n color: $cTextDark;\r\n background: $cWhite;\r\n transition: border-color 0.2s;\r\n\r\n &:focus {\r\n outline: none;\r\n border-color: $cPrimary;\r\n box-shadow: 0 0 0 3px rgba($cPrimary, 0.1);\r\n }\r\n }\r\n\r\n select.form-control {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238899A6' d='M6 8L1 3h10z'/%3E%3C/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n padding-right: 32px;\r\n }\r\n\r\n &.filter-group-buttons {\r\n flex: 0 0 auto;\r\n display: flex;\r\n gap: 6px;\r\n max-width: none;\r\n }\r\n }\r\n }\r\n\r\n .logs-table-wrap {\r\n .table {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .badge {\r\n display: inline-block;\r\n padding: 3px 8px;\r\n border-radius: 4px;\r\n font-size: 11px;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n letter-spacing: 0.3px;\r\n }\r\n\r\n .badge-success {\r\n background: #D1FAE5;\r\n color: #065F46;\r\n }\r\n\r\n .badge-danger {\r\n background: #FEE2E2;\r\n color: #991B1B;\r\n }\r\n\r\n .badge-warning {\r\n background: #FEF3C7;\r\n color: #92400E;\r\n }\r\n}\r\n\r\n.js-title-alt-apply {\r\n color: #000;\r\n justify-content: flex-start;\r\n}"]} \ No newline at end of file diff --git a/layout/style.scss b/layout/style.scss index 8e577f4..aac77c3 100644 --- a/layout/style.scss +++ b/layout/style.scss @@ -799,6 +799,127 @@ table { } } +// --- Unified app tables (clients/campaigns/products/logs) --- +.clients-table-wrap, +.campaigns-table-wrap, +.products-table-wrap, +.logs-table-wrap { + background: $cWhite; + border-radius: 10px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06); + overflow-x: auto; + max-width: 100%; + -ms-overflow-style: none; + scrollbar-width: none; + + &::-webkit-scrollbar { + display: none; + } + + .table { + margin: 0; + width: 100% !important; + + thead th { + background: #F8FAFC; + border-bottom: 2px solid $cBorder; + font-size: 12px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: #8899A6; + padding: 12px 16px; + white-space: nowrap; + } + + tbody td { + padding: 10px 16px; + font-size: 13px; + color: $cTextDark; + vertical-align: middle; + border-bottom: 1px solid #F1F5F9; + } + + tbody tr:hover td { + background: #F8FAFC; + } + } + + .dt-layout-row { + padding: 14px 20px; + margin: 0 !important; + border-top: 1px solid #F1F5F9; + + &:first-child { + display: none; + } + } + + .dt-info { + font-size: 13px; + color: #8899A6; + } + + .dt-paging { + .pagination { + margin: 0; + padding: 0; + list-style: none; + display: flex; + align-items: center; + gap: 6px; + + .page-item { + .page-link { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 36px; + width: fit-content; + height: 36px; + padding: 0 14px; + border-radius: 8px; + font-size: 13px; + font-weight: 500; + border: 1px solid $cBorder; + background: $cWhite; + color: $cText; + cursor: pointer; + transition: all 0.2s; + text-decoration: none; + line-height: 1; + white-space: nowrap; + + &:hover { + background: #EEF2FF; + color: $cPrimary; + border-color: $cPrimary; + } + } + + &.active .page-link { + background: $cPrimary; + color: $cWhite; + border-color: $cPrimary; + font-weight: 600; + } + + &.disabled .page-link { + opacity: 0.35; + cursor: default; + pointer-events: none; + } + } + } + } + + .dt-processing { + background: rgba($cWhite, 0.9); + color: $cText; + font-size: 14px; + } +} + // --- Cards --- .card { background: $cWhite; @@ -1094,35 +1215,7 @@ table { } .clients-table-wrap { - background: $cWhite; - border-radius: 10px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06); - overflow: hidden; - .table { - margin: 0; - - thead th { - background: #F8FAFC; - border-bottom: 2px solid $cBorder; - font-size: 12px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.5px; - color: #8899A6; - padding: 14px 20px; - } - - tbody td { - padding: 14px 20px; - vertical-align: middle; - border-bottom: 1px solid #F1F5F9; - } - - tbody tr:hover { - background: #F8FAFC; - } - .client-id { color: #8899A6; font-size: 13px; @@ -1638,120 +1731,8 @@ table { } .campaigns-table-wrap { - background: $cWhite; - border-radius: 10px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06); - overflow-x: auto; - -ms-overflow-style: none; - scrollbar-width: none; - max-width: 100%; - - &::-webkit-scrollbar { - display: none; - } - .table { - margin: 0; - width: 100% !important; - - thead th { - background: #F8FAFC; - border-bottom: 2px solid $cBorder; - font-size: 12px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.5px; - color: #8899A6; - padding: 12px 16px; - white-space: nowrap; - } - - tbody td { - padding: 10px 16px; - vertical-align: middle; - border-bottom: 1px solid #F1F5F9; - font-size: 13px; - } - - tbody tr:hover { - background: #F8FAFC; - } - } - - // DataTables 2.x overrides - .dt-layout-row { - padding: 14px 20px; - margin: 0 !important; - border-top: 1px solid #F1F5F9; - - // Ukryj wiersz z search/length jeśli pusty - &:first-child { - display: none; - } - } - - .dt-info { - font-size: 13px; - color: #8899A6; - } - - .dt-paging { - .pagination { - margin: 0; - padding: 0; - list-style: none; - display: flex; - align-items: center; - gap: 6px; - - .page-item { - .page-link { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 36px; - width: fit-content; - height: 36px; - padding: 0 14px; - border-radius: 8px; - font-size: 13px; - font-weight: 500; - border: 1px solid $cBorder; - background: $cWhite; - color: $cText; - cursor: pointer; - transition: all 0.2s; - text-decoration: none; - line-height: 1; - white-space: nowrap; - - &:hover { - background: #EEF2FF; - color: $cPrimary; - border-color: $cPrimary; - } - } - - &.active .page-link { - background: $cPrimary; - color: $cWhite; - border-color: $cPrimary; - font-weight: 600; - } - - &.disabled .page-link { - opacity: 0.35; - cursor: default; - pointer-events: none; - } - } - } - } - - .dt-processing { - background: rgba($cWhite, 0.9); - color: $cText; - font-size: 14px; + width: 100%; } } @@ -1990,37 +1971,8 @@ table { } .products-table-wrap { - background: $cWhite; - border-radius: 10px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06); - overflow: hidden; - .table { - margin: 0; - width: 100% !important; - - thead th { - background: #F8FAFC; - border-bottom: 2px solid $cBorder; - font-size: 11px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.3px; - color: #8899A6; - padding: 10px 8px; - white-space: nowrap; - } - - tbody td { - padding: 6px 8px; - vertical-align: middle; - border-bottom: 1px solid #F1F5F9; - font-size: 12px; - } - - tbody tr:hover { - background: #F8FAFC; - } + width: 100%; // Kompaktowe inputy w tabeli input.min_roas, @@ -2034,80 +1986,6 @@ table { background: $cWhite; } } - - // DataTables 2.x overrides (identyczne z campaigns) - .dt-layout-row { - padding: 14px 20px; - margin: 0 !important; - border-top: 1px solid #F1F5F9; - - &:first-child { - display: none; - } - } - - .dt-info { - font-size: 13px; - color: #8899A6; - } - - .dt-paging { - .pagination { - margin: 0; - padding: 0; - list-style: none; - display: flex; - align-items: center; - gap: 6px; - - .page-item { - .page-link { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 36px; - height: 36px; - padding: 0 14px; - border-radius: 8px; - font-size: 13px; - font-weight: 500; - border: 1px solid $cBorder; - background: $cWhite; - color: $cText; - cursor: pointer; - transition: all 0.2s; - text-decoration: none; - line-height: 1; - white-space: nowrap; - - &:hover { - background: #EEF2FF; - color: $cPrimary; - border-color: $cPrimary; - } - } - - &.active .page-link { - background: $cPrimary; - color: $cWhite; - border-color: $cPrimary; - font-weight: 600; - } - - &.disabled .page-link { - opacity: 0.35; - cursor: default; - pointer-events: none; - } - } - } - } - - .dt-processing { - background: rgba($cWhite, 0.9); - color: $cText; - font-size: 14px; - } } // Przycisk usuwania w wierszu @@ -2274,6 +2152,18 @@ table { border-color: #B45309; } } + + &.btn-ai-gemini { + border-color: #4285F4; + background: linear-gradient(135deg, #E8F0FE, #D2E3FC); + color: #1A73E8; + + &:hover { + background: linear-gradient(135deg, #4285F4, #1A73E8); + color: #FFF; + border-color: #1A73E8; + } + } } // --- Form container --- @@ -3468,71 +3358,6 @@ table#products { } } -.products-page table#products>thead>tr>th { - position: sticky; - top: 0; - z-index: 2; - background-color: #111827 !important; - color: #E5E7EB !important; - border-bottom: 1px solid #0B1220 !important; - font-size: 12px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: .4px; - padding: 10px 12px; - white-space: nowrap; -} - -.products-page #products thead th .dt-column-order { - display: none !important; -} - -.products-page #products thead th.dt-orderable-asc, -.products-page #products thead th.dt-orderable-desc { - cursor: pointer; - padding-right: 34px; - overflow: hidden; -} - -.products-page #products thead th .dt-column-title { - display: block; - overflow: hidden; - text-overflow: ellipsis; - padding-right: 2px; -} - -.products-page #products thead th.dt-orderable-asc::after, -.products-page #products thead th.dt-orderable-desc::after { - content: '\2195'; - position: absolute; - right: 10px; - top: 50%; - transform: translateY(-50%); - width: 16px; - height: 16px; - border-radius: 999px; - font-size: 12px; - font-weight: 700; - line-height: 16px; - text-align: center; - color: #E5E7EB; - background: #374151; -} - -.products-page #products thead th.dt-ordering-asc::after, -.products-page #products thead th[aria-sort="ascending"]::after { - content: '\25B2'; - color: #FFFFFF; - background: #2563EB; -} - -.products-page #products thead th.dt-ordering-desc::after, -.products-page #products thead th[aria-sort="descending"]::after { - content: '\25BC'; - color: #FFFFFF; - background: #2563EB; -} - // =========================== // LOGS PAGE // =========================== @@ -3609,111 +3434,8 @@ table#products { } .logs-table-wrap { - background: $cWhite; - border-radius: 10px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06); - overflow: hidden; - .table { - margin: 0; - - thead th { - background: #F0F4FA; - border-bottom: 2px solid $cBorder; - font-size: 11px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.5px; - color: #8899A6; - padding: 12px 14px; - white-space: nowrap; - } - - tbody td { - padding: 10px 14px; - font-size: 13px; - color: $cTextDark; - vertical-align: middle; - border-bottom: 1px solid #EEF2F7; - } - - tbody tr:hover td { - background: #F8FAFD; - } - } - - .dt-layout-row { - padding: 14px 20px; - margin: 0 !important; - border-top: 1px solid #F1F5F9; - - &:first-child { - display: none; - } - } - - .dt-info { - font-size: 13px; - color: #8899A6; - } - - .dt-paging { - .pagination { - margin: 0; - padding: 0; - list-style: none; - display: flex; - align-items: center; - gap: 6px; - - .page-item { - .page-link { - display: inline-flex; - align-items: center; - justify-content: center; - min-width: 36px; - width: fit-content; - height: 36px; - padding: 0 14px; - border-radius: 8px; - font-size: 13px; - font-weight: 500; - border: 1px solid $cBorder; - background: $cWhite; - color: $cText; - cursor: pointer; - transition: all 0.2s; - text-decoration: none; - line-height: 1; - white-space: nowrap; - - &:hover { - background: #EEF2FF; - color: $cPrimary; - border-color: $cPrimary; - } - } - - &.active .page-link { - background: $cPrimary; - color: $cWhite; - border-color: $cPrimary; - font-weight: 600; - } - - &.disabled .page-link { - opacity: 0.35; - cursor: default; - pointer-events: none; - } - } - } - } - - .dt-processing { - background: rgba($cWhite, 0.9); - color: $cText; - font-size: 14px; + width: 100%; } } @@ -3741,4 +3463,9 @@ table#products { background: #FEF3C7; color: #92400E; } +} + +.js-title-alt-apply { + color: #000; + justify-content: flex-start; } \ No newline at end of file diff --git a/templates/campaign_terms/main_view.php b/templates/campaign_terms/main_view.php index 321236a..e495071 100644 --- a/templates/campaign_terms/main_view.php +++ b/templates/campaign_terms/main_view.php @@ -1370,6 +1370,7 @@ function build_ad_groups_table( rows ) terms_ad_groups_table = new DataTable( '#terms_ad_groups_table', { data: rows || [], + stateSave: true, processing: false, serverSide: false, autoWidth: false, @@ -1421,6 +1422,7 @@ function build_search_terms_table( rows, negative_keywords ) terms_search_table = new DataTable( '#terms_search_table', { data: rows || [], + stateSave: true, processing: false, serverSide: false, autoWidth: false, @@ -1512,6 +1514,7 @@ function build_negative_terms_table( rows ) terms_negative_table = new DataTable( '#terms_negative_table', { data: rows || [], + stateSave: true, processing: false, serverSide: false, autoWidth: false, @@ -1586,6 +1589,7 @@ function build_keywords_table( rows ) terms_keywords_table = new DataTable( '#terms_keywords_table', { data: rows || [], + stateSave: true, processing: false, serverSide: false, autoWidth: false, diff --git a/templates/campaigns/main_view.php b/templates/campaigns/main_view.php index 674fa0b..ab67544 100644 --- a/templates/campaigns/main_view.php +++ b/templates/campaigns/main_view.php @@ -559,6 +559,7 @@ $( function() type: 'POST', url: '/campaigns/get_campaign_history_data_table/campaign_id=' + campaign_id, }, + stateSave: true, processing: true, serverSide: true, searching: false, diff --git a/templates/facebook_ads/main_view.php b/templates/facebook_ads/main_view.php index 23fc89d..ace5339 100644 --- a/templates/facebook_ads/main_view.php +++ b/templates/facebook_ads/main_view.php @@ -250,6 +250,7 @@ function fb_reload_table() ]; new DataTable( '#fb_history_table', { + stateSave: true, ajax: { type: 'POST', url: '/facebook_ads/get_history_data_table', diff --git a/templates/logs/main_view.php b/templates/logs/main_view.php index de06ed8..fb34b57 100644 --- a/templates/logs/main_view.php +++ b/templates/logs/main_view.php @@ -79,6 +79,7 @@ function initLogsTable() } logsTable = new DataTable( '#logs-table', { + stateSave: true, ajax: { url: '/logs/get_data_table/', data: function( d ) diff --git a/templates/products/main_view.php b/templates/products/main_view.php index a7a0bc2..be5cad6 100644 --- a/templates/products/main_view.php +++ b/templates/products/main_view.php @@ -104,10 +104,12 @@