Changeset 3439685
- Timestamp:
- 01/14/2026 04:20:14 PM (5 weeks ago)
- Location:
- askany
- Files:
-
- 430 added
- 16 edited
-
tags/1.7.0 (added)
-
tags/1.7.0/askany.php (added)
-
tags/1.7.0/assets (added)
-
tags/1.7.0/assets/css (added)
-
tags/1.7.0/assets/css/admin.css (added)
-
tags/1.7.0/assets/css/database-management.css (added)
-
tags/1.7.0/assets/css/dynamic-pricing.css (added)
-
tags/1.7.0/assets/css/frontend.css (added)
-
tags/1.7.0/assets/css/pro-features.css (added)
-
tags/1.7.0/assets/js (added)
-
tags/1.7.0/assets/js/admin.js (added)
-
tags/1.7.0/assets/js/database-management.js (added)
-
tags/1.7.0/assets/js/dynamic-pricing.js (added)
-
tags/1.7.0/assets/js/encryption.js (added)
-
tags/1.7.0/assets/js/external-sources.js (added)
-
tags/1.7.0/assets/js/frontend-sse.js (added)
-
tags/1.7.0/assets/js/frontend.js (added)
-
tags/1.7.0/assets/js/markdown-parser.js (added)
-
tags/1.7.0/assets/js/pro-modal.js (added)
-
tags/1.7.0/assets/js/sse-client.js (added)
-
tags/1.7.0/assets/library (added)
-
tags/1.7.0/assets/library/toastmaster.min.js (added)
-
tags/1.7.0/changelog.txt (added)
-
tags/1.7.0/composer.json (added)
-
tags/1.7.0/dist (added)
-
tags/1.7.0/dist/css (added)
-
tags/1.7.0/dist/css/admin.min.css (added)
-
tags/1.7.0/dist/css/dynamic-pricing.min.css (added)
-
tags/1.7.0/dist/css/frontend.min.css (added)
-
tags/1.7.0/dist/css/pro-features.min.css (added)
-
tags/1.7.0/dist/js (added)
-
tags/1.7.0/dist/js/admin.min.js (added)
-
tags/1.7.0/dist/js/dynamic-pricing.min.js (added)
-
tags/1.7.0/dist/js/encryption.min.js (added)
-
tags/1.7.0/dist/js/frontend.min.js (added)
-
tags/1.7.0/dist/js/markdown-parser.min.js (added)
-
tags/1.7.0/dist/js/pro-features.min.js (added)
-
tags/1.7.0/dist/js/pro-modal.min.js (added)
-
tags/1.7.0/dist/js/sse-client.min.js (added)
-
tags/1.7.0/includes (added)
-
tags/1.7.0/includes/class-admin-pages.php (added)
-
tags/1.7.0/includes/class-ajax-handler.php (added)
-
tags/1.7.0/includes/class-api-manager.php (added)
-
tags/1.7.0/includes/class-assets-manager.php (added)
-
tags/1.7.0/includes/class-content-indexer.php (added)
-
tags/1.7.0/includes/class-database-manager.php (added)
-
tags/1.7.0/includes/class-database.php (added)
-
tags/1.7.0/includes/class-encryption-handler.php (added)
-
tags/1.7.0/includes/class-external-sources-handler.php (added)
-
tags/1.7.0/includes/class-pdf-handler.php (added)
-
tags/1.7.0/includes/class-pdf-upload-handler.php (added)
-
tags/1.7.0/includes/class-plugin.php (added)
-
tags/1.7.0/includes/class-session-manager.php (added)
-
tags/1.7.0/includes/class-shortcode-handler.php (added)
-
tags/1.7.0/includes/class-sse-handler.php (added)
-
tags/1.7.0/includes/providers (added)
-
tags/1.7.0/includes/providers/class-abstract-provider.php (added)
-
tags/1.7.0/includes/providers/class-deepseek-provider.php (added)
-
tags/1.7.0/includes/providers/class-gemini-provider.php (added)
-
tags/1.7.0/includes/providers/class-openai-provider.php (added)
-
tags/1.7.0/includes/providers/class-provider-factory.php (added)
-
tags/1.7.0/includes/providers/interface-ai-provider.php (added)
-
tags/1.7.0/languages (added)
-
tags/1.7.0/languages/askany.pot (added)
-
tags/1.7.0/package.json (added)
-
tags/1.7.0/readme.txt (added)
-
tags/1.7.0/templates (added)
-
tags/1.7.0/templates/admin-api-stats.php (added)
-
tags/1.7.0/templates/admin-chat-logs.php (added)
-
tags/1.7.0/templates/admin-content-index.php (added)
-
tags/1.7.0/templates/admin-database-management.php (added)
-
tags/1.7.0/templates/admin-external-sources.php (added)
-
tags/1.7.0/templates/admin-home-settings.php (added)
-
tags/1.7.0/templates/admin-live-chat.php (added)
-
tags/1.7.0/templates/admin-pdf-import.php (added)
-
tags/1.7.0/templates/admin-qa.php (added)
-
tags/1.7.0/templates/admin-settings.php (added)
-
tags/1.7.0/templates/admin-user-agents.php (added)
-
tags/1.7.0/templates/frontend-widget.php (added)
-
tags/1.7.0/uninstall.php (added)
-
tags/1.7.0/vendor (added)
-
tags/1.7.0/vendor/autoload.php (added)
-
tags/1.7.0/vendor/bin (added)
-
tags/1.7.0/vendor/composer (added)
-
tags/1.7.0/vendor/composer/ClassLoader.php (added)
-
tags/1.7.0/vendor/composer/InstalledVersions.php (added)
-
tags/1.7.0/vendor/composer/LICENSE (added)
-
tags/1.7.0/vendor/composer/autoload_classmap.php (added)
-
tags/1.7.0/vendor/composer/autoload_files.php (added)
-
tags/1.7.0/vendor/composer/autoload_namespaces.php (added)
-
tags/1.7.0/vendor/composer/autoload_psr4.php (added)
-
tags/1.7.0/vendor/composer/autoload_real.php (added)
-
tags/1.7.0/vendor/composer/autoload_static.php (added)
-
tags/1.7.0/vendor/composer/installed.json (added)
-
tags/1.7.0/vendor/composer/installed.php (added)
-
tags/1.7.0/vendor/composer/platform_check.php (added)
-
tags/1.7.0/vendor/freemius (added)
-
tags/1.7.0/vendor/freemius/LICENSE.txt (added)
-
tags/1.7.0/vendor/freemius/README.md (added)
-
tags/1.7.0/vendor/freemius/assets (added)
-
tags/1.7.0/vendor/freemius/assets/css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/account.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/add-ons.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/affiliation.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/checkout.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/clone-resolution.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/common.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/connect.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/debug.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/dialog-boxes.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/gdpr-optin-notice.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/index.php (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/optout.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/admin/plugins.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/customizer.css (added)
-
tags/1.7.0/vendor/freemius/assets/css/index.php (added)
-
tags/1.7.0/vendor/freemius/assets/img (added)
-
tags/1.7.0/vendor/freemius/assets/img/all-in-one-video-gallery.png (added)
-
tags/1.7.0/vendor/freemius/assets/img/askany.png (added)
-
tags/1.7.0/vendor/freemius/assets/img/easy-error-log.png (added)
-
tags/1.7.0/vendor/freemius/assets/img/index.php (added)
-
tags/1.7.0/vendor/freemius/assets/img/notifier-to-slack-pro.png (added)
-
tags/1.7.0/vendor/freemius/assets/img/notifier-to-slack.png (added)
-
tags/1.7.0/vendor/freemius/assets/img/plugin-icon.png (added)
-
tags/1.7.0/vendor/freemius/assets/img/simple-form.gif (added)
-
tags/1.7.0/vendor/freemius/assets/img/theme-icon.png (added)
-
tags/1.7.0/vendor/freemius/assets/img/wc-bulk-order-generator.svg (added)
-
tags/1.7.0/vendor/freemius/assets/index.php (added)
-
tags/1.7.0/vendor/freemius/assets/js (added)
-
tags/1.7.0/vendor/freemius/assets/js/index.php (added)
-
tags/1.7.0/vendor/freemius/assets/js/jquery.form.js (added)
-
tags/1.7.0/vendor/freemius/assets/js/nojquery.ba-postmessage.js (added)
-
tags/1.7.0/vendor/freemius/assets/js/postmessage.js (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/14fb1bd5b7c41648488b06147f50a0dc.svg (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/178afa6030e76635dbe835e111d2c507.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/27b5a722a5553d9de0170325267fccec.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/4375c4a3ddc6f637c2ab9a2d7220f91e.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/4529cac82a2d1f300d3c4702b7b5e8f3.svg (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/45da596e2b512ffc3bb638baaf0fdc4e.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/5480ed23b199531a8cbc05924f26952b.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/a34e046aee1702a5690679750a7f4d0f.svg (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/b09d0b38b627c2fa564d050f79f2f064.svg (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/b4f3b958f4a019862d81b15f3f8eee3a.svg (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/c03f665db27af43971565560adfba594.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/cb5fc4f6ec7ada72e986f6e7dde365bf.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/d65812c447b4523b42d59018e1c0bb53.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/dd89563360f0272635c8f0ab7d7f1402.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/e366d70661d8ad2493bd6afbd779f125.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/f18006f6535a1a6e9c6bfbffafe6f18a.svg (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/f3aac72a8e63997d6bb888f816457e9b.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/f928f1be99776af83e8e6be4baf8ffe7.svg (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/fde48e4609a6ddc11d639fc2421f2afd.png (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/freemius-pricing.js (added)
-
tags/1.7.0/vendor/freemius/assets/js/pricing/freemius-pricing.js.LICENSE.txt (added)
-
tags/1.7.0/vendor/freemius/composer.json (added)
-
tags/1.7.0/vendor/freemius/config.php (added)
-
tags/1.7.0/vendor/freemius/includes (added)
-
tags/1.7.0/vendor/freemius/includes/class-freemius-abstract.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-freemius.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-admin-notices.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-api.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-garbage-collector.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-hook-snapshot.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-lock.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-logger.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-options.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-plugin-updater.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-security.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-storage.php (added)
-
tags/1.7.0/vendor/freemius/includes/class-fs-user-lock.php (added)
-
tags/1.7.0/vendor/freemius/includes/customizer (added)
-
tags/1.7.0/vendor/freemius/includes/customizer/class-fs-customizer-support-section.php (added)
-
tags/1.7.0/vendor/freemius/includes/customizer/class-fs-customizer-upsell-control.php (added)
-
tags/1.7.0/vendor/freemius/includes/customizer/index.php (added)
-
tags/1.7.0/vendor/freemius/includes/debug (added)
-
tags/1.7.0/vendor/freemius/includes/debug/class-fs-debug-bar-panel.php (added)
-
tags/1.7.0/vendor/freemius/includes/debug/debug-bar-start.php (added)
-
tags/1.7.0/vendor/freemius/includes/debug/index.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-affiliate-terms.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-affiliate.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-billing.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-entity.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-payment.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-plugin-info.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-plugin-license.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-plugin-plan.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-plugin-tag.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-plugin.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-pricing.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-scope-entity.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-site.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-subscription.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/class-fs-user.php (added)
-
tags/1.7.0/vendor/freemius/includes/entities/index.php (added)
-
tags/1.7.0/vendor/freemius/includes/fs-core-functions.php (added)
-
tags/1.7.0/vendor/freemius/includes/fs-essential-functions.php (added)
-
tags/1.7.0/vendor/freemius/includes/fs-html-escaping-functions.php (added)
-
tags/1.7.0/vendor/freemius/includes/fs-plugin-info-dialog.php (added)
-
tags/1.7.0/vendor/freemius/includes/index.php (added)
-
tags/1.7.0/vendor/freemius/includes/l10n.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-admin-menu-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-admin-notice-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-cache-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-checkout-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-clone-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-contact-form-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-debug-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-gdpr-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-key-value-storage.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-license-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-option-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-permission-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-plan-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/class-fs-plugin-manager.php (added)
-
tags/1.7.0/vendor/freemius/includes/managers/index.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/Exceptions (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/Exceptions/EmptyArgumentException.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/Exceptions/Exception.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/Exceptions/InvalidArgumentException.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/Exceptions/OAuthException.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/Exceptions/index.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/FreemiusBase.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/FreemiusWordPress.php (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/LICENSE.txt (added)
-
tags/1.7.0/vendor/freemius/includes/sdk/index.php (added)
-
tags/1.7.0/vendor/freemius/includes/supplements (added)
-
tags/1.7.0/vendor/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php (added)
-
tags/1.7.0/vendor/freemius/includes/supplements/fs-essential-functions-2.2.1.php (added)
-
tags/1.7.0/vendor/freemius/includes/supplements/fs-migration-2.5.1.php (added)
-
tags/1.7.0/vendor/freemius/includes/supplements/index.php (added)
-
tags/1.7.0/vendor/freemius/index.php (added)
-
tags/1.7.0/vendor/freemius/languages (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-cs_CZ.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-da_DK.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-de_DE.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-es_ES.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-fr_FR.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-he_IL.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-hu_HU.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-it_IT.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-ja.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-nl_NL.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-ru_RU.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-ta.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius-zh_CN.mo (added)
-
tags/1.7.0/vendor/freemius/languages/freemius.pot (added)
-
tags/1.7.0/vendor/freemius/languages/index.php (added)
-
tags/1.7.0/vendor/freemius/require.php (added)
-
tags/1.7.0/vendor/freemius/start.php (added)
-
tags/1.7.0/vendor/freemius/templates (added)
-
tags/1.7.0/vendor/freemius/templates/account (added)
-
tags/1.7.0/vendor/freemius/templates/account.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/billing.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/partials (added)
-
tags/1.7.0/vendor/freemius/templates/account/partials/activate-license-button.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/partials/addon.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/partials/deactivate-license-button.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/partials/disconnect-button.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/partials/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/partials/site.php (added)
-
tags/1.7.0/vendor/freemius/templates/account/payments.php (added)
-
tags/1.7.0/vendor/freemius/templates/add-ons.php (added)
-
tags/1.7.0/vendor/freemius/templates/add-trial-to-pricing.php (added)
-
tags/1.7.0/vendor/freemius/templates/admin-notice.php (added)
-
tags/1.7.0/vendor/freemius/templates/ajax-loader.php (added)
-
tags/1.7.0/vendor/freemius/templates/api-connectivity-message-js.php (added)
-
tags/1.7.0/vendor/freemius/templates/auto-installation.php (added)
-
tags/1.7.0/vendor/freemius/templates/checkout (added)
-
tags/1.7.0/vendor/freemius/templates/checkout.php (added)
-
tags/1.7.0/vendor/freemius/templates/checkout/frame.php (added)
-
tags/1.7.0/vendor/freemius/templates/checkout/process-redirect.php (added)
-
tags/1.7.0/vendor/freemius/templates/checkout/redirect.php (added)
-
tags/1.7.0/vendor/freemius/templates/clone-resolution-js.php (added)
-
tags/1.7.0/vendor/freemius/templates/connect (added)
-
tags/1.7.0/vendor/freemius/templates/connect.php (added)
-
tags/1.7.0/vendor/freemius/templates/connect/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/connect/permission.php (added)
-
tags/1.7.0/vendor/freemius/templates/connect/permissions-group.php (added)
-
tags/1.7.0/vendor/freemius/templates/contact.php (added)
-
tags/1.7.0/vendor/freemius/templates/debug (added)
-
tags/1.7.0/vendor/freemius/templates/debug.php (added)
-
tags/1.7.0/vendor/freemius/templates/debug/api-calls.php (added)
-
tags/1.7.0/vendor/freemius/templates/debug/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/debug/logger.php (added)
-
tags/1.7.0/vendor/freemius/templates/debug/plugins-themes-sync.php (added)
-
tags/1.7.0/vendor/freemius/templates/debug/scheduled-crons.php (added)
-
tags/1.7.0/vendor/freemius/templates/email.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms (added)
-
tags/1.7.0/vendor/freemius/templates/forms/affiliation.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/data-debug-mode.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/deactivation (added)
-
tags/1.7.0/vendor/freemius/templates/forms/deactivation/contact.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/deactivation/form.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/deactivation/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/deactivation/retry-skip.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/email-address-update.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/license-activation.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/optout.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/premium-versions-upgrade-handler.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/premium-versions-upgrade-metadata.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/resend-key.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/subscription-cancellation.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/trial-start.php (added)
-
tags/1.7.0/vendor/freemius/templates/forms/user-change.php (added)
-
tags/1.7.0/vendor/freemius/templates/gdpr-optin-js.php (added)
-
tags/1.7.0/vendor/freemius/templates/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/js (added)
-
tags/1.7.0/vendor/freemius/templates/js/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/js/jquery.content-change.php (added)
-
tags/1.7.0/vendor/freemius/templates/js/open-license-activation.php (added)
-
tags/1.7.0/vendor/freemius/templates/js/permissions.php (added)
-
tags/1.7.0/vendor/freemius/templates/js/style-premium-theme.php (added)
-
tags/1.7.0/vendor/freemius/templates/partials (added)
-
tags/1.7.0/vendor/freemius/templates/partials/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/partials/network-activation.php (added)
-
tags/1.7.0/vendor/freemius/templates/plugin-icon.php (added)
-
tags/1.7.0/vendor/freemius/templates/plugin-info (added)
-
tags/1.7.0/vendor/freemius/templates/plugin-info/description.php (added)
-
tags/1.7.0/vendor/freemius/templates/plugin-info/features.php (added)
-
tags/1.7.0/vendor/freemius/templates/plugin-info/index.php (added)
-
tags/1.7.0/vendor/freemius/templates/plugin-info/screenshots.php (added)
-
tags/1.7.0/vendor/freemius/templates/pricing.php (added)
-
tags/1.7.0/vendor/freemius/templates/secure-https-header.php (added)
-
tags/1.7.0/vendor/freemius/templates/sticky-admin-notice-js.php (added)
-
tags/1.7.0/vendor/freemius/templates/tabs-capture-js.php (added)
-
tags/1.7.0/vendor/freemius/templates/tabs.php (added)
-
tags/1.7.0/vendor/smalot (added)
-
tags/1.7.0/vendor/smalot/pdfparser (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github/ISSUE_TEMPLATE (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github/ISSUE_TEMPLATE/incorrect-parsing.md (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github/pull_request_template.md (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github/workflows (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github/workflows/coding-standards.yml (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github/workflows/continuous-integration.yml (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.github/workflows/performance.yml (added)
-
tags/1.7.0/vendor/smalot/pdfparser/.php-cs-fixer.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/CONTRIBUTING.md (added)
-
tags/1.7.0/vendor/smalot/pdfparser/LICENSE.txt (added)
-
tags/1.7.0/vendor/smalot/pdfparser/Makefile (added)
-
tags/1.7.0/vendor/smalot/pdfparser/README.md (added)
-
tags/1.7.0/vendor/smalot/pdfparser/alt_autoload.php-dist (added)
-
tags/1.7.0/vendor/smalot/pdfparser/composer.json (added)
-
tags/1.7.0/vendor/smalot/pdfparser/doc (added)
-
tags/1.7.0/vendor/smalot/pdfparser/doc/CustomConfig.md (added)
-
tags/1.7.0/vendor/smalot/pdfparser/doc/Developer.md (added)
-
tags/1.7.0/vendor/smalot/pdfparser/doc/Usage.md (added)
-
tags/1.7.0/vendor/smalot/pdfparser/phpunit-windows.xml (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Config.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Document.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementArray.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementBoolean.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementDate.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementHexa.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementMissing.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementName.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementNull.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementNumeric.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementString.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementStruct.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Element/ElementXRef.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/AbstractEncoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/EncodingLocator.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/ISOLatin1Encoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/ISOLatin9Encoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/MacRomanEncoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/PDFDocEncoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/PostScriptGlyphs.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/StandardEncoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Encoding/WinAnsiEncoding.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Exception (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Exception/EmptyPdfException.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Exception/EncodingNotFoundException.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Exception/InvalidDictionaryObjectException.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Exception/MissingCatalogException.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Exception/MissingPdfHeaderException.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Exception/NotImplementedException.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font/FontCIDFontType0.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font/FontCIDFontType2.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font/FontTrueType.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font/FontType0.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font/FontType1.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Font/FontType3.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Header.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/PDFObject.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Page.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Pages.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/Parser.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/RawData (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/RawData/FilterHelper.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/RawData/RawDataParser.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/XObject (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/XObject/Form.php (added)
-
tags/1.7.0/vendor/smalot/pdfparser/src/Smalot/PdfParser/XObject/Image.php (added)
-
tags/1.7.0/vendor/symfony (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/LICENSE (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/Mbstring.php (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/README.md (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/Resources (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/Resources/unidata (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/bootstrap.php (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/bootstrap80.php (added)
-
tags/1.7.0/vendor/symfony/polyfill-mbstring/composer.json (added)
-
trunk/askany.php (modified) (3 diffs)
-
trunk/assets/css/admin.css (modified) (2 diffs)
-
trunk/assets/css/frontend.css (modified) (1 diff)
-
trunk/assets/js/admin.js (modified) (1 diff)
-
trunk/assets/js/dynamic-pricing.js (modified) (1 diff)
-
trunk/dist/css/admin.min.css (modified) (1 diff)
-
trunk/dist/js/admin.min.js (modified) (1 diff)
-
trunk/dist/js/dynamic-pricing.min.js (modified) (1 diff)
-
trunk/includes/class-admin-pages.php (modified) (1 diff)
-
trunk/includes/class-ajax-handler.php (modified) (3 diffs)
-
trunk/includes/class-api-manager.php (modified) (6 diffs)
-
trunk/includes/class-plugin.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/templates/admin-settings.php (modified) (1 diff)
-
trunk/vendor/freemius/README.md (modified) (5 diffs)
-
trunk/vendor/freemius/assets/img/all-in-one-video-gallery.png (added)
-
trunk/vendor/freemius/assets/img/easy-error-log.png (added)
-
trunk/vendor/freemius/assets/img/notifier-to-slack-pro.png (added)
-
trunk/vendor/freemius/assets/img/notifier-to-slack.png (modified) (previous)
-
trunk/vendor/freemius/assets/img/simple-form.gif (added)
-
trunk/vendor/freemius/assets/img/wc-bulk-order-generator.svg (added)
Legend:
- Unmodified
- Added
- Removed
-
askany/trunk/askany.php
r3426911 r3439685 4 4 * Plugin URI: https://wordpress.org/plugins/askany 5 5 * 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.16 * Version: 1.7.0 7 7 * Requires at least: 5.9 8 8 * Requires PHP: 7.4 … … 53 53 'account' => false, 54 54 ), 55 56 'parallel_activation' => array( 57 'enabled' => true, 58 'premium_version_basename' => 'askany-pro/askany-pro.php', 59 ), 60 55 61 ) ); 56 62 } … … 59 65 } 60 66 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 */ 81 function 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 */ 101 function 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 } 148 add_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 */ 155 function 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 */ 175 function 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 } 245 add_action( 'admin_notices', 'askany_show_pro_upgrade_notice' ); 246 247 /** 248 * Dismiss Pro upgrade notice via AJAX. 249 * 250 * @since 1.7.0 251 */ 252 function 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 } 271 add_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 */ 278 function 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 } 313 add_action( 'activate_askany-pro/askany-pro.php', 'askany_prevent_old_pro_activation' ); 66 314 67 315 // Define plugin constants. 68 define('ASKANY_VERSION', '1.6.1'); 316 define('ASKANY_VERSION', '1.7.0'); 317 define('ASKANY_MIN_PRO_VERSION', '1.1.0'); // Minimum required Pro version 69 318 define('ASKANY_PLUGIN_FILE', __FILE__); 70 319 define('ASKANY_PLUGIN_DIR', plugin_dir_path(__FILE__)); -
askany/trunk/assets/css/admin.css
r3414941 r3439685 18 18 --askany-box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05), 0 1px 3px rgba(0, 0, 0, 0.1); 19 19 --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; 20 48 } 21 49 … … 3781 3809 } 3782 3810 } 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 1429 1429 padding: 8px 10px; 1430 1430 font-size: 14px; 1431 margin: auto; 1431 1432 } 1432 1433 -
askany/trunk/assets/js/admin.js
r3414941 r3439685 1093 1093 }); 1094 1094 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 120 120 } else { 121 121 // 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>'); 123 123 if (countdownInterval) { 124 124 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 285 285 'restUrl' => rest_url(), 286 286 'restNonce' => wp_create_nonce('wp_rest'), 287 'isPro' => \Askany\Plugin::get_instance()->is_pro_active(), 287 288 'mediaUploader' => array( 288 289 'title' => __('Select Assistant Avatar', 'askany'), -
askany/trunk/includes/class-ajax-handler.php
r3414941 r3439685 176 176 // Database management AJAX handlers 177 177 add_action('wp_ajax_askany_cleanup_old_data', array( $this, 'cleanup_old_data' )); 178 178 179 add_action('wp_ajax_askany_truncate_all_data', array( $this, 'truncate_all_data' )); 179 180 add_action('wp_ajax_askany_optimize_tables', array( $this, 'optimize_tables' )); … … 936 937 $contact_form_enabled = isset( $settings['contact_form_enabled'] ) ? (bool) $settings['contact_form_enabled'] : false; 937 938 $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 } 938 950 939 951 $settings_to_update = array( … … 950 962 'contact_form_enabled' => $contact_form_enabled, 951 963 'contact_form_shortcode' => $contact_form_shortcode, 964 'response_language' => $response_language, 952 965 ); 953 966 -
askany/trunk/includes/class-api-manager.php
r3414941 r3439685 125 125 */ 126 126 private $contact_form_shortcode; 127 128 /** 129 * Response language setting. 130 * 131 * @var string 132 */ 133 private $response_language; 127 134 128 135 /** … … 172 179 $this->contact_form_enabled = get_option('askany_contact_form_enabled', false); 173 180 $this->contact_form_shortcode = get_option('askany_contact_form_shortcode', ''); 181 $this->response_language = get_option('askany_response_language', 'auto'); 174 182 } 175 183 … … 1722 1730 } 1723 1731 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 1724 1737 $this->load_settings(); 1725 1738 return true; … … 1745 1758 'contact_form_enabled' => get_option('askany_contact_form_enabled', ''), 1746 1759 'contact_form_shortcode' => get_option('askany_contact_form_shortcode', ''), 1760 'response_language' => get_option('askany_response_language', 'auto'), 1747 1761 // Home page settings 1748 1762 'home_page_enabled' => get_option('askany_home_page_enabled', false), … … 2091 2105 */ 2092 2106 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. "; 2094 2142 $system_message .= "You have access to comprehensive website content and detailed product information. "; 2095 2143 $system_message .= "Always provide helpful, accurate, and contextual responses.\n\n"; … … 2133 2181 2134 2182 $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 2135 2212 $system_message .= "- Always reference the conversation history to maintain context\n"; 2136 2213 $system_message .= "- **IMPORTANT: Always format your responses using Markdown for better readability**\n"; -
askany/trunk/includes/class-plugin.php
r3393344 r3439685 199 199 if ( ASKANY_PLUGIN_BASENAME === $file ) { 200 200 $row_meta = array( 201 'docs' => '<a href="' . esc_url( 'https://w ordpress.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>', 202 202 '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>', 203 203 'review' => '<a href="' . esc_url( 'https://wordpress.org/plugins/askany/#reviews' ) . '" target="_blank" aria-label="' . esc_attr__( 'Review forum', 'askany' ) . '">' . esc_html__( '⭐⭐⭐⭐⭐', 'askany' ) . '</a>', … … 267 267 */ 268 268 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(); 271 299 } 272 300 -
askany/trunk/readme.txt
r3426911 r3439685 1 1 === AskAny - AI-Powered Chat Assistant & Live Agent Support === 2 2 Contributors: wpazleen, sambyte 3 Tags: ai chatbot, live chat, customer support, ai assistant, openai3 Tags: ai support, AI, customer support, helpdesk, ChatGPT 4 4 Requires at least: 5.9 5 5 Tested up to: 6.9 6 Stable tag: 1. 6.16 Stable tag: 1.7.0 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 34 34 35 35 ✅ **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 36 37 ✅ **Live Agent Handoff** - Seamless AI-to-human support transition in real-time 37 38 ✅ **WooCommerce Native** - Product cards, cart integration, order assistance built-in … … 534 535 == Changelog == 535 536 537 = 1.7.0 – 14 Jan 2026 = 538 - ✨ New AI Response Language model 539 - ✨ SDK updated 540 536 541 = 1.6.1 – 24 Dec 2025 = 537 542 - **Enhancement:** SDK updated -
askany/trunk/templates/admin-settings.php
r3393344 r3439685 363 363 <strong><?php esc_html_e('Benefits:', 'askany'); ?></strong> 364 364 <?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'); ?> 365 450 </p> 366 451 </td> -
askany/trunk/vendor/freemius/README.md
r3426911 r3439685 94 94 ## Usage example 95 95 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):96 You 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): 97 97 98 98 ```php … … 111 111 There 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. 112 112 113 ## Adding license -based logic examples114 115 Add marketing content t hat encourages your users to upgrade to apaid version:113 ## Adding license based logic examples 114 115 Add marketing content to encourage your users to upgrade for your paid version: 116 116 117 117 ```php … … 140 140 ``` 141 141 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:142 To 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: 143 143 144 144 ```php … … 235 235 There 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. 236 236 237 1. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be included onlyin the premium plugin version. This works for all types of files, not only PHP.237 1. 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. 238 238 2. Add `@fs_premium_only` a special meta tag to the plugin's main PHP file header. Example: 239 239 ```php … … 262 262 In the example plugin header above, the file `/lib/functions.php` and the directory `/premium-files/` will be removed from the free plugin version. 263 263 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 268 265 Based on [WordPress.org Guidelines](https://wordpress.org/plugins/about/guidelines/) you are not allowed to submit a plugin that has premium code in it: 269 266 > 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.