Plugin Directory

Changeset 3439685


Ignore:
Timestamp:
01/14/2026 04:20:14 PM (5 weeks ago)
Author:
wpazleen
Message:

1.7.0

Location:
askany
Files:
430 added
16 edited

Legend:

Unmodified
Added
Removed
  • askany/trunk/askany.php

    r3426911 r3439685  
    44 * Plugin URI: https://wordpress.org/plugins/askany
    55 * Description: Askany is AI-powered chat assistant using DeepSeek API and OpenAI to answer questions based on WordPress content and imported PDFs.
    6  * Version: 1.6.1
     6 * Version: 1.7.0
    77 * Requires at least: 5.9
    88 * Requires PHP:      7.4
     
    5353                    'account'        => false,
    5454                ),
     55
     56                'parallel_activation' => array(
     57                    'enabled'                  => true,
     58                    'premium_version_basename' => 'askany-pro/askany-pro.php',
     59                ),
     60
    5561            ) );
    5662        }
     
    5965    }
    6066
    61     // Init Freemius.
    62     ask_fs();
    63     // Signal that SDK was initiated.
    64     do_action( 'ask_fs_loaded' );
    65 }
     67    // Init Freemius only if Pro plugin is not active.
     68    if ( ! is_plugin_active( 'askany-pro/askany-pro.php' ) ) {
     69        ask_fs();
     70        // Signal that SDK was initiated.
     71        do_action( 'ask_fs_loaded' );
     72    }
     73}
     74
     75/**
     76 * Helper function to check if Freemius is available (either from Free or Pro).
     77 *
     78 * @since 1.7.0
     79 * @return object|null Freemius SDK object or null.
     80 */
     81function askany_get_freemius_instance() {
     82    // If Pro is active, get Freemius instance from Pro
     83    if ( is_plugin_active( 'askany-pro/askany-pro.php' ) ) {
     84        // Pro handles Freemius, so get it from Pro's function
     85        if ( function_exists( 'askany_pro_get_freemius_instance' ) ) {
     86            return askany_pro_get_freemius_instance();
     87        }
     88        // Fallback: try to get Pro's Freemius instance directly
     89        return function_exists( 'ask_pro_fs' ) ? ask_pro_fs() : null;
     90    }
     91   
     92    // Otherwise, Free handles it
     93    return function_exists( 'ask_fs' ) ? ask_fs() : null;
     94}
     95
     96/**
     97 * Check Pro version compatibility and deactivate if incompatible.
     98 *
     99 * @since 1.7.0
     100 */
     101function askany_check_pro_version_compatibility() {
     102    // Only run this check if Free version is 1.7.0 or higher
     103    $free_version = ASKANY_VERSION;
     104    if ( version_compare( $free_version, '1.7.0', '<' ) ) {
     105        return;
     106    }
     107
     108    // Check if Pro plugin is active
     109    if ( ! is_plugin_active( 'askany-pro/askany-pro.php' ) ) {
     110        return;
     111    }
     112
     113    // Get Pro version from constant
     114    $pro_version = defined( 'ASKANYPRO_VERSION' ) ? ASKANYPRO_VERSION : '0.0.0';
     115    if ( ! $pro_version || $pro_version === '0.0.0' ) {
     116        return;
     117    }
     118
     119    // Check if Pro version is compatible (1.1.0 or higher)
     120    if ( version_compare( $pro_version, ASKANY_MIN_PRO_VERSION, '>=' ) ) {
     121        // Pro version is compatible - clear any existing upgrade flags
     122        askany_clear_pro_upgrade_flags();
     123        return;
     124    }
     125
     126    // Check if Pro version is below 1.1.0 (incompatible)
     127    if ( version_compare( $pro_version, ASKANY_MIN_PRO_VERSION, '<' ) ) {
     128        // Deactivate the Pro plugin
     129        deactivate_plugins( 'askany-pro/askany-pro.php' );
     130       
     131        // Set flag to show upgrade notice
     132        update_option( 'askany_pro_upgrade_required', true );
     133        update_option( 'askany_pro_old_version', $pro_version );
     134       
     135        // Add admin notice
     136        add_action( 'admin_notices', function() use ( $pro_version ) {
     137            echo '<div class="notice notice-error"><p>';
     138            printf(
     139                __( '<strong>Askany Pro v%s has been deactivated!</strong> It\'s incompatible with Askany Free v%s. Please upgrade to Pro v%s or higher.', 'askany' ),
     140                esc_html( $pro_version ),
     141                esc_html( ASKANY_VERSION ),
     142                esc_html( ASKANY_MIN_PRO_VERSION )
     143            );
     144            echo '</p></div>';
     145        });
     146    }
     147}
     148add_action( 'admin_init', 'askany_check_pro_version_compatibility' );
     149
     150/**
     151 * Clear Pro upgrade flags when compatible version is detected.
     152 *
     153 * @since 1.7.0
     154 */
     155function askany_clear_pro_upgrade_flags() {
     156    // Clear upgrade flags if they exist
     157    if ( get_option( 'askany_pro_upgrade_required' ) ) {
     158        delete_option( 'askany_pro_upgrade_required' );
     159    }
     160   
     161    if ( get_option( 'askany_pro_upgrade_notice_dismissed' ) ) {
     162        delete_option( 'askany_pro_upgrade_notice_dismissed' );
     163    }
     164   
     165    if ( get_option( 'askany_pro_old_version' ) ) {
     166        delete_option( 'askany_pro_old_version' );
     167    }
     168}
     169
     170/**
     171 * Show Pro upgrade notice.
     172 *
     173 * @since 1.7.0
     174 */
     175function askany_show_pro_upgrade_notice() {
     176    // Only show if upgrade is required and notice hasn't been dismissed
     177    if ( ! get_option( 'askany_pro_upgrade_required' ) || get_option( 'askany_pro_upgrade_notice_dismissed' ) ) {
     178        return;
     179    }
     180
     181    $old_version = get_option( 'askany_pro_old_version', '1.0.0' );
     182   
     183    ?>
     184    <div id="askany-pro-upgrade-notice" class="notice notice-warning is-dismissible" style="position: relative; padding: 20px; border-left: 4px solid #ffba00;">
     185        <div style="display: flex; align-items: center; gap: 15px;">
     186            <div style="font-size: 24px;">🚀</div>
     187            <div style="flex: 1;">
     188                <h3 style="margin: 0 0 10px 0; color: #d63638;">
     189                    <?php _e( 'Askany Pro Upgrade Required!', 'askany' ); ?>
     190                </h3>
     191                <p style="margin: 0 0 15px 0; font-size: 14px;">
     192                    <?php
     193                    printf(
     194                        __( 'Your Askany Pro v%s is incompatible with the new Askany Free v%s. The Pro version has been automatically deactivated to prevent conflicts.', 'askany' ),
     195                        '<strong>' . esc_html( $old_version ) . '</strong>',
     196                        '<strong>' . esc_html( ASKANY_VERSION ) . '</strong>'
     197                    );
     198                    ?>
     199                </p>
     200                <div style="display: flex; gap: 10px; align-items: center;">
     201                    <a href="https://customers.freemius.com/" target="_blank" class="button button-primary" style="background: #d63638; border-color: #d63638;">
     202                        <?php _e( '🔄 Download Pro v' . ASKANY_MIN_PRO_VERSION . '+', 'askany' ); ?>
     203                    </a>
     204                    <span style="color: #666; font-size: 12px;">
     205                        <?php _e( 'Login to your Freemius account to get the latest version', 'askany' ); ?>
     206                    </span>
     207                </div>
     208            </div>
     209            <button type="button" class="notice-dismiss" onclick="askanyDismissProUpgradeNotice()">
     210                <span class="screen-reader-text"><?php _e( 'Dismiss this notice.', 'askany' ); ?></span>
     211            </button>
     212        </div>
     213    </div>
     214
     215    <script type="text/javascript">
     216    function askanyDismissProUpgradeNotice() {
     217        jQuery.post(ajaxurl, {
     218            action: 'askany_dismiss_pro_upgrade_notice',
     219            nonce: '<?php echo wp_create_nonce( 'askany_dismiss_notice' ); ?>'
     220        }, function(response) {
     221            if (response.success) {
     222                jQuery('#askany-pro-upgrade-notice').fadeOut();
     223            } else {
     224                console.error('Failed to dismiss notice:', response.data ? response.data.message : 'Unknown error');
     225                // Still hide the notice on client side to prevent user frustration
     226                jQuery('#askany-pro-upgrade-notice').fadeOut();
     227            }
     228        }).fail(function(xhr, status, error) {
     229            console.error('AJAX request failed:', error);
     230            // Still hide the notice on client side to prevent user frustration
     231            jQuery('#askany-pro-upgrade-notice').fadeOut();
     232        });
     233    }
     234    </script>
     235
     236    <style>
     237    #askany-pro-upgrade-notice .notice-dismiss {
     238        position: absolute;
     239        top: 10px;
     240        right: 10px;
     241    }
     242    </style>
     243    <?php
     244}
     245add_action( 'admin_notices', 'askany_show_pro_upgrade_notice' );
     246
     247/**
     248 * Dismiss Pro upgrade notice via AJAX.
     249 *
     250 * @since 1.7.0
     251 */
     252function askany_dismiss_pro_upgrade_notice() {
     253    // Check if user has proper capabilities
     254    if ( ! current_user_can( 'manage_options' ) ) {
     255        wp_die( 'Insufficient permissions' );
     256    }
     257
     258    // Verify nonce with proper sanitization
     259    $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';
     260   
     261    if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, 'askany_dismiss_notice' ) ) {
     262        wp_send_json_error( array( 'message' => 'Security check failed' ) );
     263        return;
     264    }
     265
     266    // Mark notice as dismissed
     267    update_option( 'askany_pro_upgrade_notice_dismissed', true );
     268   
     269    wp_send_json_success( array( 'message' => 'Notice dismissed successfully' ) );
     270}
     271add_action( 'wp_ajax_askany_dismiss_pro_upgrade_notice', 'askany_dismiss_pro_upgrade_notice' );
     272
     273/**
     274 * Prevent activation of old Pro versions.
     275 *
     276 * @since 1.7.0
     277 */
     278function askany_prevent_old_pro_activation() {
     279    // Get Pro version being activated
     280    $pro_version = defined( 'ASKANYPRO_VERSION' ) ? ASKANYPRO_VERSION : '0.0.0';
     281   
     282    if ( ! $pro_version || $pro_version === '0.0.0' ) {
     283        return;
     284    }
     285
     286    // Check if Free version is 1.7.0+ and Pro version is below 1.1.0
     287    $free_version = ASKANY_VERSION;
     288    if ( version_compare( $free_version, '1.7.0', '>=' ) && version_compare( $pro_version, ASKANY_MIN_PRO_VERSION, '<' ) ) {
     289        // Deactivate the Pro plugin immediately
     290        deactivate_plugins( 'askany-pro/askany-pro.php' );
     291       
     292        // Set upgrade flags
     293        update_option( 'askany_pro_upgrade_required', true );
     294        update_option( 'askany_pro_old_version', $pro_version );
     295       
     296        // Show error message with wp_die
     297        wp_die(
     298            sprintf(
     299                __( '<h1>Activation Failed!</h1><p><strong>Askany Pro v%s</strong> is incompatible with <strong>Askany Free v%s</strong>.</p><p>Please upgrade to <strong>Pro v%s or higher</strong> from your <a href="https://customers.freemius.com/" target="_blank">Freemius account</a>.</p><p><a href="%s" class="button">← Go Back</a></p>', 'askany' ),
     300                esc_html( $pro_version ),
     301                esc_html( $free_version ),
     302                esc_html( ASKANY_MIN_PRO_VERSION ),
     303                esc_url( admin_url( 'plugins.php' ) )
     304            ),
     305            __( 'Plugin Activation Error', 'askany' ),
     306            array( 'back_link' => true )
     307        );
     308    } else if ( version_compare( $free_version, '1.7.0', '>=' ) && version_compare( $pro_version, ASKANY_MIN_PRO_VERSION, '>=' ) ) {
     309        // Compatible Pro version activated - clear any existing upgrade flags
     310        askany_clear_pro_upgrade_flags();
     311    }
     312}
     313add_action( 'activate_askany-pro/askany-pro.php', 'askany_prevent_old_pro_activation' );
    66314
    67315// Define plugin constants.
    68 define('ASKANY_VERSION', '1.6.1');
     316define('ASKANY_VERSION', '1.7.0');
     317define('ASKANY_MIN_PRO_VERSION', '1.1.0'); // Minimum required Pro version
    69318define('ASKANY_PLUGIN_FILE', __FILE__);
    70319define('ASKANY_PLUGIN_DIR', plugin_dir_path(__FILE__));
  • askany/trunk/assets/css/admin.css

    r3414941 r3439685  
    1818    --askany-box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1);
    1919    --askany-transition: all 0.3s ease;
     20}
     21
     22
     23/* Scrollbar width */
     24::-webkit-scrollbar {
     25  width: 6px;
     26  height: 6px;
     27}
     28
     29/* Track (background) */
     30::-webkit-scrollbar-track {
     31  background: #f1f1f1;
     32}
     33
     34/* Handle (thumb) */
     35::-webkit-scrollbar-thumb {
     36  background: #ceccfc; /* change color */
     37  border-radius: 10px;
     38}
     39
     40/* Handle on hover */
     41::-webkit-scrollbar-thumb:hover {
     42  background: #ceccfc;
     43}
     44
     45* {
     46  scrollbar-width: thin;
     47  scrollbar-color: #ceccfc #f1f1f1;
    2048}
    2149
     
    37813809    }
    37823810}
     3811
     3812/* Language Selector Styling */
     3813#askany_response_language {
     3814    font-size: 14px;
     3815    padding: 8px 12px;
     3816    min-width: 300px;
     3817}
     3818
     3819#askany_response_language option {
     3820    padding: 8px;
     3821    font-size: 14px;
     3822}
     3823
     3824/* Style Pro options to look disabled for free users */
     3825#askany_response_language[data-is-pro="0"] option[data-pro="true"] {
     3826    opacity: 0.4;
     3827    color: #999;
     3828}
     3829
     3830.askany-language-select {
     3831    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
     3832}
  • askany/trunk/assets/css/frontend.css

    r3426911 r3439685  
    14291429        padding: 8px 10px;
    14301430        font-size: 14px;
     1431        margin: auto;
    14311432    }
    14321433
  • askany/trunk/assets/js/admin.js

    r3414941 r3439685  
    10931093});
    10941094
     1095
     1096    // Handle Language Selector Pro Lock
     1097    const languageSelect = document.getElementById('askany_response_language');
     1098    if (languageSelect) {
     1099        const isPro = languageSelect.getAttribute('data-is-pro') === '1';
     1100        let previousValue = languageSelect.value;
     1101       
     1102        console.log('Language selector initialized. Is Pro:', isPro, 'Previous value:', previousValue);
     1103       
     1104        // Handle change event - this fires when user selects an option
     1105        languageSelect.addEventListener('change', function(e) {
     1106            const selectedOption = this.options[this.selectedIndex];
     1107            const isProLanguage = selectedOption.getAttribute('data-pro') === 'true';
     1108            const selectedValue = this.value;
     1109           
     1110            console.log('Language changed to:', selectedValue, 'Is Pro language:', isProLanguage, 'User has Pro:', isPro);
     1111           
     1112            // If user doesn't have Pro and selected a Pro language
     1113            if (!isPro && isProLanguage) {
     1114                console.log('Blocking Pro language selection. Reverting to:', previousValue);
     1115               
     1116                // Revert to previous value
     1117                this.value = previousValue;
     1118               
     1119                // Show Pro modal
     1120                console.log('Showing Pro modal...');
     1121                if (typeof AskanyPro !== 'undefined' && typeof AskanyPro.openModal === 'function') {
     1122                    AskanyPro.openModal({
     1123                        title: 'Unlock All Languages',
     1124                        description: 'Upgrade to Pro to access 20+ languages including Spanish, French, German, Chinese, Japanese, Arabic, and more!',
     1125                        features: [
     1126                            '20+ AI response languages',
     1127                            'Multilingual customer support',
     1128                            'Global audience reach',
     1129                            'Automatic language detection',
     1130                            'Priority support'
     1131                        ]
     1132                    });
     1133                } else {
     1134                    console.error('AskanyPro.openModal not found');
     1135                    alert('This language requires AskAny Pro. Upgrade to unlock 20+ languages!');
     1136                }
     1137            } else {
     1138                // Update previous value for next time
     1139                previousValue = this.value;
     1140                console.log('Language selection allowed. New previous value:', previousValue);
     1141            }
     1142        });
     1143    }
  • askany/trunk/assets/js/dynamic-pricing.js

    r3414941 r3439685  
    120120        } else {
    121121            // Countdown ended
    122             $('.askany-pricing-countdown').html('<p class="countdown-ended">Offer has ended</p>');
     122            $('.askany-pricing-countdown').html('<p class="countdown-ended">😬 Oops! Offer may slipped away. Check back soon.</p>');
    123123            if (countdownInterval) {
    124124                clearInterval(countdownInterval);
  • askany/trunk/dist/css/admin.min.css

    r3414941 r3439685  
    1 :root{--askany-primary:#4361ee;--askany-primary-dark:#3a56d4;--askany-secondary:#f72585;--askany-tertiary:#7209b7;--askany-success:#06d6a0;--askany-warning:#ffd166;--askany-danger:#ef476f;--askany-light:#f8f9fa;--askany-dark:#212529;--askany-gray:#6c757d;--askany-gray-light:#e9ecef;--askany-border-radius:8px;--askany-box-shadow:0 4px 6px rgba(0,0,0,.05),0 1px 3px rgba(0,0,0,.1);--askany-transition:all 0.3s ease}.wrap,.wrap.askany-qa-management{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;margin:20px auto;max-width:1200px}.wrap h1{align-items:center;border-bottom:1px solid var(--askany-gray-light);color:var(--askany-dark);display:flex;font-size:26px;font-weight:600;margin-bottom:1.5rem;padding-bottom:.75rem}.wrap h1:before{background-color:var(--askany-primary);content:"";display:inline-block;height:24px;margin-right:10px;mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3C/svg%3E");mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:24px}.card{background-color:#fff;border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-bottom:2rem;max-width:none;min-width:none;padding:1.5rem;transition:var(--askany-transition)}.card:hover{box-shadow:0 10px 15px rgba(0,0,0,.05),0 5px 10px rgba(0,0,0,.05)}.card h2{align-items:center;color:var(--askany-dark);display:flex;font-size:20px;font-weight:600;margin-bottom:1.25rem;margin-top:0}.askany-admin-stats{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:2rem}.askany-stat-box{background:linear-gradient(90deg,rgba(67,97,238,.05),rgba(114,9,183,.05));border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);flex:1;min-width:250px;padding:1.5rem;transition:var(--askany-transition)}.askany-stat-box:hover{box-shadow:0 8px 15px rgba(0,0,0,.1);transform:translateY(-5px)}.askany-stat-box h3{border-bottom:1px solid var(--askany-gray-light);color:var(--askany-primary);font-size:18px;margin-bottom:1rem;margin-top:0;padding-bottom:.75rem}.askany-stat-box p{align-items:center;display:flex;justify-content:space-between;margin:.5rem 0}.askany-stat-box strong{background-color:var(--askany-light);border-radius:20px;color:var(--askany-primary);font-weight:600;padding:2px 12px;transition:var(--askany-transition)}.askany-stat-box:hover strong{background-color:var(--askany-primary);color:#fff}.api-keys-url span{background-color:var(--askany-gray-light);border-radius:var(--askany-border-radius);cursor:pointer;display:inline-block;font-size:14px;margin:5px 0;padding:6px 12px;position:relative;transition:var(--askany-transition)}.api-keys-url span:hover{background-color:var(--askany-primary);color:#fff}.api-keys-url span:hover:after{background-color:var(--askany-dark);border-radius:4px;color:#fff;content:"Click to copy";font-size:12px;left:50%;padding:5px 10px;position:absolute;top:-30px;transform:translateX(-50%);white-space:nowrap}.form-field{margin-bottom:1.5rem}.form-field label{color:var(--askany-dark);display:block;font-weight:600;margin-bottom:.5rem}.form-field input[type=text],.form-field textarea,.form-table input[type=password],.form-table input[type=text],.form-table input[type=url],.form-table select,input.regular-text,select.regular-text{border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);padding:10px 15px;transition:var(--askany-transition);width:100%}.form-field input[type=text]:focus,.form-field textarea:focus,.form-table input[type=password]:focus,.form-table input[type=text]:focus,.form-table input[type=url]:focus,.form-table select:focus,input.regular-text:focus,select.regular-text:focus{border-color:var(--askany-primary);box-shadow:0 0 0 3px rgba(67,97,238,.3);outline:none}.form-field textarea{min-height:120px}.form-field .description{color:var(--askany-gray);font-size:13px;margin-top:5px}.button{background-color:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-gray);cursor:pointer;font-weight:500;padding:8px 16px;transition:var(--askany-transition)}.button:hover{background-color:var(--askany-gray-light);color:var(--askany-dark)}.button-primary{background-color:var(--askany-primary);border-color:var(--askany-primary)}.button-primary:hover{background-color:var(--askany-primary-dark);border-color:var(--askany-primary-dark);color:#fff}.button-link-delete{background-color:transparent;border-color:transparent;color:var(--askany-danger)}.button-link-delete:hover{background-color:rgba(239,71,111,.1);color:var(--askany-danger)}.button-small{font-size:12px;padding:4px 10px}button#upload-avatar-button{margin-top:10px}.askany-avatar-upload{display:flex;gap:10px;justify-content:center;text-align:center}.form-actions{display:flex;gap:10px;margin-top:1rem}.askany-admin-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:1.5rem}.wp-list-table{border:1px solid var(--askany-gray-light);border-collapse:separate;border-spacing:0;margin-top:1.5rem}.wp-list-table td,.wp-list-table th{border-bottom:1px solid var(--askany-gray-light);padding:12px 15px;text-align:left}.wp-list-table th{background-color:var(--askany-gray-light);color:var(--askany-dark)}.wp-list-table tr:last-child td{border-bottom:none}.wp-list-table tr:hover td{background-color:rgba(67,97,238,.05)}.progress-bar{background-color:var(--askany-gray-light);border-radius:5px;height:10px;margin:10px 0;overflow:hidden}.progress-fill{background-color:var(--askany-primary);height:100%;transition:width .3s ease;width:0}.askany-admin-footer{background-color:#fff;border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-top:2rem;padding:1.5rem}.askany-admin-footer h3{color:var(--askany-dark);margin-top:0}.askany-admin-footer code{background-color:var(--askany-gray-light);border-radius:var(--askany-border-radius);cursor:pointer;display:inline-block;font-size:14px;margin:5px 0;padding:6px 12px;position:relative;transition:var(--askany-transition)}.askany-admin-footer code:hover{background-color:var(--askany-primary);color:#fff}.askany-admin-footer code:hover:after{background-color:var(--askany-dark);border-radius:4px;color:#fff;content:"Click to copy";font-size:12px;left:50%;padding:5px 10px;position:absolute;top:-30px;transform:translateX(-50%);white-space:nowrap}.askany-admin-footer ul{list-style-type:none;margin-top:10px;padding-left:10px}.askany-admin-footer li{align-items:baseline;display:flex;margin-bottom:5px}.askany-admin-footer li:before{color:var(--askany-primary);content:"•";display:inline-block;font-weight:700;margin-left:-1em;width:1em}.form-table{border-collapse:collapse;width:100%}.form-table td,.form-table th{border-bottom:1px solid var(--askany-gray-light);padding:15px 10px;text-align:left;vertical-align:top}.form-table th{font-weight:600;width:200px}.form-table tr:last-child td,.form-table tr:last-child th{border-bottom:none}input[type=checkbox]{-webkit-appearance:none;appearance:none;background-color:#fff;border:1px solid var(--askany-gray);border-radius:.15em;color:currentColor;cursor:pointer;display:inline-grid;font:inherit;height:1.15em;margin:0 8px 0 0;place-content:center;transform:translateY(.2em);width:1.15em}input[type=checkbox]:before{box-shadow:inset 1em 1em var(--askany-primary);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%);content:"";height:.65em;transform:scale(0);transform-origin:center;transition:transform .12s ease-in-out;width:.65em}input[type=checkbox]:checked:before{transform:scale(1)}input[type=checkbox]:focus{outline:max(2px,.15em) solid rgba(67,97,238,.5);outline-offset:max(2px,.15em)}.avatar-preview img{border:2px solid var(--askany-primary);border-radius:50%;transition:var(--askany-transition)}.avatar-preview img:hover{transform:scale(1.1)}.delete-qa,.edit-qa{margin-right:5px}.edit-qa:before{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4z'/%3E%3C/svg%3E")}.delete-qa:before,.edit-qa:before{background-color:currentColor;content:"";display:inline-block;height:12px;margin-right:5px;mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:12px}.delete-qa:before{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6'/%3E%3C/svg%3E")}@media screen and (max-width:782px){.askany-admin-stats{flex-direction:column}.form-table,.form-table tbody,.form-table td,.form-table th,.form-table tr{display:block;width:100%}.form-table th{padding-bottom:0}.form-table td{margin-bottom:15px;padding-top:5px}.wp-list-table{display:block;overflow-x:auto}}.card{animation:fadeIn .5s ease-out}.askany-stat-box:hover strong{animation:pulse .5s infinite}.button.loading{color:transparent!important;position:relative}.button.loading:after{animation:spin .8s linear infinite;border:2px solid hsla(0,0%,100%,.5);border-radius:50%;border-top-color:#fff;content:"";height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.askany-notification{align-items:center;background-color:#fff;border-radius:var(--askany-border-radius);box-shadow:0 5px 15px rgba(0,0,0,.1);display:flex;padding:15px 20px;position:fixed;right:20px;top:60px;transform:translateX(120%);transition:transform .3s ease;z-index:9999}.askany-notification.show{transform:translateX(0)}.askany-notification:before{background-color:var(--askany-success);content:"";height:20px;margin-right:10px;mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpath d='M22 4 12 14.01l-3-3'/%3E%3C/svg%3E");mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:20px}.askany-notification.error:before{background-color:var(--askany-danger);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4M12 16h.01'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){body.wp-admin{--askany-light:#2a2e33;--askany-dark:#e9ecef;--askany-gray-light:#3a3f44}.askany-admin-footer,.askany-notification,.card{background-color:#2a2e33;color:#e9ecef}.wp-list-table th{background-color:#3a3f44;color:#e9ecef}.button,.form-field input[type=text],.form-field textarea,.form-table input[type=password],.form-table input[type=text],.form-table input[type=url],.form-table select,input.regular-text,select.regular-text{background-color:#3a3f44;border-color:#4d545c;color:#e9ecef}.button:hover{background-color:#4d545c;color:#fff}}.askany-admin-container{max-width:1200px}.askany-admin-section{background:#fff;border:1px solid #ccd0d4;border-radius:4px;margin-bottom:20px;padding:20px}.askany-admin-section h2{border-bottom:1px solid #eee;margin-top:0;padding-bottom:10px}.askany-section-header{align-items:center;background:#f9f9f9;border-radius:4px;display:flex;gap:10px;margin-bottom:20px;padding:15px}.askany-faq-item,.askany-link-item{background:#fafafa;border:1px solid #ddd;border-radius:4px;margin-bottom:10px}.askany-faq-header,.askany-link-header{align-items:center;display:flex;justify-content:space-between;padding:15px}.askany-faq-controls,.askany-link-controls{align-items:center;display:flex;flex:1;gap:10px}.askany-faq-question{font-weight:600}.askany-link-info{display:flex;flex-direction:column;gap:4px}.askany-link-title{font-weight:600}.askany-link-url{color:#666;font-size:12px}.askany-link-description{color:#666;font-size:13px;padding:0 15px 15px}.askany-faq-actions,.askany-link-actions{display:flex;gap:5px}.askany-no-items{color:#666;font-style:italic;padding:40px 20px;text-align:center}.askany-form-group{margin-bottom:20px}.askany-form-group label{font-weight:600;margin-bottom:5px}.askany-switch{display:inline-block;height:24px;position:relative;width:50px}.askany-switch input{height:0;opacity:0;width:0}.askany-slider{background-color:#ccc;border-radius:24px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s}.askany-slider:before{background-color:#fff;border-radius:50%;bottom:3px;content:"";height:18px;left:3px;position:absolute;transition:.4s;width:18px}input:checked+.askany-slider{background-color:#2196f3}input:checked+.askany-slider:before{transform:translateX(26px)}.askany-media-upload{align-items:center;display:flex;gap:10px}.askany-media-preview img{border:1px solid #ddd;border-radius:4px}.askany-pro-badge{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.5px;margin-left:10px;opacity:0;padding:4px 8px;text-transform:uppercase;transition:opacity .3s ease,transform .2s ease;vertical-align:middle}.askany-admin-section.askany-pro-locked:hover .askany-pro-badge,.askany-admin-section:hover .askany-pro-badge,.askany-pro-locked:hover .askany-pro-badge{opacity:1}.askany-pro-tag{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:10px;color:#fff;display:inline-block;font-size:10px;font-weight:600;letter-spacing:.5px;margin-left:8px;opacity:0;padding:3px 8px;text-transform:uppercase;transition:opacity .3s ease,transform .2s ease;vertical-align:middle}.askany-admin-section.askany-pro-locked:hover .askany-pro-tag,.askany-admin-section:hover .askany-pro-tag,.askany-pro-locked:hover .askany-pro-tag{opacity:1}.askany-admin-section.askany-pro-locked{position:relative}.askany-pro-overlay{align-items:center;backdrop-filter:blur(3px);background:hsla(0,0%,100%,.95);border-radius:4px;display:flex;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition:opacity .3s ease;width:100%;z-index:10}.askany-admin-section.askany-pro-locked:hover .askany-pro-overlay{opacity:1;pointer-events:all}.askany-pro-locked-form{opacity:.5;pointer-events:none}.askany-pro-notice-small{align-items:center;display:flex;gap:15px;padding:20px;text-align:left}.askany-pro-notice-icon{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;box-shadow:0 4px 12px rgba(102,126,234,.3);display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.askany-pro-notice-icon svg{stroke:#fff}.askany-pro-notice-content h4{color:#2d3748;font-size:16px;font-weight:600;margin:0 0 8px}.askany-pro-notice-content p{color:#4a5568;font-size:13px;line-height:1.5;margin:0 0 12px}.askany-open-pro-modal{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2)!important;border-color:#667eea!important;border-radius:6px!important;color:#fff!important;display:inline-flex;font-size:12px!important;font-weight:600;height:auto!important;padding:6px 16px!important;transition:all .3s ease}.askany-open-pro-modal:hover{box-shadow:0 4px 12px rgba(102,126,234,.4)!important;transform:translateY(-1px)}.askany-admin-page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;margin:0 auto;max-width:1400px;padding:20px}.askany-admin-page h1{align-items:center;color:var(--askany-dark);display:flex;font-size:32px;font-weight:700;gap:15px;margin:0 0 10px}.askany-admin-page h1:before{content:"📊";font-size:36px}.askany-admin-page .description{background:linear-gradient(135deg,rgba(67,97,238,.05),rgba(247,37,133,.03));border-left:4px solid var(--askany-primary);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-size:16px;margin-bottom:30px;padding:15px}.askany-stats-overview{margin-bottom:40px}.askany-stats-cards{display:grid;gap:25px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:30px}.askany-stat-card{background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(248,249,250,.98));border:1px solid rgba(67,97,238,.1);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);gap:20px;padding:30px;transition:var(--askany-transition)}.askany-stat-card:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-secondary),var(--askany-tertiary));height:4px;left:0;right:0}.askany-stat-card:hover{box-shadow:0 8px 25px rgba(0,0,0,.15);transform:translateY(-5px)}.askany-stat-card:first-child:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-tertiary))}.askany-stat-card:nth-child(2):before{background:linear-gradient(90deg,var(--askany-success),var(--askany-primary))}.askany-stat-card:nth-child(3):before{background:linear-gradient(90deg,var(--askany-secondary),var(--askany-warning))}.askany-stat-card:nth-child(4):before{background:linear-gradient(90deg,var(--askany-warning),var(--askany-danger))}.stat-icon{align-items:center;background:linear-gradient(135deg,var(--askany-primary),var(--askany-primary-dark));border-radius:50%;box-shadow:0 4px 15px rgba(67,97,238,.3);color:#fff;display:flex;flex-shrink:0;font-size:24px;height:60px;justify-content:center;width:60px}.askany-stat-card:nth-child(2) .stat-icon{background:linear-gradient(135deg,var(--askany-success),#04b082)}.askany-stat-card:nth-child(3) .stat-icon{background:linear-gradient(135deg,var(--askany-secondary),#d6336c)}.askany-stat-card:nth-child(4) .stat-icon{background:linear-gradient(135deg,var(--askany-warning),#f7b731)}.stat-content h3{color:var(--askany-gray);font-size:14px;font-weight:600;letter-spacing:1px;margin:0 0 10px;text-transform:uppercase}.stat-number{color:var(--askany-dark);font-size:36px;font-weight:800;line-height:1;margin-bottom:5px}.stat-label{color:var(--askany-gray);font-size:14px;margin-bottom:15px}.stat-meta{display:flex;flex-wrap:wrap;font-size:12px;gap:12px}.stat-meta span{border-radius:12px;font-weight:600;letter-spacing:.5px;padding:4px 8px;text-transform:uppercase}.success-rate{background:rgba(6,214,160,.1);border:1px solid rgba(6,214,160,.2);color:var(--askany-success)}.fallback-rate{background:rgba(255,209,102,.1);border:1px solid rgba(255,209,102,.2);color:var(--askany-warning)}.response-time{background:rgba(67,97,238,.1);border:1px solid rgba(67,97,238,.2);color:var(--askany-primary)}.askany-charts-section{margin-bottom:40px}.askany-chart-container{background:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-bottom:30px;padding:30px;position:relative}.askany-chart-container:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-secondary));border-radius:var(--askany-border-radius) var(--askany-border-radius) 0 0;content:"";height:3px;left:0;position:absolute;right:0;top:0}.chart-header{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:25px}.chart-header h2,.chart-header h3{color:var(--askany-dark);font-weight:700;margin:0}.chart-header h2{font-size:24px}.chart-header h3{font-size:20px}.chart-legend{display:flex;flex-wrap:wrap;gap:20px}.legend-item{align-items:center;color:var(--askany-dark);display:flex;font-size:14px;gap:8px}.legend-color{border-radius:2px;height:12px;width:12px}.legend-item.success .legend-color{background:var(--askany-success)}.legend-item.failed .legend-color{background:var(--askany-danger)}.legend-item.response-time .legend-color{background:var(--askany-primary)}.askany-chart-row{display:grid;gap:30px;grid-template-columns:1fr 1fr}.half-width{margin-bottom:0}.provider-stats,.request-type-stats{border-top:2px solid var(--askany-gray-light);margin-top:20px;padding-top:20px}.provider-stat,.request-type-stat{align-items:center;background:rgba(248,249,250,.8);border-left:4px solid var(--askany-primary);border-radius:var(--askany-border-radius);display:flex;justify-content:space-between;margin-bottom:8px;padding:12px;transition:var(--askany-transition)}.provider-stat:hover,.request-type-stat:hover{background:rgba(67,97,238,.05);transform:translateX(5px)}.provider-name,.type-name{color:var(--askany-dark);font-weight:600}.provider-requests,.type-requests{color:var(--askany-gray);font-size:14px}.provider-success-rate,.type-success-rate{background:var(--askany-success);border-radius:12px;color:#fff;font-size:12px;font-weight:600;padding:4px 8px}.askany-detailed-stats{margin-bottom:40px}.askany-detailed-stats h2{align-items:center;color:var(--askany-dark);display:flex;font-size:24px;font-weight:700;gap:10px;margin-bottom:20px}.askany-detailed-stats h2:before{content:"📈";font-size:28px}.stats-table-container{background:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);overflow:hidden}.stats-table-container .wp-list-table{border:none;box-shadow:none;margin:0}.stats-table-container .wp-list-table thead{background:linear-gradient(135deg,var(--askany-dark) 0,#495057 100%)}.stats-table-container .wp-list-table thead th{color:#fff!important;font-size:12px;font-weight:600;letter-spacing:.5px;padding:20px 15px!important;text-transform:uppercase}.stats-table-container .wp-list-table tbody td{padding:18px 15px!important;vertical-align:middle}.success-count{background:rgba(6,214,160,.1);color:var(--askany-success)}.error-count,.success-count{border-radius:20px;font-size:14px;font-weight:600;padding:6px 12px}.error-count{background:rgba(239,71,111,.1);color:var(--askany-danger)}.fallback-count{background:rgba(255,209,102,.1);border-radius:20px;color:var(--askany-warning);font-size:14px;font-weight:600;padding:6px 12px}.askany-recent-errors{background:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);padding:30px;position:relative}.askany-recent-errors:before{background:linear-gradient(90deg,var(--askany-danger),var(--askany-warning));border-radius:var(--askany-border-radius) var(--askany-border-radius) 0 0;content:"";height:3px;left:0;position:absolute;right:0;top:0}.section-header{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:25px}.section-header h2{align-items:center;color:var(--askany-dark);display:flex;font-size:24px;font-weight:700;gap:10px;margin:0}.section-header h2:before{content:"⚠️";font-size:28px}.section-actions{display:flex;flex-wrap:wrap;gap:10px}.section-actions .button{border-radius:var(--askany-border-radius);font-size:12px;font-weight:600;letter-spacing:.5px;padding:8px 16px;text-transform:uppercase;transition:var(--askany-transition)}.section-actions .button-secondary{background:linear-gradient(135deg,var(--askany-warning) 0,#f7b731 100%);border:none;color:#fff}.section-actions .button-link-delete{background:linear-gradient(135deg,var(--askany-danger) 0,#d63384 100%);border:none;color:#fff}.errors-table-container{background:#fff;border-radius:var(--askany-border-radius);box-shadow:0 2px 8px rgba(0,0,0,.1);margin-bottom:15px;overflow:hidden}.errors-table-container .wp-list-table{border:none;box-shadow:none;margin:0}.provider-badge{border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.5px;padding:4px 10px;text-transform:uppercase}.provider-badge.openai{background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.2);color:#10b981}.provider-badge.anthropic{background:rgba(139,69,19,.1);border:1px solid rgba(139,69,19,.2);color:#8b4513}.provider-badge.google{background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.2);color:#3b82f6}.error-message{background:rgba(239,71,111,.05);border-left:3px solid var(--askany-danger);color:var(--askany-danger);font-family:Courier New,monospace;font-size:12px}.error-message,.query-text{border-radius:4px;padding:8px}.query-text{background:rgba(248,249,250,.8);color:var(--askany-gray);font-style:italic}.no-errors-message{background:linear-gradient(135deg,rgba(6,214,160,.05),rgba(16,185,129,.03));border:2px dashed rgba(6,214,160,.2);border-radius:var(--askany-border-radius);padding:40px;text-align:center}.no-errors-message p{align-items:center;color:var(--askany-success);display:flex;font-size:16px;font-weight:600;gap:10px;justify-content:center;margin:0}.no-errors-message p:before{content:"✅";font-size:24px}.no-data{background:rgba(248,249,250,.8);border:2px dashed var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-style:italic;padding:20px;text-align:center}.errors-filters label{color:var(--askany-dark);font-weight:600}.errors-filters select{border:2px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-dark);transition:var(--askany-transition)}.errors-filters select:focus{border-color:var(--askany-primary);box-shadow:0 0 0 3px rgba(67,97,238,.1);outline:none}@media (max-width:1200px){.askany-chart-row{grid-template-columns:1fr}}@media (max-width:768px){.askany-admin-page{padding:15px}.askany-stats-cards{gap:20px;grid-template-columns:1fr}.askany-stat-card{flex-direction:column;padding:20px;text-align:center}.stat-icon{margin-bottom:15px}.chart-header{align-items:flex-start;flex-direction:column}.chart-legend{justify-content:center}.section-header{align-items:flex-start;flex-direction:column}.section-actions{justify-content:center;width:100%}.errors-filters{align-items:flex-start;flex-direction:column}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.askany-stat-card{animation:fadeInUp .6s ease-out}.askany-stat-card:first-child{animation-delay:.1s}.askany-stat-card:nth-child(2){animation-delay:.2s}.askany-stat-card:nth-child(3){animation-delay:.3s}.askany-stat-card:nth-child(4){animation-delay:.4s}.askany-chart-container{animation:fadeInUp .6s ease-out .5s both}.askany-detailed-stats{animation:fadeInUp .6s ease-out .6s both}.askany-recent-errors{animation:fadeInUp .6s ease-out .7s both}.askany-chat-container{backdrop-filter:blur(10px);background:linear-gradient(135deg,#667eea,#764ba2);border:1px solid hsla(0,0%,100%,.2);border-radius:16px;box-shadow:0 20px 40px rgba(0,0,0,.1),0 8px 20px rgba(0,0,0,.06);display:flex;height:75vh;overflow:hidden;position:relative}.askany-chat-container:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.4),transparent);content:"";height:1px;left:0;position:absolute;right:0;top:0}.askany-chat-sidebar{backdrop-filter:blur(20px);background:hsla(0,0%,100%,.95);border-right:1px solid rgba(0,0,0,.08);display:flex;flex-direction:column;position:relative;width:320px}.askany-chat-sidebar:after{background:linear-gradient(180deg,transparent,rgba(0,0,0,.1),transparent);bottom:0;content:"";position:absolute;right:0;top:0;width:1px}.askany-sidebar-header{align-items:center;background:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));border-bottom:1px solid rgba(0,0,0,.08);display:flex;justify-content:space-between;padding:20px;position:relative}.askany-sidebar-header h3{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;font-size:18px;font-weight:700;margin:0;-webkit-text-fill-color:transparent;background-clip:text}.askany-sidebar-header .button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:25px;box-shadow:0 4px 12px rgba(102,126,234,.3);color:#fff;font-size:12px;font-weight:600;letter-spacing:.5px;padding:8px 16px;text-transform:uppercase;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-sidebar-header .button:hover{background:linear-gradient(135deg,#5a6fd8,#6b42a0);box-shadow:0 8px 20px rgba(102,126,234,.4);transform:translateY(-2px)}.askany-sessions-list{flex:1;overflow-y:auto;padding:8px}.askany-sessions-list::-webkit-scrollbar{width:6px}.askany-sessions-list::-webkit-scrollbar-track{background:rgba(0,0,0,.05);border-radius:3px}.askany-sessions-list::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:3px;transition:all .3s ease}.askany-sessions-list::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#5a6fd8,#6b42a0)}.askany-session-item{align-items:center;background:hsla(0,0%,100%,.6);border:1px solid hsla(0,0%,100%,.3);border-radius:12px;cursor:pointer;display:flex;justify-content:space-between;margin:4px 8px;overflow:hidden;padding:16px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-session-item:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.6),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.askany-session-item:hover{background:hsla(0,0%,100%,.8);border-color:rgba(102,126,234,.3);box-shadow:0 8px 20px rgba(0,0,0,.1);transform:translateY(-2px)}.askany-session-item:hover:before{left:100%}.askany-session-item.active{background:linear-gradient(135deg,rgba(102,126,234,.15),rgba(118,75,162,.15));border:2px solid rgba(102,126,234,.4);box-shadow:0 12px 24px rgba(102,126,234,.2);transform:translateY(-1px)}.askany-session-user{color:#2d3748;font-size:15px;font-weight:700;margin-bottom:6px}.askany-session-meta{color:#718096;font-size:12px;font-weight:500;margin-bottom:10px}.askany-session-meta span{align-items:center;display:inline-flex;gap:4px;margin-right:12px}.askany-status-badge{font-size:10px;font-weight:700;gap:4px;padding:4px 10px;transition:all .3s ease}.askany-status-badge.ai{background:linear-gradient(135deg,#48bb78,#38a169);box-shadow:0 4px 12px rgba(72,187,120,.3);color:#fff}.askany-status-badge.agent{background:linear-gradient(135deg,#4299e1,#3182ce);box-shadow:0 4px 12px rgba(66,153,225,.3)}.askany-chat-main{backdrop-filter:blur(20px);background:hsla(0,0%,100%,.95);display:flex;flex:1;flex-direction:column}.askany-chat-header{background:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));border-bottom:1px solid rgba(0,0,0,.08);padding:20px;position:relative}.askany-chat-header:after{background:linear-gradient(90deg,transparent,rgba(102,126,234,.3),transparent);bottom:0;content:"";height:1px;left:20px;position:absolute;right:20px}.askany-chat-user-info h3{color:#2d3748;font-size:20px;font-weight:700;margin:0}.askany-chat-controls{align-items:center;display:flex;gap:12px;justify-content:right}.askany-chat-controls select{border:2px solid rgba(102,126,234,.2);border-radius:25px;color:#2d3748;font-weight:600;outline:none;padding:8px 24px;transition:all .3s ease}.askany-chat-controls select:focus{border-color:rgba(102,126,234,.5);box-shadow:0 0 0 3px rgba(102,126,234,.1)}.askany-chat-controls .button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:25px;box-shadow:0 4px 12px rgba(102,126,234,.3);color:#fff;font-size:13px;font-weight:600;padding:10px 20px;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-chat-controls .button:hover{box-shadow:0 8px 20px rgba(102,126,234,.4);transform:translateY(-2px)}.askany-chat-controls .button-secondary{background:linear-gradient(135deg,#a0aec0,#718096);box-shadow:0 4px 12px rgba(160,174,192,.3)}.askany-chat-messages{background:linear-gradient(180deg,rgba(247,250,252,.8),hsla(0,0%,100%,.9));flex:1;overflow-y:auto;padding:24px;position:relative}.askany-chat-messages::-webkit-scrollbar{width:8px}.askany-chat-messages::-webkit-scrollbar-track{background:rgba(0,0,0,.05);border-radius:4px}.askany-chat-messages::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:4px}.askany-message{animation:askany-message-slide-in .4s cubic-bezier(.4,0,.2,1);margin-bottom:20px}@keyframes askany-message-slide-in{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.askany-message.agent,.askany-message.ai{justify-content:flex-start}.askany-message-bubble{backdrop-filter:blur(10px);border-radius:20px;box-shadow:0 4px 12px rgba(0,0,0,.1);max-width:75%;padding:14px 18px;position:relative;transition:all .3s ease}.askany-message-bubble:hover{box-shadow:0 8px 20px rgba(0,0,0,.15);transform:translateY(-1px)}.askany-message.user .askany-message-bubble{background:linear-gradient(135deg,#667eea,#764ba2);border-bottom-right-radius:6px}.askany-message.agent .askany-message-bubble{background:linear-gradient(135deg,#48bb78,#38a169);border-bottom-left-radius:6px;color:#fff}.askany-message.ai .askany-message-bubble{background:hsla(0,0%,100%,.95);border:1px solid rgba(102,126,234,.2);border-bottom-left-radius:6px;color:#2d3748}.askany-message-content{font-weight:500}.askany-message-meta{font-size:10px;font-weight:600;letter-spacing:.5px;margin-top:6px;opacity:.8;text-transform:uppercase}.askany-chat-input{background:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));border-top:1px solid rgba(0,0,0,.08);padding:20px;position:relative}.askany-chat-input:before{background:linear-gradient(90deg,transparent,rgba(102,126,234,.3),transparent);content:"";height:1px;left:20px;position:absolute;right:20px;top:0}.askany-input-container{align-items:flex-end;backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:2px solid rgba(102,126,234,.2);border-radius:25px;display:flex;gap:12px;padding:8px;transition:all .3s ease}.askany-input-container:focus-within{border-color:rgba(102,126,234,.5);box-shadow:0 0 0 4px rgba(102,126,234,.1);transform:translateY(-1px)}.askany-input-container textarea{background:transparent;border:none;border-radius:18px;color:#2d3748;flex:1;font-weight:500;line-height:1.5;max-height:120px;min-height:40px;outline:none;padding:8px 12px;resize:none}.askany-input-container textarea::placeholder{color:#a0aec0;font-weight:500}.askany-input-container .button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:20px;box-shadow:0 4px 12px rgba(102,126,234,.3);color:#fff;font-size:14px;font-weight:700;letter-spacing:.5px;padding:12px 24px;text-transform:uppercase;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-input-container .button:hover{background:linear-gradient(135deg,#5a6fd8,#6b42a0);box-shadow:0 8px 20px rgba(102,126,234,.4);transform:translateY(-2px)}.askany-input-container .button:active{transform:translateY(0)}.askany-session-actions{display:flex;gap:6px;opacity:0;transform:translateX(10px);transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-session-item:hover .askany-session-actions{opacity:1;transform:translateX(0)}.askany-action-btn{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:1px solid rgba(0,0,0,.1);border-radius:8px;cursor:pointer;display:flex;justify-content:center;padding:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-clear-history-btn{border-color:hsla(0,88%,68%,.2);color:#f56565}.askany-clear-history-btn:hover{background:linear-gradient(135deg,#fed7d7,#feb2b2);box-shadow:0 4px 12px hsla(0,88%,68%,.3);color:#c53030;transform:translateY(-2px)}.askany-delete-session-btn{border-color:rgba(229,62,62,.2);color:#e53e3e}.askany-delete-session-btn:hover{background:linear-gradient(135deg,#fed7d7,#feb2b2);box-shadow:0 4px 12px rgba(229,62,62,.3);color:#9b2c2c;transform:translateY(-2px)}.askany-no-chat-selected,.askany-no-messages,.askany-no-sessions{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.6);border:1px solid hsla(0,0%,100%,.3);border-radius:12px;color:#718096;margin:20px;padding:40px 20px;text-align:center}.askany-no-chat-selected p,.askany-no-messages p,.askany-no-sessions p{font-size:16px;font-weight:600;margin:0}.askany-typing-indicator{animation:askany-fade-in .4s cubic-bezier(.4,0,.2,1);display:flex;justify-content:flex-start;margin-bottom:20px}.askany-typing-indicator .askany-message-bubble{background:hsla(0,0%,100%,.95);border:1px solid rgba(102,126,234,.2);padding:12px 16px}.askany-typing-content{align-items:center;display:flex;gap:12px}.askany-typing-text{color:#718096;font-size:12px;font-style:italic;font-weight:600}.askany-typing-dots{align-items:center;display:flex;gap:4px}.askany-typing-dot{animation:askany-typing-bounce 1.4s ease-in-out infinite;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;height:6px;width:6px}.askany-stats-container{backdrop-filter:blur(20px);background:linear-gradient(90deg,rgba(67,97,238,.05),rgba(114,9,183,.05));border:1px solid hsla(0,0%,100%,.3);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.1);margin-top:15px;overflow:hidden;padding:5px;position:relative}.askany-stats-container:before{background:linear-gradient(90deg,transparent,rgba(102,126,234,.4),transparent);content:"";height:1px;left:0;position:absolute;right:0;top:0}.askany-stats-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:10px}.askany-stat-card{backdrop-filter:blur(15px);background:linear-gradient(90deg,rgba(67,97,238,.05),rgba(114,9,183,.05));border:1px solid hsla(0,0%,100%,.4);border-radius:16px;cursor:default;gap:16px;overflow:hidden;padding:5px;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.askany-stat-card:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.7),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s cubic-bezier(.4,0,.2,1);width:100%}.askany-stat-card:hover{background:hsla(0,0%,100%,.95);border-color:rgba(102,126,234,.3);box-shadow:0 16px 40px rgba(0,0,0,.12);transform:translateY(-4px)}.askany-stat-card:hover:before{left:100%}.askany-stat-icon{background:linear-gradient(135deg,#f7fafc,#edf2f7);border:2px solid rgba(160,174,192,.2);border-radius:16px;height:40px;overflow:hidden;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1);width:40px}.askany-stat-icon svg{color:#fff;height:28px;transition:all .4s ease;width:28px;z-index:2}.askany-stat-icon.active{background:linear-gradient(135deg,rgba(72,187,120,.15),rgba(56,161,105,.15));border-color:rgba(72,187,120,.3)}.askany-stat-icon.active svg{color:#38a169}.askany-stat-card:hover .askany-stat-icon.active{background:linear-gradient(135deg,#48bb78,#38a169);box-shadow:0 8px 20px rgba(72,187,120,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon.active svg{color:#fff;transform:scale(1.1)}.askany-stat-icon.ai{background:linear-gradient(135deg,rgba(102,126,234,.15),rgba(118,75,162,.15));border-color:rgba(102,126,234,.3)}.askany-stat-icon.ai svg{color:#667eea}.askany-stat-card:hover .askany-stat-icon.ai{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 8px 20px rgba(102,126,234,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon.ai svg{color:#fff;transform:scale(1.1)}.askany-stat-icon.agent{background:linear-gradient(135deg,rgba(66,153,225,.15),rgba(49,130,206,.15));border-color:rgba(66,153,225,.3)}.askany-stat-icon.agent svg{color:#4299e1}.askany-stat-card:hover .askany-stat-icon.agent{background:linear-gradient(135deg,#4299e1,#3182ce);box-shadow:0 8px 20px rgba(66,153,225,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon.agent svg{color:#fff;transform:scale(1.1)}.askany-stat-card:hover .askany-stat-icon:not(.active):not(.ai):not(.agent){background:linear-gradient(135deg,#e2e8f0,#cbd5e0);border-color:rgba(160,174,192,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon:not(.active):not(.ai):not(.agent) svg{color:#4a5568;transform:scale(1.1)}.askany-stat-content{min-width:0}.askany-stat-number{background:linear-gradient(135deg,#2d3748,#4a5568);-webkit-background-clip:text;font-size:25px;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:6px;transition:all .3s ease}.askany-stat-card:hover .askany-stat-number{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;transform:scale(1.05)}.askany-stat-label{color:#718096;font-size:12px;letter-spacing:.8px;line-height:1.2;transition:all .3s ease}.askany-stat-card:hover .askany-stat-label{color:#4a5568}@keyframes askany-stat-pulse{0%{box-shadow:0 0 0 0 rgba(72,187,120,.7)}70%{box-shadow:0 0 0 10px rgba(72,187,120,0)}to{box-shadow:0 0 0 0 rgba(72,187,120,0)}}.askany-stat-icon.active{animation:askany-stat-pulse 2s infinite}@media (max-width:1024px){.askany-stats-grid{gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.askany-stat-card{gap:14px;padding:20px}.askany-stat-icon{height:50px;width:50px}.askany-stat-icon svg{height:24px;width:24px}.askany-stat-number{font-size:28px}}@media (max-width:768px){.askany-stats-grid{gap:12px;grid-template-columns:repeat(2,1fr)}.askany-stat-card{flex-direction:column;gap:12px;padding:16px;text-align:center}.askany-stat-number{font-size:24px}.askany-stat-label{font-size:12px}}@keyframes askany-typing-bounce{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1) translateY(-4px)}}@keyframes askany-fade-in{0%{opacity:0;transform:translateY(15px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:768px){.askany-chat-container{flex-direction:column;height:85vh}.askany-chat-sidebar{max-height:40%;width:100%}.askany-session-item{margin:2px 4px;padding:12px}.askany-chat-messages{padding:16px}.askany-message-bubble{max-width:85%}}@media (max-width:480px){.askany-stats-grid{grid-template-columns:1fr}.askany-stat-card{flex-direction:row;text-align:left}}.askany-stats-container{background:#fff;border:1px solid #ccd0d4;border-radius:4px;margin-bottom:20px;padding:20px}.askany-stats-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.askany-stat-card{align-items:center;background:linear-gradient(135deg,#f8f9fa,#fff);border:1px solid #e9ecef;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.05);display:flex;gap:15px;padding:20px;transition:all .3s ease}.askany-stat-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateY(-2px)}.askany-stat-icon{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;color:#fff;display:flex;flex-shrink:0;height:48px;justify-content:center;width:48px}.askany-stat-icon.active{background:linear-gradient(135deg,#4facfe,#00f2fe)}.askany-stat-icon.ai{background:linear-gradient(135deg,#43e97b,#38f9d7)}.askany-stat-icon.agent{background:linear-gradient(135deg,#fa709a,#fee140)}.askany-stat-content{flex:1}.askany-stat-number{color:#2c3e50;font-size:28px;font-weight:700;line-height:1;margin-bottom:4px}.askany-stat-label{color:#6c757d;font-size:13px;font-weight:500;letter-spacing:.5px;text-transform:uppercase}@media (max-width:768px){.askany-stats-grid{gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.askany-stat-card{gap:12px;padding:15px}.askany-stat-icon{height:40px;width:40px}.askany-stat-number{font-size:24px}.askany-stat-label{font-size:12px}}.askany-user-agents-container{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.askany-section{background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(248,249,250,.98));border:1px solid rgba(67,97,238,.1);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-bottom:30px;overflow:hidden;padding:30px;position:relative}.askany-section:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-secondary),var(--askany-tertiary));border-radius:var(--askany-border-radius) var(--askany-border-radius) 0 0;content:"";height:4px;left:0;position:absolute;right:0;top:0}.askany-section h2{align-items:center;color:var(--askany-dark);display:flex;font-size:24px;font-weight:700;gap:10px;margin:0 0 20px}.askany-section h2:before{content:"👥";font-size:28px}.askany-section:first-child h2:before{content:"🔧"}.wp-list-table{border:none!important;border-radius:var(--askany-border-radius);box-shadow:0 2px 10px rgba(0,0,0,.08);margin-top:20px}.wp-list-table thead{background:linear-gradient(135deg,var(--askany-primary) 0,var(--askany-primary-dark) 100%)}.wp-list-table thead th{background:none!important;border:none!important;color:#fff!important;font-size:12px;font-weight:600;letter-spacing:.5px;padding:18px 15px!important;position:relative;text-transform:uppercase}.wp-list-table thead th:after{background:hsla(0,0%,100%,.2);content:"";height:50%;position:absolute;right:0;top:25%;width:1px}.wp-list-table thead th:last-child:after{display:none}.wp-list-table tbody tr{border:none!important;transition:var(--askany-transition)}.wp-list-table tbody tr:hover{background:linear-gradient(135deg,rgba(67,97,238,.02),rgba(247,37,133,.02));box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateY(-1px)}.wp-list-table tbody tr:nth-child(2n){background:rgba(248,249,250,.5)}.wp-list-table tbody tr:nth-child(2n):hover{background:linear-gradient(135deg,rgba(67,97,238,.04),rgba(247,37,133,.04))}.wp-list-table tbody td{border:none!important;border-bottom:1px solid var(--askany-gray-light)!important;color:var(--askany-dark);font-size:14px;padding:20px 15px!important;vertical-align:middle}.wp-list-table tbody tr:last-child td{border-bottom:none!important}.askany-status-badge{align-items:center;border-radius:20px;display:inline-flex;font-size:12px;font-weight:600;letter-spacing:.5px;overflow:hidden;padding:6px 12px;position:relative;text-transform:uppercase}.askany-status-badge:before{background:inherit;bottom:0;content:"";left:0;opacity:.1;position:absolute;right:0;top:0}.askany-status-badge.online{background:var(--askany-success);box-shadow:0 2px 8px rgba(6,214,160,.3);color:#fff}.askany-status-badge.online:after{animation:pulse 2s infinite;content:"●";margin-left:6px}.askany-status-badge.offline{background:var(--askany-gray);box-shadow:0 2px 8px hsla(208,7%,46%,.3);color:#fff}.askany-status-badge.agent{background:var(--askany-primary);box-shadow:0 2px 8px rgba(67,97,238,.3);color:#fff}.askany-status-badge.agent:after{content:"⭐";margin-left:6px}.askany-status-badge.regular{background:var(--askany-gray-light);border:1px solid var(--askany-gray-light);color:var(--askany-dark)}.button{border:none!important;border-radius:var(--askany-border-radius)!important;cursor:pointer!important;font-size:12px!important;font-weight:600!important;letter-spacing:.5px!important;overflow:hidden!important;padding:10px 20px!important;position:relative!important;text-transform:uppercase!important;transition:var(--askany-transition)!important}.button:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.button:hover:before{left:100%}.button-primary{background:linear-gradient(135deg,var(--askany-primary) 0,var(--askany-primary-dark) 100%)!important;box-shadow:0 4px 15px rgba(67,97,238,.3)!important;color:#fff!important}.button-primary:hover{box-shadow:0 6px 20px rgba(67,97,238,.4)!important;transform:translateY(-2px)!important}.button-secondary{background:linear-gradient(135deg,var(--askany-danger) 0,#d63384 100%)!important;box-shadow:0 4px 15px rgba(239,71,111,.3)!important;color:#fff!important}.button-secondary:hover{box-shadow:0 6px 20px rgba(239,71,111,.4)!important;transform:translateY(-2px)!important}.askany-section p:only-child{background:rgba(248,249,250,.8);border:2px dashed var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-style:italic;margin:0;padding:40px 20px;text-align:center}.askany-section>p:not(:only-child){background:rgba(67,97,238,.05);border-left:4px solid var(--askany-primary);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-size:14px;line-height:1.6;margin-bottom:20px;padding:15px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.askany-section{animation:fadeIn .6s ease-out}.askany-section:nth-child(2){animation-delay:.1s}@media (max-width:768px){.askany-user-agents-container{padding:15px}.askany-section{margin-bottom:20px;padding:20px}.askany-section h2{font-size:20px}.wp-list-table{font-size:12px}.wp-list-table tbody td,.wp-list-table thead th{padding:12px 8px!important}.button{font-size:11px!important;padding:8px 16px!important}.askany-status-badge{font-size:10px;padding:4px 8px}}.askany-loading{opacity:.6;pointer-events:none;position:relative}.askany-loading:after{animation:spin 1s linear infinite;border:2px solid var(--askany-primary);border-radius:50%;border-top:2px solid transparent;content:"";height:20px;left:50%;margin:-10px 0 0 -10px;position:absolute;top:50%;width:20px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.askany-status-badge:focus,.button:focus{outline:2px solid var(--askany-primary);outline-offset:2px}@media (prefers-contrast:high){.askany-section{border:2px solid var(--askany-dark)}.wp-list-table thead{background:var(--askany-dark)!important}.askany-status-badge{border:1px solid}}.askany-modal{align-items:center;backdrop-filter:blur(4px);background-color:rgba(0,0,0,.6);box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding:20px;position:fixed;top:0;transition:all .3s ease;width:100%;z-index:10000}.askany-modal.show,.askany-modal[style*="display: block"]{opacity:1;visibility:visible}.askany-modal-content{background:#fff;border-radius:12px;box-shadow:0 20px 40px rgba(0,0,0,.15);display:flex;flex-direction:column;max-height:90vh;max-width:90vw;overflow:hidden;transform:scale(.9) translateY(20px);transition:transform .3s ease;width:100%}.askany-modal.show .askany-modal-content,.askany-modal[style*="display: block"] .askany-modal-content{transform:scale(1) translateY(0)}.askany-modal-header{align-items:center;background:#f8fafc;border-bottom:1px solid #e5e7eb;display:flex;justify-content:between;padding:24px 30px 20px;position:relative}.askany-modal-header h3{color:#1f2937;flex:1;font-size:1.5rem;font-weight:600;margin:0}.askany-modal-close{align-items:center;background:none;border:none;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;line-height:1;padding:4px;position:absolute;right:24px;top:20px;transition:all .2s ease;width:32px}.askany-modal-close:hover{background-color:#f3f4f6;color:#374151}.askany-modal-body{flex:1;min-height:0;overflow-y:auto;padding:30px}#errors-modal .askany-modal-content{max-width:1200px;width:95%}#errors-modal .askany-modal-body{padding:20px 30px 30px}.errors-filters{align-items:center;background:#f8fafc;border-radius:8px;display:flex;flex-wrap:wrap;gap:20px;margin-bottom:25px;padding:20px}.errors-filters label{color:#374151;font-weight:500;margin-right:8px}.errors-filters select{background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:14px;min-width:120px;padding:8px 12px}.wp-list-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden;width:100%}.wp-list-table th{background:#f9fafb;border-bottom:1px solid #e5e7eb;color:#374151;font-size:14px;font-weight:600;padding:16px 12px;text-align:left}.wp-list-table td{border-bottom:1px solid #f3f4f6;color:#4b5563;font-size:14px;padding:14px 12px;vertical-align:top}.wp-list-table tbody tr:hover{background-color:#f9fafb}.provider-badge,.status-badge{border-radius:4px;display:inline-block;font-size:12px;font-weight:500;padding:4px 8px;text-transform:uppercase}.provider-badge.openai{background:#e0f2fe;color:#0277bd}.status-badge.api_failed{background:#fef2f2;color:#dc2626}.error-message,.query-text{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tablenav{border-top:1px solid #e5e7eb;margin-top:20px;padding:15px 0}.tablenav-pages{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.displaying-num{color:#6b7280;font-size:14px}.pagination-links{align-items:center;display:flex;gap:5px}.pagination-links .button{background:#fff;border:1px solid #d1d5db;border-radius:4px;color:#374151;font-size:14px;padding:6px 12px;text-decoration:none;transition:all .2s ease}.pagination-links .button:hover:not(.disabled){background:#f3f4f6;border-color:#9ca3af}.pagination-links .button.disabled{cursor:not-allowed;opacity:.5}.current-page{border:1px solid #d1d5db;border-radius:4px;font-size:14px;padding:6px 8px;text-align:center;width:50px}#askany-faq-modal .askany-modal-content{max-width:600px;width:90%}.askany-form-group{margin-bottom:24px}.askany-form-group label{color:#374151;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.askany-form-group input,.askany-form-group textarea{border:1px solid #d1d5db;border-radius:8px;box-sizing:border-box;font-size:14px;padding:12px 16px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.askany-form-group input:focus,.askany-form-group textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1);outline:none}.askany-form-group textarea{font-family:inherit;min-height:120px;resize:vertical}.small-text{max-width:100px}.askany-modal-footer{background:#f8fafc;border-top:1px solid #e5e7eb;display:flex;gap:12px;justify-content:flex-end;padding:20px 30px}.askany-modal-footer .button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s ease}.button-secondary{background:#f3f4f6;border:1px solid #d1d5db;color:#374151}.button-secondary:hover{background:#e5e7eb}.button-primary{background:#3b82f6;color:#fff}.button-primary:hover{background:#2563eb}@media (max-width:768px){.askany-modal{padding:15px}.askany-modal-content{max-height:95vh;max-width:100%}.askany-modal-header{padding:20px 20px 16px}.askany-modal-header h3{font-size:1.25rem;padding-right:40px}.askany-modal-close{right:16px;top:16px}.askany-modal-body{padding:20px}.askany-modal-footer{flex-direction:column-reverse;padding:16px 20px}.askany-modal-footer .button{justify-content:center;width:100%}#errors-modal .askany-modal-content{width:100%}.errors-filters{align-items:stretch;flex-direction:column;gap:15px}.errors-filters>div{align-items:center;display:flex;gap:8px}.wp-list-table{font-size:13px}.wp-list-table td,.wp-list-table th{padding:10px 8px}.error-message,.query-text{max-width:120px}.tablenav-pages{justify-content:center}.displaying-num{order:2;text-align:center;width:100%}}@media (max-width:480px){.askany-modal{padding:10px}.askany-modal-header{padding:16px 16px 12px}.askany-modal-body{padding:16px}.askany-modal-footer{padding:12px 16px}.wp-list-table{font-size:12px}.wp-list-table td,.wp-list-table th{padding:8px 6px}.error-message,.query-text{max-width:80px}.provider-badge,.status-badge{font-size:10px;padding:2px 6px}}.askany-modal-body::-webkit-scrollbar{width:6px}.askany-modal-body::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.askany-modal-body::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.askany-modal-body::-webkit-scrollbar-thumb:hover{background:#94a3b8}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.askany-modal[style*="display: block"] .askany-modal-content{animation:modalFadeIn .3s ease-out forwards}.api-key-instructions{background-color:#f8f9fa;border-left:4px solid var(--askany-primary);border-radius:4px;margin-top:10px;padding:15px}.api-key-instructions p{color:var(--askany-dark);margin:0 0 10px}.api-key-instructions ol{margin:10px 0 0 20px;padding:0}.api-key-instructions li{color:var(--askany-gray);line-height:1.6;margin-bottom:8px}.api-key-instructions a{color:var(--askany-primary);font-weight:500;text-decoration:none}.api-key-instructions a:hover{text-decoration:underline}.form-table td>div[style*="display: flex"]{flex-wrap:wrap}.form-table td>div[style*="display: flex"] input[type=password],.form-table td>div[style*="display: flex"] input[type=text]{min-width:300px}@media (max-width:782px){.form-table td>div[style*="display: flex"]{align-items:stretch!important;flex-direction:column}.form-table td>div[style*="display: flex"] input{margin-bottom:10px;width:100%!important}.form-table td>div[style*="display: flex"] button{margin-bottom:5px;width:100%}}.askany-message{align-items:flex-start;border-radius:8px;display:flex;gap:10px;margin-bottom:15px;padding:10px;transition:background-color .2s}.askany-message:hover{background-color:rgba(0,0,0,.02)}.askany-message .message-avatar{align-items:center;border-radius:50%;display:flex;flex-shrink:0;height:32px;justify-content:center;overflow:hidden;width:32px}.askany-message .message-avatar .avatar-image,.askany-message .message-avatar img{border-radius:50%;height:100%;object-fit:cover;width:100%}.askany-message .message-avatar .avatar-icon{align-items:center;border-radius:50%;display:flex;height:32px;justify-content:center;width:32px}.askany-message .message-avatar .user-icon{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.askany-message .message-avatar .assistant-icon{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.askany-message .message-avatar .agent-icon{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff}.askany-message .message-avatar svg{height:18px;width:18px}.askany-message.user{flex-direction:row-reverse}.askany-message.user .askany-message-bubble{text-align:right}.askany-message.agent,.askany-message.ai{flex-direction:row}.askany-message-bubble{background:#f8f9fa;border-radius:12px;flex:1;min-width:0;padding:12px 15px}.askany-message.user .askany-message-bubble{background:var(--askany-primary);color:#fff}.askany-message.agent .askany-message-bubble{background:#e3f2fd;color:#000}.askany-message.ai .askany-message-bubble{background:#fce4ec;color:#000}.askany-message-content{line-height:1.5;margin-bottom:5px;word-wrap:break-word}.askany-message-meta{font-size:11px;margin-top:5px;opacity:.7}@media (max-width:782px){.askany-message .message-avatar,.askany-message .message-avatar .avatar-icon{height:28px;width:28px}.askany-message .message-avatar svg{height:16px;width:16px}}
     1:root{--askany-primary:#4361ee;--askany-primary-dark:#3a56d4;--askany-secondary:#f72585;--askany-tertiary:#7209b7;--askany-success:#06d6a0;--askany-warning:#ffd166;--askany-danger:#ef476f;--askany-light:#f8f9fa;--askany-dark:#212529;--askany-gray:#6c757d;--askany-gray-light:#e9ecef;--askany-border-radius:8px;--askany-box-shadow:0 4px 6px rgba(0,0,0,.05),0 1px 3px rgba(0,0,0,.1);--askany-transition:all 0.3s ease}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#ceccfc;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#ceccfc}*{scrollbar-color:#ceccfc #f1f1f1;scrollbar-width:thin}.wrap,.wrap.askany-qa-management{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;margin:20px auto;max-width:1200px}.wrap h1{align-items:center;border-bottom:1px solid var(--askany-gray-light);color:var(--askany-dark);display:flex;font-size:26px;font-weight:600;margin-bottom:1.5rem;padding-bottom:.75rem}.wrap h1:before{background-color:var(--askany-primary);content:"";display:inline-block;height:24px;margin-right:10px;mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3C/svg%3E");mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:24px}.card{background-color:#fff;border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-bottom:2rem;max-width:none;min-width:none;padding:1.5rem;transition:var(--askany-transition)}.card:hover{box-shadow:0 10px 15px rgba(0,0,0,.05),0 5px 10px rgba(0,0,0,.05)}.card h2{align-items:center;color:var(--askany-dark);display:flex;font-size:20px;font-weight:600;margin-bottom:1.25rem;margin-top:0}.askany-admin-stats{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:2rem}.askany-stat-box{background:linear-gradient(90deg,rgba(67,97,238,.05),rgba(114,9,183,.05));border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);flex:1;min-width:250px;padding:1.5rem;transition:var(--askany-transition)}.askany-stat-box:hover{box-shadow:0 8px 15px rgba(0,0,0,.1);transform:translateY(-5px)}.askany-stat-box h3{border-bottom:1px solid var(--askany-gray-light);color:var(--askany-primary);font-size:18px;margin-bottom:1rem;margin-top:0;padding-bottom:.75rem}.askany-stat-box p{align-items:center;display:flex;justify-content:space-between;margin:.5rem 0}.askany-stat-box strong{background-color:var(--askany-light);border-radius:20px;color:var(--askany-primary);font-weight:600;padding:2px 12px;transition:var(--askany-transition)}.askany-stat-box:hover strong{background-color:var(--askany-primary);color:#fff}.api-keys-url span{background-color:var(--askany-gray-light);border-radius:var(--askany-border-radius);cursor:pointer;display:inline-block;font-size:14px;margin:5px 0;padding:6px 12px;position:relative;transition:var(--askany-transition)}.api-keys-url span:hover{background-color:var(--askany-primary);color:#fff}.api-keys-url span:hover:after{background-color:var(--askany-dark);border-radius:4px;color:#fff;content:"Click to copy";font-size:12px;left:50%;padding:5px 10px;position:absolute;top:-30px;transform:translateX(-50%);white-space:nowrap}.form-field{margin-bottom:1.5rem}.form-field label{color:var(--askany-dark);display:block;font-weight:600;margin-bottom:.5rem}.form-field input[type=text],.form-field textarea,.form-table input[type=password],.form-table input[type=text],.form-table input[type=url],.form-table select,input.regular-text,select.regular-text{border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);padding:10px 15px;transition:var(--askany-transition);width:100%}.form-field input[type=text]:focus,.form-field textarea:focus,.form-table input[type=password]:focus,.form-table input[type=text]:focus,.form-table input[type=url]:focus,.form-table select:focus,input.regular-text:focus,select.regular-text:focus{border-color:var(--askany-primary);box-shadow:0 0 0 3px rgba(67,97,238,.3);outline:none}.form-field textarea{min-height:120px}.form-field .description{color:var(--askany-gray);font-size:13px;margin-top:5px}.button{background-color:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-gray);cursor:pointer;font-weight:500;padding:8px 16px;transition:var(--askany-transition)}.button:hover{background-color:var(--askany-gray-light);color:var(--askany-dark)}.button-primary{background-color:var(--askany-primary);border-color:var(--askany-primary)}.button-primary:hover{background-color:var(--askany-primary-dark);border-color:var(--askany-primary-dark);color:#fff}.button-link-delete{background-color:transparent;border-color:transparent;color:var(--askany-danger)}.button-link-delete:hover{background-color:rgba(239,71,111,.1);color:var(--askany-danger)}.button-small{font-size:12px;padding:4px 10px}button#upload-avatar-button{margin-top:10px}.askany-avatar-upload{display:flex;gap:10px;justify-content:center;text-align:center}.form-actions{display:flex;gap:10px;margin-top:1rem}.askany-admin-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:1.5rem}.wp-list-table{border:1px solid var(--askany-gray-light);border-collapse:separate;border-spacing:0;margin-top:1.5rem}.wp-list-table td,.wp-list-table th{border-bottom:1px solid var(--askany-gray-light);padding:12px 15px;text-align:left}.wp-list-table th{background-color:var(--askany-gray-light);color:var(--askany-dark)}.wp-list-table tr:last-child td{border-bottom:none}.wp-list-table tr:hover td{background-color:rgba(67,97,238,.05)}.progress-bar{background-color:var(--askany-gray-light);border-radius:5px;height:10px;margin:10px 0;overflow:hidden}.progress-fill{background-color:var(--askany-primary);height:100%;transition:width .3s ease;width:0}.askany-admin-footer{background-color:#fff;border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-top:2rem;padding:1.5rem}.askany-admin-footer h3{color:var(--askany-dark);margin-top:0}.askany-admin-footer code{background-color:var(--askany-gray-light);border-radius:var(--askany-border-radius);cursor:pointer;display:inline-block;font-size:14px;margin:5px 0;padding:6px 12px;position:relative;transition:var(--askany-transition)}.askany-admin-footer code:hover{background-color:var(--askany-primary);color:#fff}.askany-admin-footer code:hover:after{background-color:var(--askany-dark);border-radius:4px;color:#fff;content:"Click to copy";font-size:12px;left:50%;padding:5px 10px;position:absolute;top:-30px;transform:translateX(-50%);white-space:nowrap}.askany-admin-footer ul{list-style-type:none;margin-top:10px;padding-left:10px}.askany-admin-footer li{align-items:baseline;display:flex;margin-bottom:5px}.askany-admin-footer li:before{color:var(--askany-primary);content:"•";display:inline-block;font-weight:700;margin-left:-1em;width:1em}.form-table{border-collapse:collapse;width:100%}.form-table td,.form-table th{border-bottom:1px solid var(--askany-gray-light);padding:15px 10px;text-align:left;vertical-align:top}.form-table th{font-weight:600;width:200px}.form-table tr:last-child td,.form-table tr:last-child th{border-bottom:none}input[type=checkbox]{-webkit-appearance:none;appearance:none;background-color:#fff;border:1px solid var(--askany-gray);border-radius:.15em;color:currentColor;cursor:pointer;display:inline-grid;font:inherit;height:1.15em;margin:0 8px 0 0;place-content:center;transform:translateY(.2em);width:1.15em}input[type=checkbox]:before{box-shadow:inset 1em 1em var(--askany-primary);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%);content:"";height:.65em;transform:scale(0);transform-origin:center;transition:transform .12s ease-in-out;width:.65em}input[type=checkbox]:checked:before{transform:scale(1)}input[type=checkbox]:focus{outline:max(2px,.15em) solid rgba(67,97,238,.5);outline-offset:max(2px,.15em)}.avatar-preview img{border:2px solid var(--askany-primary);border-radius:50%;transition:var(--askany-transition)}.avatar-preview img:hover{transform:scale(1.1)}.delete-qa,.edit-qa{margin-right:5px}.edit-qa:before{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4z'/%3E%3C/svg%3E")}.delete-qa:before,.edit-qa:before{background-color:currentColor;content:"";display:inline-block;height:12px;margin-right:5px;mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:12px}.delete-qa:before{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6'/%3E%3C/svg%3E")}@media screen and (max-width:782px){.askany-admin-stats{flex-direction:column}.form-table,.form-table tbody,.form-table td,.form-table th,.form-table tr{display:block;width:100%}.form-table th{padding-bottom:0}.form-table td{margin-bottom:15px;padding-top:5px}.wp-list-table{display:block;overflow-x:auto}}.card{animation:fadeIn .5s ease-out}.askany-stat-box:hover strong{animation:pulse .5s infinite}.button.loading{color:transparent!important;position:relative}.button.loading:after{animation:spin .8s linear infinite;border:2px solid hsla(0,0%,100%,.5);border-radius:50%;border-top-color:#fff;content:"";height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.askany-notification{align-items:center;background-color:#fff;border-radius:var(--askany-border-radius);box-shadow:0 5px 15px rgba(0,0,0,.1);display:flex;padding:15px 20px;position:fixed;right:20px;top:60px;transform:translateX(120%);transition:transform .3s ease;z-index:9999}.askany-notification.show{transform:translateX(0)}.askany-notification:before{background-color:var(--askany-success);content:"";height:20px;margin-right:10px;mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpath d='M22 4 12 14.01l-3-3'/%3E%3C/svg%3E");mask-position:center;mask-repeat:no-repeat;mask-size:contain;width:20px}.askany-notification.error:before{background-color:var(--askany-danger);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4M12 16h.01'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){body.wp-admin{--askany-light:#2a2e33;--askany-dark:#e9ecef;--askany-gray-light:#3a3f44}.askany-admin-footer,.askany-notification,.card{background-color:#2a2e33;color:#e9ecef}.wp-list-table th{background-color:#3a3f44;color:#e9ecef}.button,.form-field input[type=text],.form-field textarea,.form-table input[type=password],.form-table input[type=text],.form-table input[type=url],.form-table select,input.regular-text,select.regular-text{background-color:#3a3f44;border-color:#4d545c;color:#e9ecef}.button:hover{background-color:#4d545c;color:#fff}}.askany-admin-container{max-width:1200px}.askany-admin-section{background:#fff;border:1px solid #ccd0d4;border-radius:4px;margin-bottom:20px;padding:20px}.askany-admin-section h2{border-bottom:1px solid #eee;margin-top:0;padding-bottom:10px}.askany-section-header{align-items:center;background:#f9f9f9;border-radius:4px;display:flex;gap:10px;margin-bottom:20px;padding:15px}.askany-faq-item,.askany-link-item{background:#fafafa;border:1px solid #ddd;border-radius:4px;margin-bottom:10px}.askany-faq-header,.askany-link-header{align-items:center;display:flex;justify-content:space-between;padding:15px}.askany-faq-controls,.askany-link-controls{align-items:center;display:flex;flex:1;gap:10px}.askany-faq-question{font-weight:600}.askany-link-info{display:flex;flex-direction:column;gap:4px}.askany-link-title{font-weight:600}.askany-link-url{color:#666;font-size:12px}.askany-link-description{color:#666;font-size:13px;padding:0 15px 15px}.askany-faq-actions,.askany-link-actions{display:flex;gap:5px}.askany-no-items{color:#666;font-style:italic;padding:40px 20px;text-align:center}.askany-form-group{margin-bottom:20px}.askany-form-group label{font-weight:600;margin-bottom:5px}.askany-switch{display:inline-block;height:24px;position:relative;width:50px}.askany-switch input{height:0;opacity:0;width:0}.askany-slider{background-color:#ccc;border-radius:24px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s}.askany-slider:before{background-color:#fff;border-radius:50%;bottom:3px;content:"";height:18px;left:3px;position:absolute;transition:.4s;width:18px}input:checked+.askany-slider{background-color:#2196f3}input:checked+.askany-slider:before{transform:translateX(26px)}.askany-media-upload{align-items:center;display:flex;gap:10px}.askany-media-preview img{border:1px solid #ddd;border-radius:4px}.askany-pro-badge{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.5px;margin-left:10px;opacity:0;padding:4px 8px;text-transform:uppercase;transition:opacity .3s ease,transform .2s ease;vertical-align:middle}.askany-admin-section.askany-pro-locked:hover .askany-pro-badge,.askany-admin-section:hover .askany-pro-badge,.askany-pro-locked:hover .askany-pro-badge{opacity:1}.askany-pro-tag{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:10px;color:#fff;display:inline-block;font-size:10px;font-weight:600;letter-spacing:.5px;margin-left:8px;opacity:0;padding:3px 8px;text-transform:uppercase;transition:opacity .3s ease,transform .2s ease;vertical-align:middle}.askany-admin-section.askany-pro-locked:hover .askany-pro-tag,.askany-admin-section:hover .askany-pro-tag,.askany-pro-locked:hover .askany-pro-tag{opacity:1}.askany-admin-section.askany-pro-locked{position:relative}.askany-pro-overlay{align-items:center;backdrop-filter:blur(3px);background:hsla(0,0%,100%,.95);border-radius:4px;display:flex;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;top:0;transition:opacity .3s ease;width:100%;z-index:10}.askany-admin-section.askany-pro-locked:hover .askany-pro-overlay{opacity:1;pointer-events:all}.askany-pro-locked-form{opacity:.5;pointer-events:none}.askany-pro-notice-small{align-items:center;display:flex;gap:15px;padding:20px;text-align:left}.askany-pro-notice-icon{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;box-shadow:0 4px 12px rgba(102,126,234,.3);display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.askany-pro-notice-icon svg{stroke:#fff}.askany-pro-notice-content h4{color:#2d3748;font-size:16px;font-weight:600;margin:0 0 8px}.askany-pro-notice-content p{color:#4a5568;font-size:13px;line-height:1.5;margin:0 0 12px}.askany-open-pro-modal{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2)!important;border-color:#667eea!important;border-radius:6px!important;color:#fff!important;display:inline-flex;font-size:12px!important;font-weight:600;height:auto!important;padding:6px 16px!important;transition:all .3s ease}.askany-open-pro-modal:hover{box-shadow:0 4px 12px rgba(102,126,234,.4)!important;transform:translateY(-1px)}.askany-admin-page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;margin:0 auto;max-width:1400px;padding:20px}.askany-admin-page h1{align-items:center;color:var(--askany-dark);display:flex;font-size:32px;font-weight:700;gap:15px;margin:0 0 10px}.askany-admin-page h1:before{content:"📊";font-size:36px}.askany-admin-page .description{background:linear-gradient(135deg,rgba(67,97,238,.05),rgba(247,37,133,.03));border-left:4px solid var(--askany-primary);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-size:16px;margin-bottom:30px;padding:15px}.askany-stats-overview{margin-bottom:40px}.askany-stats-cards{display:grid;gap:25px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:30px}.askany-stat-card{background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(248,249,250,.98));border:1px solid rgba(67,97,238,.1);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);gap:20px;padding:30px;transition:var(--askany-transition)}.askany-stat-card:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-secondary),var(--askany-tertiary));height:4px;left:0;right:0}.askany-stat-card:hover{box-shadow:0 8px 25px rgba(0,0,0,.15);transform:translateY(-5px)}.askany-stat-card:first-child:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-tertiary))}.askany-stat-card:nth-child(2):before{background:linear-gradient(90deg,var(--askany-success),var(--askany-primary))}.askany-stat-card:nth-child(3):before{background:linear-gradient(90deg,var(--askany-secondary),var(--askany-warning))}.askany-stat-card:nth-child(4):before{background:linear-gradient(90deg,var(--askany-warning),var(--askany-danger))}.stat-icon{align-items:center;background:linear-gradient(135deg,var(--askany-primary),var(--askany-primary-dark));border-radius:50%;box-shadow:0 4px 15px rgba(67,97,238,.3);color:#fff;display:flex;flex-shrink:0;font-size:24px;height:60px;justify-content:center;width:60px}.askany-stat-card:nth-child(2) .stat-icon{background:linear-gradient(135deg,var(--askany-success),#04b082)}.askany-stat-card:nth-child(3) .stat-icon{background:linear-gradient(135deg,var(--askany-secondary),#d6336c)}.askany-stat-card:nth-child(4) .stat-icon{background:linear-gradient(135deg,var(--askany-warning),#f7b731)}.stat-content h3{color:var(--askany-gray);font-size:14px;font-weight:600;letter-spacing:1px;margin:0 0 10px;text-transform:uppercase}.stat-number{color:var(--askany-dark);font-size:36px;font-weight:800;line-height:1;margin-bottom:5px}.stat-label{color:var(--askany-gray);font-size:14px;margin-bottom:15px}.stat-meta{display:flex;flex-wrap:wrap;font-size:12px;gap:12px}.stat-meta span{border-radius:12px;font-weight:600;letter-spacing:.5px;padding:4px 8px;text-transform:uppercase}.success-rate{background:rgba(6,214,160,.1);border:1px solid rgba(6,214,160,.2);color:var(--askany-success)}.fallback-rate{background:rgba(255,209,102,.1);border:1px solid rgba(255,209,102,.2);color:var(--askany-warning)}.response-time{background:rgba(67,97,238,.1);border:1px solid rgba(67,97,238,.2);color:var(--askany-primary)}.askany-charts-section{margin-bottom:40px}.askany-chart-container{background:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-bottom:30px;padding:30px;position:relative}.askany-chart-container:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-secondary));border-radius:var(--askany-border-radius) var(--askany-border-radius) 0 0;content:"";height:3px;left:0;position:absolute;right:0;top:0}.chart-header{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:25px}.chart-header h2,.chart-header h3{color:var(--askany-dark);font-weight:700;margin:0}.chart-header h2{font-size:24px}.chart-header h3{font-size:20px}.chart-legend{display:flex;flex-wrap:wrap;gap:20px}.legend-item{align-items:center;color:var(--askany-dark);display:flex;font-size:14px;gap:8px}.legend-color{border-radius:2px;height:12px;width:12px}.legend-item.success .legend-color{background:var(--askany-success)}.legend-item.failed .legend-color{background:var(--askany-danger)}.legend-item.response-time .legend-color{background:var(--askany-primary)}.askany-chart-row{display:grid;gap:30px;grid-template-columns:1fr 1fr}.half-width{margin-bottom:0}.provider-stats,.request-type-stats{border-top:2px solid var(--askany-gray-light);margin-top:20px;padding-top:20px}.provider-stat,.request-type-stat{align-items:center;background:rgba(248,249,250,.8);border-left:4px solid var(--askany-primary);border-radius:var(--askany-border-radius);display:flex;justify-content:space-between;margin-bottom:8px;padding:12px;transition:var(--askany-transition)}.provider-stat:hover,.request-type-stat:hover{background:rgba(67,97,238,.05);transform:translateX(5px)}.provider-name,.type-name{color:var(--askany-dark);font-weight:600}.provider-requests,.type-requests{color:var(--askany-gray);font-size:14px}.provider-success-rate,.type-success-rate{background:var(--askany-success);border-radius:12px;color:#fff;font-size:12px;font-weight:600;padding:4px 8px}.askany-detailed-stats{margin-bottom:40px}.askany-detailed-stats h2{align-items:center;color:var(--askany-dark);display:flex;font-size:24px;font-weight:700;gap:10px;margin-bottom:20px}.askany-detailed-stats h2:before{content:"📈";font-size:28px}.stats-table-container{background:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);overflow:hidden}.stats-table-container .wp-list-table{border:none;box-shadow:none;margin:0}.stats-table-container .wp-list-table thead{background:linear-gradient(135deg,var(--askany-dark) 0,#495057 100%)}.stats-table-container .wp-list-table thead th{color:#fff!important;font-size:12px;font-weight:600;letter-spacing:.5px;padding:20px 15px!important;text-transform:uppercase}.stats-table-container .wp-list-table tbody td{padding:18px 15px!important;vertical-align:middle}.success-count{background:rgba(6,214,160,.1);color:var(--askany-success)}.error-count,.success-count{border-radius:20px;font-size:14px;font-weight:600;padding:6px 12px}.error-count{background:rgba(239,71,111,.1);color:var(--askany-danger)}.fallback-count{background:rgba(255,209,102,.1);border-radius:20px;color:var(--askany-warning);font-size:14px;font-weight:600;padding:6px 12px}.askany-recent-errors{background:#fff;border:1px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);padding:30px;position:relative}.askany-recent-errors:before{background:linear-gradient(90deg,var(--askany-danger),var(--askany-warning));border-radius:var(--askany-border-radius) var(--askany-border-radius) 0 0;content:"";height:3px;left:0;position:absolute;right:0;top:0}.section-header{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:25px}.section-header h2{align-items:center;color:var(--askany-dark);display:flex;font-size:24px;font-weight:700;gap:10px;margin:0}.section-header h2:before{content:"⚠️";font-size:28px}.section-actions{display:flex;flex-wrap:wrap;gap:10px}.section-actions .button{border-radius:var(--askany-border-radius);font-size:12px;font-weight:600;letter-spacing:.5px;padding:8px 16px;text-transform:uppercase;transition:var(--askany-transition)}.section-actions .button-secondary{background:linear-gradient(135deg,var(--askany-warning) 0,#f7b731 100%);border:none;color:#fff}.section-actions .button-link-delete{background:linear-gradient(135deg,var(--askany-danger) 0,#d63384 100%);border:none;color:#fff}.errors-table-container{background:#fff;border-radius:var(--askany-border-radius);box-shadow:0 2px 8px rgba(0,0,0,.1);margin-bottom:15px;overflow:hidden}.errors-table-container .wp-list-table{border:none;box-shadow:none;margin:0}.provider-badge{border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.5px;padding:4px 10px;text-transform:uppercase}.provider-badge.openai{background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.2);color:#10b981}.provider-badge.anthropic{background:rgba(139,69,19,.1);border:1px solid rgba(139,69,19,.2);color:#8b4513}.provider-badge.google{background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.2);color:#3b82f6}.error-message{background:rgba(239,71,111,.05);border-left:3px solid var(--askany-danger);color:var(--askany-danger);font-family:Courier New,monospace;font-size:12px}.error-message,.query-text{border-radius:4px;padding:8px}.query-text{background:rgba(248,249,250,.8);color:var(--askany-gray);font-style:italic}.no-errors-message{background:linear-gradient(135deg,rgba(6,214,160,.05),rgba(16,185,129,.03));border:2px dashed rgba(6,214,160,.2);border-radius:var(--askany-border-radius);padding:40px;text-align:center}.no-errors-message p{align-items:center;color:var(--askany-success);display:flex;font-size:16px;font-weight:600;gap:10px;justify-content:center;margin:0}.no-errors-message p:before{content:"✅";font-size:24px}.no-data{background:rgba(248,249,250,.8);border:2px dashed var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-style:italic;padding:20px;text-align:center}.errors-filters label{color:var(--askany-dark);font-weight:600}.errors-filters select{border:2px solid var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-dark);transition:var(--askany-transition)}.errors-filters select:focus{border-color:var(--askany-primary);box-shadow:0 0 0 3px rgba(67,97,238,.1);outline:none}@media (max-width:1200px){.askany-chart-row{grid-template-columns:1fr}}@media (max-width:768px){.askany-admin-page{padding:15px}.askany-stats-cards{gap:20px;grid-template-columns:1fr}.askany-stat-card{flex-direction:column;padding:20px;text-align:center}.stat-icon{margin-bottom:15px}.chart-header{align-items:flex-start;flex-direction:column}.chart-legend{justify-content:center}.section-header{align-items:flex-start;flex-direction:column}.section-actions{justify-content:center;width:100%}.errors-filters{align-items:flex-start;flex-direction:column}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.askany-stat-card{animation:fadeInUp .6s ease-out}.askany-stat-card:first-child{animation-delay:.1s}.askany-stat-card:nth-child(2){animation-delay:.2s}.askany-stat-card:nth-child(3){animation-delay:.3s}.askany-stat-card:nth-child(4){animation-delay:.4s}.askany-chart-container{animation:fadeInUp .6s ease-out .5s both}.askany-detailed-stats{animation:fadeInUp .6s ease-out .6s both}.askany-recent-errors{animation:fadeInUp .6s ease-out .7s both}.askany-chat-container{backdrop-filter:blur(10px);background:linear-gradient(135deg,#667eea,#764ba2);border:1px solid hsla(0,0%,100%,.2);border-radius:16px;box-shadow:0 20px 40px rgba(0,0,0,.1),0 8px 20px rgba(0,0,0,.06);display:flex;height:75vh;overflow:hidden;position:relative}.askany-chat-container:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.4),transparent);content:"";height:1px;left:0;position:absolute;right:0;top:0}.askany-chat-sidebar{backdrop-filter:blur(20px);background:hsla(0,0%,100%,.95);border-right:1px solid rgba(0,0,0,.08);display:flex;flex-direction:column;position:relative;width:320px}.askany-chat-sidebar:after{background:linear-gradient(180deg,transparent,rgba(0,0,0,.1),transparent);bottom:0;content:"";position:absolute;right:0;top:0;width:1px}.askany-sidebar-header{align-items:center;background:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));border-bottom:1px solid rgba(0,0,0,.08);display:flex;justify-content:space-between;padding:20px;position:relative}.askany-sidebar-header h3{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;font-size:18px;font-weight:700;margin:0;-webkit-text-fill-color:transparent;background-clip:text}.askany-sidebar-header .button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:25px;box-shadow:0 4px 12px rgba(102,126,234,.3);color:#fff;font-size:12px;font-weight:600;letter-spacing:.5px;padding:8px 16px;text-transform:uppercase;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-sidebar-header .button:hover{background:linear-gradient(135deg,#5a6fd8,#6b42a0);box-shadow:0 8px 20px rgba(102,126,234,.4);transform:translateY(-2px)}.askany-sessions-list{flex:1;overflow-y:auto;padding:8px}.askany-sessions-list::-webkit-scrollbar{width:6px}.askany-sessions-list::-webkit-scrollbar-track{background:rgba(0,0,0,.05);border-radius:3px}.askany-sessions-list::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:3px;transition:all .3s ease}.askany-sessions-list::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#5a6fd8,#6b42a0)}.askany-session-item{align-items:center;background:hsla(0,0%,100%,.6);border:1px solid hsla(0,0%,100%,.3);border-radius:12px;cursor:pointer;display:flex;justify-content:space-between;margin:4px 8px;overflow:hidden;padding:16px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-session-item:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.6),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.askany-session-item:hover{background:hsla(0,0%,100%,.8);border-color:rgba(102,126,234,.3);box-shadow:0 8px 20px rgba(0,0,0,.1);transform:translateY(-2px)}.askany-session-item:hover:before{left:100%}.askany-session-item.active{background:linear-gradient(135deg,rgba(102,126,234,.15),rgba(118,75,162,.15));border:2px solid rgba(102,126,234,.4);box-shadow:0 12px 24px rgba(102,126,234,.2);transform:translateY(-1px)}.askany-session-user{color:#2d3748;font-size:15px;font-weight:700;margin-bottom:6px}.askany-session-meta{color:#718096;font-size:12px;font-weight:500;margin-bottom:10px}.askany-session-meta span{align-items:center;display:inline-flex;gap:4px;margin-right:12px}.askany-status-badge{font-size:10px;font-weight:700;gap:4px;padding:4px 10px;transition:all .3s ease}.askany-status-badge.ai{background:linear-gradient(135deg,#48bb78,#38a169);box-shadow:0 4px 12px rgba(72,187,120,.3);color:#fff}.askany-status-badge.agent{background:linear-gradient(135deg,#4299e1,#3182ce);box-shadow:0 4px 12px rgba(66,153,225,.3)}.askany-chat-main{backdrop-filter:blur(20px);background:hsla(0,0%,100%,.95);display:flex;flex:1;flex-direction:column}.askany-chat-header{background:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));border-bottom:1px solid rgba(0,0,0,.08);padding:20px;position:relative}.askany-chat-header:after{background:linear-gradient(90deg,transparent,rgba(102,126,234,.3),transparent);bottom:0;content:"";height:1px;left:20px;position:absolute;right:20px}.askany-chat-user-info h3{color:#2d3748;font-size:20px;font-weight:700;margin:0}.askany-chat-controls{align-items:center;display:flex;gap:12px;justify-content:right}.askany-chat-controls select{border:2px solid rgba(102,126,234,.2);border-radius:25px;color:#2d3748;font-weight:600;outline:none;padding:8px 24px;transition:all .3s ease}.askany-chat-controls select:focus{border-color:rgba(102,126,234,.5);box-shadow:0 0 0 3px rgba(102,126,234,.1)}.askany-chat-controls .button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:25px;box-shadow:0 4px 12px rgba(102,126,234,.3);color:#fff;font-size:13px;font-weight:600;padding:10px 20px;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-chat-controls .button:hover{box-shadow:0 8px 20px rgba(102,126,234,.4);transform:translateY(-2px)}.askany-chat-controls .button-secondary{background:linear-gradient(135deg,#a0aec0,#718096);box-shadow:0 4px 12px rgba(160,174,192,.3)}.askany-chat-messages{background:linear-gradient(180deg,rgba(247,250,252,.8),hsla(0,0%,100%,.9));flex:1;overflow-y:auto;padding:24px;position:relative}.askany-chat-messages::-webkit-scrollbar{width:8px}.askany-chat-messages::-webkit-scrollbar-track{background:rgba(0,0,0,.05);border-radius:4px}.askany-chat-messages::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:4px}.askany-message{animation:askany-message-slide-in .4s cubic-bezier(.4,0,.2,1);margin-bottom:20px}@keyframes askany-message-slide-in{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.askany-message.agent,.askany-message.ai{justify-content:flex-start}.askany-message-bubble{backdrop-filter:blur(10px);border-radius:20px;box-shadow:0 4px 12px rgba(0,0,0,.1);max-width:75%;padding:14px 18px;position:relative;transition:all .3s ease}.askany-message-bubble:hover{box-shadow:0 8px 20px rgba(0,0,0,.15);transform:translateY(-1px)}.askany-message.user .askany-message-bubble{background:linear-gradient(135deg,#667eea,#764ba2);border-bottom-right-radius:6px}.askany-message.agent .askany-message-bubble{background:linear-gradient(135deg,#48bb78,#38a169);border-bottom-left-radius:6px;color:#fff}.askany-message.ai .askany-message-bubble{background:hsla(0,0%,100%,.95);border:1px solid rgba(102,126,234,.2);border-bottom-left-radius:6px;color:#2d3748}.askany-message-content{font-weight:500}.askany-message-meta{font-size:10px;font-weight:600;letter-spacing:.5px;margin-top:6px;opacity:.8;text-transform:uppercase}.askany-chat-input{background:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));border-top:1px solid rgba(0,0,0,.08);padding:20px;position:relative}.askany-chat-input:before{background:linear-gradient(90deg,transparent,rgba(102,126,234,.3),transparent);content:"";height:1px;left:20px;position:absolute;right:20px;top:0}.askany-input-container{align-items:flex-end;backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:2px solid rgba(102,126,234,.2);border-radius:25px;display:flex;gap:12px;padding:8px;transition:all .3s ease}.askany-input-container:focus-within{border-color:rgba(102,126,234,.5);box-shadow:0 0 0 4px rgba(102,126,234,.1);transform:translateY(-1px)}.askany-input-container textarea{background:transparent;border:none;border-radius:18px;color:#2d3748;flex:1;font-weight:500;line-height:1.5;max-height:120px;min-height:40px;outline:none;padding:8px 12px;resize:none}.askany-input-container textarea::placeholder{color:#a0aec0;font-weight:500}.askany-input-container .button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:20px;box-shadow:0 4px 12px rgba(102,126,234,.3);color:#fff;font-size:14px;font-weight:700;letter-spacing:.5px;padding:12px 24px;text-transform:uppercase;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-input-container .button:hover{background:linear-gradient(135deg,#5a6fd8,#6b42a0);box-shadow:0 8px 20px rgba(102,126,234,.4);transform:translateY(-2px)}.askany-input-container .button:active{transform:translateY(0)}.askany-session-actions{display:flex;gap:6px;opacity:0;transform:translateX(10px);transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-session-item:hover .askany-session-actions{opacity:1;transform:translateX(0)}.askany-action-btn{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:1px solid rgba(0,0,0,.1);border-radius:8px;cursor:pointer;display:flex;justify-content:center;padding:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.askany-clear-history-btn{border-color:hsla(0,88%,68%,.2);color:#f56565}.askany-clear-history-btn:hover{background:linear-gradient(135deg,#fed7d7,#feb2b2);box-shadow:0 4px 12px hsla(0,88%,68%,.3);color:#c53030;transform:translateY(-2px)}.askany-delete-session-btn{border-color:rgba(229,62,62,.2);color:#e53e3e}.askany-delete-session-btn:hover{background:linear-gradient(135deg,#fed7d7,#feb2b2);box-shadow:0 4px 12px rgba(229,62,62,.3);color:#9b2c2c;transform:translateY(-2px)}.askany-no-chat-selected,.askany-no-messages,.askany-no-sessions{backdrop-filter:blur(10px);background:hsla(0,0%,100%,.6);border:1px solid hsla(0,0%,100%,.3);border-radius:12px;color:#718096;margin:20px;padding:40px 20px;text-align:center}.askany-no-chat-selected p,.askany-no-messages p,.askany-no-sessions p{font-size:16px;font-weight:600;margin:0}.askany-typing-indicator{animation:askany-fade-in .4s cubic-bezier(.4,0,.2,1);display:flex;justify-content:flex-start;margin-bottom:20px}.askany-typing-indicator .askany-message-bubble{background:hsla(0,0%,100%,.95);border:1px solid rgba(102,126,234,.2);padding:12px 16px}.askany-typing-content{align-items:center;display:flex;gap:12px}.askany-typing-text{color:#718096;font-size:12px;font-style:italic;font-weight:600}.askany-typing-dots{align-items:center;display:flex;gap:4px}.askany-typing-dot{animation:askany-typing-bounce 1.4s ease-in-out infinite;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;height:6px;width:6px}.askany-stats-container{backdrop-filter:blur(20px);background:linear-gradient(90deg,rgba(67,97,238,.05),rgba(114,9,183,.05));border:1px solid hsla(0,0%,100%,.3);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.1);margin-top:15px;overflow:hidden;padding:5px;position:relative}.askany-stats-container:before{background:linear-gradient(90deg,transparent,rgba(102,126,234,.4),transparent);content:"";height:1px;left:0;position:absolute;right:0;top:0}.askany-stats-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:10px}.askany-stat-card{backdrop-filter:blur(15px);background:linear-gradient(90deg,rgba(67,97,238,.05),rgba(114,9,183,.05));border:1px solid hsla(0,0%,100%,.4);border-radius:16px;cursor:default;gap:16px;overflow:hidden;padding:5px;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.askany-stat-card:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.7),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s cubic-bezier(.4,0,.2,1);width:100%}.askany-stat-card:hover{background:hsla(0,0%,100%,.95);border-color:rgba(102,126,234,.3);box-shadow:0 16px 40px rgba(0,0,0,.12);transform:translateY(-4px)}.askany-stat-card:hover:before{left:100%}.askany-stat-icon{background:linear-gradient(135deg,#f7fafc,#edf2f7);border:2px solid rgba(160,174,192,.2);border-radius:16px;height:40px;overflow:hidden;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1);width:40px}.askany-stat-icon svg{color:#fff;height:28px;transition:all .4s ease;width:28px;z-index:2}.askany-stat-icon.active{background:linear-gradient(135deg,rgba(72,187,120,.15),rgba(56,161,105,.15));border-color:rgba(72,187,120,.3)}.askany-stat-icon.active svg{color:#38a169}.askany-stat-card:hover .askany-stat-icon.active{background:linear-gradient(135deg,#48bb78,#38a169);box-shadow:0 8px 20px rgba(72,187,120,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon.active svg{color:#fff;transform:scale(1.1)}.askany-stat-icon.ai{background:linear-gradient(135deg,rgba(102,126,234,.15),rgba(118,75,162,.15));border-color:rgba(102,126,234,.3)}.askany-stat-icon.ai svg{color:#667eea}.askany-stat-card:hover .askany-stat-icon.ai{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 8px 20px rgba(102,126,234,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon.ai svg{color:#fff;transform:scale(1.1)}.askany-stat-icon.agent{background:linear-gradient(135deg,rgba(66,153,225,.15),rgba(49,130,206,.15));border-color:rgba(66,153,225,.3)}.askany-stat-icon.agent svg{color:#4299e1}.askany-stat-card:hover .askany-stat-icon.agent{background:linear-gradient(135deg,#4299e1,#3182ce);box-shadow:0 8px 20px rgba(66,153,225,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon.agent svg{color:#fff;transform:scale(1.1)}.askany-stat-card:hover .askany-stat-icon:not(.active):not(.ai):not(.agent){background:linear-gradient(135deg,#e2e8f0,#cbd5e0);border-color:rgba(160,174,192,.4);transform:scale(1.05)}.askany-stat-card:hover .askany-stat-icon:not(.active):not(.ai):not(.agent) svg{color:#4a5568;transform:scale(1.1)}.askany-stat-content{min-width:0}.askany-stat-number{background:linear-gradient(135deg,#2d3748,#4a5568);-webkit-background-clip:text;font-size:25px;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:6px;transition:all .3s ease}.askany-stat-card:hover .askany-stat-number{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;transform:scale(1.05)}.askany-stat-label{color:#718096;font-size:12px;letter-spacing:.8px;line-height:1.2;transition:all .3s ease}.askany-stat-card:hover .askany-stat-label{color:#4a5568}@keyframes askany-stat-pulse{0%{box-shadow:0 0 0 0 rgba(72,187,120,.7)}70%{box-shadow:0 0 0 10px rgba(72,187,120,0)}to{box-shadow:0 0 0 0 rgba(72,187,120,0)}}.askany-stat-icon.active{animation:askany-stat-pulse 2s infinite}@media (max-width:1024px){.askany-stats-grid{gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.askany-stat-card{gap:14px;padding:20px}.askany-stat-icon{height:50px;width:50px}.askany-stat-icon svg{height:24px;width:24px}.askany-stat-number{font-size:28px}}@media (max-width:768px){.askany-stats-grid{gap:12px;grid-template-columns:repeat(2,1fr)}.askany-stat-card{flex-direction:column;gap:12px;padding:16px;text-align:center}.askany-stat-number{font-size:24px}.askany-stat-label{font-size:12px}}@keyframes askany-typing-bounce{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1) translateY(-4px)}}@keyframes askany-fade-in{0%{opacity:0;transform:translateY(15px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:768px){.askany-chat-container{flex-direction:column;height:85vh}.askany-chat-sidebar{max-height:40%;width:100%}.askany-session-item{margin:2px 4px;padding:12px}.askany-chat-messages{padding:16px}.askany-message-bubble{max-width:85%}}@media (max-width:480px){.askany-stats-grid{grid-template-columns:1fr}.askany-stat-card{flex-direction:row;text-align:left}}.askany-stats-container{background:#fff;border:1px solid #ccd0d4;border-radius:4px;margin-bottom:20px;padding:20px}.askany-stats-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.askany-stat-card{align-items:center;background:linear-gradient(135deg,#f8f9fa,#fff);border:1px solid #e9ecef;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.05);display:flex;gap:15px;padding:20px;transition:all .3s ease}.askany-stat-card:hover{box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateY(-2px)}.askany-stat-icon{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;color:#fff;display:flex;flex-shrink:0;height:48px;justify-content:center;width:48px}.askany-stat-icon.active{background:linear-gradient(135deg,#4facfe,#00f2fe)}.askany-stat-icon.ai{background:linear-gradient(135deg,#43e97b,#38f9d7)}.askany-stat-icon.agent{background:linear-gradient(135deg,#fa709a,#fee140)}.askany-stat-content{flex:1}.askany-stat-number{color:#2c3e50;font-size:28px;font-weight:700;line-height:1;margin-bottom:4px}.askany-stat-label{color:#6c757d;font-size:13px;font-weight:500;letter-spacing:.5px;text-transform:uppercase}@media (max-width:768px){.askany-stats-grid{gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.askany-stat-card{gap:12px;padding:15px}.askany-stat-icon{height:40px;width:40px}.askany-stat-number{font-size:24px}.askany-stat-label{font-size:12px}}.askany-user-agents-container{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.askany-section{background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(248,249,250,.98));border:1px solid rgba(67,97,238,.1);border-radius:var(--askany-border-radius);box-shadow:var(--askany-box-shadow);margin-bottom:30px;overflow:hidden;padding:30px;position:relative}.askany-section:before{background:linear-gradient(90deg,var(--askany-primary),var(--askany-secondary),var(--askany-tertiary));border-radius:var(--askany-border-radius) var(--askany-border-radius) 0 0;content:"";height:4px;left:0;position:absolute;right:0;top:0}.askany-section h2{align-items:center;color:var(--askany-dark);display:flex;font-size:24px;font-weight:700;gap:10px;margin:0 0 20px}.askany-section h2:before{content:"👥";font-size:28px}.askany-section:first-child h2:before{content:"🔧"}.wp-list-table{border:none!important;border-radius:var(--askany-border-radius);box-shadow:0 2px 10px rgba(0,0,0,.08);margin-top:20px}.wp-list-table thead{background:linear-gradient(135deg,var(--askany-primary) 0,var(--askany-primary-dark) 100%)}.wp-list-table thead th{background:none!important;border:none!important;color:#fff!important;font-size:12px;font-weight:600;letter-spacing:.5px;padding:18px 15px!important;position:relative;text-transform:uppercase}.wp-list-table thead th:after{background:hsla(0,0%,100%,.2);content:"";height:50%;position:absolute;right:0;top:25%;width:1px}.wp-list-table thead th:last-child:after{display:none}.wp-list-table tbody tr{border:none!important;transition:var(--askany-transition)}.wp-list-table tbody tr:hover{background:linear-gradient(135deg,rgba(67,97,238,.02),rgba(247,37,133,.02));box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateY(-1px)}.wp-list-table tbody tr:nth-child(2n){background:rgba(248,249,250,.5)}.wp-list-table tbody tr:nth-child(2n):hover{background:linear-gradient(135deg,rgba(67,97,238,.04),rgba(247,37,133,.04))}.wp-list-table tbody td{border:none!important;border-bottom:1px solid var(--askany-gray-light)!important;color:var(--askany-dark);font-size:14px;padding:20px 15px!important;vertical-align:middle}.wp-list-table tbody tr:last-child td{border-bottom:none!important}.askany-status-badge{align-items:center;border-radius:20px;display:inline-flex;font-size:12px;font-weight:600;letter-spacing:.5px;overflow:hidden;padding:6px 12px;position:relative;text-transform:uppercase}.askany-status-badge:before{background:inherit;bottom:0;content:"";left:0;opacity:.1;position:absolute;right:0;top:0}.askany-status-badge.online{background:var(--askany-success);box-shadow:0 2px 8px rgba(6,214,160,.3);color:#fff}.askany-status-badge.online:after{animation:pulse 2s infinite;content:"●";margin-left:6px}.askany-status-badge.offline{background:var(--askany-gray);box-shadow:0 2px 8px hsla(208,7%,46%,.3);color:#fff}.askany-status-badge.agent{background:var(--askany-primary);box-shadow:0 2px 8px rgba(67,97,238,.3);color:#fff}.askany-status-badge.agent:after{content:"⭐";margin-left:6px}.askany-status-badge.regular{background:var(--askany-gray-light);border:1px solid var(--askany-gray-light);color:var(--askany-dark)}.button{border:none!important;border-radius:var(--askany-border-radius)!important;cursor:pointer!important;font-size:12px!important;font-weight:600!important;letter-spacing:.5px!important;overflow:hidden!important;padding:10px 20px!important;position:relative!important;text-transform:uppercase!important;transition:var(--askany-transition)!important}.button:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.button:hover:before{left:100%}.button-primary{background:linear-gradient(135deg,var(--askany-primary) 0,var(--askany-primary-dark) 100%)!important;box-shadow:0 4px 15px rgba(67,97,238,.3)!important;color:#fff!important}.button-primary:hover{box-shadow:0 6px 20px rgba(67,97,238,.4)!important;transform:translateY(-2px)!important}.button-secondary{background:linear-gradient(135deg,var(--askany-danger) 0,#d63384 100%)!important;box-shadow:0 4px 15px rgba(239,71,111,.3)!important;color:#fff!important}.button-secondary:hover{box-shadow:0 6px 20px rgba(239,71,111,.4)!important;transform:translateY(-2px)!important}.askany-section p:only-child{background:rgba(248,249,250,.8);border:2px dashed var(--askany-gray-light);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-style:italic;margin:0;padding:40px 20px;text-align:center}.askany-section>p:not(:only-child){background:rgba(67,97,238,.05);border-left:4px solid var(--askany-primary);border-radius:var(--askany-border-radius);color:var(--askany-gray);font-size:14px;line-height:1.6;margin-bottom:20px;padding:15px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.askany-section{animation:fadeIn .6s ease-out}.askany-section:nth-child(2){animation-delay:.1s}@media (max-width:768px){.askany-user-agents-container{padding:15px}.askany-section{margin-bottom:20px;padding:20px}.askany-section h2{font-size:20px}.wp-list-table{font-size:12px}.wp-list-table tbody td,.wp-list-table thead th{padding:12px 8px!important}.button{font-size:11px!important;padding:8px 16px!important}.askany-status-badge{font-size:10px;padding:4px 8px}}.askany-loading{opacity:.6;pointer-events:none;position:relative}.askany-loading:after{animation:spin 1s linear infinite;border:2px solid var(--askany-primary);border-radius:50%;border-top:2px solid transparent;content:"";height:20px;left:50%;margin:-10px 0 0 -10px;position:absolute;top:50%;width:20px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.askany-status-badge:focus,.button:focus{outline:2px solid var(--askany-primary);outline-offset:2px}@media (prefers-contrast:high){.askany-section{border:2px solid var(--askany-dark)}.wp-list-table thead{background:var(--askany-dark)!important}.askany-status-badge{border:1px solid}}.askany-modal{align-items:center;backdrop-filter:blur(4px);background-color:rgba(0,0,0,.6);box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding:20px;position:fixed;top:0;transition:all .3s ease;width:100%;z-index:10000}.askany-modal.show,.askany-modal[style*="display: block"]{opacity:1;visibility:visible}.askany-modal-content{background:#fff;border-radius:12px;box-shadow:0 20px 40px rgba(0,0,0,.15);display:flex;flex-direction:column;max-height:90vh;max-width:90vw;overflow:hidden;transform:scale(.9) translateY(20px);transition:transform .3s ease;width:100%}.askany-modal.show .askany-modal-content,.askany-modal[style*="display: block"] .askany-modal-content{transform:scale(1) translateY(0)}.askany-modal-header{align-items:center;background:#f8fafc;border-bottom:1px solid #e5e7eb;display:flex;justify-content:between;padding:24px 30px 20px;position:relative}.askany-modal-header h3{color:#1f2937;flex:1;font-size:1.5rem;font-weight:600;margin:0}.askany-modal-close{align-items:center;background:none;border:none;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;line-height:1;padding:4px;position:absolute;right:24px;top:20px;transition:all .2s ease;width:32px}.askany-modal-close:hover{background-color:#f3f4f6;color:#374151}.askany-modal-body{flex:1;min-height:0;overflow-y:auto;padding:30px}#errors-modal .askany-modal-content{max-width:1200px;width:95%}#errors-modal .askany-modal-body{padding:20px 30px 30px}.errors-filters{align-items:center;background:#f8fafc;border-radius:8px;display:flex;flex-wrap:wrap;gap:20px;margin-bottom:25px;padding:20px}.errors-filters label{color:#374151;font-weight:500;margin-right:8px}.errors-filters select{background:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:14px;min-width:120px;padding:8px 12px}.wp-list-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden;width:100%}.wp-list-table th{background:#f9fafb;border-bottom:1px solid #e5e7eb;color:#374151;font-size:14px;font-weight:600;padding:16px 12px;text-align:left}.wp-list-table td{border-bottom:1px solid #f3f4f6;color:#4b5563;font-size:14px;padding:14px 12px;vertical-align:top}.wp-list-table tbody tr:hover{background-color:#f9fafb}.provider-badge,.status-badge{border-radius:4px;display:inline-block;font-size:12px;font-weight:500;padding:4px 8px;text-transform:uppercase}.provider-badge.openai{background:#e0f2fe;color:#0277bd}.status-badge.api_failed{background:#fef2f2;color:#dc2626}.error-message,.query-text{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tablenav{border-top:1px solid #e5e7eb;margin-top:20px;padding:15px 0}.tablenav-pages{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.displaying-num{color:#6b7280;font-size:14px}.pagination-links{align-items:center;display:flex;gap:5px}.pagination-links .button{background:#fff;border:1px solid #d1d5db;border-radius:4px;color:#374151;font-size:14px;padding:6px 12px;text-decoration:none;transition:all .2s ease}.pagination-links .button:hover:not(.disabled){background:#f3f4f6;border-color:#9ca3af}.pagination-links .button.disabled{cursor:not-allowed;opacity:.5}.current-page{border:1px solid #d1d5db;border-radius:4px;font-size:14px;padding:6px 8px;text-align:center;width:50px}#askany-faq-modal .askany-modal-content{max-width:600px;width:90%}.askany-form-group{margin-bottom:24px}.askany-form-group label{color:#374151;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.askany-form-group input,.askany-form-group textarea{border:1px solid #d1d5db;border-radius:8px;box-sizing:border-box;font-size:14px;padding:12px 16px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.askany-form-group input:focus,.askany-form-group textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1);outline:none}.askany-form-group textarea{font-family:inherit;min-height:120px;resize:vertical}.small-text{max-width:100px}.askany-modal-footer{background:#f8fafc;border-top:1px solid #e5e7eb;display:flex;gap:12px;justify-content:flex-end;padding:20px 30px}.askany-modal-footer .button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s ease}.button-secondary{background:#f3f4f6;border:1px solid #d1d5db;color:#374151}.button-secondary:hover{background:#e5e7eb}.button-primary{background:#3b82f6;color:#fff}.button-primary:hover{background:#2563eb}@media (max-width:768px){.askany-modal{padding:15px}.askany-modal-content{max-height:95vh;max-width:100%}.askany-modal-header{padding:20px 20px 16px}.askany-modal-header h3{font-size:1.25rem;padding-right:40px}.askany-modal-close{right:16px;top:16px}.askany-modal-body{padding:20px}.askany-modal-footer{flex-direction:column-reverse;padding:16px 20px}.askany-modal-footer .button{justify-content:center;width:100%}#errors-modal .askany-modal-content{width:100%}.errors-filters{align-items:stretch;flex-direction:column;gap:15px}.errors-filters>div{align-items:center;display:flex;gap:8px}.wp-list-table{font-size:13px}.wp-list-table td,.wp-list-table th{padding:10px 8px}.error-message,.query-text{max-width:120px}.tablenav-pages{justify-content:center}.displaying-num{order:2;text-align:center;width:100%}}@media (max-width:480px){.askany-modal{padding:10px}.askany-modal-header{padding:16px 16px 12px}.askany-modal-body{padding:16px}.askany-modal-footer{padding:12px 16px}.wp-list-table{font-size:12px}.wp-list-table td,.wp-list-table th{padding:8px 6px}.error-message,.query-text{max-width:80px}.provider-badge,.status-badge{font-size:10px;padding:2px 6px}}.askany-modal-body::-webkit-scrollbar{width:6px}.askany-modal-body::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.askany-modal-body::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.askany-modal-body::-webkit-scrollbar-thumb:hover{background:#94a3b8}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.askany-modal[style*="display: block"] .askany-modal-content{animation:modalFadeIn .3s ease-out forwards}.api-key-instructions{background-color:#f8f9fa;border-left:4px solid var(--askany-primary);border-radius:4px;margin-top:10px;padding:15px}.api-key-instructions p{color:var(--askany-dark);margin:0 0 10px}.api-key-instructions ol{margin:10px 0 0 20px;padding:0}.api-key-instructions li{color:var(--askany-gray);line-height:1.6;margin-bottom:8px}.api-key-instructions a{color:var(--askany-primary);font-weight:500;text-decoration:none}.api-key-instructions a:hover{text-decoration:underline}.form-table td>div[style*="display: flex"]{flex-wrap:wrap}.form-table td>div[style*="display: flex"] input[type=password],.form-table td>div[style*="display: flex"] input[type=text]{min-width:300px}@media (max-width:782px){.form-table td>div[style*="display: flex"]{align-items:stretch!important;flex-direction:column}.form-table td>div[style*="display: flex"] input{margin-bottom:10px;width:100%!important}.form-table td>div[style*="display: flex"] button{margin-bottom:5px;width:100%}}.askany-message{align-items:flex-start;border-radius:8px;display:flex;gap:10px;margin-bottom:15px;padding:10px;transition:background-color .2s}.askany-message:hover{background-color:rgba(0,0,0,.02)}.askany-message .message-avatar{align-items:center;border-radius:50%;display:flex;flex-shrink:0;height:32px;justify-content:center;overflow:hidden;width:32px}.askany-message .message-avatar .avatar-image,.askany-message .message-avatar img{border-radius:50%;height:100%;object-fit:cover;width:100%}.askany-message .message-avatar .avatar-icon{align-items:center;border-radius:50%;display:flex;height:32px;justify-content:center;width:32px}.askany-message .message-avatar .user-icon{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.askany-message .message-avatar .assistant-icon{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}.askany-message .message-avatar .agent-icon{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff}.askany-message .message-avatar svg{height:18px;width:18px}.askany-message.user{flex-direction:row-reverse}.askany-message.user .askany-message-bubble{text-align:right}.askany-message.agent,.askany-message.ai{flex-direction:row}.askany-message-bubble{background:#f8f9fa;border-radius:12px;flex:1;min-width:0;padding:12px 15px}.askany-message.user .askany-message-bubble{background:var(--askany-primary);color:#fff}.askany-message.agent .askany-message-bubble{background:#e3f2fd;color:#000}.askany-message.ai .askany-message-bubble{background:#fce4ec;color:#000}.askany-message-content{line-height:1.5;margin-bottom:5px;word-wrap:break-word}.askany-message-meta{font-size:11px;margin-top:5px;opacity:.7}@media (max-width:782px){.askany-message .message-avatar,.askany-message .message-avatar .avatar-icon{height:28px;width:28px}.askany-message .message-avatar svg{height:16px;width:16px}}#askany_response_language{font-size:14px;min-width:300px;padding:8px 12px}#askany_response_language option{font-size:14px;padding:8px}#askany_response_language[data-is-pro="0"] option[data-pro=true]{color:#999;opacity:.4}.askany-language-select{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}
  • askany/trunk/dist/js/admin.min.js

    r3414941 r3439685  
    1 (()=>{function e(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,o,r,i,s=[],d=!0,c=!1;try{if(r=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;d=!1}else for(;!(d=(a=r.call(t)).done)&&(s.push(a.value),s.length!==n);d=!0);}catch(e){c=!0,o=e}finally{try{if(!d&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(c)throw o}}return s}}(e,t)||n(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,n){if(e){if("string"==typeof e)return t(e,n);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?t(e,n):void 0}}function t(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}document.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("askany-reindex-content"),a=document.getElementById("askany-ai-connect-test"),o=document.getElementById("askany-settings-form"),r=document.getElementById("askany_api_provider"),i=document.getElementById("toggle-api-key"),s=document.getElementById("askany_api_key"),d=(document.getElementById("askany_api_url"),document.getElementById("askany_api_model")),c=document.getElementById("askany-upload-pdf"),l=document.getElementById("pdf-file-input"),u=document.getElementById("upload-progress"),y=document.getElementById("askany-clear-chat-history"),f=document.getElementById("askany-qa-form"),m=document.getElementById("qa-question"),p=document.getElementById("qa-answer"),h=document.getElementById("qa-id"),v=document.getElementById("qa-submit"),k=document.getElementById("qa-cancel"),g=document.querySelectorAll(".edit-qa"),w=document.querySelectorAll(".delete-qa"),A=document.getElementById("askany_floating_widget_enabled"),_=document.querySelector(".floating-widget-options"),b=document.getElementById("askany_contact_form_enabled"),T=document.querySelector(".contact-form-shortcode-field");function E(e){var n=e.currentTarget,t=n.textContent,a=n.textContent;navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(t).then((function(){S(n,a)})).catch((function(e){console.error("Clipboard API failed, falling back:",e),x(t,n,a)})):x(t,n,a)}function x(e,n,t){var a=document.createElement("textarea");a.value=e,a.style.position="fixed",document.body.appendChild(a),a.select();try{document.execCommand("copy")?S(n,t):(console.error("Fallback copy failed"),n.textContent="Press Ctrl+C to copy",setTimeout((function(){n.textContent=t}),2e3))}catch(e){console.error("Fallback copy error:",e)}finally{document.body.removeChild(a)}}function S(e,n){e.textContent="Copied!",e.style.color="#4CAF50",setTimeout((function(){e.textContent=n,e.style.color=""}),2e3)}function C(){var n=r.value;document.querySelectorAll(".api-key-instructions").forEach((function(e){e.getAttribute("data-provider")===n?e.style.display="block":e.style.display="none"}));var t=document.getElementById("askany_api_url"),a={openai:"https://api.openai.com/v1/chat/completions",deepseek:"https://api.deepseek.com/v1/chat/completions",gemini:"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent"};t&&a[n]&&(t.placeholder=a[n]),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_get_provider_models",nonce:askanyAdmin.nonce,provider:n})}).then((function(e){return e.json()})).then((function(n){if(n.success&&d){d.innerHTML="";for(var t=n.data.models,a=(n.data.default_model,0),o=Object.entries(t);a<o.length;a++){var r=e(o[a],2),i=r[0],s=r[1],c=document.createElement("option");c.value=i,c.textContent=s.name,s.recommended&&(c.textContent+=" (Recommended)"),s.description&&c.setAttribute("data-description",s.description),d.appendChild(c)}}})).catch((function(e){console.error("Error fetching provider models:",e)})),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_get_provider_settings",nonce:askanyAdmin.nonce,provider:n})}).then((function(e){return e.json()})).then((function(e){e.success?(s&&(s.value=e.data.api_key||""),t&&(t.value=e.data.api_url||""),d&&e.data.api_model&&(d.value=e.data.api_model)):console.error("Failed to fetch provider settings:",e)})).catch((function(e){console.error("Error fetching provider settings:",e)}))}function P(){h&&(h.value="0"),m&&(m.value=""),p&&(p.value=""),v&&(v.textContent=askanyAdmin.i18n.addButton||"Add Q&A Pair"),k&&(k.style.display="none"),window.askanyQA&&!window.askanyQA.isPro&&window.askanyQA.qaCount>=window.askanyQA.freeLimit&&f&&(f.style.display="none")}function L(e,n){e&&(n?(e.disabled=!0,e.setAttribute("data-original-text",e.textContent),e.textContent="Loading..."):(e.disabled=!1,e.textContent=e.getAttribute("data-original-text")||e.textContent,e.removeAttribute("data-original-text")))}document.querySelectorAll(".copy-content").forEach((function(e){e.addEventListener("click",E)})),r&&(r.addEventListener("change",C),C()),t&&t.addEventListener("click",(function(){Toast.ask(askanyAdmin.i18n.confirmReindex||"Are you sure you want to reindex all content?").then((function(e){e.ok&&(L(t,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_reindex_content",nonce:askanyAdmin.nonce})}).then((function(e){return e.json()})).then((function(e){var n;e.success?Toast.success(askanyAdmin.i18n.reindexSuccess||"Content reindexed successfully!"):Toast.error((null===(n=e.data)||void 0===n?void 0:n.message)||askanyAdmin.i18n.reindexError||"Failed to reindex content.")})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.reindexError||"Failed to reindex content.")})).finally((function(){L(t,!1)})))}))})),a&&a.addEventListener("click",(function(e){e.preventDefault();var n=r.value,t=s.value,a=d?d.value:"";if(t){var o=document.getElementById("askany-ai-connect-test");Toast.loading("Testing API connection..."),o&&L(o,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_test_api_connection",nonce:askanyAdmin.nonce,provider:n,api_key:t,api_model:a})}).then((function(e){return e.json()})).then((function(e){if(Toast.loading(!1),e.success){var t=e.data;if("success"===t.status){var a=n.charAt(0).toUpperCase()+n.slice(1);Toast.success("".concat(a," connection successful! ").concat(t.details||""))}else Toast.error(t.details||t.message||"Connection test failed")}else{var o,r,i=(null===(o=e.data)||void 0===o?void 0:o.details)||(null===(r=e.data)||void 0===r?void 0:r.message)||"Connection test failed";Toast.error(i)}})).catch((function(e){console.error("Error:",e),Toast.loading(!1),Toast.error("Network error during connection test")})).finally((function(){o&&L(o,!1)}))}else Toast.warn(askanyAdmin.i18n.noApiKey||"Please enter an API key first")})),o&&o.addEventListener("submit",(function(t){t.preventDefault();var a,r=new FormData(o),i={},s=function(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=n(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,d=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return s=e.done,e},e:function(e){d=!0,i=e},f:function(){try{s||null==a.return||a.return()}finally{if(d)throw i}}}}(r.entries());try{for(s.s();!(a=s.n()).done;){var d=e(a.value,2),c=d[0],l=d[1];if("askany_nonce"!==c&&"_wp_http_referer"!==c){var u=c.replace("askany_","");i[u]="askany_api_enabled"===c||"askany_fallback_enabled"===c||"askany_floating_widget_enabled"===c||"askany_contact_form_enabled"===c?"1"===l:"askany_assistant_avatar"===c?encodeURI(l):l}}}catch(e){s.e(e)}finally{s.f()}r.has("askany_api_enabled")||(i.api_enabled=!1),r.has("askany_fallback_enabled")||(i.fallback_enabled=!1),r.has("askany_floating_widget_enabled")||(i.floating_widget_enabled=!1),r.has("askany_contact_form_enabled")||(i.contact_form_enabled=!1),i.chat_header_text||(i.chat_header_text="Ask Me Anything");var y=o.querySelector("#save-settings");L(y,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_save_settings",nonce:askanyAdmin.nonce,settings:JSON.stringify(i)})}).then((function(e){return e.json()})).then((function(e){if(e.success){if(Toast.success(askanyAdmin.i18n.saveSuccess||"Settings saved successfully!"),void 0!==i.floating_widget_enabled){var n=document.querySelector(".floating-widget-options");n&&(n.style.display=i.floating_widget_enabled?"":"none")}if(void 0!==i.contact_form_enabled){var t=document.querySelector(".contact-form-shortcode-field");t&&(t.style.display=i.contact_form_enabled?"":"none")}i.api_provider&&C()}else{var a;Toast.error((null===(a=e.data)||void 0===a?void 0:a.message)||askanyAdmin.i18n.saveError||"Failed to save settings.")}})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.saveError||"Error occurred while saving settings.")})).finally((function(){L(y,!1)}))})),y&&y.addEventListener("click",(function(){Toast.ask("Clear History",askanyAdmin.i18n.confirmClearHistory||"Are you sure you want to clear all chat history? This action cannot be undone.").then((function(e){e.ok&&(L(y,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_clear_chat_all_history",nonce:askanyAdmin.nonce})}).then((function(e){return e.json()})).then((function(e){var n;e.success?(Toast.success(askanyAdmin.i18n.clearHistorySuccess||"Chat history cleared successfully!"),setTimeout((function(){return location.reload()}),1e3)):Toast.error((null===(n=e.data)||void 0===n?void 0:n.message)||askanyAdmin.i18n.clearHistoryError||"Failed to clear chat history.")})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.clearHistoryError||"Failed to clear chat history.")})).finally((function(){L(y,!1)})))}))})),i&&s&&i.addEventListener("click",(function(){"password"===s.type?(s.type="text",this.textContent=askanyAdmin.i18n.hide||"Hide"):(s.type="password",this.textContent=askanyAdmin.i18n.show||"Show")})),c&&l&&(c.addEventListener("click",(function(){l.click()})),l.addEventListener("change",(function(){var e=l.files[0];if(e)if("application/pdf"===e.type){var n=20971520;if(e.size>n)Toast.error("File size exceeds 20MB limit. Your file is ".concat((e.size/1048576).toFixed(2),"MB."));else{var t=new FormData;if(t.append("action","askany_upload_pdf"),t.append("nonce",askanyAdmin.nonce),t.append("pdf_file",e),L(c,!0),u){u.style.display="block";var a=u.querySelector(".progress-fill");a&&(a.style.width="0%")}var o=new XMLHttpRequest;o.upload.addEventListener("progress",(function(e){if(e.lengthComputable){var n=e.loaded/e.total*100,t=u.querySelector(".progress-fill");t&&(t.style.width=n+"%")}})),o.addEventListener("load",(function(){if(o.status>=200&&o.status<300)try{var e,n=JSON.parse(o.responseText);n.success?(Toast.success(askanyAdmin.i18n.uploadSuccess||"PDF uploaded successfully!"),l.value="",setTimeout((function(){return location.reload()}),1e3)):Toast.error((null===(e=n.data)||void 0===e?void 0:e.message)||askanyAdmin.i18n.uploadError||"Failed to upload PDF.")}catch(e){console.error("Error parsing response:",e),Toast.error("Server returned an invalid response.")}else console.error("HTTP Error:",o.status,o.statusText),Toast.error("Server error: ".concat(o.status," ").concat(o.statusText));L(c,!1),u&&setTimeout((function(){u.style.display="none"}),1e3)})),o.addEventListener("error",(function(){console.error("Network error occurred"),Toast.error("Network error occurred while uploading."),L(c,!1),u&&(u.style.display="none")})),o.addEventListener("abort",(function(){Toast.warn("Upload was aborted."),L(c,!1),u&&(u.style.display="none")})),o.open("POST",askanyAdmin.ajaxUrl),o.send(t)}}else Toast.error("Please select a PDF file.")}))),function(){var e=document.querySelectorAll(".delete-pdf");0!==e.length&&e.forEach((function(e){e.addEventListener("click",(function(e){var n=this;e.preventDefault();var t=this.getAttribute("data-id"),a=this.getAttribute("data-nonce");t?a?Toast.ask("Delete Confirmation",askanyAdmin.i18n.confirmDeletePdf||"Are you sure you want to delete this PDF? This action cannot be undone.").then((function(e){e.ok&&(L(n,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_delete_pdf",nonce:a,pdf_id:t})}).then((function(e){return e.json()})).then((function(e){if(e.success){Toast.success(askanyAdmin.i18n.deletePdfSuccess||"PDF deleted successfully!");var t=n.closest("tr");t&&t.remove(),0===document.querySelectorAll("#pdf-files-list tbody tr").length&&setTimeout((function(){return location.reload()}),1e3)}else{var a;Toast.error((null===(a=e.data)||void 0===a?void 0:a.message)||askanyAdmin.i18n.deletePdfError||"Failed to delete PDF."),L(n,!1)}})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.deletePdfError||"Failed to delete PDF."),L(n,!1)})))})):console.error("Missing nonce for delete button"):console.error("Missing PDF ID for delete button")}))}))}(),f&&f.addEventListener("submit",(function(e){e.preventDefault();var n=h.value,t=m.value.trim(),a=p.value.trim();if(t&&a){var o="0"!==n,r=o?"askany_update_qa_pair":"askany_add_qa_pair";v.disabled=!0,fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:r,nonce:askanyAdmin.nonce,question:t,answer:a,id:n})}).then((function(e){return e.json()})).then((function(e){var n;e.success?(Toast.success(o?askanyAdmin.i18n.qaupdateSuccess:askanyAdmin.i18n.qaaddSuccess),!o&&window.askanyQA&&(window.askanyQA.qaCount++,window.askanyQA.updateProLockUI()),setTimeout((function(){location.reload()}),1e3)):Toast.error((null===(n=e.data)||void 0===n?void 0:n.message)||askanyAdmin.i18n.error)})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.error)})).finally((function(){v.disabled=!1}))}else Toast.warn(askanyAdmin.i18n.emptyFields||"Please fill in both question and answer fields.")})),g.length>0&&g.forEach((function(e){e.addEventListener("click",(function(){var e=this.dataset.id;P(),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_get_qa_pair",nonce:askanyAdmin.nonce,id:e})}).then((function(e){return e.json()})).then((function(e){if(e.success){var n=e.data.qa_pair;h.value=n.id,m.value=n.question,p.value=n.answer,v.textContent=askanyAdmin.i18n.updateButton||"Update Q&A Pair",k.style.display="inline-block","none"===f.style.display&&(f.style.display="block"),window.scrollTo({top:f.offsetTop-50,behavior:"smooth"})}else{var t;Toast.error((null===(t=e.data)||void 0===t?void 0:t.message)||askanyAdmin.i18n.error)}})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.error||"Error occurred while fetching Q&A pair data.")}))}))})),w.length>0&&w.forEach((function(e){e.addEventListener("click",(function(){var e=this.dataset.id,n=this.closest("tr");Toast.ask("Delete Confirmation",askanyAdmin.i18n.confirmDelete||"Are you sure you want to delete this Q&A pair?").then((function(t){t.ok&&fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_delete_qa_pair",nonce:askanyAdmin.nonce,id:e})}).then((function(e){return e.json()})).then((function(e){var t;e.success?(Toast.success(askanyAdmin.i18n.deleteSuccess||"Q&A pair deleted successfully!"),window.askanyQA&&(window.askanyQA.qaCount--,window.askanyQA.updateProLockUI()),n.style.transition="opacity 0.4s",n.style.opacity="0",setTimeout((function(){n.remove(),0===document.querySelectorAll("tbody tr").length&&setTimeout((function(){location.reload()}),1e3)}),400)):Toast.error((null===(t=e.data)||void 0===t?void 0:t.message)||askanyAdmin.i18n.error)})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.error)}))}))}))})),k&&k.addEventListener("click",(function(){P()})),A&&_&&A.addEventListener("change",(function(){_.style.display=this.checked?"":"none"})),b&&T&&b.addEventListener("change",(function(){T.style.display=this.checked?"":"none"}));var q=document.getElementById("upload-avatar-button");q&&q.addEventListener("click",(function(e){if(e.preventDefault(),"undefined"==typeof wp||void 0===wp.media)return console.error("WordPress media uploader is not available"),void Toast.error(askanyAdmin.i18n.mediaError||"WordPress media uploader is not available");var n=wp.media({title:askanyAdmin.mediaUploader.title,button:askanyAdmin.mediaUploader.button,multiple:!1,library:{type:"image"}});n.on("select",(function(){var e=n.state().get("selection").first().toJSON(),t=document.getElementById("askany_assistant_avatar");if(t){t.value=e.url;var a=document.querySelector(".avatar-preview");a||((a=document.createElement("div")).className="avatar-preview",a.style.marginTop="10px",q.parentNode.appendChild(a)),a.innerHTML='<img src="'.concat(e.url,'" alt="Assistant Avatar" style="max-width: 50px; max-height: 50px;" />')}})),n.open()}))}))})();
     1(()=>{function e(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,o,r,i,s=[],c=!0,d=!1;try{if(r=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;c=!1}else for(;!(c=(a=r.call(t)).done)&&(s.push(a.value),s.length!==n);c=!0);}catch(e){d=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(d)throw o}}return s}}(e,t)||n(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,n){if(e){if("string"==typeof e)return t(e,n);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?t(e,n):void 0}}function t(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=Array(n);t<n;t++)a[t]=e[t];return a}document.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("askany-reindex-content"),a=document.getElementById("askany-ai-connect-test"),o=document.getElementById("askany-settings-form"),r=document.getElementById("askany_api_provider"),i=document.getElementById("toggle-api-key"),s=document.getElementById("askany_api_key"),c=(document.getElementById("askany_api_url"),document.getElementById("askany_api_model")),d=document.getElementById("askany-upload-pdf"),l=document.getElementById("pdf-file-input"),u=document.getElementById("upload-progress"),y=document.getElementById("askany-clear-chat-history"),f=document.getElementById("askany-qa-form"),m=document.getElementById("qa-question"),p=document.getElementById("qa-answer"),h=document.getElementById("qa-id"),v=document.getElementById("qa-submit"),g=document.getElementById("qa-cancel"),k=document.querySelectorAll(".edit-qa"),A=document.querySelectorAll(".delete-qa"),w=document.getElementById("askany_floating_widget_enabled"),_=document.querySelector(".floating-widget-options"),b=document.getElementById("askany_contact_form_enabled"),T=document.querySelector(".contact-form-shortcode-field");function E(e){var n=e.currentTarget,t=n.textContent,a=n.textContent;navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(t).then((function(){P(n,a)})).catch((function(e){console.error("Clipboard API failed, falling back:",e),x(t,n,a)})):x(t,n,a)}function x(e,n,t){var a=document.createElement("textarea");a.value=e,a.style.position="fixed",document.body.appendChild(a),a.select();try{document.execCommand("copy")?P(n,t):(console.error("Fallback copy failed"),n.textContent="Press Ctrl+C to copy",setTimeout((function(){n.textContent=t}),2e3))}catch(e){console.error("Fallback copy error:",e)}finally{document.body.removeChild(a)}}function P(e,n){e.textContent="Copied!",e.style.color="#4CAF50",setTimeout((function(){e.textContent=n,e.style.color=""}),2e3)}function S(){var n=r.value;document.querySelectorAll(".api-key-instructions").forEach((function(e){e.getAttribute("data-provider")===n?e.style.display="block":e.style.display="none"}));var t=document.getElementById("askany_api_url"),a={openai:"https://api.openai.com/v1/chat/completions",deepseek:"https://api.deepseek.com/v1/chat/completions",gemini:"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent"};t&&a[n]&&(t.placeholder=a[n]),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_get_provider_models",nonce:askanyAdmin.nonce,provider:n})}).then((function(e){return e.json()})).then((function(n){if(n.success&&c){c.innerHTML="";for(var t=n.data.models,a=(n.data.default_model,0),o=Object.entries(t);a<o.length;a++){var r=e(o[a],2),i=r[0],s=r[1],d=document.createElement("option");d.value=i,d.textContent=s.name,s.recommended&&(d.textContent+=" (Recommended)"),s.description&&d.setAttribute("data-description",s.description),c.appendChild(d)}}})).catch((function(e){console.error("Error fetching provider models:",e)})),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_get_provider_settings",nonce:askanyAdmin.nonce,provider:n})}).then((function(e){return e.json()})).then((function(e){e.success?(s&&(s.value=e.data.api_key||""),t&&(t.value=e.data.api_url||""),c&&e.data.api_model&&(c.value=e.data.api_model)):console.error("Failed to fetch provider settings:",e)})).catch((function(e){console.error("Error fetching provider settings:",e)}))}function C(){h&&(h.value="0"),m&&(m.value=""),p&&(p.value=""),v&&(v.textContent=askanyAdmin.i18n.addButton||"Add Q&A Pair"),g&&(g.style.display="none"),window.askanyQA&&!window.askanyQA.isPro&&window.askanyQA.qaCount>=window.askanyQA.freeLimit&&f&&(f.style.display="none")}function L(e,n){e&&(n?(e.disabled=!0,e.setAttribute("data-original-text",e.textContent),e.textContent="Loading..."):(e.disabled=!1,e.textContent=e.getAttribute("data-original-text")||e.textContent,e.removeAttribute("data-original-text")))}document.querySelectorAll(".copy-content").forEach((function(e){e.addEventListener("click",E)})),r&&(r.addEventListener("change",S),S()),t&&t.addEventListener("click",(function(){Toast.ask(askanyAdmin.i18n.confirmReindex||"Are you sure you want to reindex all content?").then((function(e){e.ok&&(L(t,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_reindex_content",nonce:askanyAdmin.nonce})}).then((function(e){return e.json()})).then((function(e){var n;e.success?Toast.success(askanyAdmin.i18n.reindexSuccess||"Content reindexed successfully!"):Toast.error((null===(n=e.data)||void 0===n?void 0:n.message)||askanyAdmin.i18n.reindexError||"Failed to reindex content.")})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.reindexError||"Failed to reindex content.")})).finally((function(){L(t,!1)})))}))})),a&&a.addEventListener("click",(function(e){e.preventDefault();var n=r.value,t=s.value,a=c?c.value:"";if(t){var o=document.getElementById("askany-ai-connect-test");Toast.loading("Testing API connection..."),o&&L(o,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_test_api_connection",nonce:askanyAdmin.nonce,provider:n,api_key:t,api_model:a})}).then((function(e){return e.json()})).then((function(e){if(Toast.loading(!1),e.success){var t=e.data;if("success"===t.status){var a=n.charAt(0).toUpperCase()+n.slice(1);Toast.success("".concat(a," connection successful! ").concat(t.details||""))}else Toast.error(t.details||t.message||"Connection test failed")}else{var o,r,i=(null===(o=e.data)||void 0===o?void 0:o.details)||(null===(r=e.data)||void 0===r?void 0:r.message)||"Connection test failed";Toast.error(i)}})).catch((function(e){console.error("Error:",e),Toast.loading(!1),Toast.error("Network error during connection test")})).finally((function(){o&&L(o,!1)}))}else Toast.warn(askanyAdmin.i18n.noApiKey||"Please enter an API key first")})),o&&o.addEventListener("submit",(function(t){t.preventDefault();var a,r=new FormData(o),i={},s=function(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=n(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==a.return||a.return()}finally{if(c)throw i}}}}(r.entries());try{for(s.s();!(a=s.n()).done;){var c=e(a.value,2),d=c[0],l=c[1];if("askany_nonce"!==d&&"_wp_http_referer"!==d){var u=d.replace("askany_","");i[u]="askany_api_enabled"===d||"askany_fallback_enabled"===d||"askany_floating_widget_enabled"===d||"askany_contact_form_enabled"===d?"1"===l:"askany_assistant_avatar"===d?encodeURI(l):l}}}catch(e){s.e(e)}finally{s.f()}r.has("askany_api_enabled")||(i.api_enabled=!1),r.has("askany_fallback_enabled")||(i.fallback_enabled=!1),r.has("askany_floating_widget_enabled")||(i.floating_widget_enabled=!1),r.has("askany_contact_form_enabled")||(i.contact_form_enabled=!1),i.chat_header_text||(i.chat_header_text="Ask Me Anything");var y=o.querySelector("#save-settings");L(y,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_save_settings",nonce:askanyAdmin.nonce,settings:JSON.stringify(i)})}).then((function(e){return e.json()})).then((function(e){if(e.success){if(Toast.success(askanyAdmin.i18n.saveSuccess||"Settings saved successfully!"),void 0!==i.floating_widget_enabled){var n=document.querySelector(".floating-widget-options");n&&(n.style.display=i.floating_widget_enabled?"":"none")}if(void 0!==i.contact_form_enabled){var t=document.querySelector(".contact-form-shortcode-field");t&&(t.style.display=i.contact_form_enabled?"":"none")}i.api_provider&&S()}else{var a;Toast.error((null===(a=e.data)||void 0===a?void 0:a.message)||askanyAdmin.i18n.saveError||"Failed to save settings.")}})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.saveError||"Error occurred while saving settings.")})).finally((function(){L(y,!1)}))})),y&&y.addEventListener("click",(function(){Toast.ask("Clear History",askanyAdmin.i18n.confirmClearHistory||"Are you sure you want to clear all chat history? This action cannot be undone.").then((function(e){e.ok&&(L(y,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_clear_chat_all_history",nonce:askanyAdmin.nonce})}).then((function(e){return e.json()})).then((function(e){var n;e.success?(Toast.success(askanyAdmin.i18n.clearHistorySuccess||"Chat history cleared successfully!"),setTimeout((function(){return location.reload()}),1e3)):Toast.error((null===(n=e.data)||void 0===n?void 0:n.message)||askanyAdmin.i18n.clearHistoryError||"Failed to clear chat history.")})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.clearHistoryError||"Failed to clear chat history.")})).finally((function(){L(y,!1)})))}))})),i&&s&&i.addEventListener("click",(function(){"password"===s.type?(s.type="text",this.textContent=askanyAdmin.i18n.hide||"Hide"):(s.type="password",this.textContent=askanyAdmin.i18n.show||"Show")})),d&&l&&(d.addEventListener("click",(function(){l.click()})),l.addEventListener("change",(function(){var e=l.files[0];if(e)if("application/pdf"===e.type){var n=20971520;if(e.size>n)Toast.error("File size exceeds 20MB limit. Your file is ".concat((e.size/1048576).toFixed(2),"MB."));else{var t=new FormData;if(t.append("action","askany_upload_pdf"),t.append("nonce",askanyAdmin.nonce),t.append("pdf_file",e),L(d,!0),u){u.style.display="block";var a=u.querySelector(".progress-fill");a&&(a.style.width="0%")}var o=new XMLHttpRequest;o.upload.addEventListener("progress",(function(e){if(e.lengthComputable){var n=e.loaded/e.total*100,t=u.querySelector(".progress-fill");t&&(t.style.width=n+"%")}})),o.addEventListener("load",(function(){if(o.status>=200&&o.status<300)try{var e,n=JSON.parse(o.responseText);n.success?(Toast.success(askanyAdmin.i18n.uploadSuccess||"PDF uploaded successfully!"),l.value="",setTimeout((function(){return location.reload()}),1e3)):Toast.error((null===(e=n.data)||void 0===e?void 0:e.message)||askanyAdmin.i18n.uploadError||"Failed to upload PDF.")}catch(e){console.error("Error parsing response:",e),Toast.error("Server returned an invalid response.")}else console.error("HTTP Error:",o.status,o.statusText),Toast.error("Server error: ".concat(o.status," ").concat(o.statusText));L(d,!1),u&&setTimeout((function(){u.style.display="none"}),1e3)})),o.addEventListener("error",(function(){console.error("Network error occurred"),Toast.error("Network error occurred while uploading."),L(d,!1),u&&(u.style.display="none")})),o.addEventListener("abort",(function(){Toast.warn("Upload was aborted."),L(d,!1),u&&(u.style.display="none")})),o.open("POST",askanyAdmin.ajaxUrl),o.send(t)}}else Toast.error("Please select a PDF file.")}))),function(){var e=document.querySelectorAll(".delete-pdf");0!==e.length&&e.forEach((function(e){e.addEventListener("click",(function(e){var n=this;e.preventDefault();var t=this.getAttribute("data-id"),a=this.getAttribute("data-nonce");t?a?Toast.ask("Delete Confirmation",askanyAdmin.i18n.confirmDeletePdf||"Are you sure you want to delete this PDF? This action cannot be undone.").then((function(e){e.ok&&(L(n,!0),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_delete_pdf",nonce:a,pdf_id:t})}).then((function(e){return e.json()})).then((function(e){if(e.success){Toast.success(askanyAdmin.i18n.deletePdfSuccess||"PDF deleted successfully!");var t=n.closest("tr");t&&t.remove(),0===document.querySelectorAll("#pdf-files-list tbody tr").length&&setTimeout((function(){return location.reload()}),1e3)}else{var a;Toast.error((null===(a=e.data)||void 0===a?void 0:a.message)||askanyAdmin.i18n.deletePdfError||"Failed to delete PDF."),L(n,!1)}})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.deletePdfError||"Failed to delete PDF."),L(n,!1)})))})):console.error("Missing nonce for delete button"):console.error("Missing PDF ID for delete button")}))}))}(),f&&f.addEventListener("submit",(function(e){e.preventDefault();var n=h.value,t=m.value.trim(),a=p.value.trim();if(t&&a){var o="0"!==n,r=o?"askany_update_qa_pair":"askany_add_qa_pair";v.disabled=!0,fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:r,nonce:askanyAdmin.nonce,question:t,answer:a,id:n})}).then((function(e){return e.json()})).then((function(e){var n;e.success?(Toast.success(o?askanyAdmin.i18n.qaupdateSuccess:askanyAdmin.i18n.qaaddSuccess),!o&&window.askanyQA&&(window.askanyQA.qaCount++,window.askanyQA.updateProLockUI()),setTimeout((function(){location.reload()}),1e3)):Toast.error((null===(n=e.data)||void 0===n?void 0:n.message)||askanyAdmin.i18n.error)})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.error)})).finally((function(){v.disabled=!1}))}else Toast.warn(askanyAdmin.i18n.emptyFields||"Please fill in both question and answer fields.")})),k.length>0&&k.forEach((function(e){e.addEventListener("click",(function(){var e=this.dataset.id;C(),fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_get_qa_pair",nonce:askanyAdmin.nonce,id:e})}).then((function(e){return e.json()})).then((function(e){if(e.success){var n=e.data.qa_pair;h.value=n.id,m.value=n.question,p.value=n.answer,v.textContent=askanyAdmin.i18n.updateButton||"Update Q&A Pair",g.style.display="inline-block","none"===f.style.display&&(f.style.display="block"),window.scrollTo({top:f.offsetTop-50,behavior:"smooth"})}else{var t;Toast.error((null===(t=e.data)||void 0===t?void 0:t.message)||askanyAdmin.i18n.error)}})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.error||"Error occurred while fetching Q&A pair data.")}))}))})),A.length>0&&A.forEach((function(e){e.addEventListener("click",(function(){var e=this.dataset.id,n=this.closest("tr");Toast.ask("Delete Confirmation",askanyAdmin.i18n.confirmDelete||"Are you sure you want to delete this Q&A pair?").then((function(t){t.ok&&fetch(askanyAdmin.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({action:"askany_delete_qa_pair",nonce:askanyAdmin.nonce,id:e})}).then((function(e){return e.json()})).then((function(e){var t;e.success?(Toast.success(askanyAdmin.i18n.deleteSuccess||"Q&A pair deleted successfully!"),window.askanyQA&&(window.askanyQA.qaCount--,window.askanyQA.updateProLockUI()),n.style.transition="opacity 0.4s",n.style.opacity="0",setTimeout((function(){n.remove(),0===document.querySelectorAll("tbody tr").length&&setTimeout((function(){location.reload()}),1e3)}),400)):Toast.error((null===(t=e.data)||void 0===t?void 0:t.message)||askanyAdmin.i18n.error)})).catch((function(e){console.error("Error:",e),Toast.error(askanyAdmin.i18n.error)}))}))}))})),g&&g.addEventListener("click",(function(){C()})),w&&_&&w.addEventListener("change",(function(){_.style.display=this.checked?"":"none"})),b&&T&&b.addEventListener("change",(function(){T.style.display=this.checked?"":"none"}));var I=document.getElementById("upload-avatar-button");I&&I.addEventListener("click",(function(e){if(e.preventDefault(),"undefined"==typeof wp||void 0===wp.media)return console.error("WordPress media uploader is not available"),void Toast.error(askanyAdmin.i18n.mediaError||"WordPress media uploader is not available");var n=wp.media({title:askanyAdmin.mediaUploader.title,button:askanyAdmin.mediaUploader.button,multiple:!1,library:{type:"image"}});n.on("select",(function(){var e=n.state().get("selection").first().toJSON(),t=document.getElementById("askany_assistant_avatar");if(t){t.value=e.url;var a=document.querySelector(".avatar-preview");a||((a=document.createElement("div")).className="avatar-preview",a.style.marginTop="10px",I.parentNode.appendChild(a)),a.innerHTML='<img src="'.concat(e.url,'" alt="Assistant Avatar" style="max-width: 50px; max-height: 50px;" />')}})),n.open()}))}));var a=document.getElementById("askany_response_language");if(a){var o="1"===a.getAttribute("data-is-pro"),r=a.value;console.log("Language selector initialized. Is Pro:",o,"Previous value:",r),a.addEventListener("change",(function(e){var n="true"===this.options[this.selectedIndex].getAttribute("data-pro"),t=this.value;console.log("Language changed to:",t,"Is Pro language:",n,"User has Pro:",o),!o&&n?(console.log("Blocking Pro language selection. Reverting to:",r),this.value=r,console.log("Showing Pro modal..."),"undefined"!=typeof AskanyPro&&"function"==typeof AskanyPro.openModal?AskanyPro.openModal({title:"Unlock All Languages",description:"Upgrade to Pro to access 20+ languages including Spanish, French, German, Chinese, Japanese, Arabic, and more!",features:["20+ AI response languages","Multilingual customer support","Global audience reach","Automatic language detection","Priority support"]}):(console.error("AskanyPro.openModal not found"),alert("This language requires AskAny Pro. Upgrade to unlock 20+ languages!"))):(r=this.value,console.log("Language selection allowed. New previous value:",r))}))}})();
  • askany/trunk/dist/js/dynamic-pricing.min.js

    r3414941 r3439685  
    1 (()=>{function t(n){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(n)}function n(){"use strict";n=function(){return r};var e,r={},o=Object.prototype,i=o.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function u(t,n,e,r){return Object.defineProperty(t,n,{value:e,enumerable:!r,configurable:!r,writable:!r})}try{u({},"")}catch(e){u=function(t,n,e){return t[n]=e}}function d(t,n,r,o){var i=n&&n.prototype instanceof f?n:f,a=Object.create(i.prototype);return u(a,"_invoke",function(t,n,r){var o=1;return function(i,a){if(3===o)throw Error("Generator is already running");if(4===o){if("throw"===i)throw a;return{value:e,done:!0}}for(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var c=_(s,r);if(c){if(c===h)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(1===o)throw o=4,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=3;var l=p(t,n,r);if("normal"===l.type){if(o=r.done?4:2,l.arg===h)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(o=4,r.method="throw",r.arg=l.arg)}}}(t,r,new E(o||[])),!0),a}function p(t,n,e){try{return{type:"normal",arg:t.call(n,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=d;var h={};function f(){}function g(){}function v(){}var y={};u(y,s,(function(){return this}));var m=Object.getPrototypeOf,w=m&&m(m(j([])));w&&w!==o&&i.call(w,s)&&(y=w);var k=v.prototype=f.prototype=Object.create(y);function x(t){["next","throw","return"].forEach((function(n){u(t,n,(function(t){return this._invoke(n,t)}))}))}function b(n,e){function r(o,a,s,c){var l=p(n[o],n,a);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==t(d)&&i.call(d,"__await")?e.resolve(d.__await).then((function(t){r("next",t,s,c)}),(function(t){r("throw",t,s,c)})):e.resolve(d).then((function(t){u.value=t,s(u)}),(function(t){return r("throw",t,s,c)}))}c(l.arg)}var o;u(this,"_invoke",(function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}),!0)}function _(t,n){var r=n.method,o=t.i[r];if(o===e)return n.delegate=null,"throw"===r&&t.i.return&&(n.method="return",n.arg=e,_(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var i=p(o,t.i,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,h;var a=i.arg;return a?a.done?(n[t.r]=a.value,n.next=t.n,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function P(t){this.tryEntries.push(t)}function A(t){var n=t[4]||{};n.type="normal",n.arg=e,t[4]=n}function E(t){this.tryEntries=[[-1]],t.forEach(P,this),this.reset(!0)}function j(n){if(null!=n){var r=n[s];if(r)return r.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var o=-1,a=function t(){for(;++o<n.length;)if(i.call(n,o))return t.value=n[o],t.done=!1,t;return t.value=e,t.done=!0,t};return a.next=a}}throw new TypeError(t(n)+" is not iterable")}return g.prototype=v,u(k,"constructor",v),u(v,"constructor",g),g.displayName=u(v,l,"GeneratorFunction"),r.isGeneratorFunction=function(t){var n="function"==typeof t&&t.constructor;return!!n&&(n===g||"GeneratorFunction"===(n.displayName||n.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,u(t,l,"GeneratorFunction")),t.prototype=Object.create(k),t},r.awrap=function(t){return{__await:t}},x(b.prototype),u(b.prototype,c,(function(){return this})),r.AsyncIterator=b,r.async=function(t,n,e,o,i){void 0===i&&(i=Promise);var a=new b(d(t,n,e,o),i);return r.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},x(k),u(k,l,"Generator"),u(k,s,(function(){return this})),u(k,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var n=Object(t),e=[];for(var r in n)e.unshift(r);return function t(){for(;e.length;)if((r=e.pop())in n)return t.value=r,t.done=!1,t;return t.done=!0,t}},r.values=j,E.prototype={constructor:E,reset:function(t){if(this.prev=this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(A),!t)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0][4];if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function r(e){a.type="throw",a.arg=t,n.next=e}for(var o=n.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i[4],s=this.prev,c=i[1],l=i[2];if(-1===i[0])return r("end"),!1;if(!c&&!l)throw Error("try statement without catch or finally");if(null!=i[0]&&i[0]<=s){if(s<c)return this.method="next",this.arg=e,r(c),!0;if(s<l)return r(l),!1}}},abrupt:function(t,n){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r[0]>-1&&r[0]<=this.prev&&this.prev<r[2]){var o=r;break}}o&&("break"===t||"continue"===t)&&o[0]<=n&&n<=o[2]&&(o=null);var i=o?o[4]:{};return i.type=t,i.arg=n,o?(this.method="next",this.next=o[2],h):this.complete(i)},complete:function(t,n){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&n&&(this.next=n),h},finish:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e[2]===t)return this.complete(e[4],e[3]),A(e),h}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e[0]===t){var r=e[4];if("throw"===r.type){var o=r.arg;A(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={i:j(t),r:n,n:r},"next"===this.method&&(this.arg=e),h}},r}function e(t,n,e,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void e(t)}s.done?n(c):Promise.resolve(c).then(r,o)}function r(t){return function(){var n=this,r=arguments;return new Promise((function(o,i){var a=t.apply(n,r);function s(t){e(a,o,i,s,c,"next",t)}function c(t){e(a,o,i,s,c,"throw",t)}s(void 0)}))}}!function(t){"use strict";window.AskanyPricing=window.AskanyPricing||{};var e={apiUrl:"https://wpazleen.com/wp-json/wpx/v1/premium-modal-settings?config_id=askany",cacheKey:"askany_pricing_data",cacheExpiry:432e5},o=null;AskanyPricing.fetchPricingData=r(n().mark((function t(){var r,o,i,a,s,c;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=localStorage.getItem(e.cacheKey))){t.next=7;break}if(o=JSON.parse(r),i=Date.now(),!(o.timestamp&&i-o.timestamp<e.cacheExpiry)){t.next=7;break}return console.log("Using cached pricing data"),t.abrupt("return",o.data);case 7:return t.prev=7,console.log("Fetching pricing data from API..."),t.next=11,fetch(e.apiUrl);case 11:return a=t.sent,t.next=14,a.json();case 14:if(!(s=t.sent).success||!s.data){t.next=20;break}return c={data:s.data,timestamp:Date.now()},localStorage.setItem(e.cacheKey,JSON.stringify(c)),console.log("Pricing data fetched:",s.data),t.abrupt("return",s.data);case 20:return t.abrupt("return",AskanyPricing.getFallbackData());case 23:return t.prev=23,t.t0=t.catch(7),console.warn("Failed to fetch pricing data:",t.t0),t.abrupt("return",AskanyPricing.getFallbackData());case 27:case"end":return t.stop()}}),t,null,[[7,23]])}))),AskanyPricing.getFallbackData=function(){return{topbar_active:!1,discount_end_time:null,premium_modal_offer_amount:"Special Offer",premium_modal_header_title:"Unlock Premium Power!",premium_modal_content:"Upgrade now to unlock AskAny powerful features and take your site to the next level!",premium_modal_button_text:"Upgrade to Premium Now",premium_modal_button_url:"#upgrade"}},AskanyPricing.formatTime=function(t){return t.toString().padStart(2,"0")},AskanyPricing.updateCountdown=function(n){var e=new Date(n),r=(new Date).getTime(),i=e.getTime()-r;if(i>0){var a=Math.floor(i/864e5),s=Math.floor(i%864e5/36e5),c=Math.floor(i%36e5/6e4),l=Math.floor(i%6e4/1e3);t("#askany-countdown-days").text(AskanyPricing.formatTime(a)),t("#askany-countdown-hours").text(AskanyPricing.formatTime(s)),t("#askany-countdown-minutes").text(AskanyPricing.formatTime(c)),t("#askany-countdown-seconds").text(AskanyPricing.formatTime(l))}else t(".askany-pricing-countdown").html('<p class="countdown-ended">Offer has ended</p>'),o&&clearInterval(o)},AskanyPricing.createPricingModal=function(t){var n='\n\t\t\t<div id="askany-pricing-modal" class="askany-pricing-modal" style="display: none;">\n\t\t\t\t<div class="askany-pricing-modal-overlay"></div>\n\t\t\t\t<div class="askany-pricing-modal-content">\n\t\t\t\t\t<button class="askany-pricing-modal-close" aria-label="Close">\n\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t<line x1="18" y1="6" x2="6" y2="18"></line>\n\t\t\t\t\t\t\t<line x1="6" y1="6" x2="18" y2="18"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t\t\n\t\t\t\t\t<div class="askany-pricing-header">\n\t\t\t\t\t\t<div class="premium-crown">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h2>'.concat(t.premium_modal_header_title," 🚀</h2>\n\t\t\t\t\t\t<p>").concat(t.premium_modal_content,"</p>\n\t\t\t\t\t</div>");return t.topbar_active?n+='\n\t\t\t\t\t<div class="askany-pricing-offer">\n\t\t\t\t\t\t<div class="premium-offer-badge">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<circle cx="12" cy="12" r="10"></circle>\n\t\t\t\t\t\t\t\t<polyline points="12 6 12 12 16 14"></polyline>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>Limited Time Offer</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="askany-pricing-countdown">\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-days">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Days</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="countdown-separator">:</div>\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-hours">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Hours</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="countdown-separator">:</div>\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-minutes">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Minutes</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="countdown-separator">:</div>\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-seconds">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Seconds</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p class="premium-offer-text">\n\t\t\t\t\t\t\t🔥 <strong>'.concat(t.premium_modal_offer_amount,"</strong> - Save hundreds of dollars!\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>"):(n+='\n\t\t\t\t\t<div class="askany-pricing-basic-offer">\n\t\t\t\t\t\t<div class="askany-value-props">\n\t\t\t\t\t\t\t<div class="value-prop">\n\t\t\t\t\t\t\t\t<svg class="value-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t\t<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path>\n\t\t\t\t\t\t\t\t\t<line x1="3" y1="6" x2="21" y2="6"></line>\n\t\t\t\t\t\t\t\t\t<path d="M16 10a4 4 0 0 1-8 0"></path>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t<div class="value-content">\n\t\t\t\t\t\t\t\t\t<h4>Supercharge Your Website</h4>\n\t\t\t\t\t\t\t\t\t<p>Get access to unlimited premium features that will transform your site</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="value-prop">\n\t\t\t\t\t\t\t\t<svg class="value-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t\t<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>\n\t\t\t\t\t\t\t\t\t<path d="M7 11V7a5 5 0 0 1 10 0v4"></path>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t<div class="value-content">\n\t\t\t\t\t\t\t\t\t<h4>All Upcoming Feature</h4>\n\t\t\t\t\t\t\t\t\t<p>Protect your site with enterprise-level security features</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="value-prop">\n\t\t\t\t\t\t\t\t<svg class="value-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t\t<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t<div class="value-content">\n\t\t\t\t\t\t\t\t\t<h4>Priority Support</h4>\n\t\t\t\t\t\t\t\t\t<p>Get help when you need it with our dedicated support team</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>',t.premium_modal_offer_amount&&(n+='\n\t\t\t\t\t\t<div class="premium-offer-highlight">\n\t\t\t\t\t\t\t<span class="offer-badge">Special Offer</span>\n\t\t\t\t\t\t\t<span class="offer-text">'.concat(t.premium_modal_offer_amount,"</span>\n\t\t\t\t\t\t</div>")),n+="\n\t\t\t\t\t</div>"),n+='\n\t\t\t\t\t<button class="askany-pricing-cta" onclick="window.open(\''.concat(t.premium_modal_button_url,"', '_blank')\">\n\t\t\t\t\t\t<span>").concat(t.premium_modal_button_text,'</span>\n\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t<line x1="5" y1="12" x2="19" y2="12"></line>\n\t\t\t\t\t\t\t<polyline points="12 5 19 12 12 19"></polyline>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>'),t.topbar_active&&(n+='\n\t\t\t\t\t<div class="askany-pricing-highlights">\n\t\t\t\t\t\t<div class="highlight-item">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path>\n\t\t\t\t\t\t\t\t<line x1="3" y1="6" x2="21" y2="6"></line>\n\t\t\t\t\t\t\t\t<path d="M16 10a4 4 0 0 1-8 0"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>Unlimited Premium Features</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="highlight-item">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>\n\t\t\t\t\t\t\t\t<path d="M7 11V7a5 5 0 0 1 10 0v4"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>All Upcoming Feature</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="highlight-item">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>Priority Support</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>'),n+='\n\t\t\t\t\t<div class="askany-pricing-footer">\n\t\t\t\t\t\t<div class="guarantee-badge">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>\n\t\t\t\t\t\t\t\t<path d="M9 12l2 2 4-4"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>14-Day Money-Back Guarantee</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p class="guarantee-text">No questions asked • Cancel anytime • Secure payment</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>'},AskanyPricing.showModal=r(n().mark((function e(){var r,i,a,s=arguments;return n().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=s.length>0&&void 0!==s[0]?s[0]:{},n.prev=1,n.next=4,AskanyPricing.fetchPricingData();case 4:if((i=n.sent).topbar_active){n.next=9;break}return console.log("Topbar inactive - using default Pro modal"),"undefined"!=typeof AskanyPro&&"function"==typeof AskanyPro.openModal&&AskanyPro.openModal(r),n.abrupt("return");case 9:console.log("Topbar active - showing dynamic pricing modal"),t("#askany-pricing-modal").remove(),a=AskanyPricing.createPricingModal(i),t("body").append(a),t("#askany-pricing-modal").fadeIn(300),t("body").css("overflow","hidden"),i.discount_end_time&&(AskanyPricing.updateCountdown(i.discount_end_time),o=setInterval((function(){AskanyPricing.updateCountdown(i.discount_end_time)}),1e3)),n.next=22;break;case 18:n.prev=18,n.t0=n.catch(1),console.error("Failed to show pricing modal:",n.t0),"undefined"!=typeof AskanyPro&&"function"==typeof AskanyPro.openModal&&AskanyPro.openModal(r);case 22:case"end":return n.stop()}}),e,null,[[1,18]])}))),AskanyPricing.closeModal=function(){t("#askany-pricing-modal").fadeOut(300,(function(){t(this).remove()})),t("body").css("overflow",""),o&&(clearInterval(o),o=null)},AskanyPricing.clearCache=function(){localStorage.removeItem(e.cacheKey),console.log("Pricing data cache cleared")},AskanyPricing.configure=function(t){t.apiUrl&&(e.apiUrl=t.apiUrl),t.cacheExpiry&&(e.cacheExpiry=t.cacheExpiry),console.log("Dynamic pricing configured:",e)},AskanyPricing.init=function(){t(document).on("click",".askany-pricing-modal-close, .askany-pricing-modal-overlay",(function(){AskanyPricing.closeModal()})),t(document).on("keydown",(function(n){"Escape"===n.key&&t("#askany-pricing-modal").is(":visible")&&AskanyPricing.closeModal()}))},t(document).ready((function(){AskanyPricing.init()}))}(jQuery)})();
     1(()=>{function t(n){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(n)}function n(){"use strict";n=function(){return r};var e,r={},o=Object.prototype,i=o.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function u(t,n,e,r){return Object.defineProperty(t,n,{value:e,enumerable:!r,configurable:!r,writable:!r})}try{u({},"")}catch(e){u=function(t,n,e){return t[n]=e}}function d(t,n,r,o){var i=n&&n.prototype instanceof f?n:f,a=Object.create(i.prototype);return u(a,"_invoke",function(t,n,r){var o=1;return function(i,a){if(3===o)throw Error("Generator is already running");if(4===o){if("throw"===i)throw a;return{value:e,done:!0}}for(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var c=_(s,r);if(c){if(c===h)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(1===o)throw o=4,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=3;var l=p(t,n,r);if("normal"===l.type){if(o=r.done?4:2,l.arg===h)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(o=4,r.method="throw",r.arg=l.arg)}}}(t,r,new E(o||[])),!0),a}function p(t,n,e){try{return{type:"normal",arg:t.call(n,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=d;var h={};function f(){}function g(){}function v(){}var y={};u(y,s,(function(){return this}));var m=Object.getPrototypeOf,w=m&&m(m(j([])));w&&w!==o&&i.call(w,s)&&(y=w);var k=v.prototype=f.prototype=Object.create(y);function x(t){["next","throw","return"].forEach((function(n){u(t,n,(function(t){return this._invoke(n,t)}))}))}function b(n,e){function r(o,a,s,c){var l=p(n[o],n,a);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==t(d)&&i.call(d,"__await")?e.resolve(d.__await).then((function(t){r("next",t,s,c)}),(function(t){r("throw",t,s,c)})):e.resolve(d).then((function(t){u.value=t,s(u)}),(function(t){return r("throw",t,s,c)}))}c(l.arg)}var o;u(this,"_invoke",(function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}),!0)}function _(t,n){var r=n.method,o=t.i[r];if(o===e)return n.delegate=null,"throw"===r&&t.i.return&&(n.method="return",n.arg=e,_(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var i=p(o,t.i,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,h;var a=i.arg;return a?a.done?(n[t.r]=a.value,n.next=t.n,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function P(t){this.tryEntries.push(t)}function A(t){var n=t[4]||{};n.type="normal",n.arg=e,t[4]=n}function E(t){this.tryEntries=[[-1]],t.forEach(P,this),this.reset(!0)}function j(n){if(null!=n){var r=n[s];if(r)return r.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var o=-1,a=function t(){for(;++o<n.length;)if(i.call(n,o))return t.value=n[o],t.done=!1,t;return t.value=e,t.done=!0,t};return a.next=a}}throw new TypeError(t(n)+" is not iterable")}return g.prototype=v,u(k,"constructor",v),u(v,"constructor",g),g.displayName=u(v,l,"GeneratorFunction"),r.isGeneratorFunction=function(t){var n="function"==typeof t&&t.constructor;return!!n&&(n===g||"GeneratorFunction"===(n.displayName||n.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,u(t,l,"GeneratorFunction")),t.prototype=Object.create(k),t},r.awrap=function(t){return{__await:t}},x(b.prototype),u(b.prototype,c,(function(){return this})),r.AsyncIterator=b,r.async=function(t,n,e,o,i){void 0===i&&(i=Promise);var a=new b(d(t,n,e,o),i);return r.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},x(k),u(k,l,"Generator"),u(k,s,(function(){return this})),u(k,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var n=Object(t),e=[];for(var r in n)e.unshift(r);return function t(){for(;e.length;)if((r=e.pop())in n)return t.value=r,t.done=!1,t;return t.done=!0,t}},r.values=j,E.prototype={constructor:E,reset:function(t){if(this.prev=this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(A),!t)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0][4];if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function r(e){a.type="throw",a.arg=t,n.next=e}for(var o=n.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i[4],s=this.prev,c=i[1],l=i[2];if(-1===i[0])return r("end"),!1;if(!c&&!l)throw Error("try statement without catch or finally");if(null!=i[0]&&i[0]<=s){if(s<c)return this.method="next",this.arg=e,r(c),!0;if(s<l)return r(l),!1}}},abrupt:function(t,n){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r[0]>-1&&r[0]<=this.prev&&this.prev<r[2]){var o=r;break}}o&&("break"===t||"continue"===t)&&o[0]<=n&&n<=o[2]&&(o=null);var i=o?o[4]:{};return i.type=t,i.arg=n,o?(this.method="next",this.next=o[2],h):this.complete(i)},complete:function(t,n){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&n&&(this.next=n),h},finish:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e[2]===t)return this.complete(e[4],e[3]),A(e),h}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var e=this.tryEntries[n];if(e[0]===t){var r=e[4];if("throw"===r.type){var o=r.arg;A(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={i:j(t),r:n,n:r},"next"===this.method&&(this.arg=e),h}},r}function e(t,n,e,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void e(t)}s.done?n(c):Promise.resolve(c).then(r,o)}function r(t){return function(){var n=this,r=arguments;return new Promise((function(o,i){var a=t.apply(n,r);function s(t){e(a,o,i,s,c,"next",t)}function c(t){e(a,o,i,s,c,"throw",t)}s(void 0)}))}}!function(t){"use strict";window.AskanyPricing=window.AskanyPricing||{};var e={apiUrl:"https://wpazleen.com/wp-json/wpx/v1/premium-modal-settings?config_id=askany",cacheKey:"askany_pricing_data",cacheExpiry:432e5},o=null;AskanyPricing.fetchPricingData=r(n().mark((function t(){var r,o,i,a,s,c;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=localStorage.getItem(e.cacheKey))){t.next=7;break}if(o=JSON.parse(r),i=Date.now(),!(o.timestamp&&i-o.timestamp<e.cacheExpiry)){t.next=7;break}return console.log("Using cached pricing data"),t.abrupt("return",o.data);case 7:return t.prev=7,console.log("Fetching pricing data from API..."),t.next=11,fetch(e.apiUrl);case 11:return a=t.sent,t.next=14,a.json();case 14:if(!(s=t.sent).success||!s.data){t.next=20;break}return c={data:s.data,timestamp:Date.now()},localStorage.setItem(e.cacheKey,JSON.stringify(c)),console.log("Pricing data fetched:",s.data),t.abrupt("return",s.data);case 20:return t.abrupt("return",AskanyPricing.getFallbackData());case 23:return t.prev=23,t.t0=t.catch(7),console.warn("Failed to fetch pricing data:",t.t0),t.abrupt("return",AskanyPricing.getFallbackData());case 27:case"end":return t.stop()}}),t,null,[[7,23]])}))),AskanyPricing.getFallbackData=function(){return{topbar_active:!1,discount_end_time:null,premium_modal_offer_amount:"Special Offer",premium_modal_header_title:"Unlock Premium Power!",premium_modal_content:"Upgrade now to unlock AskAny powerful features and take your site to the next level!",premium_modal_button_text:"Upgrade to Premium Now",premium_modal_button_url:"#upgrade"}},AskanyPricing.formatTime=function(t){return t.toString().padStart(2,"0")},AskanyPricing.updateCountdown=function(n){var e=new Date(n),r=(new Date).getTime(),i=e.getTime()-r;if(i>0){var a=Math.floor(i/864e5),s=Math.floor(i%864e5/36e5),c=Math.floor(i%36e5/6e4),l=Math.floor(i%6e4/1e3);t("#askany-countdown-days").text(AskanyPricing.formatTime(a)),t("#askany-countdown-hours").text(AskanyPricing.formatTime(s)),t("#askany-countdown-minutes").text(AskanyPricing.formatTime(c)),t("#askany-countdown-seconds").text(AskanyPricing.formatTime(l))}else t(".askany-pricing-countdown").html('<p class="countdown-ended">😬 Oops! Offer may slipped away. Check back soon.</p>'),o&&clearInterval(o)},AskanyPricing.createPricingModal=function(t){var n='\n\t\t\t<div id="askany-pricing-modal" class="askany-pricing-modal" style="display: none;">\n\t\t\t\t<div class="askany-pricing-modal-overlay"></div>\n\t\t\t\t<div class="askany-pricing-modal-content">\n\t\t\t\t\t<button class="askany-pricing-modal-close" aria-label="Close">\n\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t<line x1="18" y1="6" x2="6" y2="18"></line>\n\t\t\t\t\t\t\t<line x1="6" y1="6" x2="18" y2="18"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t\t\n\t\t\t\t\t<div class="askany-pricing-header">\n\t\t\t\t\t\t<div class="premium-crown">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h2>'.concat(t.premium_modal_header_title," 🚀</h2>\n\t\t\t\t\t\t<p>").concat(t.premium_modal_content,"</p>\n\t\t\t\t\t</div>");return t.topbar_active?n+='\n\t\t\t\t\t<div class="askany-pricing-offer">\n\t\t\t\t\t\t<div class="premium-offer-badge">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<circle cx="12" cy="12" r="10"></circle>\n\t\t\t\t\t\t\t\t<polyline points="12 6 12 12 16 14"></polyline>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>Limited Time Offer</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="askany-pricing-countdown">\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-days">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Days</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="countdown-separator">:</div>\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-hours">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Hours</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="countdown-separator">:</div>\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-minutes">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Minutes</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="countdown-separator">:</div>\n\t\t\t\t\t\t\t<div class="countdown-item">\n\t\t\t\t\t\t\t\t<span class="countdown-number" id="askany-countdown-seconds">00</span>\n\t\t\t\t\t\t\t\t<span class="countdown-label">Seconds</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p class="premium-offer-text">\n\t\t\t\t\t\t\t🔥 <strong>'.concat(t.premium_modal_offer_amount,"</strong> - Save hundreds of dollars!\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>"):(n+='\n\t\t\t\t\t<div class="askany-pricing-basic-offer">\n\t\t\t\t\t\t<div class="askany-value-props">\n\t\t\t\t\t\t\t<div class="value-prop">\n\t\t\t\t\t\t\t\t<svg class="value-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t\t<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path>\n\t\t\t\t\t\t\t\t\t<line x1="3" y1="6" x2="21" y2="6"></line>\n\t\t\t\t\t\t\t\t\t<path d="M16 10a4 4 0 0 1-8 0"></path>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t<div class="value-content">\n\t\t\t\t\t\t\t\t\t<h4>Supercharge Your Website</h4>\n\t\t\t\t\t\t\t\t\t<p>Get access to unlimited premium features that will transform your site</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="value-prop">\n\t\t\t\t\t\t\t\t<svg class="value-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t\t<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>\n\t\t\t\t\t\t\t\t\t<path d="M7 11V7a5 5 0 0 1 10 0v4"></path>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t<div class="value-content">\n\t\t\t\t\t\t\t\t\t<h4>All Upcoming Feature</h4>\n\t\t\t\t\t\t\t\t\t<p>Protect your site with enterprise-level security features</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="value-prop">\n\t\t\t\t\t\t\t\t<svg class="value-icon" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t\t<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t<div class="value-content">\n\t\t\t\t\t\t\t\t\t<h4>Priority Support</h4>\n\t\t\t\t\t\t\t\t\t<p>Get help when you need it with our dedicated support team</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>',t.premium_modal_offer_amount&&(n+='\n\t\t\t\t\t\t<div class="premium-offer-highlight">\n\t\t\t\t\t\t\t<span class="offer-badge">Special Offer</span>\n\t\t\t\t\t\t\t<span class="offer-text">'.concat(t.premium_modal_offer_amount,"</span>\n\t\t\t\t\t\t</div>")),n+="\n\t\t\t\t\t</div>"),n+='\n\t\t\t\t\t<button class="askany-pricing-cta" onclick="window.open(\''.concat(t.premium_modal_button_url,"', '_blank')\">\n\t\t\t\t\t\t<span>").concat(t.premium_modal_button_text,'</span>\n\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t<line x1="5" y1="12" x2="19" y2="12"></line>\n\t\t\t\t\t\t\t<polyline points="12 5 19 12 12 19"></polyline>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>'),t.topbar_active&&(n+='\n\t\t\t\t\t<div class="askany-pricing-highlights">\n\t\t\t\t\t\t<div class="highlight-item">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path>\n\t\t\t\t\t\t\t\t<line x1="3" y1="6" x2="21" y2="6"></line>\n\t\t\t\t\t\t\t\t<path d="M16 10a4 4 0 0 1-8 0"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>Unlimited Premium Features</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="highlight-item">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>\n\t\t\t\t\t\t\t\t<path d="M7 11V7a5 5 0 0 1 10 0v4"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>All Upcoming Feature</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="highlight-item">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>Priority Support</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>'),n+='\n\t\t\t\t\t<div class="askany-pricing-footer">\n\t\t\t\t\t\t<div class="guarantee-badge">\n\t\t\t\t\t\t\t<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n\t\t\t\t\t\t\t\t<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>\n\t\t\t\t\t\t\t\t<path d="M9 12l2 2 4-4"></path>\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span>14-Day Money-Back Guarantee</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p class="guarantee-text">No questions asked • Cancel anytime • Secure payment</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>'},AskanyPricing.showModal=r(n().mark((function e(){var r,i,a,s=arguments;return n().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=s.length>0&&void 0!==s[0]?s[0]:{},n.prev=1,n.next=4,AskanyPricing.fetchPricingData();case 4:if((i=n.sent).topbar_active){n.next=9;break}return console.log("Topbar inactive - using default Pro modal"),"undefined"!=typeof AskanyPro&&"function"==typeof AskanyPro.openModal&&AskanyPro.openModal(r),n.abrupt("return");case 9:console.log("Topbar active - showing dynamic pricing modal"),t("#askany-pricing-modal").remove(),a=AskanyPricing.createPricingModal(i),t("body").append(a),t("#askany-pricing-modal").fadeIn(300),t("body").css("overflow","hidden"),i.discount_end_time&&(AskanyPricing.updateCountdown(i.discount_end_time),o=setInterval((function(){AskanyPricing.updateCountdown(i.discount_end_time)}),1e3)),n.next=22;break;case 18:n.prev=18,n.t0=n.catch(1),console.error("Failed to show pricing modal:",n.t0),"undefined"!=typeof AskanyPro&&"function"==typeof AskanyPro.openModal&&AskanyPro.openModal(r);case 22:case"end":return n.stop()}}),e,null,[[1,18]])}))),AskanyPricing.closeModal=function(){t("#askany-pricing-modal").fadeOut(300,(function(){t(this).remove()})),t("body").css("overflow",""),o&&(clearInterval(o),o=null)},AskanyPricing.clearCache=function(){localStorage.removeItem(e.cacheKey),console.log("Pricing data cache cleared")},AskanyPricing.configure=function(t){t.apiUrl&&(e.apiUrl=t.apiUrl),t.cacheExpiry&&(e.cacheExpiry=t.cacheExpiry),console.log("Dynamic pricing configured:",e)},AskanyPricing.init=function(){t(document).on("click",".askany-pricing-modal-close, .askany-pricing-modal-overlay",(function(){AskanyPricing.closeModal()})),t(document).on("keydown",(function(n){"Escape"===n.key&&t("#askany-pricing-modal").is(":visible")&&AskanyPricing.closeModal()}))},t(document).ready((function(){AskanyPricing.init()}))}(jQuery)})();
  • askany/trunk/includes/class-admin-pages.php

    r3414941 r3439685  
    285285            'restUrl' => rest_url(),
    286286            'restNonce' => wp_create_nonce('wp_rest'),
     287            'isPro' => \Askany\Plugin::get_instance()->is_pro_active(),
    287288            'mediaUploader' => array(
    288289                'title' => __('Select Assistant Avatar', 'askany'),
  • askany/trunk/includes/class-ajax-handler.php

    r3414941 r3439685  
    176176        // Database management AJAX handlers
    177177        add_action('wp_ajax_askany_cleanup_old_data', array( $this, 'cleanup_old_data' ));
     178       
    178179        add_action('wp_ajax_askany_truncate_all_data', array( $this, 'truncate_all_data' ));
    179180        add_action('wp_ajax_askany_optimize_tables', array( $this, 'optimize_tables' ));
     
    936937        $contact_form_enabled = isset( $settings['contact_form_enabled'] ) ? (bool) $settings['contact_form_enabled'] : false;
    937938        $contact_form_shortcode = isset( $settings['contact_form_shortcode'] ) ? sanitize_text_field( wp_unslash( $settings['contact_form_shortcode'] ) ) : '';
     939        $response_language = isset( $settings['response_language'] ) ? sanitize_text_field( wp_unslash( $settings['response_language'] ) ) : 'auto';
     940
     941        // Validate language selection based on Pro status
     942        $plugin = \Askany\Plugin::get_instance();
     943        $is_pro = $plugin->is_pro_active();
     944        $free_languages = array( 'auto', 'en', 'bn' );
     945       
     946        if ( ! $is_pro && ! in_array( $response_language, $free_languages ) ) {
     947            // User tried to select a Pro language without Pro - revert to auto
     948            $response_language = 'auto';
     949        }
    938950
    939951        $settings_to_update = array(
     
    950962            'contact_form_enabled' => $contact_form_enabled,
    951963            'contact_form_shortcode' => $contact_form_shortcode,
     964            'response_language' => $response_language,
    952965        );
    953966
  • askany/trunk/includes/class-api-manager.php

    r3414941 r3439685  
    125125     */
    126126    private $contact_form_shortcode;
     127
     128    /**
     129     * Response language setting.
     130     *
     131     * @var string
     132     */
     133    private $response_language;
    127134
    128135    /**
     
    172179        $this->contact_form_enabled = get_option('askany_contact_form_enabled', false);
    173180        $this->contact_form_shortcode = get_option('askany_contact_form_shortcode', '');
     181        $this->response_language = get_option('askany_response_language', 'auto');
    174182    }
    175183
     
    17221730        }
    17231731
     1732        // Handle response language setting
     1733        if ( isset($settings['response_language']) ) {
     1734            update_option('askany_response_language', sanitize_text_field($settings['response_language']));
     1735        }
     1736
    17241737        $this->load_settings();
    17251738        return true;
     
    17451758            'contact_form_enabled' => get_option('askany_contact_form_enabled', ''),
    17461759            'contact_form_shortcode' => get_option('askany_contact_form_shortcode', ''),
     1760            'response_language' => get_option('askany_response_language', 'auto'),
    17471761            // Home page settings
    17481762            'home_page_enabled' => get_option('askany_home_page_enabled', false),
     
    20912105     */
    20922106    private function build_enhanced_system_message( $relevant_content, $product_context, $conversation_history ) {
    2093         $system_message = "You are an intelligent shopping assistant for a WordPress/WooCommerce website. ";
     2107        $system_message = "";
     2108       
     2109        // Add language instruction FIRST if specific language is set
     2110        if ( ! empty($this->response_language) && $this->response_language !== 'auto' ) {
     2111            $language_names = array(
     2112                'en' => 'English',
     2113                'es' => 'Spanish (Español)',
     2114                'fr' => 'French (Français)',
     2115                'de' => 'German (Deutsch)',
     2116                'it' => 'Italian (Italiano)',
     2117                'pt' => 'Portuguese (Português)',
     2118                'ru' => 'Russian (Русский)',
     2119                'zh' => 'Chinese (中文)',
     2120                'ja' => 'Japanese (日本語)',
     2121                'ko' => 'Korean (한국어)',
     2122                'ar' => 'Arabic (العربية)',
     2123                'hi' => 'Hindi (हिन्दी)',
     2124                'bn' => 'Bengali (বাংলা)',
     2125                'tr' => 'Turkish (Türkçe)',
     2126                'nl' => 'Dutch (Nederlands)',
     2127                'pl' => 'Polish (Polski)',
     2128                'sv' => 'Swedish (Svenska)',
     2129                'vi' => 'Vietnamese (Tiếng Việt)',
     2130                'th' => 'Thai (ไทย)',
     2131                'id' => 'Indonesian (Bahasa Indonesia)',
     2132            );
     2133           
     2134            $language_name = isset($language_names[$this->response_language]) ? $language_names[$this->response_language] : $this->response_language;
     2135            $system_message .= "⚠️ CRITICAL LANGUAGE REQUIREMENT ⚠️\n";
     2136            $system_message .= "YOU MUST RESPOND EXCLUSIVELY IN: {$language_name}\n";
     2137            $system_message .= "This is a MANDATORY requirement. No matter what language the user writes in, your ENTIRE response must be in {$language_name}.\n";
     2138            $system_message .= "Do NOT respond in English or any other language. ONLY {$language_name}.\n\n";
     2139        }
     2140       
     2141        $system_message .= "You are an intelligent shopping assistant for a WordPress/WooCommerce website. ";
    20942142        $system_message .= "You have access to comprehensive website content and detailed product information. ";
    20952143        $system_message .= "Always provide helpful, accurate, and contextual responses.\n\n";
     
    21332181
    21342182        $system_message .= "INSTRUCTIONS:\n";
     2183       
     2184        // Repeat language instruction in instructions section if set
     2185        if ( ! empty($this->response_language) && $this->response_language !== 'auto' ) {
     2186            $language_names = array(
     2187                'en' => 'English',
     2188                'es' => 'Spanish',
     2189                'fr' => 'French',
     2190                'de' => 'German',
     2191                'it' => 'Italian',
     2192                'pt' => 'Portuguese',
     2193                'ru' => 'Russian',
     2194                'zh' => 'Chinese',
     2195                'ja' => 'Japanese',
     2196                'ko' => 'Korean',
     2197                'ar' => 'Arabic',
     2198                'hi' => 'Hindi',
     2199                'bn' => 'Bengali',
     2200                'tr' => 'Turkish',
     2201                'nl' => 'Dutch',
     2202                'pl' => 'Polish',
     2203                'sv' => 'Swedish',
     2204                'vi' => 'Vietnamese',
     2205                'th' => 'Thai',
     2206                'id' => 'Indonesian',
     2207            );
     2208            $language_name = isset($language_names[$this->response_language]) ? $language_names[$this->response_language] : $this->response_language;
     2209            $system_message .= "- ⚠️ REMEMBER: Respond ONLY in {$language_name} - this is mandatory!\n";
     2210        }
     2211       
    21352212        $system_message .= "- Always reference the conversation history to maintain context\n";
    21362213        $system_message .= "- **IMPORTANT: Always format your responses using Markdown for better readability**\n";
  • askany/trunk/includes/class-plugin.php

    r3393344 r3439685  
    199199        if ( ASKANY_PLUGIN_BASENAME === $file ) {
    200200            $row_meta = array(
    201                 'docs' => '<a href="' . esc_url( 'https://wordpress.org/plugins/askany/' ) . '" target="_blank" aria-label="' . esc_attr__( 'Documentation', 'askany' ) . '">' . esc_html__( 'Documentation', 'askany' ) . '</a>',
     201                'docs' => '<a href="' . esc_url( 'https://wpazleen.com/docs/' ) . '" target="_blank" aria-label="' . esc_attr__( 'Documentation', 'askany' ) . '">' . esc_html__( 'Documentation', 'askany' ) . '</a>',
    202202                'support' => '<a href="' . esc_url( 'https://wordpress.org/support/plugin/askany/' ) . '" target="_blank" aria-label="' . esc_attr__( 'Support forum', 'askany' ) . '">' . esc_html__( 'Support', 'askany' ) . '</a>',
    203203                'review' => '<a href="' . esc_url( 'https://wordpress.org/plugins/askany/#reviews' ) . '" target="_blank" aria-label="' . esc_attr__( 'Review forum', 'askany' ) . '">' . esc_html__( '⭐⭐⭐⭐⭐', 'askany' ) . '</a>',
     
    267267     */
    268268    public function is_pro_active() {
    269         $is_pro_installed = class_exists('AskanyPro') && $this->check_pro_plugin_exists();
    270         return ask_fs()->can_use_premium_code__premium_only() && $is_pro_installed;
     269        // Check if Pro plugin file exists and is active
     270        if ( ! $this->check_pro_plugin_exists() ) {
     271            return false;
     272        }
     273
     274        // Check if Pro plugin is actually activated
     275        if ( ! is_plugin_active( 'askany-pro/askany-pro.php' ) ) {
     276            return false;
     277        }
     278
     279        // Check if Pro class exists
     280        if ( ! class_exists( 'AskanyPro' ) ) {
     281            return false;
     282        }
     283
     284        // Check Freemius premium status
     285        if ( function_exists( 'ask_fs' ) ) {
     286            return ask_fs()->can_use_premium_code__premium_only();
     287        }
     288
     289        return false;
     290    }
     291
     292    /**
     293     * Get Freemius instance
     294     *
     295     * @return object|null Freemius instance or null
     296     */
     297    public function get_freemius_instance() {
     298        return askany_get_freemius_instance();
    271299    }
    272300
  • askany/trunk/readme.txt

    r3426911 r3439685  
    11=== AskAny - AI-Powered Chat Assistant & Live Agent Support ===
    22Contributors: wpazleen, sambyte
    3 Tags: ai chatbot, live chat, customer support, ai assistant, openai
     3Tags: ai support, AI, customer support, helpdesk, ChatGPT
    44Requires at least: 5.9
    55Tested up to: 6.9
    6 Stable tag: 1.6.1
     6Stable tag: 1.7.0
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    3434
    3535✅ **Multi-AI Provider Support** - OpenAI GPT-4, DeepSeek, Google Gemini - switch providers instantly 
     36✅ **AI Response Language** - Select the language for AI responses. "Auto" will match the user's question language. Selecting a specific language will force all AI responses in that language
    3637✅ **Live Agent Handoff** - Seamless AI-to-human support transition in real-time 
    3738✅ **WooCommerce Native** - Product cards, cart integration, order assistance built-in 
     
    534535== Changelog ==
    535536
     537= 1.7.0 – 14 Jan 2026 =
     538- ✨ New AI Response Language model
     539- ✨ SDK updated
     540
    536541= 1.6.1 – 24 Dec 2025 =
    537542- **Enhancement:** SDK updated
  • askany/trunk/templates/admin-settings.php

    r3393344 r3439685  
    363363                        <strong><?php esc_html_e('Benefits:', 'askany'); ?></strong>
    364364                        <?php esc_html_e('Instant responses, lower server load, better user experience.', 'askany'); ?>
     365                    </p>
     366                </td>
     367            </tr>
     368
     369            <tr>
     370                <th scope="row">
     371                    <label for="askany_response_language">
     372                        <?php esc_html_e('AI Response Language', 'askany'); ?>
     373                    </label>
     374                </th>
     375                <td>
     376                    <?php
     377                    $plugin = \Askany\Plugin::get_instance();
     378                    $is_pro = $plugin->is_pro_active();
     379                    ?>
     380                    <select name="askany_response_language" id="askany_response_language" class="regular-text askany-language-select" data-is-pro="<?php echo $is_pro ? '1' : '0'; ?>">
     381                        <option value="auto" <?php selected($settings['response_language'] ?? 'auto', 'auto'); ?>>
     382                            <?php esc_html_e('Auto (Match User Language)', 'askany'); ?>
     383                        </option>
     384                        <option value="en" <?php selected($settings['response_language'] ?? 'auto', 'en'); ?>>
     385                            <?php esc_html_e('English', 'askany'); ?>
     386                        </option>
     387                        <option value="bn" <?php selected($settings['response_language'] ?? 'auto', 'bn'); ?>>
     388                            <?php esc_html_e('Bengali (বাংলা)', 'askany'); ?>
     389                        </option>
     390                        <option value="es" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'es'); ?>>
     391                            <?php esc_html_e('Spanish (Español)', 'askany'); ?>
     392                        </option>
     393                        <option value="fr" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'fr'); ?>>
     394                            <?php esc_html_e('French (Français)', 'askany'); ?>
     395                        </option>
     396                        <option value="de" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'de'); ?>>
     397                            <?php esc_html_e('German (Deutsch)', 'askany'); ?>
     398                        </option>
     399                        <option value="it" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'it'); ?>>
     400                            <?php esc_html_e('Italian (Italiano)', 'askany'); ?>
     401                        </option>
     402                        <option value="pt" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'pt'); ?>>
     403                            <?php esc_html_e('Portuguese (Português)', 'askany'); ?>
     404                        </option>
     405                        <option value="ru" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'ru'); ?>>
     406                            <?php esc_html_e('Russian (Русский)', 'askany'); ?>
     407                        </option>
     408                        <option value="zh" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'zh'); ?>>
     409                            <?php esc_html_e('Chinese (中文)', 'askany'); ?>
     410                        </option>
     411                        <option value="ja" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'ja'); ?>>
     412                            <?php esc_html_e('Japanese (日本語)', 'askany'); ?>
     413                        </option>
     414                        <option value="ko" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'ko'); ?>>
     415                            <?php esc_html_e('Korean (한국어)', 'askany'); ?>
     416                        </option>
     417                        <option value="ar" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'ar'); ?>>
     418                            <?php esc_html_e('Arabic (العربية)', 'askany'); ?>
     419                        </option>
     420                        <option value="hi" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'hi'); ?>>
     421                            <?php esc_html_e('Hindi (हिन्दी)', 'askany'); ?>
     422                        </option>
     423                        <option value="tr" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'tr'); ?>>
     424                            <?php esc_html_e('Turkish (Türkçe)', 'askany'); ?>
     425                        </option>
     426                        <option value="nl" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'nl'); ?>>
     427                            <?php esc_html_e('Dutch (Nederlands)', 'askany'); ?>
     428                        </option>
     429                        <option value="pl" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'pl'); ?>>
     430                            <?php esc_html_e('Polish (Polski)', 'askany'); ?>
     431                        </option>
     432                        <option value="sv" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'sv'); ?>>
     433                            <?php esc_html_e('Swedish (Svenska)', 'askany'); ?>
     434                        </option>
     435                        <option value="vi" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'vi'); ?>>
     436                            <?php esc_html_e('Vietnamese (Tiếng Việt)', 'askany'); ?>
     437                        </option>
     438                        <option value="th" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'th'); ?>>
     439                            <?php esc_html_e('Thai (ไทย)', 'askany'); ?>
     440                        </option>
     441                        <option value="id" data-pro="true" <?php selected($settings['response_language'] ?? 'auto', 'id'); ?>>
     442                            <?php esc_html_e('Indonesian (Bahasa Indonesia)', 'askany'); ?>
     443                        </option>
     444                    </select>
     445                    <p class="description">
     446                        <?php esc_html_e('Select the language for AI responses. "Auto" will match the user\'s question language. Selecting a specific language will force all AI responses in that language.', 'askany'); ?>
     447                        <br>
     448                        <strong><?php esc_html_e('Free:', 'askany'); ?></strong> <?php esc_html_e('Auto, English, Bengali', 'askany'); ?> |
     449                        <strong><?php esc_html_e('Pro:', 'askany'); ?></strong> <?php esc_html_e('All 20+ languages', 'askany'); ?>
    365450                    </p>
    366451                </td>
  • askany/trunk/vendor/freemius/README.md

    r3426911 r3439685  
    9494## Usage example
    9595
    96 You can call any SDK methods by prefixing them with the shortcode function for your particular plugin/theme (specified when completing the SDK integration form in the Developer Dashboard):
     96You can call anySDK methods by prefixing them with the shortcode function for your particular plugin/theme (specified when completing the SDK integration form in the Developer Dashboard):
    9797
    9898```php
     
    111111There are many other SDK methods available that you can use to enhance the functionality of your WordPress product. Some of the more common use-cases are covered in the [Freemius SDK Gists](https://freemius.com/help/documentation/wordpress-sdk/gists/) documentation.
    112112
    113 ## Adding license-based logic examples
    114 
    115 Add marketing content that encourages your users to upgrade to a paid version:
     113## Adding license based logic examples
     114
     115Add marketing content to encourage your users to upgrade for your paid version:
    116116
    117117```php
     
    140140```
    141141
    142 To add a function which will only be available in your premium plugin version, add `__premium_only` as the suffix of the function name. Ensure that all lines that call that method directly or by hooks, are also wrapped in premium only logic:
     142To add a function which will only be available in your premium plugin version, simply add __premium_only as the suffix of the function name. Just make sure that all lines that call that method directly or by hooks, are also wrapped in premium only logic:
    143143
    144144```php
     
    235235There are [two ways](https://freemius.com/help/documentation/wordpress-sdk/software-licensing/#excluding_files_and_folders_from_the_free_plugin_version) to exclude files from your free version.
    236236
    237 1. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be included only in the premium plugin version. This works for all types of files, not only PHP.
     2371. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be only included in the premium plugin version. This works for all types of files, not only PHP.
    2382382. Add `@fs_premium_only` a special meta tag to the plugin's main PHP file header. Example:
    239239```php
     
    262262In the example plugin header above, the file `/lib/functions.php` and the directory `/premium-files/` will be removed from the free plugin version.
    263263
    264 ## Hooks: Actions and Filters
    265 Similar to WordPress’ filters and actions hooks, the Freemius WordPress SDK provides a [collection of filters and actions](https://freemius.com/help/documentation/wordpress-sdk/filters-actions-hooks/) that enable you to customize and extend its functionality in your WordPress plugins or themes.
    266 
    267 ## WordPress.org Compliance
     264# WordPress.org Compliance
    268265Based on [WordPress.org Guidelines](https://wordpress.org/plugins/about/guidelines/) you are not allowed to submit a plugin that has premium code in it:
    269266> All code hosted by WordPress.org servers must be free and fully-functional. If you want to sell advanced features for a plugin (such as a "pro" version), then you must sell and serve that code from your own site, we will not host it on our servers.
Note: See TracChangeset for help on using the changeset viewer.