diff --git a/README.md b/README.md
index e8c2077..dd139a2 100644
--- a/README.md
+++ b/README.md
@@ -294,6 +294,7 @@ Phase 3 (Decision): 🎯 TraderAgent → BUY / SELL / HOLD (with confidence %)
- **🧠 Memory-Augmented** — Agents learn from past analyses (local RAG, not cloud)
- **🔌 5+ LLM Providers**: OpenRouter (100+ models), OpenAI, Gemini, DeepSeek, Grok
- **📊 Polymarket Prediction Markets** — On-demand AI analysis for prediction markets. Input a market link or title → AI analyzes probability divergence, opportunity score, and trading recommendations. Full history tracking and billing integration.
+- **📋 Virtual Position Tracking** — Create virtual positions directly from your watchlist with long/short direction, quantity, and entry price. Real-time PnL calculation without connecting to a real exchange.
### 📈 Full Trading Lifecycle
@@ -340,7 +341,7 @@ Phase 3 (Decision): 🎯 TraderAgent → BUY / SELL / HOLD (with confidence %)
- **💳 Membership Plans** — Monthly / Yearly / Lifetime tiers with configurable pricing & credits
- **₿ USDT On-Chain Payment** — TRC20 scan-to-pay, HD Wallet (xpub) per-order addresses, auto-reconciliation via TronGrid
- **🏪 Indicator Marketplace** — Users publish & sell Python indicators, you take commission
-- **⚙️ Admin Dashboard** — Order management, AI usage stats, user analytics
+- **⚙️ Admin Dashboard** — Order management, AI usage stats, user analytics; settings hot-reload without server restart
### 🔐 Enterprise-Grade Security
@@ -350,49 +351,45 @@ Phase 3 (Decision): 🎯 TraderAgent → BUY / SELL / HOLD (with confidence %)
- **Demo Mode** — Read-only mode for public showcases
-🧠 AI Agent Architecture Diagram (Click to expand)
+🧠 AI Analysis Architecture (Click to expand)
+
+Uses **FastAnalysisService** single-LLM flow for speed and multi-factor decisions:
```mermaid
flowchart TB
subgraph Entry["🌐 API Entry"]
- A["📡 POST /api/analysis/multi"]
- A2["🔄 POST /api/analysis/reflect"]
+ A["📡 POST /api/fast-analysis/analyze"]
+ A2["📜 GET /api/fast-analysis/history"]
+ A3["📊 GET /api/fast-analysis/similar-patterns"]
end
- subgraph Service["⚙️ Service Orchestration"]
- B[AnalysisService]
- C[AgentCoordinator]
- D["📊 Build Context
price · kline · news · indicators"]
+ subgraph Data["📊 Data Layer"]
+ D1[MarketDataCollector]
+ D2["Price · Kline · Macro · News · Fundamentals"]
+ D3["Multi-TF Consensus 1D / 4H / 1H"]
end
- subgraph Agents["🤖 7-Agent Workflow"]
- subgraph P1["📈 Phase 1 · Parallel Analysis"]
- E1["🔍 MarketAnalyst"]
- E2["📑 FundamentalAnalyst"]
- E3["📰 NewsAnalyst"]
- E4["💭 SentimentAnalyst"]
- E5["⚠️ RiskAnalyst"]
- end
- subgraph P2["🎯 Phase 2 · Bull vs Bear Debate"]
- F1["🐂 BullResearcher"]
- F2["🐻 BearResearcher"]
- end
- subgraph P3["💹 Phase 3 · Final Decision"]
- G["🎰 TraderAgent → BUY / SELL / HOLD"]
- end
+ subgraph Analysis["⚙️ Analysis Layer"]
+ B["FastAnalysisService"]
+ C["Single LLM Call
Constrained Prompt"]
+ E["Objective Score + Multi-TF Consensus"]
+ F["AICalibration Threshold Tuning"]
+ G["BUY / SELL / HOLD"]
end
- subgraph Memory["🧠 Local Memory Store"]
- M1[("Agent Memories (PostgreSQL)")]
+ subgraph Memory["🧠 Memory Layer"]
+ M1[("qd_analysis_memory
PostgreSQL")]
+ M2["RAG Similar-Pattern Retrieval
(optional prompt injection)"]
end
- subgraph Reflect["🔄 Reflection Loop"]
- R[ReflectionService]
- W["⏰ ReflectionWorker → verify + learn"]
- end
- A --> B --> C --> D
- D --> P1 --> P2 --> P3
- Agents <-.->|"RAG retrieval"| M1
- C --> R
- W -.->|"update memories"| M1
+ A --> B
+ B --> D1 --> D2 --> D3
+ D3 --> C --> E --> F --> G
+ B -.->|"store"| M1
+ M1 -.->|"similar patterns"| M2
+ M2 -.->|"optional context"| C
+ A2 --> M1
+ A3 --> M1
```
+**Flow:** Data collection → Multi-timeframe consensus → Single LLM call → Calibration override → Store in memory.
+
---
@@ -499,7 +496,9 @@ The upper part is for first-time deployment, and the lower "Advanced / rarely ch
| **Membership** | `MEMBERSHIP_MONTHLY_PRICE_USD`, `MEMBERSHIP_MONTHLY_CREDITS` |
| **USDT Payment** | `USDT_PAY_ENABLED`, `USDT_TRC20_XPUB`, `TRONGRID_API_KEY` |
| **Proxy** | `PROXY_URL` |
-| **Workers** | `ENABLE_PENDING_ORDER_WORKER`, `ENABLE_PORTFOLIO_MONITOR` |
+| **Billing** | `BILLING_ENABLED`, `BILLING_COST_AI_ANALYSIS`, `BILLING_COST_AI_CODE_GEN` |
+| **Workers** | `ENABLE_PENDING_ORDER_WORKER`, `ENABLE_PORTFOLIO_MONITOR`, `ENABLE_REFLECTION_WORKER` |
+| **AI Tuning** | `ENABLE_AI_ENSEMBLE`, `ENABLE_CONFIDENCE_CALIBRATION`, `AI_ENSEMBLE_MODELS` |
diff --git a/backend_api_python/README.md b/backend_api_python/README.md
index dc10fd4..7056615 100644
--- a/backend_api_python/README.md
+++ b/backend_api_python/README.md
@@ -177,20 +177,19 @@ POST /api/users/change-password - Change own password
```text
GET /api/health
GET /api/indicator/kline
-POST /api/analysis/multi
+POST /api/fast-analysis/analyze - Fast AI analysis (main entry)
+GET /api/fast-analysis/history - Analysis history
+GET /api/fast-analysis/similar-patterns - RAG similar patterns
+POST /api/fast-analysis/feedback - User feedback on analysis
```
-## AI memory augmentation
+## AI analysis & memory
-This backend includes a lightweight, privacy-first **memory-augmented multi-agent** system:
+Uses **FastAnalysisService** (single LLM call, multi-factor):
-- Memory DBs stored in PostgreSQL
-- API hooks:
- - `POST /api/analysis/multi` (main entry)
- - `POST /api/analysis/reflect` (manual learn from post-trade outcomes)
-- Controls in `.env`:
- - `ENABLE_AGENT_MEMORY`, `AGENT_MEMORY_*`
- - `ENABLE_REFLECTION_WORKER`, `REFLECTION_WORKER_INTERVAL_SEC`
+- Memory: `qd_analysis_memory` in PostgreSQL
+- API: `POST /api/fast-analysis/analyze` (main), `/history`, `/similar-patterns`, `/feedback`
+- Calibration: `AICalibrationService` tunes BUY/SELL thresholds from validated outcomes
## Frontend integration
diff --git a/backend_api_python/app/__init__.py b/backend_api_python/app/__init__.py
index 41770c1..e7ca4e3 100644
--- a/backend_api_python/app/__init__.py
+++ b/backend_api_python/app/__init__.py
@@ -279,6 +279,12 @@ def create_app(config_name='default'):
start_ai_calibration_worker()
except Exception:
pass
+ # Reflection worker: validate past decisions, run calibration periodically.
+ try:
+ from app.services.reflection import start_reflection_worker
+ start_reflection_worker()
+ except Exception:
+ pass
restore_running_strategies()
return app
diff --git a/backend_api_python/app/data_sources/base.py b/backend_api_python/app/data_sources/base.py
index 5eff84f..e14c953 100644
--- a/backend_api_python/app/data_sources/base.py
+++ b/backend_api_python/app/data_sources/base.py
@@ -4,7 +4,7 @@
"""
from abc import ABC, abstractmethod
from typing import Dict, List, Any, Optional
-from datetime import datetime, timedelta
+from datetime import datetime, timedelta, timezone
from app.utils.logger import get_logger
@@ -136,19 +136,35 @@ class BaseDataSource(ABC):
klines: List[Dict[str, Any]],
timeframe: str
):
- """记录获取结果日志"""
+ """记录获取结果日志。
+
+ 延迟判断:
+ - K 线 time 为 Unix 秒(UTC),与 datetime.now(UTC) 比较,避免本地时区误差。
+ - 日线/周线:最后一根通常是「上一交易日收盘」,周末/节假日可达 3~4 天,
+ 原先用 2×86400s(48h)会在周一早盘误报;改为日线最多容忍约 5 个自然日,周线更宽。
+ """
if klines:
- latest_time = datetime.fromtimestamp(klines[-1]['time'])
- time_diff = (datetime.now() - latest_time).total_seconds()
- # logger.info(
- # f"{self.name}: {symbol} 获取 {len(klines)} 条数据, "
- # f"最新时间: {latest_time}, 延迟: {time_diff:.0f}秒"
- # )
-
- # 检查数据是否过旧
- max_diff = TIMEFRAME_SECONDS.get(timeframe, 3600) * 2
+ latest_ts = int(klines[-1]["time"])
+ latest_utc = datetime.fromtimestamp(latest_ts, tz=timezone.utc)
+ now_utc = datetime.now(timezone.utc)
+ time_diff = (now_utc - latest_utc).total_seconds()
+
+ tf_sec = TIMEFRAME_SECONDS.get(timeframe, 3600)
+ if tf_sec < 86400:
+ # 分钟/小时级:超过约 2 根 K 未更新则告警
+ max_diff = tf_sec * 2
+ elif tf_sec == 86400:
+ # 日线:覆盖周末 + 短假期(约 5 个自然日)
+ max_diff = 5 * 86400
+ else:
+ # 周线:允许跨多周数据滞后
+ max_diff = max(tf_sec * 2, 21 * 86400)
+
if time_diff > max_diff:
- logger.warning(f"Warning: {symbol} data is delayed ({time_diff:.0f}s)")
+ logger.warning(
+ f"Warning: {symbol} data is delayed ({time_diff:.0f}s, "
+ f"latest_bar_utc={latest_utc.isoformat()}, threshold={max_diff:.0f}s, tf={timeframe})"
+ )
else:
logger.warning(f"{self.name}: no data for {symbol}")
diff --git a/backend_api_python/app/routes/fast_analysis.py b/backend_api_python/app/routes/fast_analysis.py
index f66035b..2a712d1 100644
--- a/backend_api_python/app/routes/fast_analysis.py
+++ b/backend_api_python/app/routes/fast_analysis.py
@@ -22,6 +22,72 @@ _analysis_inflight_lock = threading.Lock()
_analysis_inflight = {} # key -> expire_ts
+def _try_refund_credits(user_id: int, amount: int, remark: str):
+ """Best-effort async refund when task fails after pre-charge."""
+ try:
+ if int(amount or 0) <= 0:
+ return
+ billing = get_billing_service()
+ billing.add_credits(
+ user_id=int(user_id),
+ amount=int(amount),
+ action='refund',
+ remark=remark
+ )
+ except Exception as e:
+ logger.error(f"Async auto refund failed: {e}", exc_info=True)
+
+
+def _run_async_analysis_task(task_memory_id: int, market: str, symbol: str, language: str,
+ model: str, timeframe: str, user_id: int, inflight_key: str,
+ credits_charged: int = 0):
+ """
+ Background worker: execute analysis and update pending history record.
+ """
+ try:
+ service = get_fast_analysis_service()
+ memory = get_analysis_memory()
+ result = service.analyze(
+ market=market,
+ symbol=symbol,
+ language=language,
+ model=model,
+ timeframe=timeframe,
+ user_id=user_id
+ )
+ memory.finalize_pending_task(task_memory_id, result)
+ if result.get("error"):
+ _try_refund_credits(
+ user_id=int(user_id),
+ amount=int(credits_charged or 0),
+ remark=f'Auto refund: async fast-analysis failed ({market}:{symbol}:{timeframe})'
+ )
+
+ # analyze() already stores a separate memory row; remove it to avoid duplicates.
+ auto_memory_id = result.get("memory_id")
+ if auto_memory_id and int(auto_memory_id) != int(task_memory_id):
+ try:
+ memory.delete_history(int(auto_memory_id), user_id=user_id)
+ except Exception:
+ pass
+ except Exception as e:
+ logger.error(f"Async analysis task failed: {e}", exc_info=True)
+ _try_refund_credits(
+ user_id=int(user_id),
+ amount=int(credits_charged or 0),
+ remark=f'Auto refund: async fast-analysis exception ({market}:{symbol}:{timeframe})'
+ )
+ try:
+ get_analysis_memory().fail_pending_task(task_memory_id, str(e))
+ except Exception:
+ pass
+ finally:
+ try:
+ _release_inflight(inflight_key)
+ except Exception:
+ pass
+
+
def _build_inflight_key(user_id: int, market: str, symbol: str, timeframe: str) -> str:
return f"{int(user_id)}|{str(market or '').strip().upper()}|{str(symbol or '').strip().upper()}|{str(timeframe or '').strip().upper()}"
@@ -70,6 +136,7 @@ def analyze():
language = data.get('language', 'en-US')
model = data.get('model')
timeframe = data.get('timeframe', '1D')
+ async_submit = bool(data.get('async_submit', False))
if not market or not symbol:
return jsonify({
@@ -134,6 +201,45 @@ def analyze():
logger.warning(f"Billing check failed (skipped): {e}", exc_info=True)
service = get_fast_analysis_service()
+
+ # Async submit mode: record "processing" immediately and return task id.
+ if async_submit:
+ memory = get_analysis_memory()
+ pending_id = memory.create_pending_task(
+ market=market,
+ symbol=symbol,
+ language=language,
+ model=model or "",
+ timeframe=timeframe,
+ user_id=user_id
+ )
+ if not pending_id:
+ return jsonify({'code': 0, 'msg': 'Failed to create analysis task', 'data': None}), 500
+
+ t = threading.Thread(
+ target=_run_async_analysis_task,
+ args=(int(pending_id), market, symbol, language, model, timeframe, int(user_id), inflight_key, int(credits_charged or 0)),
+ daemon=True
+ )
+ t.start()
+ # worker owns inflight release
+ inflight_key = None
+
+ return jsonify({
+ 'code': 1,
+ 'msg': 'submitted',
+ 'data': {
+ 'task_id': int(pending_id),
+ 'memory_id': int(pending_id),
+ 'status': 'processing',
+ 'market': market,
+ 'symbol': symbol,
+ 'timeframe': timeframe,
+ 'credits_charged': credits_charged,
+ 'remaining_credits': remaining_credits,
+ }
+ })
+
result = service.analyze(
market=market,
symbol=symbol,
diff --git a/backend_api_python/app/routes/global_market.py b/backend_api_python/app/routes/global_market.py
index ca3588b..0b93802 100644
--- a/backend_api_python/app/routes/global_market.py
+++ b/backend_api_python/app/routes/global_market.py
@@ -424,12 +424,37 @@ def _fetch_commodities() -> List[Dict[str, Any]]:
"category": "commodity"
})
elif len(hist) == 1:
+ current = _safe_float(hist["Close"].iloc[-1], 0)
+ change = 0.0
+ # Fallback: some futures symbols only return one row in short history windows.
+ try:
+ fast_info = getattr(ticker, "fast_info", {}) or {}
+ prev_close = _safe_float(fast_info.get("previousClose"), 0)
+ if prev_close > 0 and current > 0:
+ change = ((current - prev_close) / prev_close) * 100
+ except Exception:
+ pass
+ if change == 0.0:
+ try:
+ info = getattr(ticker, "info", {}) or {}
+ # yfinance may expose either regularMarketChangePercent (ratio)
+ # or regularMarketChange (absolute). Prefer percent when present.
+ rcp = info.get("regularMarketChangePercent")
+ if rcp is not None:
+ change = _safe_float(rcp, 0) * 100
+ else:
+ rmc = _safe_float(info.get("regularMarketChange"), 0)
+ prev_close = _safe_float(info.get("regularMarketPreviousClose"), 0)
+ if prev_close > 0:
+ change = (rmc / prev_close) * 100
+ except Exception:
+ pass
result.append({
"symbol": commodity["symbol"],
"name_cn": commodity["name_cn"],
"name_en": commodity["name_en"],
- "price": round(hist["Close"].iloc[-1], 2),
- "change": 0,
+ "price": round(current, 2),
+ "change": round(change, 2),
"unit": commodity["unit"],
"category": "commodity"
})
diff --git a/backend_api_python/app/routes/indicator.py b/backend_api_python/app/routes/indicator.py
index 9e3e6c1..51d4834 100644
--- a/backend_api_python/app/routes/indicator.py
+++ b/backend_api_python/app/routes/indicator.py
@@ -698,7 +698,18 @@ IMPORTANT: Output Python code directly, without explanations, without descriptio
return content.strip() or _template_code()
def stream():
- # 不扣任何 QDT:开源本地版直接生成/返回代码
+ from app.services.billing_service import get_billing_service
+ billing = get_billing_service()
+ ok, msg = billing.check_and_consume(
+ user_id=g.user_id,
+ feature='ai_code_gen',
+ reference_id=f"ai_code_gen_{g.user_id}_{int(time.time())}"
+ )
+ if not ok:
+ yield "data: " + json.dumps({"error": f"积分不足: {msg}"}, ensure_ascii=False) + "\n\n"
+ yield "data: [DONE]\n\n"
+ return
+
try:
code_text = _generate_code_via_llm()
except Exception as e:
diff --git a/backend_api_python/app/routes/portfolio.py b/backend_api_python/app/routes/portfolio.py
index 210dd2b..2f50100 100644
--- a/backend_api_python/app/routes/portfolio.py
+++ b/backend_api_python/app/routes/portfolio.py
@@ -250,20 +250,17 @@ def add_position():
with get_db_connection() as db:
cur = db.cursor()
+ # Delete any existing positions for this symbol (regardless of side),
+ # ensuring only one position per symbol per user per group.
+ cur.execute(
+ "DELETE FROM qd_manual_positions WHERE user_id = ? AND market = ? AND symbol = ? AND group_name = ?",
+ (user_id, market, symbol, group_name)
+ )
cur.execute(
"""
INSERT INTO qd_manual_positions
(user_id, market, symbol, name, side, quantity, entry_price, entry_time, notes, tags, group_name, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())
- ON CONFLICT(user_id, market, symbol, side, group_name) DO UPDATE SET
- name = excluded.name,
- quantity = excluded.quantity,
- entry_price = excluded.entry_price,
- entry_time = excluded.entry_time,
- notes = excluded.notes,
- tags = excluded.tags,
- group_name = excluded.group_name,
- updated_at = NOW()
""",
(user_id, market, symbol, name, side, quantity, entry_price, entry_time, notes, tags_json, group_name)
)
@@ -557,8 +554,8 @@ def add_monitor():
if monitor_type not in ('ai', 'price_alert', 'pnl_alert'):
monitor_type = 'ai'
- # Calculate next_run_at based on interval
- interval_minutes = int(config.get('interval_minutes') or 60)
+ # Calculate next_run_at based on interval (frontend sends run_interval_minutes)
+ interval_minutes = int(config.get('run_interval_minutes') or config.get('interval_minutes') or 60)
position_ids_json = json.dumps(position_ids if isinstance(position_ids, list) else [], ensure_ascii=False)
config_json = json.dumps(config if isinstance(config, dict) else {}, ensure_ascii=False)
@@ -616,8 +613,8 @@ def update_monitor(monitor_id):
updates.append('config = ?')
params.append(json.dumps(config if isinstance(config, dict) else {}, ensure_ascii=False))
- # Recalculate next_run_at if interval changed (handled separately for PostgreSQL)
- next_run_interval = int(config.get('interval_minutes') or 60)
+ # Recalculate next_run_at if interval changed
+ next_run_interval = int(config.get('run_interval_minutes') or config.get('interval_minutes') or 60)
if 'notification_config' in data:
notification_config = data.get('notification_config') or {}
diff --git a/backend_api_python/app/routes/settings.py b/backend_api_python/app/routes/settings.py
index fde6b31..1b39e80 100644
--- a/backend_api_python/app/routes/settings.py
+++ b/backend_api_python/app/routes/settings.py
@@ -5,10 +5,12 @@ Admin-only endpoints for system configuration management.
"""
import os
import re
+import importlib
from flask import Blueprint, request, jsonify
from app.utils.logger import get_logger
from app.utils.config_loader import clear_config_cache
from app.utils.auth import login_required, admin_required
+from dotenv import load_dotenv
logger = get_logger(__name__)
@@ -17,6 +19,55 @@ settings_bp = Blueprint('settings', __name__)
# .env 文件路径
ENV_FILE_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), '.env')
+
+def _reload_runtime_env() -> None:
+ """
+ Reload .env into current process so settings take effect immediately.
+ Priority keeps backend_api_python/.env over repo-root/.env.
+ """
+ backend_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
+ root_dir = os.path.dirname(backend_dir)
+
+ # Load root first, then backend .env to keep backend file higher priority
+ load_dotenv(os.path.join(root_dir, '.env'), override=True)
+ load_dotenv(os.path.join(backend_dir, '.env'), override=True)
+
+
+def _refresh_runtime_services() -> None:
+ """
+ Reset singleton services so new env/config is picked up lazily
+ on next request without restarting the Python process.
+ """
+ # Prefer dedicated reset function where available.
+ try:
+ search_mod = importlib.import_module('app.services.search')
+ if hasattr(search_mod, 'reset_search_service'):
+ search_mod.reset_search_service()
+ except Exception as e:
+ logger.warning(f"reset_search_service skipped: {e}")
+
+ # Generic singleton fields used across services.
+ singleton_fields = [
+ ('app.services.fast_analysis', '_fast_analysis_service'),
+ ('app.services.billing_service', '_billing_service'),
+ ('app.services.security_service', '_security_service'),
+ ('app.services.oauth_service', '_oauth_service'),
+ ('app.services.user_service', '_user_service'),
+ ('app.services.email_service', '_email_service'),
+ ('app.services.community_service', '_community_service'),
+ ('app.services.usdt_payment_service', '_svc'),
+ ('app.services.usdt_payment_service', '_worker'),
+ ('app.services.analysis_memory', '_memory_instance'),
+ ]
+
+ for module_name, field_name in singleton_fields:
+ try:
+ mod = importlib.import_module(module_name)
+ if hasattr(mod, field_name):
+ setattr(mod, field_name, None)
+ except Exception as e:
+ logger.warning(f"Singleton reset skipped: {module_name}.{field_name}: {e}")
+
# 配置项定义(分组)- 按功能模块划分,每个配置项包含描述
# ---------------------------------------------------------------
# 精简原则:
@@ -439,19 +490,75 @@ CONFIG_SCHEMA = {
'icon': 'experiment',
'order': 7,
'items': [
- {
- 'key': 'ENABLE_AGENT_MEMORY',
- 'label': 'Enable Agent Memory',
- 'type': 'boolean',
- 'default': 'True',
- 'description': 'Enable AI agent memory for learning from past trades'
- },
{
'key': 'ENABLE_REFLECTION_WORKER',
'label': 'Enable Auto Reflection',
'type': 'boolean',
'default': 'False',
- 'description': 'Enable background worker for automatic trade reflection'
+ 'description': 'Enable background worker for automatic trade reflection and calibration'
+ },
+ {
+ 'key': 'REFLECTION_WORKER_INTERVAL_SEC',
+ 'label': 'Reflection Interval (sec)',
+ 'type': 'number',
+ 'default': '86400',
+ 'description': 'Reflection worker run interval in seconds (86400 = 1 day)'
+ },
+ {
+ 'key': 'REFLECTION_MIN_AGE_DAYS',
+ 'label': 'Min Age for Validation (days)',
+ 'type': 'number',
+ 'default': '7',
+ 'description': 'Only validate analyses older than N days'
+ },
+ {
+ 'key': 'REFLECTION_VALIDATE_LIMIT',
+ 'label': 'Validation Batch Limit',
+ 'type': 'number',
+ 'default': '200',
+ 'description': 'Max records to validate per reflection cycle'
+ },
+ {
+ 'key': 'ENABLE_CONFIDENCE_CALIBRATION',
+ 'label': 'Enable Confidence Calibration',
+ 'type': 'boolean',
+ 'default': 'False',
+ 'description': 'Adjust confidence by historical accuracy in each bucket'
+ },
+ {
+ 'key': 'ENABLE_AI_ENSEMBLE',
+ 'label': 'Enable Multi-Model Voting',
+ 'type': 'boolean',
+ 'default': 'False',
+ 'description': 'Use 2-3 models and majority vote for more stable decisions'
+ },
+ {
+ 'key': 'AI_ENSEMBLE_MODELS',
+ 'label': 'Ensemble Models',
+ 'type': 'text',
+ 'default': 'openai/gpt-4o,openai/gpt-4o-mini',
+ 'description': 'Comma-separated model IDs for ensemble voting'
+ },
+ {
+ 'key': 'AI_CALIBRATION_MARKETS',
+ 'label': 'Calibration Markets',
+ 'type': 'text',
+ 'default': 'Crypto',
+ 'description': 'Comma-separated markets to run threshold calibration'
+ },
+ {
+ 'key': 'AI_CALIBRATION_LOOKBACK_DAYS',
+ 'label': 'Calibration Lookback (days)',
+ 'type': 'number',
+ 'default': '30',
+ 'description': 'Days of validated data for calibration'
+ },
+ {
+ 'key': 'AI_CALIBRATION_MIN_SAMPLES',
+ 'label': 'Calibration Min Samples',
+ 'type': 'number',
+ 'default': '80',
+ 'description': 'Minimum validated samples required for calibration'
},
]
},
@@ -661,31 +768,17 @@ CONFIG_SCHEMA = {
},
{
'key': 'BILLING_COST_AI_ANALYSIS',
- 'label': 'AI Analysis Cost',
+ 'label': 'AI Analysis Cost (per symbol)',
'type': 'number',
'default': '10',
- 'description': 'Credits per AI analysis request'
+ 'description': 'Credits per symbol (instant analysis, AI filter, scheduled tasks all use this price)'
},
{
- 'key': 'BILLING_COST_STRATEGY_RUN',
- 'label': 'Strategy Run Cost',
+ 'key': 'BILLING_COST_AI_CODE_GEN',
+ 'label': 'AI Code Generation Cost',
'type': 'number',
- 'default': '5',
- 'description': 'Credits per strategy start'
- },
- {
- 'key': 'BILLING_COST_BACKTEST',
- 'label': 'Backtest Cost',
- 'type': 'number',
- 'default': '3',
- 'description': 'Credits per backtest run'
- },
- {
- 'key': 'BILLING_COST_PORTFOLIO_MONITOR',
- 'label': 'Portfolio Monitor Cost',
- 'type': 'number',
- 'default': '8',
- 'description': 'Credits per portfolio AI monitoring run'
+ 'default': '30',
+ 'description': 'Credits per AI strategy/indicator code generation (higher token usage)'
},
{
'key': 'CREDITS_REGISTER_BONUS',
@@ -873,13 +966,19 @@ def save_settings():
if write_env_file(current_env):
# 清除配置缓存
clear_config_cache()
+ # 热重载运行时环境变量(无需重启进程)
+ _reload_runtime_env()
+ # 重置依赖配置的服务单例(下次请求自动按新配置重建)
+ _refresh_runtime_services()
return jsonify({
'code': 1,
'msg': 'Settings saved successfully',
'data': {
'updated_keys': list(updates.keys()),
- 'requires_restart': True # 标记需要重启
+ 'requires_restart': False,
+ 'hot_reloaded': True,
+ 'services_refreshed': True
}
})
else:
diff --git a/backend_api_python/app/services/analysis_memory.py b/backend_api_python/app/services/analysis_memory.py
index 1045b2e..6353775 100644
--- a/backend_api_python/app/services/analysis_memory.py
+++ b/backend_api_python/app/services/analysis_memory.py
@@ -67,6 +67,9 @@ class AnalysisMemory:
consensus_abs DECIMAL(24, 8),
agreement_ratio DECIMAL(10, 6),
quality_multiplier DECIMAL(10, 6),
+ task_status VARCHAR(20) DEFAULT 'completed',
+ task_error TEXT,
+ updated_at TIMESTAMP DEFAULT NOW(),
created_at TIMESTAMP DEFAULT NOW(),
validated_at TIMESTAMP,
actual_outcome VARCHAR(20),
@@ -124,6 +127,27 @@ class AnalysisMemory:
) THEN
ALTER TABLE qd_analysis_memory ADD COLUMN quality_multiplier DECIMAL(10, 6);
END IF;
+
+ IF NOT EXISTS (
+ SELECT 1 FROM information_schema.columns
+ WHERE table_name = 'qd_analysis_memory' AND column_name = 'task_status'
+ ) THEN
+ ALTER TABLE qd_analysis_memory ADD COLUMN task_status VARCHAR(20) DEFAULT 'completed';
+ END IF;
+
+ IF NOT EXISTS (
+ SELECT 1 FROM information_schema.columns
+ WHERE table_name = 'qd_analysis_memory' AND column_name = 'task_error'
+ ) THEN
+ ALTER TABLE qd_analysis_memory ADD COLUMN task_error TEXT;
+ END IF;
+
+ IF NOT EXISTS (
+ SELECT 1 FROM information_schema.columns
+ WHERE table_name = 'qd_analysis_memory' AND column_name = 'updated_at'
+ ) THEN
+ ALTER TABLE qd_analysis_memory ADD COLUMN updated_at TIMESTAMP DEFAULT NOW();
+ END IF;
END $$;
""")
@@ -185,14 +209,16 @@ class AnalysisMemory:
INSERT INTO qd_analysis_memory (
user_id, market, symbol, decision, confidence,
price_at_analysis, summary, reasons, scores, indicators_snapshot, raw_result,
- consensus_score, consensus_abs, agreement_ratio, quality_multiplier
+ consensus_score, consensus_abs, agreement_ratio, quality_multiplier,
+ task_status, task_error, updated_at
) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
- %s, %s, %s, %s)
+ %s, %s, %s, %s, %s, %s, NOW())
RETURNING id
""", (
user_id, market, symbol, decision, confidence,
price, summary, reasons, scores, indicators, raw,
consensus_score, consensus_abs, agreement_ratio, quality_multiplier,
+ "completed", "",
))
# 使用 lastrowid 属性获取 ID(execute 内部已经处理了 RETURNING)
@@ -227,7 +253,8 @@ class AnalysisMemory:
SELECT
id, decision, confidence, price_at_analysis,
summary, reasons, scores,
- created_at, validated_at, was_correct, actual_return_pct
+ created_at, validated_at, was_correct, actual_return_pct,
+ task_status, task_error, updated_at
FROM qd_analysis_memory
WHERE market = %s AND symbol = %s
AND created_at > NOW() - INTERVAL '{int(days)} days'
@@ -248,7 +275,10 @@ class AnalysisMemory:
"summary": row['summary'],
"reasons": _safe_json_parse(row['reasons'], []),
"scores": _safe_json_parse(row['scores'], {}),
+ "status": row.get('task_status') or 'completed',
+ "error_message": row.get('task_error') or '',
"created_at": row['created_at'].isoformat() if row['created_at'] else None,
+ "updated_at": row['updated_at'].isoformat() if row.get('updated_at') else None,
"was_correct": row['was_correct'],
"actual_return_pct": float(row['actual_return_pct']) if row['actual_return_pct'] else None,
})
@@ -292,7 +322,8 @@ class AnalysisMemory:
SELECT
id, market, symbol, decision, confidence, price_at_analysis,
summary, reasons, scores, indicators_snapshot, raw_result,
- created_at, validated_at, was_correct, actual_return_pct
+ created_at, validated_at, was_correct, actual_return_pct,
+ task_status, task_error, updated_at
FROM qd_analysis_memory
{where_clause}
ORDER BY created_at DESC
@@ -316,7 +347,10 @@ class AnalysisMemory:
"scores": _safe_json_parse(row['scores'], {}),
"indicators": _safe_json_parse(row['indicators_snapshot'], {}),
"full_result": _safe_json_parse(row['raw_result'], None),
+ "status": row.get('task_status') or 'completed',
+ "error_message": row.get('task_error') or '',
"created_at": row['created_at'].isoformat() if row['created_at'] else None,
+ "updated_at": row['updated_at'].isoformat() if row.get('updated_at') else None,
"was_correct": row['was_correct'],
"actual_return_pct": float(row['actual_return_pct']) if row['actual_return_pct'] else None,
})
@@ -358,27 +392,143 @@ class AnalysisMemory:
except Exception as e:
logger.error(f"Failed to delete memory {memory_id}: {e}")
return False
+
+ def create_pending_task(self, market: str, symbol: str, language: str, model: str, timeframe: str,
+ user_id: int = None) -> Optional[int]:
+ """Create a processing record in history before long-running analysis starts."""
+ try:
+ with get_db_connection() as db:
+ cur = db.cursor()
+ summary = f"Analysis submitted ({timeframe})..."
+ reasons = json.dumps([])
+ scores = json.dumps({})
+ indicators = json.dumps({})
+ raw = json.dumps({
+ "market": market,
+ "symbol": symbol,
+ "language": language,
+ "model": model,
+ "timeframe": timeframe,
+ "task_status": "processing",
+ })
+ cur.execute("""
+ INSERT INTO qd_analysis_memory (
+ user_id, market, symbol, decision, confidence,
+ summary, reasons, scores, indicators_snapshot, raw_result,
+ task_status, task_error, updated_at, created_at
+ ) VALUES (%s, %s, %s, %s, %s,
+ %s, %s, %s, %s, %s,
+ %s, %s, NOW(), NOW())
+ RETURNING id
+ """, (
+ user_id, market, symbol, "HOLD", 0,
+ summary, reasons, scores, indicators, raw,
+ "processing", "",
+ ))
+ # PostgresCursor.execute() 会在 INSERT 时提前 fetchone() 消耗 RETURNING 结果,
+ # 所以这里不要再 cur.fetchone(),直接取 lastrowid。
+ memory_id = cur.lastrowid
+ db.commit()
+ cur.close()
+ return memory_id
+ except Exception as e:
+ logger.error(f"Failed to create pending task: {e}")
+ return None
+
+ def finalize_pending_task(self, memory_id: int, result: Dict[str, Any]) -> bool:
+ """Overwrite pending record with final analysis result."""
+ try:
+ consensus = result.get("consensus") or {}
+ with get_db_connection() as db:
+ cur = db.cursor()
+ cur.execute("""
+ UPDATE qd_analysis_memory
+ SET decision = %s,
+ confidence = %s,
+ price_at_analysis = %s,
+ summary = %s,
+ reasons = %s,
+ scores = %s,
+ indicators_snapshot = %s,
+ raw_result = %s,
+ consensus_score = %s,
+ consensus_abs = %s,
+ agreement_ratio = %s,
+ quality_multiplier = %s,
+ task_status = %s,
+ task_error = %s,
+ updated_at = NOW()
+ WHERE id = %s
+ """, (
+ result.get("decision"),
+ result.get("confidence"),
+ result.get("market_data", {}).get("current_price"),
+ result.get("summary"),
+ json.dumps(result.get("reasons", [])),
+ json.dumps(result.get("scores", {})),
+ json.dumps(result.get("indicators", {})),
+ json.dumps(result),
+ consensus.get("consensus_score"),
+ consensus.get("consensus_abs"),
+ consensus.get("agreement_ratio"),
+ consensus.get("quality_multiplier"),
+ "completed" if not result.get("error") else "failed",
+ str(result.get("error") or ""),
+ int(memory_id),
+ ))
+ ok = cur.rowcount > 0
+ db.commit()
+ cur.close()
+ return ok
+ except Exception as e:
+ logger.error(f"Failed to finalize pending task {memory_id}: {e}")
+ return False
+
+ def fail_pending_task(self, memory_id: int, error_message: str) -> bool:
+ """Mark pending task as failed."""
+ try:
+ with get_db_connection() as db:
+ cur = db.cursor()
+ cur.execute("""
+ UPDATE qd_analysis_memory
+ SET task_status = 'failed',
+ task_error = %s,
+ summary = %s,
+ updated_at = NOW()
+ WHERE id = %s
+ """, (
+ str(error_message or "analysis failed"),
+ f"Analysis failed: {str(error_message or '')}",
+ int(memory_id),
+ ))
+ ok = cur.rowcount > 0
+ db.commit()
+ cur.close()
+ return ok
+ except Exception as e:
+ logger.error(f"Failed to mark task failed {memory_id}: {e}")
+ return False
def get_similar_patterns(self, market: str, symbol: str,
current_indicators: Dict, limit: int = 3) -> List[Dict]:
"""
Find historical analyses with similar technical patterns.
- This is a simplified version - can be enhanced with vector similarity later.
- Currently matches based on:
- - Same symbol
- - Similar RSI range (±10)
- - Same MACD signal direction
- - Validated outcomes preferred
+ Multi-indicator weighted similarity:
+ - RSI: ±15 range, weighted 0.3
+ - MACD signal: exact match, weighted 0.3
+ - MA trend: exact match, weighted 0.25
+ - Volatility level: similar band, weighted 0.15
+ - Time decay: prefer recent validated outcomes
"""
try:
- rsi = current_indicators.get("rsi", {}).get("value", 50)
- macd_signal = current_indicators.get("macd", {}).get("signal", "neutral")
+ rsi = float(current_indicators.get("rsi", {}).get("value") or 50)
+ macd_signal = str(current_indicators.get("macd", {}).get("signal") or "neutral").lower()
+ ma_trend = str(current_indicators.get("moving_averages", {}).get("trend") or "sideways").lower()
+ vol_level = str(current_indicators.get("volatility", {}).get("level") or "normal").lower()
with get_db_connection() as db:
cur = db.cursor()
-
- # Simple pattern matching query
cur.execute("""
SELECT
id, decision, confidence, price_at_analysis,
@@ -388,49 +538,50 @@ class AnalysisMemory:
WHERE market = %s AND symbol = %s
AND validated_at IS NOT NULL
AND was_correct IS NOT NULL
- ORDER BY
- CASE WHEN was_correct = true THEN 0 ELSE 1 END,
- created_at DESC
+ ORDER BY validated_at DESC NULLS LAST, created_at DESC
LIMIT %s
- """, (market, symbol, limit * 2)) # Get more for filtering
+ """, (market, symbol, limit * 5))
rows = cur.fetchall() or []
cur.close()
- results = []
+ scored = []
for row in rows:
- indicators = _safe_json_parse(row['indicators_snapshot'], {})
- hist_rsi = indicators.get("rsi", {}).get("value", 50)
- hist_macd = indicators.get("macd", {}).get("signal", "neutral")
+ ind = _safe_json_parse(row['indicators_snapshot'], {})
+ hist_rsi = float(ind.get("rsi", {}).get("value") or 50)
+ hist_macd = str(ind.get("macd", {}).get("signal") or "neutral").lower()
+ hist_ma = str(ind.get("moving_averages", {}).get("trend") or "sideways").lower()
+ hist_vol = str(ind.get("volatility", {}).get("level") or "normal").lower()
- # Simple similarity check
- rsi_similar = abs(hist_rsi - rsi) <= 15
- macd_similar = hist_macd == macd_signal
+ rsi_diff = abs(hist_rsi - rsi)
+ rsi_score = max(0, 1 - rsi_diff / 30) * 0.3
+ macd_score = 0.3 if hist_macd == macd_signal else 0
+ ma_score = 0.25 if hist_ma == ma_trend else 0
+ vol_score = 0.15 if hist_vol == vol_level else (0.08 if _vol_bands_similar(vol_level, hist_vol) else 0)
- if rsi_similar or macd_similar:
- results.append({
- "id": row['id'],
- "decision": row['decision'],
- "confidence": row['confidence'],
- "price": float(row['price_at_analysis']) if row['price_at_analysis'] else None,
- "summary": row['summary'],
- "was_correct": row['was_correct'],
- "actual_return_pct": float(row['actual_return_pct']) if row['actual_return_pct'] else None,
- "similarity": {
- "rsi_match": rsi_similar,
- "macd_match": macd_similar,
- }
- })
-
- if len(results) >= limit:
- break
+ sim = rsi_score + macd_score + ma_score + vol_score
+ if sim < 0.25:
+ continue
+
+ bonus = 0.1 if row['was_correct'] else 0
+ scored.append((sim + bonus, {
+ "id": row['id'],
+ "decision": row['decision'],
+ "confidence": row['confidence'],
+ "price": float(row['price_at_analysis']) if row['price_at_analysis'] else None,
+ "summary": row['summary'],
+ "was_correct": row['was_correct'],
+ "actual_return_pct": float(row['actual_return_pct']) if row['actual_return_pct'] else None,
+ "similarity_score": round(sim + bonus, 3),
+ }))
- return results
+ scored.sort(key=lambda x: -x[0])
+ return [p[1] for p in scored[:limit]]
except Exception as e:
logger.error(f"Failed to get similar patterns: {e}")
return []
-
+
def record_feedback(self, memory_id: int, feedback: str) -> bool:
"""
Record user feedback on an analysis.
@@ -493,8 +644,8 @@ class AnalysisMemory:
for row in rows:
try:
- # Get current price using MarketDataCollector
- current_price = collector._get_price(row['market'], row['symbol'])
+ price_data = collector._get_price(row['market'], row['symbol'])
+ current_price = float(price_data.get('price', 0)) if price_data else None
if not current_price or current_price <= 0:
continue
analysis_price = float(row['price_at_analysis'])
@@ -580,7 +731,8 @@ class AnalysisMemory:
for row in rows:
try:
- current_price = collector._get_price(row["market"], row["symbol"])
+ price_data = collector._get_price(row["market"], row["symbol"])
+ current_price = float(price_data.get("price", 0)) if price_data else None
if not current_price or current_price <= 0:
continue
analysis_price = float(row.get("price_at_analysis") or 0.0)
@@ -625,6 +777,74 @@ class AnalysisMemory:
return stats
+ def get_confidence_accuracy_by_bucket(
+ self, market: str = None, symbol: str = None, days: int = 90
+ ) -> Dict[str, float]:
+ """
+ Compute actual accuracy by confidence bucket for calibration.
+ Buckets: (50,60), (60,70), (70,80), (80,90), (90,100).
+ Returns e.g. {"60_70": 0.58, "70_80": 0.62} - bucket_key -> accuracy.
+ """
+ try:
+ with get_db_connection() as db:
+ cur = db.cursor()
+ where = ["validated_at IS NOT NULL", "was_correct IS NOT NULL", "confidence IS NOT NULL"]
+ params = []
+ if market:
+ where.append("market = %s")
+ params.append(market)
+ if symbol:
+ where.append("symbol = %s")
+ params.append(symbol)
+ where.append(f"created_at > NOW() - INTERVAL '{int(days)} days'")
+ params = tuple(params) if params else ()
+ cur.execute(f"""
+ SELECT confidence, was_correct
+ FROM qd_analysis_memory
+ WHERE {' AND '.join(where)}
+ """, params)
+ rows = cur.fetchall() or []
+ cur.close()
+
+ buckets = [(50, 60), (60, 70), (70, 80), (80, 90), (90, 101)]
+ out = {}
+ for lo, hi in buckets:
+ subset = [r for r in rows if lo <= (r.get("confidence") or 0) < hi]
+ if len(subset) < 5:
+ continue
+ correct = sum(1 for r in subset if r.get("was_correct"))
+ out[f"{lo}_{hi}"] = correct / len(subset)
+ return out
+ except Exception as e:
+ logger.warning(f"get_confidence_accuracy_by_bucket failed: {e}")
+ return {}
+
+ def get_adjusted_confidence(
+ self, raw_confidence: int, market: str = None, symbol: str = None
+ ) -> int:
+ """
+ Adjust confidence based on historical accuracy in that bucket.
+ If model is overconfident (low actual accuracy), dampen. Underconfident -> boost slightly.
+ """
+ buckets = [(50, 60, "50_60"), (60, 70, "60_70"), (70, 80, "70_80"), (80, 90, "80_90"), (90, 101, "90_100")]
+ bucket_key = None
+ for lo, hi, key in buckets:
+ if lo <= raw_confidence < hi:
+ bucket_key = key
+ break
+ if not bucket_key:
+ return max(1, min(99, int(raw_confidence)))
+ acc_map = self.get_confidence_accuracy_by_bucket(market=market, symbol=symbol)
+ acc = acc_map.get(bucket_key)
+ if acc is None or acc <= 0:
+ return max(1, min(99, int(raw_confidence)))
+ expected = 0.5 + (raw_confidence - 50) / 100
+ if expected <= 0:
+ return raw_confidence
+ factor = acc / expected
+ adjusted = int(raw_confidence * factor)
+ return max(1, min(99, adjusted))
+
def get_performance_stats(self, market: str = None, symbol: str = None,
days: int = 30) -> Dict[str, Any]:
"""
@@ -705,6 +925,18 @@ class AnalysisMemory:
}
+def _vol_bands_similar(a: str, b: str) -> bool:
+ """Check if two volatility levels are in similar band."""
+ low = {"low", "normal", "normal_low"}
+ high = {"high", "elevated", "volatile", "very_high"}
+ a, b = a.lower(), b.lower()
+ if a in low and b in low:
+ return True
+ if a in high and b in high:
+ return True
+ return False
+
+
# Singleton
_memory_instance = None
diff --git a/backend_api_python/app/services/billing_service.py b/backend_api_python/app/services/billing_service.py
index 41b5730..0d828c1 100644
--- a/backend_api_python/app/services/billing_service.py
+++ b/backend_api_python/app/services/billing_service.py
@@ -30,21 +30,16 @@ DEFAULT_BILLING_CONFIG = {
'enabled': False, # 是否启用计费
# 各功能积分消耗(0表示免费)
- 'cost_ai_analysis': 10, # AI分析 每次消耗积分
- 'cost_strategy_run': 5, # 策略运行 每次消耗积分(启动时)
- 'cost_backtest': 3, # 回测 每次消耗积分
- 'cost_portfolio_monitor': 8, # Portfolio AI监控 每次消耗积分
- 'cost_indicator_create': 0, # 创建指标 免费
- 'cost_polymarket_deep_analysis': 15, # Polymarket深度分析 每次消耗积分
+ # ai_analysis 统一单价:即时分析 / AI过滤 / 定时任务 均按此单价 × 标的数扣费
+ 'cost_ai_analysis': 10,
+ 'cost_ai_code_gen': 30,
+ 'cost_polymarket_deep_analysis': 15,
}
# Feature name mapping (for log recording)
FEATURE_NAMES = {
'ai_analysis': 'AI Analysis',
- 'strategy_run': 'Strategy Run',
- 'backtest': 'Backtest',
- 'portfolio_monitor': 'Portfolio Monitor',
- 'indicator_create': 'Indicator Create',
+ 'ai_code_gen': 'AI Code Generation',
'polymarket_deep_analysis': 'Polymarket Deep Analysis',
}
@@ -458,7 +453,7 @@ class BillingService:
Args:
user_id: 用户ID
- feature: 功能名称(ai_analysis/strategy_run/backtest/portfolio_monitor等)
+ feature: 功能名称(ai_analysis / polymarket_deep_analysis)
reference_id: 关联ID(可选)
Returns:
@@ -716,12 +711,10 @@ class BillingService:
'is_vip': is_vip,
'vip_expires_at': vip_expires_at.isoformat() if vip_expires_at else None,
'billing_enabled': config.get('enabled', False),
- # 功能费用(供前端显示)
'feature_costs': {
'ai_analysis': config.get('cost_ai_analysis', 0),
- 'strategy_run': config.get('cost_strategy_run', 0),
- 'backtest': config.get('cost_backtest', 0),
- 'portfolio_monitor': config.get('cost_portfolio_monitor', 0),
+ 'ai_code_gen': config.get('cost_ai_code_gen', 0),
+ 'polymarket_deep_analysis': config.get('cost_polymarket_deep_analysis', 0),
}
}
diff --git a/backend_api_python/app/services/fast_analysis.py b/backend_api_python/app/services/fast_analysis.py
index 6b93841..605e572 100644
--- a/backend_api_python/app/services/fast_analysis.py
+++ b/backend_api_python/app/services/fast_analysis.py
@@ -10,8 +10,9 @@ Fast Analysis Service 3.0
"""
import json
import os
+import re
import time
-from typing import Dict, Any, Optional, List
+from typing import Dict, Any, Optional, List, Tuple
from decimal import Decimal, ROUND_HALF_UP
from app.utils.logger import get_logger
@@ -21,6 +22,167 @@ from app.services.market_data_collector import get_market_data_collector
logger = get_logger(__name__)
+def _safe_float_price(value: Any, default: Optional[float] = None) -> Optional[float]:
+ """Coerce LLM/string prices to float; invalid -> default."""
+ if value is None:
+ return default
+ if isinstance(value, (int, float)):
+ if isinstance(value, float) and (value != value): # NaN
+ return default
+ return float(value)
+ try:
+ s = str(value).strip().replace(",", "")
+ if not s:
+ return default
+ return float(s)
+ except (TypeError, ValueError):
+ return default
+
+
+def _build_trend_outlook_summary(trend_outlook: Dict[str, Any], language: str) -> str:
+ """Human-readable multi-horizon outlook for API / legacy clients."""
+ if not trend_outlook:
+ return ""
+ is_zh = str(language or "").lower().startswith("zh")
+
+ def _lbl(trend: str) -> str:
+ t = str(trend or "HOLD").upper()
+ if is_zh:
+ return {"BUY": "看多", "SELL": "看空", "HOLD": "震荡/中性"}.get(t, "震荡/中性")
+ return {"BUY": "bullish", "SELL": "bearish", "HOLD": "neutral / range"}.get(t, "neutral / range")
+
+ n24 = trend_outlook.get("next_24h") or {}
+ d3 = trend_outlook.get("next_3d") or {}
+ w1 = trend_outlook.get("next_1w") or {}
+ m1 = trend_outlook.get("next_1m") or {}
+
+ if is_zh:
+ parts = [
+ f"约24小时:{_lbl(n24.get('trend'))}(强度 {n24.get('strength', 'neutral')})",
+ f"约3天:{_lbl(d3.get('trend'))}(强度 {d3.get('strength', 'neutral')})",
+ f"约1周:{_lbl(w1.get('trend'))}(强度 {w1.get('strength', 'neutral')})",
+ f"约1月:{_lbl(m1.get('trend'))}(强度 {m1.get('strength', 'neutral')})",
+ ]
+ return ";".join(parts)
+ parts = [
+ f"~24h: {_lbl(n24.get('trend'))} ({n24.get('strength', 'neutral')})",
+ f"~3d: {_lbl(d3.get('trend'))} ({d3.get('strength', 'neutral')})",
+ f"~1w: {_lbl(w1.get('trend'))} ({w1.get('strength', 'neutral')})",
+ f"~1m: {_lbl(m1.get('trend'))} ({m1.get('strength', 'neutral')})",
+ ]
+ return " | ".join(parts)
+
+
+# -----------------------------------------------------------------------------
+# Geopolitical / major-conflict detection (word boundaries + tiers)
+# Avoid false positives: "war" in "toward/award", "tension" in "extension",
+# "us" in "focus/status", bare country names without conflict context, etc.
+# -----------------------------------------------------------------------------
+_GEO_SEVERE_PATTERNS: List[re.Pattern] = [
+ re.compile(r"\b(?:war|wars|warfare|wartime)\b", re.I),
+ re.compile(r"\b(?:invasion|invaded|invading|invade)\b", re.I),
+ re.compile(r"\b(?:airstrike|air\s*strikes?|missile\s+strike|drone\s+strike)\b", re.I),
+ re.compile(r"\b(?:military\s+attack|armed\s+attack|troops?\s+(?:fire|attack|invade))\b", re.I),
+ re.compile(r"\b(?:declare[sd]?\s+war|state\s+of\s+war|act\s+of\s+war)\b", re.I),
+ re.compile(r"\b(?:martial\s+law|military\s+coup|coup\s+d['\u2019]?etat)\b", re.I),
+ re.compile(r"\b(?:terror(?:ist)?\s+attack|mass\s+shooting\s+at)\b", re.I),
+]
+_GEO_MODERATE_PATTERNS: List[re.Pattern] = [
+ re.compile(r"\bgeopolitical\b", re.I),
+ re.compile(r"\b(?:armed|military)\s+conflict\b", re.I),
+ re.compile(r"\b(?:international\s+)?sanctions?\s+(?:on|against|targeting|hit)\b", re.I),
+ re.compile(r"\b(?:naval\s+blockade|border\s+clash|ceasefire\s+(?:broken|violated))\b", re.I),
+ re.compile(r"\b(?:evacuat\w+\s+(?:the\s+)?embassy|embassy\s+evacuation)\b", re.I),
+ re.compile(r"\b(?:nuclear\s+(?:threat|strike|weapon)|nuclear\s+war)\b", re.I),
+]
+# "Crisis" / "tension" only in clearly geopolitical phrases (not substring of "extension")
+_GEO_CONTEXT_MODERATE: List[re.Pattern] = [
+ re.compile(r"\b(?:geopolitical|diplomatic|border)\s+(?:crisis|tension|standoff)\b", re.I),
+ re.compile(r"\b(?:tensions?\s+(?:rise|escalat|flare|mount)\s+(?:with|between))\b", re.I),
+ re.compile(r"\b(?:middle\s+east|south\s+china\s+sea|taiwan\s+strait)\s+(?:crisis|tension|conflict)\b", re.I),
+]
+_GEO_ZH_SEVERE = (
+ "宣战", "战争爆发", "全面战争", "武装冲突", "军事打击", "军事入侵", "空袭", "导弹袭击",
+ "开战", "交火", "战火",
+)
+_GEO_ZH_MODERATE = (
+ "地缘政治危机", "国际制裁升级", "断交", "撤侨", "军事对峙", "地区冲突升级",
+)
+
+# Optional: country/region + conflict verb (single pattern, avoids "NYSE" noise)
+_GEO_REGION_CONFLICT: List[re.Pattern] = [
+ re.compile(
+ r"\b(?:russia|ukraine|iran|israel|gaza|hamas|taiwan|north\s+korea|dprk|"
+ r"syria|yemen|lebanon|nato)\b.{0,40}\b(?:invade|attack|strike|war|conflict|sanction)\b",
+ re.I,
+ ),
+ re.compile(
+ r"\b(?:invade|attack|strike|war|conflict|sanction)\b.{0,40}\b(?:russia|ukraine|iran|israel|"
+ r"gaza|hamas|taiwan|north\s+korea|dprk|syria|nato)\b",
+ re.I,
+ ),
+]
+
+_GEO_MAJOR_NEWS_SEVERE = [
+ re.compile(r"\b(?:war|wars|warfare)\b", re.I),
+ re.compile(r"\b(?:invasion|invaded|military\s+attack|airstrike)\b", re.I),
+ re.compile(r"\b(?:armed\s+conflict|military\s+conflict)\b", re.I),
+]
+
+
+def _geopolitical_match_level(combined_text: str) -> Tuple[str, Optional[str]]:
+ """
+ Returns (level, reason_tag) where level is 'none'|'severe'|'moderate'.
+ combined_text: title + summary (original case OK; English patterns use lower via regex I flag).
+ """
+ if not combined_text or len(combined_text.strip()) < 4:
+ return "none", None
+ low = combined_text.lower()
+ for pat in _GEO_SEVERE_PATTERNS:
+ if pat.search(low):
+ return "severe", pat.pattern[:48]
+ for z in _GEO_ZH_SEVERE:
+ if z in combined_text:
+ return "severe", z
+ for pat in _GEO_REGION_CONFLICT:
+ if pat.search(low):
+ return "severe", "region+conflict"
+ for pat in _GEO_MODERATE_PATTERNS:
+ if pat.search(low):
+ return "moderate", pat.pattern[:48]
+ for pat in _GEO_CONTEXT_MODERATE:
+ if pat.search(low):
+ return "moderate", pat.pattern[:48]
+ for z in _GEO_ZH_MODERATE:
+ if z in combined_text:
+ return "moderate", z
+ return "none", None
+
+
+def _geopolitical_sentiment_penalty_delta(level: str) -> int:
+ if level == "severe":
+ return -42
+ if level == "moderate":
+ return -18
+ return 0
+
+
+def _is_major_geopolitical_news_text(combined_text: str) -> bool:
+ """Stricter than sentiment: only clear conflict / war signals for _has_major_news."""
+ if not combined_text:
+ return False
+ low = combined_text.lower()
+ for pat in _GEO_MAJOR_NEWS_SEVERE:
+ if pat.search(low):
+ return True
+ for z in _GEO_ZH_SEVERE:
+ if z in combined_text:
+ return True
+ if any(p.search(low) for p in _GEO_REGION_CONFLICT):
+ return True
+ return False
+
+
class FastAnalysisService:
"""
快速分析服务 3.0
@@ -364,10 +526,12 @@ You are CONSERVATIVE and OBJECTIVE. Your analysis must be based on DATA, not spe
⚠️ CRITICAL PRICE RULES:
1. Current price: ${current_price}
-2. Your stop_loss MUST be near ${suggested_stop_loss:.4f} (range: ${price_lower_bound:.4f} ~ ${current_price})
-3. Your take_profit MUST be near ${suggested_take_profit:.4f} (range: ${current_price} ~ ${price_upper_bound:.4f})
-4. Entry price: ${entry_range_low:.4f} ~ ${entry_range_high:.4f}
-5. These levels are based on ATR and support/resistance analysis - use them as reference!
+2. If decision=BUY: stop_loss should be below current price, take_profit above current price.
+3. If decision=SELL (short): stop_loss MUST be above current price; take_profit MUST be below current price.
+4. BUY stop_loss reference: near ${suggested_stop_loss:.4f} (range: ${price_lower_bound:.4f} ~ ${current_price})
+5. BUY take_profit reference: near ${suggested_take_profit:.4f} (range: ${current_price} ~ ${price_upper_bound:.4f})
+6. Entry price: ${entry_range_low:.4f} ~ ${entry_range_high:.4f}
+7. These levels are based on ATR and support/resistance analysis - use them as reference!
📊 YOUR ANALYSIS MUST INCLUDE (ALL factors are important):
1. **Technical Analysis**: Objectively interpret RSI, MACD, MA, support/resistance. Be honest about conflicting signals.
@@ -500,6 +664,9 @@ When the score is neutral (-20 to +20), you can use your judgment, but still con
📈 EARNINGS DATA:
{self._format_earnings_data(fundamental.get('earnings', {}))}
+📚 HISTORICAL PATTERNS (similar conditions in the past):
+{self._get_memory_context(data.get('market', ''), data.get('symbol', ''), indicators)}
+
IMPORTANT:
1. **CRITICAL**: Check for GEOPOLITICAL EVENTS (wars, conflicts, military actions) in the news section. These events have HIGHEST PRIORITY and can override all technical indicators.
2. Consider the macro environment (especially DXY, VIX, rates, geopolitical events) when making your recommendation.
@@ -817,6 +984,55 @@ IMPORTANT:
weighted_score_sum += overall_score * w
weighted_score_w_sum += w
+ # Extra horizon score (not used in consensus override):
+ # add 1W objective score for short/medium trend outlook.
+ if "1W" not in objective_by_tf:
+ try:
+ d_1w = self._collect_market_data(
+ market,
+ symbol,
+ "1W",
+ include_macro=False,
+ include_news=False,
+ include_polymarket=False,
+ timeout=25,
+ )
+ cp_1w = _extract_current_price(d_1w) or 0.0
+ obj_1w = self._calculate_objective_score(d_1w, cp_1w)
+ sc_1w = float(obj_1w.get("overall_score", 0.0) or 0.0)
+ objective_by_tf["1W"] = {
+ "objective_score": obj_1w,
+ "overall_score": sc_1w,
+ "decision": self._score_to_decision(sc_1w, market=market),
+ "abs_score": abs(sc_1w),
+ }
+ except Exception as e:
+ logger.debug(f"1W outlook score skipped: {e}")
+
+ # Short-horizon outlook: 1H bar (24h-style), not 1D close
+ if "1H" not in objective_by_tf:
+ try:
+ d_1h = self._collect_market_data(
+ market,
+ symbol,
+ "1H",
+ include_macro=False,
+ include_news=False,
+ include_polymarket=False,
+ timeout=18,
+ )
+ cp_1h = _extract_current_price(d_1h) or 0.0
+ obj_1h = self._calculate_objective_score(d_1h, cp_1h)
+ sc_1h = float(obj_1h.get("overall_score", 0.0) or 0.0)
+ objective_by_tf["1H"] = {
+ "objective_score": obj_1h,
+ "overall_score": sc_1h,
+ "decision": self._score_to_decision(sc_1h, market=market),
+ "abs_score": abs(sc_1h),
+ }
+ except Exception as e:
+ logger.debug(f"1H outlook score skipped: {e}")
+
consensus_score = weighted_score_sum / weighted_score_w_sum if weighted_score_w_sum > 0 else 0.0
consensus_decision = self._score_to_decision(consensus_score, market=market)
consensus_abs = abs(consensus_score)
@@ -892,32 +1108,52 @@ IMPORTANT:
# Phase 2: Build prompt
system_prompt, user_prompt = self._build_analysis_prompt(data, language)
-
- # Phase 3: Single LLM call
- logger.info(f"Calling LLM for analysis...")
+
+ default_struct = {
+ "decision": "HOLD",
+ "confidence": 50,
+ "summary": "Analysis failed",
+ "entry_price": current_price,
+ "stop_loss": current_price * 0.95,
+ "take_profit": current_price * 1.05,
+ "position_size_pct": 10,
+ "timeframe": "medium",
+ "key_reasons": ["Unable to analyze"],
+ "risks": ["Analysis error"],
+ "technical_score": 50,
+ "fundamental_score": 50,
+ "sentiment_score": 50,
+ }
+
+ # Phase 3: LLM call(s) - single or ensemble voting
+ logger.info("Calling LLM for analysis...")
llm_start = time.time()
-
- analysis = self.llm_service.safe_call_llm(
- system_prompt,
- user_prompt,
- default_structure={
- "decision": "HOLD",
- "confidence": 50,
- "summary": "Analysis failed",
- "entry_price": current_price,
- "stop_loss": current_price * 0.95,
- "take_profit": current_price * 1.05,
- "position_size_pct": 10,
- "timeframe": "medium",
- "key_reasons": ["Unable to analyze"],
- "risks": ["Analysis error"],
- "technical_score": 50,
- "fundamental_score": 50,
- "sentiment_score": 50,
- },
- model=model
- )
-
+ ensemble_models = []
+ if os.getenv("ENABLE_AI_ENSEMBLE", "false").lower() == "true":
+ env_models = (os.getenv("AI_ENSEMBLE_MODELS") or "").strip()
+ if env_models:
+ ensemble_models = [m.strip() for m in env_models.split(",") if m.strip()]
+
+ if len(ensemble_models) >= 2:
+ analyses_list = []
+ for em in ensemble_models[:3]:
+ a = self.llm_service.safe_call_llm(
+ system_prompt, user_prompt, default_structure=default_struct, model=em
+ )
+ analyses_list.append(a)
+ decisions = [str(a.get("decision", "HOLD") or "HOLD").upper() for a in analyses_list]
+ from collections import Counter
+ vote = Counter(decisions).most_common(1)[0][0]
+ idx = decisions.index(vote)
+ analysis = analyses_list[idx].copy()
+ analysis["decision"] = vote
+ analysis["_ensemble_vote"] = dict(Counter(decisions))
+ analysis["_ensemble_models"] = ensemble_models[:3]
+ else:
+ analysis = self.llm_service.safe_call_llm(
+ system_prompt, user_prompt, default_structure=default_struct, model=model
+ )
+
llm_time = int((time.time() - llm_start) * 1000)
logger.info(f"LLM call completed in {llm_time}ms")
@@ -932,6 +1168,50 @@ IMPORTANT:
score_based_decision = self._score_to_decision(objective_score["overall_score"], market=market)
llm_decision = str(analysis.get("decision", "HOLD") or "HOLD").upper()
+ # Horizon trend outlook for users (short/medium/long decision reference)
+ score_1d = float((objective_by_tf.get("1D") or {}).get("overall_score", objective_score.get("overall_score", 0.0)) or 0.0)
+ score_4h = float((objective_by_tf.get("4H") or {}).get("overall_score", score_1d) or score_1d)
+ score_1h = float((objective_by_tf.get("1H") or {}).get("overall_score", score_4h) or score_4h)
+ # ~24h: prefer 1H bar objective; fall back 4H -> 1D
+ score_24h = float(score_1h)
+ score_1w = float((objective_by_tf.get("1W") or {}).get("overall_score", score_1d) or score_1d)
+ score_3d = score_1d * 0.7 + score_4h * 0.3
+ score_1m = score_1w * 0.55 + float(objective_score.get("fundamental_score", 0.0)) * 0.30 + float(objective_score.get("macro_score", 0.0)) * 0.15
+
+ def _trend_strength(score_val: float) -> str:
+ a = abs(float(score_val))
+ if a >= 70:
+ return "strong"
+ if a >= 40:
+ return "moderate"
+ if a >= 20:
+ return "mild"
+ return "neutral"
+
+ trend_outlook = {
+ "next_24h": {
+ "score": round(score_24h, 2),
+ "trend": self._score_to_decision(score_24h, market=market),
+ "strength": _trend_strength(score_24h),
+ },
+ "next_3d": {
+ "score": round(score_3d, 2),
+ "trend": self._score_to_decision(score_3d, market=market),
+ "strength": _trend_strength(score_3d),
+ },
+ "next_1w": {
+ "score": round(score_1w, 2),
+ "trend": self._score_to_decision(score_1w, market=market),
+ "strength": _trend_strength(score_1w),
+ },
+ "next_1m": {
+ "score": round(score_1m, 2),
+ "trend": self._score_to_decision(score_1m, market=market),
+ "strength": _trend_strength(score_1m),
+ },
+ }
+ trend_outlook_summary = _build_trend_outlook_summary(trend_outlook, language)
+
# Consensus confidence:
consensus_conf = int(max(40, min(98, 50 + consensus_abs * 0.35)))
# Agreement boosts, disagreement reduces
@@ -942,6 +1222,9 @@ IMPORTANT:
cfg = self._get_ai_calibration(market=market)
min_abs_override = float(cfg.get("min_consensus_abs_override") or 15.0)
quality_hold_thr = float(cfg.get("quality_hold_threshold") or 0.7)
+ regime = self._detect_market_regime(data.get("indicators") or {})
+ if regime == "ranging":
+ min_abs_override *= 1.2
if consensus_abs >= min_abs_override:
final_decision = consensus_decision
@@ -953,11 +1236,21 @@ IMPORTANT:
analysis["decision"] = final_decision
analysis["confidence"] = consensus_conf
original_summary = analysis.get("summary", "")
- level = "强烈" if consensus_abs >= 70 else "明显" if consensus_abs >= 40 else "轻微"
- analysis["summary"] = (
- f"{original_summary} [多周期客观共识:综合评分{consensus_score:.1f}分("
- f"{level}{'利多' if consensus_score > 0 else '利空'}),建议{final_decision}]"
- )
+ is_zh = str(language or "").lower().startswith("zh")
+ if is_zh:
+ level = "强烈" if consensus_abs >= 70 else "明显" if consensus_abs >= 40 else "轻微"
+ bias = "利多" if consensus_score > 0 else "利空"
+ consensus_note = (
+ f"[多周期客观共识:综合评分{consensus_score:.1f}分({level}{bias}),建议{final_decision}]"
+ )
+ else:
+ level = "strong" if consensus_abs >= 70 else "moderate" if consensus_abs >= 40 else "mild"
+ bias = "bullish" if consensus_score > 0 else "bearish"
+ consensus_note = (
+ f"[Multi-timeframe objective consensus: score {consensus_score:.1f} "
+ f"({level} {bias}), suggested decision {final_decision}]"
+ )
+ analysis["summary"] = f"{original_summary} {consensus_note}".strip()
else:
# Near-neutral: keep LLM but shrink confidence by quality and enforce HOLD if quality is poor
analysis["confidence"] = int(max(0, min(100, int(analysis.get("confidence", 50) or 50) * quality_multiplier)))
@@ -983,6 +1276,7 @@ IMPORTANT:
"consensus_abs": consensus_abs,
"agreement_ratio": agreement_ratio,
"quality_multiplier": quality_multiplier,
+ "market_regime": regime,
}
# Phase 5: Validate and constrain output (pass indicators for decision validation)
@@ -1014,6 +1308,17 @@ IMPORTANT:
except Exception:
# Keep model-provided position_size_pct
pass
+
+ # Confidence calibration: adjust by historical accuracy in bucket
+ if os.getenv("ENABLE_CONFIDENCE_CALIBRATION", "false").lower() == "true":
+ try:
+ from app.services.analysis_memory import get_analysis_memory
+ raw_conf = int(analysis.get("confidence", 50) or 50)
+ analysis["confidence"] = get_analysis_memory().get_adjusted_confidence(
+ raw_conf, market=market, symbol=symbol
+ )
+ except Exception as e:
+ logger.debug(f"Confidence calibration skipped: {e}")
# Build final result
total_time = int((time.time() - start_time) * 1000)
@@ -1041,6 +1346,15 @@ IMPORTANT:
"take_profit": analysis.get("take_profit"),
"position_size_pct": analysis.get("position_size_pct", 10),
"timeframe": analysis.get("timeframe", "medium"),
+ # camelCase + 语义别名:供私有前端/旧版组件绑定(勿用 indicators.trading_levels 充当计划)
+ "entryPrice": analysis.get("entry_price"),
+ "stopLoss": analysis.get("stop_loss"),
+ "takeProfit": analysis.get("take_profit"),
+ "positionSizePct": analysis.get("position_size_pct", 10),
+ "decision": str(analysis.get("decision", "HOLD") or "HOLD").upper(),
+ # 与 stop_loss / take_profit 数值相同;命名强调「亏损离场 / 盈利目标」避免与多单参考线混淆
+ "loss_exit_price": analysis.get("stop_loss"),
+ "profit_target_price": analysis.get("take_profit"),
},
"reasons": analysis.get("key_reasons", []),
"risks": analysis.get("risks", []),
@@ -1060,6 +1374,10 @@ IMPORTANT:
},
"indicators": data.get("indicators", {}),
"consensus": analysis.get("consensus", {}),
+ "trend_outlook": trend_outlook,
+ "trend_outlook_summary": trend_outlook_summary,
+ "trendOutlook": trend_outlook,
+ "trendOutlookSummary": trend_outlook_summary,
"analysis_time_ms": total_time,
"llm_time_ms": llm_time,
"data_collection_time_ms": data.get("collection_time_ms", 0),
@@ -1149,51 +1467,45 @@ IMPORTANT:
"""
检查是否有重大新闻事件。
重大新闻包括:监管变化、重大合作、丑闻、重大政策、地缘政治事件等。
+ 地缘类使用词边界与分级,避免 toward/extension/us 等子串误判。
"""
if not news_data:
return False
-
- # 检查新闻标题中的关键词(扩展了地缘政治相关关键词)
+
+ # 子串关键词(较长词或中文,避免过短英文误匹配)
major_keywords = [
- # 监管和政策
- "regulation", "regulatory", "ban", "approval", "policy", "government", "central bank",
+ "regulation", "regulatory", "approval", "policy", "government", "central bank",
"监管", "禁令", "批准", "政策", "政府", "央行",
- # 商业事件
"partnership", "merger", "acquisition", "scandal", "lawsuit", "investigation",
"合作", "合并", "收购", "丑闻", "诉讼", "调查",
- # 地缘政治事件(新增)
- "war", "conflict", "military", "attack", "strike", "sanctions", "tension", "crisis",
- "geopolitical", "iran", "israel", "russia", "ukraine", "china", "taiwan", "north korea",
- "middle east", "gulf", "nato", "united states", "us", "usa", "america",
- "战争", "冲突", "军事", "袭击", "打击", "制裁", "紧张", "危机",
- "地缘政治", "伊朗", "以色列", "俄罗斯", "乌克兰", "中国", "台湾", "朝鲜",
- "中东", "海湾", "北约", "美国"
+ "sanctions", "embargo", "制裁", "中东", "海湾", "北约",
+ "united states", "middle east",
]
-
- for news in news_data[:10]: # 检查前10条最新新闻(增加检查范围)
- title = (news.get("title") or news.get("headline") or "").lower()
- summary = (news.get("summary") or "").lower()
+ # 短英文词用词边界匹配(不用裸子串)
+ major_short_patterns = [
+ re.compile(r"\b(?:ban|banned|banning)\b", re.I),
+ re.compile(r"\b(?:crisis|crises)\b", re.I),
+ re.compile(r"\b(?:catastrophe|meltdown)\b", re.I),
+ ]
+
+ for news in news_data[:10]:
+ title = news.get("title") or news.get("headline") or ""
+ summary = news.get("summary") or ""
sentiment = news.get("sentiment", "neutral")
-
- # 检查标题和摘要中是否包含重大关键词
text_to_check = f"{title} {summary}"
-
- # 地缘政治事件通常很严重,即使情绪是中性也要识别
- geopolitical_keywords = [
- "war", "conflict", "military", "attack", "strike", "geopolitical",
- "战争", "冲突", "军事", "袭击", "打击", "地缘政治"
- ]
-
- # 如果是地缘政治相关,直接认为是重大新闻
- if any(keyword in text_to_check for keyword in geopolitical_keywords):
- logger.info(f"Detected major geopolitical event in news: {title[:60]}")
+ low = text_to_check.lower()
+
+ if _is_major_geopolitical_news_text(text_to_check):
+ logger.info(f"Detected major geopolitical event in news: {low[:80]}")
return True
-
- # 其他重大关键词且情绪强烈(非中性),认为是重大新闻
- if any(keyword in text_to_check for keyword in major_keywords) and sentiment != "neutral":
- logger.info(f"Detected major news event: {title[:60]}")
+
+ if any(kw in low for kw in major_keywords) and sentiment != "neutral":
+ logger.info(f"Detected major news event: {low[:80]}")
return True
-
+ if sentiment != "neutral" and any(p.search(low) for p in major_short_patterns):
+ logger.info(f"Detected major news event (pattern): {low[:80]}")
+ return True
+
return False
def _has_macro_event(self, macro_data: Dict, market: str) -> bool:
@@ -1227,6 +1539,88 @@ IMPORTANT:
return False
+ def _finalize_trading_plan_for_decision(
+ self, analysis: Dict, current_price: float, indicators: Optional[Dict] = None
+ ) -> Dict:
+ """
+ After decision is final: force correct stop/take-profit geometry and mirror long levels for shorts.
+ BUY: stop_loss < current < take_profit
+ SELL: take_profit < current < stop_loss (short: stop above, TP below)
+ """
+ if not current_price or current_price <= 0:
+ return analysis
+ indicators = indicators or {}
+ decision = str(analysis.get("decision", "HOLD")).upper()
+ if decision not in ("BUY", "SELL"):
+ return analysis
+
+ min_price = current_price * 0.90
+ max_price = current_price * 1.10
+ eps = max(abs(current_price) * 1e-6, 1e-8)
+
+ tl = indicators.get("trading_levels") or {}
+ sl_long = _safe_float_price(tl.get("suggested_stop_loss"))
+ tp_long = _safe_float_price(tl.get("suggested_take_profit"))
+ long_ok = (
+ sl_long is not None
+ and tp_long is not None
+ and sl_long < current_price - eps
+ and tp_long > current_price + eps
+ )
+
+ if decision == "SELL":
+ if long_ok:
+ mirrored_sl = round(2 * current_price - sl_long, 6)
+ mirrored_tp = round(2 * current_price - tp_long, 6)
+ mirrored_sl = min(max(mirrored_sl, current_price + eps), max_price)
+ mirrored_tp = max(min(mirrored_tp, current_price - eps), min_price)
+ if mirrored_sl > current_price and mirrored_tp < current_price:
+ analysis["stop_loss"] = mirrored_sl
+ analysis["take_profit"] = mirrored_tp
+ else:
+ analysis["stop_loss"] = round(min(max_price, current_price * 1.05), 6)
+ analysis["take_profit"] = round(max(min_price, current_price * 0.95), 6)
+ else:
+ sl_f = _safe_float_price(analysis.get("stop_loss"))
+ tp_f = _safe_float_price(analysis.get("take_profit"))
+ if sl_f is not None and tp_f is not None and tp_f < current_price < sl_f:
+ analysis["stop_loss"] = round(min(max(sl_f, current_price + eps), max_price), 6)
+ analysis["take_profit"] = round(max(min(tp_f, current_price - eps), min_price), 6)
+ else:
+ analysis["stop_loss"] = round(min(max_price, current_price * 1.05), 6)
+ analysis["take_profit"] = round(max(min_price, current_price * 0.95), 6)
+ else: # BUY
+ if long_ok:
+ sl = max(min(sl_long, current_price - eps), min_price)
+ tp = min(max(tp_long, current_price + eps), max_price)
+ analysis["stop_loss"] = round(sl, 6)
+ analysis["take_profit"] = round(tp, 6)
+ else:
+ sl_f = _safe_float_price(analysis.get("stop_loss"))
+ tp_f = _safe_float_price(analysis.get("take_profit"))
+ if sl_f is not None and tp_f is not None and sl_f < current_price < tp_f:
+ analysis["stop_loss"] = round(max(min(sl_f, current_price - eps), min_price), 6)
+ analysis["take_profit"] = round(min(max(tp_f, current_price + eps), max_price), 6)
+ else:
+ analysis["stop_loss"] = round(max(min_price, current_price * 0.95), 6)
+ analysis["take_profit"] = round(min(max_price, current_price * 1.05), 6)
+
+ # Last-resort: fix inverted or equal levels
+ sl_f = _safe_float_price(analysis.get("stop_loss"), current_price)
+ tp_f = _safe_float_price(analysis.get("take_profit"), current_price)
+ if sl_f is None or tp_f is None:
+ return analysis
+ if decision == "SELL":
+ if not (tp_f < current_price < sl_f):
+ analysis["stop_loss"] = round(min(max_price, current_price * 1.05), 6)
+ analysis["take_profit"] = round(max(min_price, current_price * 0.95), 6)
+ else:
+ if not (sl_f < current_price < tp_f):
+ analysis["stop_loss"] = round(max(min_price, current_price * 0.95), 6)
+ analysis["take_profit"] = round(min(max_price, current_price * 1.05), 6)
+
+ return analysis
+
def _validate_and_constrain(self, analysis: Dict, current_price: float, indicators: Dict = None,
has_major_news: bool = False, has_macro_event: bool = False) -> Dict:
"""
@@ -1239,22 +1633,45 @@ IMPORTANT:
# Price bounds
min_price = current_price * 0.90
max_price = current_price * 1.10
+ decision = str(analysis.get("decision", "HOLD")).upper()
# Constrain entry price
- entry = analysis.get("entry_price", current_price)
- if entry and (entry < min_price or entry > max_price):
+ entry = _safe_float_price(analysis.get("entry_price"), current_price)
+ if entry is not None and (entry < min_price or entry > max_price):
logger.warning(f"Entry price {entry} out of bounds, constraining to current price {current_price}")
analysis["entry_price"] = round(current_price, 6)
+ elif entry is not None:
+ analysis["entry_price"] = round(entry, 6)
- # Constrain stop loss
- stop_loss = analysis.get("stop_loss", current_price * 0.95)
- if stop_loss and (stop_loss < min_price or stop_loss > current_price):
- analysis["stop_loss"] = round(current_price * 0.95, 6)
-
- # Constrain take profit
- take_profit = analysis.get("take_profit", current_price * 1.05)
- if take_profit and (take_profit < current_price or take_profit > max_price):
- analysis["take_profit"] = round(current_price * 1.05, 6)
+ # Constrain stop loss / take profit by direction (numeric-safe).
+ # BUY: stop_loss < current < take_profit
+ # SELL: take_profit < current < stop_loss
+ if decision == "SELL":
+ stop_default = round(current_price * 1.05, 6)
+ tp_default = round(current_price * 0.95, 6)
+ stop_loss = _safe_float_price(analysis.get("stop_loss"), stop_default)
+ take_profit = _safe_float_price(analysis.get("take_profit"), tp_default)
+ if stop_loss is None or stop_loss <= current_price or stop_loss > max_price:
+ analysis["stop_loss"] = stop_default
+ else:
+ analysis["stop_loss"] = round(stop_loss, 6)
+ if take_profit is None or take_profit >= current_price or take_profit < min_price:
+ analysis["take_profit"] = tp_default
+ else:
+ analysis["take_profit"] = round(take_profit, 6)
+ else:
+ stop_default = round(current_price * 0.95, 6)
+ tp_default = round(current_price * 1.05, 6)
+ stop_loss = _safe_float_price(analysis.get("stop_loss"), stop_default)
+ take_profit = _safe_float_price(analysis.get("take_profit"), tp_default)
+ if stop_loss is None or stop_loss < min_price or stop_loss >= current_price:
+ analysis["stop_loss"] = stop_default
+ else:
+ analysis["stop_loss"] = round(stop_loss, 6)
+ if take_profit is None or take_profit <= current_price or take_profit > max_price:
+ analysis["take_profit"] = tp_default
+ else:
+ analysis["take_profit"] = round(take_profit, 6)
# Constrain confidence
confidence = analysis.get("confidence", 50)
@@ -1266,7 +1683,6 @@ IMPORTANT:
analysis[score_key] = max(0, min(100, int(score)))
# Validate decision
- decision = str(analysis.get("decision", "HOLD")).upper()
if decision not in ["BUY", "SELL", "HOLD"]:
analysis["decision"] = "HOLD"
else:
@@ -1279,6 +1695,9 @@ IMPORTANT:
has_major_news=has_major_news,
has_macro_event=has_macro_event
)
+
+ # Final geometry after any decision change (e.g. forced HOLD skips finalize in caller — still safe)
+ analysis = self._finalize_trading_plan_for_decision(analysis, current_price, indicators)
return analysis
@@ -1729,71 +2148,64 @@ IMPORTANT:
def _calculate_sentiment_score(self, news: List[Dict]) -> float:
"""
计算新闻情绪评分 (-100 to +100)
- 包含地缘政治事件的特殊处理
+ 地缘/冲突类:词边界 + 分级惩罚,单条封顶,避免 extension/toward 等误判叠加。
"""
if not news:
return 0.0 # 无新闻,中性
-
+
positive_count = 0
negative_count = 0
neutral_count = 0
- geopolitical_penalty = 0 # 地缘政治事件惩罚分数
- geopolitical_count = 0 # 地缘政治事件数量
-
- # 地缘政治关键词
- geopolitical_keywords = [
- "war", "conflict", "military", "attack", "strike", "sanctions",
- "geopolitical", "crisis", "tension", "iran", "israel", "russia",
- "ukraine", "middle east", "nato", "united states",
- "战争", "冲突", "军事", "袭击", "制裁", "地缘政治", "危机"
- ]
-
- for item in news[:15]: # 检查前15条新闻
- title = (item.get("headline") or item.get("title") or "").lower()
- summary = (item.get("summary") or "").lower()
+ geopolitical_penalty = 0
+ max_geo_total = int(os.getenv("SENTIMENT_GEO_PENALTY_CAP", "-55"))
+
+ for item in news[:15]:
+ title = item.get("headline") or item.get("title") or ""
+ summary = item.get("summary") or ""
text = f"{title} {summary}"
sentiment = item.get("sentiment", "neutral")
is_global_event = item.get("is_global_event", False)
-
- # 检查是否是地缘政治事件
- is_geopolitical = is_global_event or any(keyword in text for keyword in geopolitical_keywords)
-
- if is_geopolitical:
- geopolitical_count += 1
- # 地缘政治事件通常是利空的,给予严重惩罚
- if any(kw in text for kw in ["war", "conflict", "attack", "strike", "战争", "冲突", "袭击", "打击"]):
- geopolitical_penalty -= 50 # 战争/冲突事件严重利空
- elif any(kw in text for kw in ["sanctions", "crisis", "tension", "制裁", "危机", "紧张"]):
- geopolitical_penalty -= 30 # 制裁/危机事件利空
- else:
- geopolitical_penalty -= 20 # 其他地缘政治事件利空
- logger.info(f"Detected geopolitical event in sentiment scoring: {title[:60]}, penalty: {geopolitical_penalty}")
-
- # 统计普通新闻情绪
+
+ level, tag = _geopolitical_match_level(text)
+ if is_global_event and level == "none":
+ level, tag = "moderate", "is_global_event"
+
+ if level != "none":
+ delta = _geopolitical_sentiment_penalty_delta(level)
+ new_total = geopolitical_penalty + delta
+ if new_total < max_geo_total:
+ delta = max_geo_total - geopolitical_penalty
+ geopolitical_penalty += delta
+ preview = (title or summary or "")[:72]
+ logger.info(
+ f"Geopolitical sentiment ({level}, {tag}): {preview!r}, "
+ f"delta={delta}, cumulative={geopolitical_penalty}"
+ )
+
if sentiment == "positive":
positive_count += 1
elif sentiment == "negative":
negative_count += 1
else:
neutral_count += 1
-
+
total = positive_count + negative_count + neutral_count
-
- # 计算净情绪(普通新闻)
+
if total > 0:
net_sentiment = (positive_count - negative_count) / total
- base_score = net_sentiment * 60 # 基础情绪分数(-60到+60)
+ base_score = net_sentiment * 60
else:
base_score = 0
-
- # 地缘政治事件惩罚(如果有地缘政治事件,直接应用惩罚)
- if geopolitical_count > 0:
- # 地缘政治事件的影响权重很高,直接叠加惩罚
+
+ if geopolitical_penalty != 0:
final_score = base_score + geopolitical_penalty
- logger.info(f"Sentiment score: base={base_score:.1f}, geopolitical_penalty={geopolitical_penalty}, final={final_score:.1f}")
+ logger.info(
+ f"Sentiment score: base={base_score:.1f}, "
+ f"geopolitical_penalty={geopolitical_penalty}, final={final_score:.1f}"
+ )
else:
final_score = base_score
-
+
return max(-100, min(100, final_score))
def _calculate_macro_score(self, macro: Dict, market: str) -> float:
@@ -1908,6 +2320,14 @@ IMPORTANT:
return max(-100, min(100, score))
+ def _detect_market_regime(self, indicators: Dict) -> str:
+ """Detect trending vs ranging from MA trend. trending | ranging"""
+ ma = indicators.get("moving_averages") or {}
+ trend = str(ma.get("trend", "sideways")).lower()
+ if "uptrend" in trend or "downtrend" in trend or "strong" in trend:
+ return "trending"
+ return "ranging"
+
def _score_to_decision(self, score: float, *, market: str = "Crypto") -> str:
"""
根据客观评分转换为决策
@@ -2072,7 +2492,11 @@ IMPORTANT:
decision = fast_result.get("decision", "HOLD")
confidence = fast_result.get("confidence", 50)
scores = fast_result.get("scores", {})
-
+ to_sum = (fast_result.get("trend_outlook_summary") or "").strip()
+ overview_report = fast_result.get("summary", "") or ""
+ if to_sum:
+ overview_report = f"{overview_report}\n\n【周期预判】{to_sum}" if overview_report.strip() else f"【周期预判】{to_sum}"
+
return {
"overview": {
"overallScore": scores.get("overall", 50),
@@ -2085,7 +2509,7 @@ IMPORTANT:
"sentiment": scores.get("sentiment", 50),
"risk": 100 - confidence, # Inverse of confidence
},
- "report": fast_result.get("summary", ""),
+ "report": overview_report,
},
"fundamental": {
"score": scores.get("fundamental", 50),
@@ -2135,6 +2559,8 @@ IMPORTANT:
"recommendation": "\n".join(fast_result.get("reasons", [])),
},
"fast_analysis": fast_result, # Include new format for gradual migration
+ "trend_outlook": fast_result.get("trend_outlook"),
+ "trend_outlook_summary": fast_result.get("trend_outlook_summary"),
"error": None,
}
diff --git a/backend_api_python/app/services/llm.py b/backend_api_python/app/services/llm.py
index 0c1f97d..a7d2db5 100644
--- a/backend_api_python/app/services/llm.py
+++ b/backend_api_python/app/services/llm.py
@@ -82,11 +82,10 @@ class LLMService:
if provider_name:
try:
+ # Explicit selection should always be respected.
+ # API key validation happens later in call path.
selected = LLMProvider(provider_name.lower())
- # Verify this provider has an API key configured
- if self.get_api_key(selected):
- return selected
- logger.warning(f"LLM_PROVIDER={provider_name} but no API key configured, auto-detecting...")
+ return selected
except ValueError:
pass
@@ -184,31 +183,36 @@ class LLMService:
response = requests.post(url, headers=headers, json=data, timeout=timeout)
- # Handle errors with detailed messages
- if response.status_code == 403:
- error_msg = "OpenRouter API 403 Forbidden"
+ # Handle non-2xx with provider/model-aware details
+ if response.status_code >= 400:
+ provider_name = "OpenRouter" if "openrouter" in (base_url or "").lower() else "LLM"
+ error_msg = f"{provider_name} API {response.status_code}"
+ err_text = ""
try:
- error_data = response.json()
- if "error" in error_data:
- error_detail = error_data["error"]
- if isinstance(error_detail, dict):
- error_msg = f"OpenRouter API 403: {error_detail.get('message', 'Forbidden')}"
- elif isinstance(error_detail, str):
- error_msg = f"OpenRouter API 403: {error_detail}"
- except:
- pass
-
- # Check if API key is configured
- from app.config.api_keys import APIKeys
- if not APIKeys.OPENROUTER_API_KEY:
- error_msg += ". OPENROUTER_API_KEY 未配置,请在 backend_api_python/.env 中设置"
- else:
- error_msg += ". 可能的原因:1) API 密钥无效或过期 2) 账户余额不足 3) 没有权限访问该模型。请检查 https://openrouter.ai/keys"
-
+ error_data = response.json() or {}
+ error_detail = error_data.get("error")
+ if isinstance(error_detail, dict):
+ err_text = str(error_detail.get("message") or "").strip()
+ elif isinstance(error_detail, str):
+ err_text = error_detail.strip()
+ except Exception:
+ err_text = (response.text or "").strip()[:300]
+
+ if err_text:
+ error_msg = f"{error_msg}: {err_text}"
+
+ # OpenRouter targeted hints
+ if "openrouter" in (base_url or "").lower():
+ from app.config.api_keys import APIKeys
+ if not APIKeys.OPENROUTER_API_KEY:
+ error_msg += ". OPENROUTER_API_KEY 未配置,请在 backend_api_python/.env 中设置"
+ elif response.status_code == 403:
+ error_msg += ". 可能原因:API 密钥无效/过期、余额不足、或无模型权限。请检查 https://openrouter.ai/keys"
+ elif response.status_code == 404:
+ error_msg += ". 可能原因:模型不可用或账户隐私/数据策略限制。请检查 https://openrouter.ai/settings/privacy"
+
raise ValueError(error_msg)
- response.raise_for_status()
-
result = response.json()
if "choices" in result and len(result["choices"]) > 0:
content = result["choices"][0]["message"]["content"]
@@ -369,9 +373,23 @@ class LLMService:
logger.debug(f"Auto-detected provider '{provider.value}' from model '{model}'")
p = provider or self.provider
+ cfg = load_addon_config()
+ explicit_provider_name = str(cfg.get('llm', {}).get('provider') or os.getenv('LLM_PROVIDER', '')).strip().lower()
+ explicit_provider = None
+ if explicit_provider_name:
+ try:
+ explicit_provider = LLMProvider(explicit_provider_name)
+ except ValueError:
+ explicit_provider = None
api_key = self.get_api_key(p)
if not api_key:
+ # If provider is explicitly configured by user, don't silently switch.
+ if explicit_provider is not None and p == explicit_provider:
+ raise ValueError(
+ f"API key not configured for explicit provider: {p.value}. "
+ f"Please set {p.value.upper()}_API_KEY in settings."
+ )
# If no API key for current provider, try to find any available provider
if try_alternative_providers:
for alt_provider in [LLMProvider.DEEPSEEK, LLMProvider.GROK, LLMProvider.OPENAI, LLMProvider.GOOGLE, LLMProvider.OPENROUTER]:
diff --git a/backend_api_python/app/services/market_data_collector.py b/backend_api_python/app/services/market_data_collector.py
index 114e9ef..4044240 100644
--- a/backend_api_python/app/services/market_data_collector.py
+++ b/backend_api_python/app/services/market_data_collector.py
@@ -281,14 +281,12 @@ class MarketDataCollector:
"""
计算技术指标 (本地计算,无外部依赖)
- 返回格式符合前端 FastAnalysisReport.vue 的期望:
- {
- rsi: { value, signal },
- macd: { signal, trend },
- moving_averages: { ma5, ma10, ma20, trend },
- levels: { support, resistance },
- volatility: { level, pct }
- }
+ 返回格式符合前端 FastAnalysisReport.vue 的期望。
+ 口径说明(与常见行情终端对齐):
+ - RSI(14):Wilder 平滑(首段均幅为前 14 期简单平均,其后递推)。
+ - MACD:收盘 EMA12/EMA26(首值=前 N 日 SMA),信号线=MACD 的 EMA9(SMA 种子)。
+ - MA:SMA。枢轴:上一根 K 的 H/L/C。摆动高低:近 20 根 H/L 窗口极值。
+ - 布林:20 收盘 SMA ± 2×总体标准差。ATR(14):Wilder(首 ATR=前 14 期 TR 简单平均,其后递推)。
"""
if not klines or len(klines) < 5:
return {}
@@ -319,8 +317,8 @@ class MarketDataCollector:
'signal': rsi_signal,
}
- # ========== MACD ==========
- if len(closes) >= 26:
+ # ========== MACD(SMA 种子 EMA,与常见终端一致)==========
+ if len(closes) >= 34:
macd_raw = self._calc_macd(closes)
macd_val = macd_raw.get('MACD', 0)
macd_sig = macd_raw.get('MACD_signal', 0)
@@ -366,6 +364,11 @@ class MarketDataCollector:
'ma20': round(ma20, 6),
'trend': ma_trend,
}
+
+ # 先算布林带,供下方合成支撑/阻力使用(键名 BB_upper / BB_lower)
+ bb_for_levels: Dict[str, Any] = {}
+ if len(closes) >= 20:
+ bb_for_levels = self._calc_bollinger(closes, 20, 2) or {}
# ========== 支撑/阻力位 (多种方法综合) ==========
# 方法1: 枢轴点 (Pivot Points) - 使用前一日数据
@@ -390,13 +393,13 @@ class MarketDataCollector:
swing_high = max(recent_highs) if recent_highs else current_price * 1.05
swing_low = min(recent_lows) if recent_lows else current_price * 0.95
- # 方法3: 布林带中轨上下 (如果有)
- bb_upper = indicators.get('bollinger', {}).get('upper', swing_high)
- bb_lower = indicators.get('bollinger', {}).get('lower', swing_low)
+ # 方法3: 布林上下轨(与 _calc_bollinger 返回字段一致)
+ bb_upper = bb_for_levels.get('BB_upper', swing_high)
+ bb_lower = bb_for_levels.get('BB_lower', swing_low)
# 综合取值: 取多种方法的平均/加权
- resistance = round((r1 + swing_high + bb_upper) / 3, 6) if bb_upper else round((r1 + swing_high) / 2, 6)
- support = round((s1 + swing_low + bb_lower) / 3, 6) if bb_lower else round((s1 + swing_low) / 2, 6)
+ resistance = round((r1 + swing_high + bb_upper) / 3, 6)
+ support = round((s1 + swing_low + bb_lower) / 3, 6)
indicators['levels'] = {
'support': support,
@@ -411,20 +414,10 @@ class MarketDataCollector:
'method': 'pivot_swing_bb_avg' # 标注计算方法
}
- # ========== ATR 和波动率 ==========
- atr = 0
+ # ========== ATR 和波动率(Wilder ATR,全序列递推至最新一根)==========
+ atr = 0.0
if len(klines) >= 14:
- # 真实波动幅度 ATR (True Range)
- true_ranges = []
- for i in range(-14, 0):
- h = float(klines[i].get('high', 0))
- l = float(klines[i].get('low', 0))
- prev_c = float(klines[i-1].get('close', 0)) if i > -14 else h
- if h > 0 and l > 0:
- tr = max(h - l, abs(h - prev_c), abs(l - prev_c))
- true_ranges.append(tr)
-
- atr = sum(true_ranges) / len(true_ranges) if true_ranges else 0
+ atr = float(self._calc_atr_wilder(klines, period=14))
volatility_pct = (atr / current_price * 100) if current_price > 0 else 0
if volatility_pct > 5:
@@ -468,10 +461,9 @@ class MarketDataCollector:
'method': 'atr_support_resistance'
}
- # ========== 布林带 (附加) ==========
- if len(closes) >= 20:
- bb_data = self._calc_bollinger(closes, 20, 2)
- indicators['bollinger'] = bb_data
+ # ========== 布林带 (附加,与 bb_for_levels 同一次计算) ==========
+ if bb_for_levels:
+ indicators['bollinger'] = bb_for_levels
# ========== 成交量 (附加) ==========
if len(volumes) >= 20:
@@ -498,48 +490,109 @@ class MarketDataCollector:
return {}
def _calc_rsi(self, closes: List[float], period: int = 14) -> float:
- """计算RSI"""
+ """Wilder RSI:首段均幅为前 period 期涨跌简单平均,之后按 Wilder 平滑递推。"""
if len(closes) < period + 1:
return 50.0
-
- deltas = [closes[i] - closes[i-1] for i in range(1, len(closes))]
- gains = [d if d > 0 else 0 for d in deltas]
- losses = [-d if d < 0 else 0 for d in deltas]
-
- avg_gain = sum(gains[-period:]) / period
- avg_loss = sum(losses[-period:]) / period
-
+
+ deltas = [closes[i] - closes[i - 1] for i in range(1, len(closes))]
+ gains = [d if d > 0 else 0.0 for d in deltas]
+ losses = [-d if d < 0 else 0.0 for d in deltas]
+
+ if len(gains) < period:
+ return 50.0
+
+ avg_gain = sum(gains[:period]) / period
+ avg_loss = sum(losses[:period]) / period
+
+ for i in range(period, len(gains)):
+ avg_gain = (avg_gain * (period - 1) + gains[i]) / period
+ avg_loss = (avg_loss * (period - 1) + losses[i]) / period
+
if avg_loss == 0:
return 100.0
-
+
rs = avg_gain / avg_loss
- rsi = 100 - (100 / (1 + rs))
- return round(rsi, 2)
-
+ return round(100.0 - (100.0 / (1.0 + rs)), 2)
+
+ def _ema_series_sma_seed(self, data: List[float], period: int) -> List[Optional[float]]:
+ """
+ 标准 EMA:首值 = 前 period 根简单平均(SMA),之后 EMA_t = (P_t - EMA_{t-1}) * k + EMA_{t-1},k=2/(period+1)。
+ 前 period-1 根无定义,返回 None。
+ """
+ n = len(data)
+ out: List[Optional[float]] = [None] * n
+ if n < period:
+ return out
+ k = 2.0 / (period + 1)
+ out[period - 1] = sum(data[:period]) / period
+ for i in range(period, n):
+ prev = out[i - 1]
+ if prev is None:
+ break
+ out[i] = (data[i] - prev) * k + prev
+ return out
+
def _calc_macd(self, closes: List[float]) -> Dict[str, float]:
- """计算MACD"""
- def ema(data, period):
- multiplier = 2 / (period + 1)
- ema_values = [data[0]]
- for i in range(1, len(data)):
- ema_values.append((data[i] - ema_values[-1]) * multiplier + ema_values[-1])
- return ema_values
-
- ema12 = ema(closes, 12)
- ema26 = ema(closes, 26)
-
- macd_line = [ema12[i] - ema26[i] for i in range(len(closes))]
- signal_line = ema(macd_line, 9)
- histogram = [macd_line[i] - signal_line[i] for i in range(len(closes))]
-
+ """
+ MACD(12,26,9):DIF = EMA12(close) − EMA26(close),DEA = EMA9(DIF),柱 = DIF − DEA。
+ 各 EMA 均采用 SMA 种子;DIF 自第 26 根 K 起有定义,信号线对 DIF 子序列再算 EMA9。
+ """
+ n = len(closes)
+ ema12 = self._ema_series_sma_seed(closes, 12)
+ ema26 = self._ema_series_sma_seed(closes, 26)
+ if n < 26 or ema12[-1] is None or ema26[-1] is None:
+ return {'MACD': 0.0, 'MACD_signal': 0.0, 'MACD_histogram': 0.0}
+
+ macd_sub: List[float] = []
+ for i in range(25, n):
+ v12 = ema12[i]
+ v26 = ema26[i]
+ if v12 is not None and v26 is not None:
+ macd_sub.append(v12 - v26)
+
+ if not macd_sub:
+ return {'MACD': 0.0, 'MACD_signal': 0.0, 'MACD_histogram': 0.0}
+
+ sig_series = self._ema_series_sma_seed(macd_sub, 9)
+ last_macd = macd_sub[-1]
+ last_sig = sig_series[-1]
+ if last_sig is None:
+ last_sig = last_macd
+
return {
- 'MACD': round(macd_line[-1], 4),
- 'MACD_signal': round(signal_line[-1], 4),
- 'MACD_histogram': round(histogram[-1], 4)
+ 'MACD': round(last_macd, 6),
+ 'MACD_signal': round(last_sig, 6),
+ 'MACD_histogram': round(last_macd - last_sig, 6),
}
+
+ def _true_ranges(self, klines: List[Dict[str, Any]]) -> List[float]:
+ """每根 K 的 True Range(首根仅 H−L)。"""
+ trs: List[float] = []
+ for i, k in enumerate(klines):
+ h = float(k.get('high', 0))
+ l = float(k.get('low', 0))
+ if h <= 0 or l <= 0:
+ trs.append(0.0)
+ continue
+ if i == 0:
+ trs.append(h - l)
+ else:
+ pc = float(klines[i - 1].get('close', 0))
+ trs.append(max(h - l, abs(h - pc), abs(l - pc)))
+ return trs
+
+ def _calc_atr_wilder(self, klines: List[Dict[str, Any]], period: int = 14) -> float:
+ """Wilder ATR:首 ATR = 前 period 期 TR 简单平均,之后 ATR_t = (ATR_{t-1}*(period-1)+TR_t)/period。"""
+ trs = self._true_ranges(klines)
+ if len(trs) < period:
+ return 0.0
+ atr = sum(trs[:period]) / period
+ for i in range(period, len(trs)):
+ atr = (atr * (period - 1) + trs[i]) / period
+ return atr
def _calc_bollinger(self, closes: List[float], period: int = 20, std_dev: int = 2) -> Dict[str, float]:
- """计算布林带"""
+ """布林带:中轨为 period 收盘 SMA,σ 为总体标准差(方差/period),上下轨=中轨±std_dev×σ。"""
if len(closes) < period:
return {}
@@ -723,58 +776,86 @@ class MarketDataCollector:
def _get_earnings_data(self, symbol: str) -> Optional[Dict[str, Any]]:
"""
获取盈利报告数据(Earnings)
-
- 包括:历史盈利、盈利预测、盈利日期等
+
+ 使用 quarterly_income_stmt 替代已弃用的 Ticker.earnings / quarterly_earnings,
+ 历史季度摘要从利润表推导;盈利日历仍用 ticker.calendar(若可用)。
"""
+ def _pick_float(stmt: pd.DataFrame, row_names: tuple, col) -> Optional[float]:
+ for name in row_names:
+ if name in stmt.index:
+ raw = stmt.loc[name, col]
+ if raw is None or (isinstance(raw, float) and pd.isna(raw)):
+ continue
+ try:
+ return float(raw)
+ except (TypeError, ValueError):
+ continue
+ return None
+
try:
ticker = yf.Ticker(symbol)
- earnings_data = {}
-
- # 历史盈利数据
+ earnings_data: Dict[str, Any] = {}
+
+ # 季度利润表(yfinance 推荐路径,避免 fundamentals.Ticker.earnings 弃用告警)
try:
- earnings_history = ticker.earnings_history
- if earnings_history is not None and not earnings_history.empty:
- # 获取最近4个季度
- recent_earnings = earnings_history.head(4)
- earnings_data['history'] = []
- for _, row in recent_earnings.iterrows():
- earnings_data['history'].append({
- 'date': str(row.get('Date', '')),
- 'eps_actual': float(row.get('EPS Actual', 0)) if row.get('EPS Actual') is not None else None,
- 'eps_estimate': float(row.get('EPS Estimate', 0)) if row.get('EPS Estimate') is not None else None,
- 'surprise': float(row.get('Surprise(%)', 0)) if row.get('Surprise(%)') is not None else None,
+ q_inc = ticker.quarterly_income_stmt
+ if q_inc is not None and not q_inc.empty and len(q_inc.columns) > 0:
+ cols = list(q_inc.columns)[:4]
+ latest_q = cols[0]
+
+ rev = _pick_float(
+ q_inc,
+ ("Total Revenue", "Revenue", "Total Revenues", "Net Sales"),
+ latest_q,
+ )
+ ni = _pick_float(
+ q_inc,
+ (
+ "Net Income",
+ "Net Income Common Stockholders",
+ "Net Income Continuous Operations",
+ "Net Income Including Noncontrolling Interests",
+ ),
+ latest_q,
+ )
+ earnings_data["quarterly"] = {
+ "latest_quarter": str(latest_q),
+ "revenue": rev,
+ "earnings": ni,
+ }
+
+ # 最近若干季度 EPS(来自利润表行,非一致预期)
+ earnings_data["history"] = []
+ for col in cols:
+ eps = _pick_float(q_inc, ("Diluted EPS", "Basic EPS"), col)
+ earnings_data["history"].append({
+ "date": str(col),
+ "eps_actual": eps,
+ "eps_estimate": None,
+ "surprise": None,
})
except Exception as e:
- logger.debug(f"Earnings history fetch failed for {symbol}: {e}")
-
- # 盈利日历(未来盈利日期)
+ logger.debug(f"Quarterly income statement (earnings) fetch failed for {symbol}: {e}")
+
+ # 盈利日历(未来盈利日期与一致预期)
try:
earnings_calendar = ticker.calendar
if earnings_calendar is not None and not earnings_calendar.empty:
- earnings_data['upcoming'] = {
- 'next_earnings_date': str(earnings_calendar.index[0]) if len(earnings_calendar.index) > 0 else None,
- 'eps_estimate': float(earnings_calendar.loc[earnings_calendar.index[0], 'Earnings Estimate']) if len(earnings_calendar.index) > 0 and 'Earnings Estimate' in earnings_calendar.columns else None,
- 'revenue_estimate': float(earnings_calendar.loc[earnings_calendar.index[0], 'Revenue Estimate']) if len(earnings_calendar.index) > 0 and 'Revenue Estimate' in earnings_calendar.columns else None,
+ idx0 = earnings_calendar.index[0]
+ earnings_data["upcoming"] = {
+ "next_earnings_date": str(idx0),
+ "eps_estimate": float(earnings_calendar.loc[idx0, "Earnings Estimate"])
+ if "Earnings Estimate" in earnings_calendar.columns
+ else None,
+ "revenue_estimate": float(earnings_calendar.loc[idx0, "Revenue Estimate"])
+ if "Revenue Estimate" in earnings_calendar.columns
+ else None,
}
except Exception as e:
logger.debug(f"Earnings calendar fetch failed for {symbol}: {e}")
-
- # 季度盈利数据
- try:
- quarterly_earnings = ticker.quarterly_earnings
- if quarterly_earnings is not None and not quarterly_earnings.empty:
- latest_q = quarterly_earnings.index[0] if len(quarterly_earnings.index) > 0 else None
- if latest_q:
- earnings_data['quarterly'] = {
- 'latest_quarter': str(latest_q),
- 'revenue': float(quarterly_earnings.loc[latest_q, 'Revenue']) if 'Revenue' in quarterly_earnings.columns else None,
- 'earnings': float(quarterly_earnings.loc[latest_q, 'Earnings']) if 'Earnings' in quarterly_earnings.columns else None,
- }
- except Exception as e:
- logger.debug(f"Quarterly earnings fetch failed for {symbol}: {e}")
-
+
return earnings_data if earnings_data else None
-
+
except Exception as e:
logger.debug(f"Earnings data fetch failed for {symbol}: {e}")
return None
diff --git a/backend_api_python/app/services/portfolio_monitor.py b/backend_api_python/app/services/portfolio_monitor.py
index 64fb122..3ade22a 100644
--- a/backend_api_python/app/services/portfolio_monitor.py
+++ b/backend_api_python/app/services/portfolio_monitor.py
@@ -9,6 +9,7 @@ import json
import threading
import time
import traceback
+from concurrent.futures import ThreadPoolExecutor, as_completed
from typing import Any, Dict, List, Optional
from app.utils.db import get_db_connection
@@ -16,6 +17,7 @@ from app.utils.logger import get_logger
from app.services.fast_analysis import get_fast_analysis_service
from app.services.signal_notifier import SignalNotifier
from app.services.kline import KlineService
+from app.services.billing_service import get_billing_service
logger = get_logger(__name__)
@@ -154,98 +156,92 @@ def _get_positions_for_monitor(position_ids: List[int] = None, user_id: int = No
return []
+MAX_PARALLEL_ANALYSIS = 5
+
+
+def _analyze_single_position(pos: Dict[str, Any], language: str) -> Dict[str, Any]:
+ """Analyze a single position (designed to run inside a thread pool)."""
+ market = pos.get('market')
+ symbol = pos.get('symbol')
+ name = pos.get('name') or symbol
+ group_name = pos.get('group_name')
+
+ if not market or not symbol:
+ return {'market': market, 'symbol': symbol, 'name': name, 'error': 'missing market/symbol'}
+
+ try:
+ logger.info(f"Running fast AI analysis for {market}:{symbol}")
+ service = get_fast_analysis_service()
+ analysis_result = service.analyze(
+ market=market, symbol=symbol, language=language, timeframe='1D'
+ )
+
+ detailed = analysis_result.get('detailed_analysis', {})
+ trading_plan = analysis_result.get('trading_plan', {})
+ scores = analysis_result.get('scores', {})
+ risks = analysis_result.get('risks', [])
+ risk_report = '\n'.join([f"• {r}" for r in risks]) if risks else ''
+
+ result = {
+ 'market': market, 'symbol': symbol, 'name': name, 'group_name': group_name,
+ 'entry_price': pos.get('entry_price'),
+ 'current_price': pos.get('current_price') or analysis_result.get('market_data', {}).get('current_price'),
+ 'pnl': pos.get('pnl'), 'pnl_percent': pos.get('pnl_percent'),
+ 'quantity': pos.get('quantity'), 'side': pos.get('side'),
+ 'final_decision': analysis_result.get('decision', 'HOLD'),
+ 'confidence': analysis_result.get('confidence', 50),
+ 'reasoning': analysis_result.get('summary', ''),
+ 'trader_decision': analysis_result.get('decision', 'HOLD'),
+ 'trader_reasoning': analysis_result.get('summary', ''),
+ 'overview_report': detailed.get('technical', ''),
+ 'fundamental_report': detailed.get('fundamental', ''),
+ 'sentiment_report': detailed.get('sentiment', ''),
+ 'risk_report': risk_report,
+ 'suggested_entry': trading_plan.get('entry_price'),
+ 'suggested_stop_loss': trading_plan.get('stop_loss'),
+ 'suggested_take_profit': trading_plan.get('take_profit'),
+ 'technical_score': scores.get('technical', 50),
+ 'fundamental_score': scores.get('fundamental', 50),
+ 'sentiment_score': scores.get('sentiment', 50),
+ 'key_reasons': analysis_result.get('reasons', []),
+ 'error': analysis_result.get('error')
+ }
+ logger.info(f"Fast analysis completed for {market}:{symbol}: {analysis_result.get('decision', 'N/A')}")
+ return result
+ except Exception as e:
+ logger.error(f"Failed to analyze {market}:{symbol}: {e}")
+ return {'market': market, 'symbol': symbol, 'name': name, 'error': str(e)}
+
+
def _run_ai_analysis(positions: List[Dict[str, Any]], config: Dict[str, Any]) -> Dict[str, Any]:
"""
- Run fast AI analysis on positions.
- Uses the new FastAnalysisService (single LLM call, faster and more stable).
+ Run fast AI analysis on positions **in parallel** using a thread pool.
"""
try:
language = config.get('language', 'en-US')
custom_prompt = config.get('prompt', '')
-
- # Get the fast analysis service
- service = get_fast_analysis_service()
-
- # Analyze each position
- position_analyses = []
-
- for pos in positions:
- market = pos.get('market')
- symbol = pos.get('symbol')
- name = pos.get('name') or symbol
- group_name = pos.get('group_name')
-
- if not market or not symbol:
- continue
-
- try:
- logger.info(f"Running fast AI analysis for {market}:{symbol}")
-
- # Use the new FastAnalysisService (single LLM call)
- analysis_result = service.analyze(
- market=market,
- symbol=symbol,
- language=language,
- timeframe='1D'
- )
-
- # Extract information from the new format
- detailed = analysis_result.get('detailed_analysis', {})
- trading_plan = analysis_result.get('trading_plan', {})
- scores = analysis_result.get('scores', {})
-
- # Build risk report from risks list
- risks = analysis_result.get('risks', [])
- risk_report = '\n'.join([f"• {r}" for r in risks]) if risks else ''
-
- position_analysis = {
- 'market': market,
- 'symbol': symbol,
- 'name': name,
- 'group_name': group_name,
- 'entry_price': pos.get('entry_price'),
- 'current_price': pos.get('current_price') or analysis_result.get('market_data', {}).get('current_price'),
- 'pnl': pos.get('pnl'),
- 'pnl_percent': pos.get('pnl_percent'),
- 'quantity': pos.get('quantity'),
- 'side': pos.get('side'),
- # New fast analysis results
- 'final_decision': analysis_result.get('decision', 'HOLD'),
- 'confidence': analysis_result.get('confidence', 50),
- 'reasoning': analysis_result.get('summary', ''),
- 'trader_decision': analysis_result.get('decision', 'HOLD'), # Same as final for fast analysis
- 'trader_reasoning': analysis_result.get('summary', ''),
- 'overview_report': detailed.get('technical', ''),
- 'fundamental_report': detailed.get('fundamental', ''),
- 'sentiment_report': detailed.get('sentiment', ''),
- 'risk_report': risk_report,
- # Trading plan
- 'suggested_entry': trading_plan.get('entry_price'),
- 'suggested_stop_loss': trading_plan.get('stop_loss'),
- 'suggested_take_profit': trading_plan.get('take_profit'),
- # Scores
- 'technical_score': scores.get('technical', 50),
- 'fundamental_score': scores.get('fundamental', 50),
- 'sentiment_score': scores.get('sentiment', 50),
- 'key_reasons': analysis_result.get('reasons', []),
- 'error': analysis_result.get('error')
- }
-
- position_analyses.append(position_analysis)
- logger.info(f"Fast analysis completed for {market}:{symbol}: {analysis_result.get('decision', 'N/A')}")
-
- except Exception as e:
- logger.error(f"Failed to analyze {market}:{symbol}: {e}")
- position_analyses.append({
- 'market': market,
- 'symbol': symbol,
- 'name': name,
- 'error': str(e)
- })
-
- # Build comprehensive report
+
+ workers = min(len(positions), MAX_PARALLEL_ANALYSIS)
+ position_analyses: List[Dict[str, Any]] = [None] * len(positions)
+
+ with ThreadPoolExecutor(max_workers=workers) as executor:
+ future_to_idx = {
+ executor.submit(_analyze_single_position, pos, language): idx
+ for idx, pos in enumerate(positions)
+ }
+ for future in as_completed(future_to_idx):
+ idx = future_to_idx[future]
+ try:
+ position_analyses[idx] = future.result()
+ except Exception as e:
+ pos = positions[idx]
+ position_analyses[idx] = {
+ 'market': pos.get('market'), 'symbol': pos.get('symbol'),
+ 'name': pos.get('name') or pos.get('symbol'), 'error': str(e)
+ }
+
analysis_report = _build_comprehensive_report(positions, position_analyses, language, custom_prompt)
-
+
return {
'success': True,
'analysis': analysis_report,
@@ -254,15 +250,11 @@ def _run_ai_analysis(positions: List[Dict[str, Any]], config: Dict[str, Any]) ->
'analyzed_count': len([p for p in position_analyses if not p.get('error')]),
'timestamp': _now_ts()
}
-
+
except Exception as e:
logger.error(f"_run_ai_analysis failed: {e}")
logger.error(traceback.format_exc())
- return {
- 'success': False,
- 'error': str(e),
- 'timestamp': _now_ts()
- }
+ return {'success': False, 'error': str(e), 'timestamp': _now_ts()}
def _build_comprehensive_report(
@@ -914,22 +906,67 @@ def run_single_monitor(monitor_id: int, override_language: str = None, user_id:
if override_language:
config['language'] = override_language
- # Get positions for this user
+ # Resolve interval (frontend sends run_interval_minutes, legacy uses interval_minutes)
+ interval_minutes = int(
+ config.get('run_interval_minutes')
+ or config.get('interval_minutes')
+ or 60
+ )
+
+ # Get positions (or build from config.symbol if no position_ids)
positions = _get_positions_for_monitor(position_ids if position_ids else None, user_id=monitor_user_id)
-
+
+ # If monitor was created without positions but has symbol in config, build a virtual position
+ if not positions and config.get('symbol'):
+ positions = [{
+ 'market': config.get('market', ''),
+ 'symbol': config.get('symbol', ''),
+ 'name': config.get('symbol', ''),
+ 'side': 'long',
+ 'quantity': 0,
+ 'entry_price': 0,
+ 'current_price': 0,
+ 'pnl': 0,
+ 'pnl_percent': 0,
+ }]
+
if not positions:
return {'success': False, 'error': 'No positions to analyze'}
+ # ── Billing: charge per symbol analyzed ──
+ billing = get_billing_service()
+ symbol_count = len(positions)
+ per_symbol_cost = billing.get_feature_cost('ai_analysis')
+ total_cost = per_symbol_cost * symbol_count
+
+ if total_cost > 0 and billing.is_billing_enabled():
+ user_credits = billing.get_user_credits(monitor_user_id)
+ if user_credits < total_cost:
+ logger.warning(
+ f"Monitor #{monitor_id} skipped: insufficient credits "
+ f"({user_credits} < {total_cost} for {symbol_count} symbols)"
+ )
+ return {
+ 'success': False,
+ 'error': f'Insufficient credits: need {total_cost}, have {user_credits}'
+ }
+ for i in range(symbol_count):
+ pos = positions[i]
+ ok, msg = billing.check_and_consume(
+ user_id=monitor_user_id,
+ feature='ai_analysis',
+ reference_id=f"monitor_{monitor_id}_{pos.get('symbol', '')}"
+ )
+ if not ok:
+ logger.warning(f"Monitor #{monitor_id} billing failed at symbol #{i+1}: {msg}")
+ break
+
# Run analysis based on type
if monitor_type == 'ai':
result = _run_ai_analysis(positions, config)
else:
- # For other types, we can add price_alert, pnl_alert logic later
result = {'success': False, 'error': f'Unsupported monitor type: {monitor_type}'}
- # Update monitor record
- interval_minutes = int(config.get('interval_minutes') or 60)
-
with get_db_connection() as db:
cur = db.cursor()
cur.execute(
diff --git a/backend_api_python/app/services/reflection.py b/backend_api_python/app/services/reflection.py
new file mode 100644
index 0000000..d04be22
--- /dev/null
+++ b/backend_api_python/app/services/reflection.py
@@ -0,0 +1,100 @@
+"""
+Reflection Service - Post-trade validation and learning.
+
+Validates historical AI decisions against actual price outcomes,
+updates qd_analysis_memory with was_correct/actual_return_pct,
+and optionally triggers AI calibration.
+"""
+import os
+import threading
+import time
+from typing import Dict, Any, Optional
+
+from app.utils.logger import get_logger
+from app.services.analysis_memory import get_analysis_memory
+
+logger = get_logger(__name__)
+
+_reflection_thread: Optional[threading.Thread] = None
+_reflection_stop = threading.Event()
+
+
+class ReflectionService:
+ """
+ Runs verification cycle: validate unvalidated decisions, optionally run calibration.
+ """
+
+ def run_verification_cycle(self) -> Dict[str, Any]:
+ """
+ Run one verification cycle:
+ 1. Validate unvalidated analysis records (older than min_age_days)
+ 2. Optionally run AI calibration for configured markets
+ """
+ memory = get_analysis_memory()
+ min_age_days = int(os.getenv("REFLECTION_MIN_AGE_DAYS", "7"))
+ limit = int(os.getenv("REFLECTION_VALIDATE_LIMIT", "200"))
+
+ stats = memory.validate_unvalidated_older_than(
+ min_age_days=min_age_days,
+ limit=limit,
+ )
+ logger.info(f"Reflection validation: {stats}")
+
+ if stats.get("validated", 0) > 0:
+ self._maybe_run_calibration()
+ else:
+ logger.debug("No new validations, skipping calibration")
+
+ return stats
+
+ def _maybe_run_calibration(self) -> None:
+ """Run AI calibration if enabled."""
+ if os.getenv("ENABLE_OFFLINE_AI_CALIBRATION", "true").lower() != "true":
+ return
+ try:
+ from app.services.ai_calibration import AICalibrationService
+ svc = AICalibrationService()
+ markets = (os.getenv("AI_CALIBRATION_MARKETS", "Crypto") or "Crypto").strip().split(",")
+ for market in markets:
+ market = market.strip()
+ if not market:
+ continue
+ result = svc.calibrate_market(
+ market=market,
+ lookback_days=int(os.getenv("AI_CALIBRATION_LOOKBACK_DAYS", "30")),
+ min_samples=int(os.getenv("AI_CALIBRATION_MIN_SAMPLES", "80")),
+ validate_before=False,
+ )
+ if result:
+ logger.info(
+ f"[Reflection] Calibration updated for {market}: "
+ f"accuracy={result.best_accuracy:.1f}% thr=±{result.buy_threshold:.1f}"
+ )
+ except Exception as e:
+ logger.warning(f"Reflection calibration failed: {e}", exc_info=True)
+
+
+def start_reflection_worker() -> None:
+ """Start background reflection worker (validates + calibrates periodically)."""
+ global _reflection_thread
+ # Default to ON to reduce environment-specific configuration needs.
+ if os.getenv("ENABLE_REFLECTION_WORKER", "true").lower() != "true":
+ logger.info("Reflection worker disabled (ENABLE_REFLECTION_WORKER != true).")
+ return
+ interval_sec = int(os.getenv("REFLECTION_WORKER_INTERVAL_SEC", "86400"))
+ if _reflection_thread and _reflection_thread.is_alive():
+ return
+
+ def _run():
+ _reflection_stop.clear()
+ logger.info(f"Reflection worker started, interval={interval_sec}s")
+ while not _reflection_stop.is_set():
+ try:
+ ReflectionService().run_verification_cycle()
+ except Exception as e:
+ logger.error(f"Reflection cycle failed: {e}", exc_info=True)
+ _reflection_stop.wait(timeout=interval_sec)
+ logger.info("Reflection worker stopped.")
+
+ _reflection_thread = threading.Thread(target=_run, daemon=True)
+ _reflection_thread.start()
diff --git a/backend_api_python/app/services/trading_executor.py b/backend_api_python/app/services/trading_executor.py
index 35652e2..27f261e 100644
--- a/backend_api_python/app/services/trading_executor.py
+++ b/backend_api_python/app/services/trading_executor.py
@@ -2263,8 +2263,33 @@ class TradingExecutor:
language = amc.get("language") or amc.get("lang") or tc.get("language") or "zh-CN"
language = str(language or "zh-CN")
+ # ── Billing: AI filter uses the same cost as ai_analysis ──
+ try:
+ from app.services.billing_service import get_billing_service
+ billing = get_billing_service()
+ if billing.is_billing_enabled():
+ user_id = 1
+ try:
+ with get_db_connection() as db:
+ cur = db.cursor()
+ cur.execute("SELECT user_id FROM qd_strategies_trading WHERE id = ?", (strategy_id,))
+ row = cur.fetchone()
+ cur.close()
+ user_id = int((row or {}).get('user_id') or 1)
+ except Exception:
+ pass
+ ok, msg = billing.check_and_consume(
+ user_id=user_id,
+ feature='ai_analysis',
+ reference_id=f"ai_filter_{strategy_id}_{symbol}"
+ )
+ if not ok:
+ logger.warning(f"AI filter billing failed for strategy {strategy_id}: {msg}")
+ return False, {"ai_decision": "", "reason": f"billing_failed:{msg}"}
+ except Exception as e:
+ logger.warning(f"AI filter billing check error: {e}")
+
try:
- # 使用新的 FastAnalysisService (单次LLM调用,更快更稳定)
from app.services.fast_analysis import get_fast_analysis_service
service = get_fast_analysis_service()
diff --git a/backend_api_python/env.example b/backend_api_python/env.example
index 0739db8..894bf04 100644
--- a/backend_api_python/env.example
+++ b/backend_api_python/env.example
@@ -63,12 +63,8 @@ SMTP_USE_SSL=false
# =========================
# Proxy (optional)
# =========================
-# Most users only need PROXY_URL.
-# Example local:
-# PROXY_URL=socks5h://127.0.0.1:10808
-#
-# Example Docker:
-# PROXY_URL=socks5h://host.docker.internal:10808
+# PROXY_URL=socks5h://127.0.0.1:10808 # local
+# PROXY_URL=socks5h://host.docker.internal:10808 # Docker
PROXY_URL=
# =========================
@@ -86,23 +82,47 @@ GITHUB_CLIENT_SECRET=
GITHUB_REDIRECT_URI=http://localhost:5000/api/auth/oauth/github/callback
# =========================
-# Billing / payments (optional)
+# Billing / payments
# =========================
-BILLING_ENABLED=False
-USDT_PAY_ENABLED=False
+BILLING_ENABLED=false
+
+# 积分单价
+BILLING_COST_AI_ANALYSIS=10
+BILLING_COST_AI_CODE_GEN=30
+
+CREDITS_REGISTER_BONUS=100
+CREDITS_REFERRAL_BONUS=50
+
+# Membership plans
+MEMBERSHIP_MONTHLY_PRICE_USD=19.9
+MEMBERSHIP_YEARLY_PRICE_USD=199
+MEMBERSHIP_LIFETIME_PRICE_USD=499
+MEMBERSHIP_MONTHLY_CREDITS=500
+MEMBERSHIP_YEARLY_CREDITS=8000
+MEMBERSHIP_LIFETIME_MONTHLY_CREDITS=800
+
+# USDT payment
+USDT_PAY_ENABLED=false
+USDT_PAY_CHAIN=TRC20
+USDT_TRC20_XPUB=
+USDT_TRC20_CONTRACT=TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj
+TRONGRID_BASE_URL=https://api.trongrid.io
+TRONGRID_API_KEY=
+USDT_PAY_CONFIRM_SECONDS=30
+USDT_PAY_EXPIRE_MINUTES=30
+USDT_WORKER_POLL_INTERVAL=30
# =========================
# Advanced / rarely changed
# =========================
-# The settings below are optional. Most users can leave them unchanged.
# Network / App tuning
PYTHON_API_HOST=0.0.0.0
PYTHON_API_PORT=5000
-PYTHON_API_DEBUG=False
+PYTHON_API_DEBUG=false
RATE_LIMIT=100
-ENABLE_CACHE=False
-ENABLE_REQUEST_LOG=True
+ENABLE_CACHE=false
+ENABLE_REQUEST_LOG=true
# Strategy / execution tuning
PENDING_ORDER_STALE_SEC=90
@@ -112,6 +132,7 @@ MAKER_OFFSET_BPS=2
STRATEGY_TICK_INTERVAL_SEC=10
PRICE_CACHE_TTL_SEC=10
K_LINE_HISTORY_GET_NUMBER=500
+SIGNAL_NOTIFY_TIMEOUT_SEC=6
# LLM advanced tuning
OPENROUTER_API_URL=https://openrouter.ai/api/v1/chat/completions
@@ -119,7 +140,6 @@ OPENROUTER_TEMPERATURE=0.7
OPENROUTER_MAX_TOKENS=4000
OPENROUTER_TIMEOUT=300
OPENROUTER_CONNECT_TIMEOUT=30
-
OPENAI_BASE_URL=https://api.openai.com/v1
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
GROK_BASE_URL=https://api.x.ai/v1
@@ -128,32 +148,26 @@ GROK_BASE_URL=https://api.x.ai/v1
DATA_SOURCE_TIMEOUT=30
DATA_SOURCE_RETRY=3
DATA_SOURCE_RETRY_BACKOFF=0.5
-
FINNHUB_API_KEY=
FINNHUB_TIMEOUT=10
FINNHUB_RATE_LIMIT=60
-
CCXT_DEFAULT_EXCHANGE=coinbase
CCXT_TIMEOUT=10000
-
AKSHARE_TIMEOUT=30
YFINANCE_TIMEOUT=30
-
TIINGO_API_KEY=
TIINGO_TIMEOUT=10
-# AI search / news providers
+# AI search / news
SEARCH_PROVIDER=google
SEARCH_MAX_RESULTS=10
-
SEARCH_GOOGLE_API_KEY=
SEARCH_GOOGLE_CX=
SEARCH_BING_API_KEY=
-
TAVILY_API_KEYS=
SERPAPI_KEYS=
-# SMS / phone notifications
+# SMS / phone (optional)
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_FROM_NUMBER=
@@ -162,42 +176,27 @@ TWILIO_FROM_NUMBER=
SECURITY_IP_MAX_ATTEMPTS=10
SECURITY_IP_WINDOW_MINUTES=5
SECURITY_IP_BLOCK_MINUTES=15
-
SECURITY_ACCOUNT_MAX_ATTEMPTS=5
SECURITY_ACCOUNT_WINDOW_MINUTES=60
SECURITY_ACCOUNT_BLOCK_MINUTES=30
-
VERIFICATION_CODE_EXPIRE_MINUTES=10
VERIFICATION_CODE_RATE_LIMIT=60
VERIFICATION_CODE_IP_HOURLY_LIMIT=10
VERIFICATION_CODE_MAX_ATTEMPTS=5
VERIFICATION_CODE_LOCK_MINUTES=30
-# Billing / credits
-BILLING_COST_AI_ANALYSIS=10
-BILLING_COST_STRATEGY_RUN=5
-BILLING_COST_BACKTEST=3
-BILLING_COST_PORTFOLIO_MONITOR=8
-BILLING_COST_POLYMARKET_DEEP_ANALYSIS=15
+# AI analysis tuning
+ENABLE_CONFIDENCE_CALIBRATION=false
+ENABLE_AI_ENSEMBLE=false
+AI_ENSEMBLE_MODELS=openai/gpt-4o,openai/gpt-4o-mini
+ENABLE_REFLECTION_WORKER=false
+REFLECTION_WORKER_INTERVAL_SEC=86400
+REFLECTION_MIN_AGE_DAYS=7
+REFLECTION_VALIDATE_LIMIT=200
+AI_CALIBRATION_MARKETS=Crypto
+AI_CALIBRATION_LOOKBACK_DAYS=30
+AI_CALIBRATION_MIN_SAMPLES=80
+AI_ANALYSIS_CONSENSUS_TIMEFRAMES=1D,4H
-CREDITS_REGISTER_BONUS=100
-CREDITS_REFERRAL_BONUS=50
-
-# Membership plans
-MEMBERSHIP_MONTHLY_PRICE_USD=19.9
-MEMBERSHIP_YEARLY_PRICE_USD=199
-MEMBERSHIP_LIFETIME_PRICE_USD=499
-
-MEMBERSHIP_MONTHLY_CREDITS=500
-MEMBERSHIP_YEARLY_CREDITS=8000
-MEMBERSHIP_LIFETIME_MONTHLY_CREDITS=800
-
-# USDT payment
-USDT_PAY_CHAIN=TRC20
-USDT_TRC20_XPUB=
-USDT_TRC20_CONTRACT=TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj
-TRONGRID_BASE_URL=https://api.trongrid.io
-TRONGRID_API_KEY=
-USDT_PAY_CONFIRM_SECONDS=30
-USDT_PAY_EXPIRE_MINUTES=30
-USDT_WORKER_POLL_INTERVAL=30
+# Internal
+INTERNAL_API_KEY=
diff --git a/backend_api_python/scripts/run_calibration.py b/backend_api_python/scripts/run_calibration.py
new file mode 100644
index 0000000..6cb523e
--- /dev/null
+++ b/backend_api_python/scripts/run_calibration.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+"""
+Run AI calibration manually (e.g. via cron).
+
+Usage:
+ python scripts/run_calibration.py
+ AI_CALIBRATION_MARKET=Crypto python scripts/run_calibration.py
+ AI_CALIBRATION_MARKETS=Crypto,USStock python scripts/run_calibration.py
+"""
+import sys
+import os
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
+
+from app.services.ai_calibration import AICalibrationService
+
+
+def main():
+ markets = (os.getenv("AI_CALIBRATION_MARKETS") or os.getenv("AI_CALIBRATION_MARKET") or "Crypto").strip().split(",")
+ for m in markets:
+ m = m.strip()
+ if not m:
+ continue
+ print(f"Calibrating market: {m}")
+ svc = AICalibrationService()
+ r = svc.calibrate_market(market=m, validate_before=True)
+ if r:
+ print(f" OK: accuracy={r.best_accuracy:.1f}% threshold=±{r.buy_threshold:.1f} samples={r.sample_count}")
+ else:
+ print(" SKIP: not enough validated samples")
+ print("Done.")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/backend_api_python/scripts/run_reflection_task.py b/backend_api_python/scripts/run_reflection_task.py
index 614f0b2..bb2842b 100644
--- a/backend_api_python/scripts/run_reflection_task.py
+++ b/backend_api_python/scripts/run_reflection_task.py
@@ -1,19 +1,31 @@
import sys
import os
+from dotenv import load_dotenv
-# 添加项目根目录到 Python 路径
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
+# 添加后端目录到 Python 路径(使得可以 import app.*)
+# 由于 app 包位于 backend_api_python/app 下,而脚本位于 backend_api_python/scripts
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
-from app.services.agents.reflection import ReflectionService
+from app.services.reflection import ReflectionService
def main():
+ # Load backend envs for DATABASE_URL, reflection switches, etc.
+ # This script may be run locally, so we must load .env explicitly.
+ backend_env_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '.env'))
+ root_env_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '.env'))
+ if os.path.exists(root_env_path):
+ load_dotenv(root_env_path, override=False)
+ if os.path.exists(backend_env_path):
+ load_dotenv(backend_env_path, override=False)
+
"""
运行自动反思验证任务
建议通过 cron 或 定时任务调度器 每天运行一次
"""
print("Running Automated Reflection Verification Task...")
service = ReflectionService()
- service.run_verification_cycle()
+ stats = service.run_verification_cycle()
+ print("Reflection stats:", stats)
print("Task Completed.")
if __name__ == "__main__":
diff --git a/docs/FRONTEND_FAST_ANALYSIS.md b/docs/FRONTEND_FAST_ANALYSIS.md
new file mode 100644
index 0000000..163e879
--- /dev/null
+++ b/docs/FRONTEND_FAST_ANALYSIS.md
@@ -0,0 +1,62 @@
+# 快速分析(Fast Analysis)前端对接说明
+
+本开源仓库中的 **`frontend/` 仅包含构建产物 `dist/`**,Vue 源码在**私有前端仓库**(见根目录 `.github/workflows/update-frontend.yml`)。因此在本仓库内**无法直接修改** `FastAnalysisReport.vue` 等组件,需要在私有仓库中按下列说明调整。
+
+## 1. 止盈 / 止损显示反了(BUY/SELL)
+
+### 后端约定(`/api/fast-analysis/analyze`)
+
+- **`trading_plan.stop_loss` / `trading_plan.take_profit`** 已与 `decision` 对齐几何关系:
+ - **BUY**:`stop_loss < 现价 < take_profit`
+ - **SELL(空)**:`take_profit < 现价 < stop_loss`(止损在上方,止盈在下方)
+- **`indicators.trading_levels.suggested_stop_loss / suggested_take_profit`** 在采集器里是**多单(做多)参考价**,**不能**在 SELL 时直接拿来当界面上的「止损/止盈」两行,否则会和空单几何相反。
+
+### 前端常见错误
+
+- 第一行写死绑定 `trading_levels.suggested_stop_loss`、第二行绑定 `suggested_take_profit`。
+- 或把 `stop_loss` / `take_profit` **标签写反**(模板里「止损」绑了 `take_profit`)。
+
+### 推荐写法(私有仓库中修改)
+
+只使用接口返回的 **`data.trading_plan`**(或兼容字段 **`stopLoss` / `takeProfit`**):
+
+```text
+止损(亏损离场价): trading_plan.stop_loss (或 stopLoss)
+止盈(盈利目标价): trading_plan.take_profit (或 takeProfit)
+```
+
+可选:根据 `trading_plan.decision === 'SELL'` 在文案旁加一句「空单:止损在现价上方,止盈在现价下方」。
+
+### API 兼容字段(后端已加)
+
+`trading_plan` 内额外包含:
+
+- `entryPrice`, `stopLoss`, `takeProfit`, `positionSizePct`
+- `loss_exit_price`, `profit_target_price`(与止损/止盈数值一致,语义更清晰)
+- `decision`:与主结果 `decision` 一致,便于组件内判断
+
+根级另有驼峰:`trendOutlook`, `trendOutlookSummary`(与 `trend_outlook` 等相同内容)。
+
+## 2. 「未来时间段预判」不显示
+
+后端字段:
+
+- **`trend_outlook`**:对象,含 `next_24h`, `next_3d`, `next_1w`, `next_1m`(每项含 `score`, `trend`, `strength`)。
+- **`trend_outlook_summary`**:一行可读摘要(中文/英文随 `language`)。
+- 若走 **`/api/fast-analysis/analyze-legacy`**:`fast_analysis` 内同样有上述字段;`overview.report` 会追加 **【周期预判】** 段落;顶层也有 `trend_outlook` / `trend_outlook_summary`。
+
+### 前端需要做的
+
+- 在快速分析结果页**单独渲染** `trend_outlook` 或 `trend_outlook_summary`(不要只读 `summary` 正文)。
+- 若请求的是 legacy 接口,请读 **`data.fast_analysis.trend_outlook`** 或顶层 **`data.trend_outlook`**,不要假设只在某一嵌套路径下。
+
+## 3. 自检清单
+
+| 检查项 | 说明 |
+|--------|------|
+| 接口路径 | 确认用的是 `/analyze` 还是 `/analyze-legacy`,字段路径一致 |
+| 绑定来源 | 止损/止盈是否来自 `trading_plan`,而非 `trading_levels` |
+| SELL 几何 | 空单位:`take_profit < current < stop_loss` |
+| 周期预判 | 模板是否包含 `trend_outlook` 或 `trend_outlook_summary` |
+
+更新私有前端仓库后,通过 CI 或手动打包替换本仓库的 `frontend/dist/`(参见 `update-frontend.yml`)。
diff --git a/docs/INDICATOR_DEFINITIONS_CN.md b/docs/INDICATOR_DEFINITIONS_CN.md
new file mode 100644
index 0000000..4e12ada
--- /dev/null
+++ b/docs/INDICATOR_DEFINITIONS_CN.md
@@ -0,0 +1,18 @@
+# 技术指标计算口径(与代码一致)
+
+本文档与 `backend_api_python/app/services/market_data_collector.py` 中 `_calculate_indicators` 及子函数实现**严格对应**。
+
+| 指标 | 实现要点 |
+|------|-----------|
+| **RSI(14)** | **Wilder RSI**:前 14 期涨跌分别取简单算术平均作为初始均幅;自第 15 期起 `avg = (avg_prev×13 + 当期) / 14`。RS = 均涨幅/均跌幅,RSI = 100 − 100/(1+RS)。 |
+| **MACD(12,26,9)** | 收盘 **EMA12、EMA26**(首值=各自前 N 根 **SMA**,再按 α=2/(N+1) 递推)。**DIF** 从第 26 根 K 起有定义;对 DIF 子序列再算 **EMA9** 得 **DEA**;柱 = DIF − DEA。至少需要 **34** 根收盘才能稳定给出信号线(子序列长度≥9)。 |
+| **MA5/10/20** | 最近 N 根收盘价的 **SMA**。 |
+| **枢轴 Pivot** | **上一根 K** 的高、低、收:P=(H+L+C)/3,R1/S1/R2/S2 标准式。 |
+| **摆动高/低** | 最近 **20 根 K** 的 `max(high)`、`min(low)`。 |
+| **布林(20,2)** | 中轨 = 最近 20 收盘 **SMA**;方差 = Σ(x−μ)²/**20**(总体方差);σ=√方差;上下轨 = 中轨 ± 2σ;带宽% = (上轨−下轨)/中轨×100。合成支撑/阻力使用 **`BB_upper` / `BB_lower`** 字段。 |
+| **ATR(14)** | **Wilder ATR**:TR 定义同经典;首 ATR = 前 14 个 TR 的简单平均;之后 `ATR_t = (ATR_{t-1}×13 + TR_t) / 14`,递推至**最后一根 K**(全序列,非仅尾窗)。 |
+| **量比** | 当前根成交量 / 近 **20** 根成交量算术平均。 |
+| **区间位置 %** | (当前收盘 − 近20低) / (近20高 − 近20低) × 100;高=低 时为 50。 |
+| **合成支撑/阻力** | `(R1 + swing_high + BB_upper) / 3` 与 `(S1 + swing_low + BB_lower) / 3`,见 `levels.method`。 |
+
+前端说明文案键:`fastAnalysis.indicatorsProSubtitle`(应与上表同步维护)。
diff --git a/docs/README_CN.md b/docs/README_CN.md
index 368b646..660c934 100644
--- a/docs/README_CN.md
+++ b/docs/README_CN.md
@@ -264,6 +264,7 @@ IMAGE_PREFIX=docker.xuanyuan.me/library/
- **🧠 记忆增强** — 智能体从过去的分析中学习(本地RAG,非云端)
- **🔌 5+ LLM提供商**:OpenRouter(100+模型)、OpenAI、Gemini、DeepSeek、Grok
- **📊 Polymarket预测市场** — 预测市场按需AI分析。输入市场链接或标题 → AI分析概率差异、机会评分和交易建议。完整历史跟踪和计费集成。
+- **📋 虚拟持仓管理** — 自选股中直接创建虚拟持仓,支持做多/做空方向、数量、买入单价,实时计算盈亏。无需连接真实交易所即可跟踪模拟投资组合。
### 📈 完整交易生命周期
@@ -310,7 +311,7 @@ IMAGE_PREFIX=docker.xuanyuan.me/library/
- **💳 会员计划** — 月度/年度/终身层级,可配置定价和积分
- **₿ USDT链上支付** — TRC20扫码支付,每订单地址的HD钱包(xpub),通过TronGrid自动对账
- **🏪 指标市场** — 用户发布和销售Python指标,您收取佣金
-- **⚙️ 管理员仪表板** — 订单管理、AI使用统计、用户分析
+- **⚙️ 管理员仪表板** — 订单管理、AI使用统计、用户分析;系统设置保存后热重载,无需重启服务
### 🔐 企业级安全
@@ -320,49 +321,67 @@ IMAGE_PREFIX=docker.xuanyuan.me/library/
- **演示模式** — 公共展示的只读模式
-🧠 AI智能体架构图(点击展开)
+🧠 AI 分析架构图(点击展开)
+
+当前采用 **FastAnalysisService** 单次 LLM 流程,兼顾速度与多因子决策:
```mermaid
flowchart TB
- subgraph Entry["🌐 API入口"]
- A["📡 POST /api/analysis/multi"]
- A2["🔄 POST /api/analysis/reflect"]
+ subgraph Entry["🌐 API 入口"]
+ A["📡 POST /api/fast-analysis/analyze"]
+ A2["📜 GET /api/fast-analysis/history"]
+ A3["📊 GET /api/fast-analysis/similar-patterns"]
end
- subgraph Service["⚙️ 服务编排"]
- B[AnalysisService]
- C[AgentCoordinator]
- D["📊 构建上下文
价格 · K线 · 新闻 · 指标"]
+ subgraph Data["📊 数据采集层"]
+ D1[MarketDataCollector]
+ D2["价格 · K线 · 宏观 · 新闻 · 基本面"]
+ D3["多周期共识 1D / 4H / 1H"]
end
- subgraph Agents["🤖 7智能体工作流"]
- subgraph P1["📈 阶段1 · 并行分析"]
- E1["🔍 MarketAnalyst"]
- E2["📑 FundamentalAnalyst"]
- E3["📰 NewsAnalyst"]
- E4["💭 SentimentAnalyst"]
- E5["⚠️ RiskAnalyst"]
- end
- subgraph P2["🎯 阶段2 · 多头vs空头辩论"]
- F1["🐂 BullResearcher"]
- F2["🐻 BearResearcher"]
- end
- subgraph P3["💹 阶段3 · 最终决策"]
- G["🎰 TraderAgent → 买入 / 卖出 / 持有"]
- end
+ subgraph Analysis["⚙️ 分析层"]
+ B["FastAnalysisService"]
+ C["单次 LLM 调用
强约束 Prompt"]
+ E["客观评分 + 多周期共识"]
+ F["AICalibration 阈值校准"]
+ G["买入 / 卖出 / 持有"]
end
- subgraph Memory["🧠 本地记忆存储"]
- M1[("智能体记忆(PostgreSQL)")]
+ subgraph Memory["🧠 记忆层"]
+ M1[("qd_analysis_memory
PostgreSQL")]
+ M2["RAG 相似模式检索
(可选注入 Prompt)"]
end
- subgraph Reflect["🔄 反思循环"]
- R[ReflectionService]
- W["⏰ ReflectionWorker → 验证 + 学习"]
- end
- A --> B --> C --> D
- D --> P1 --> P2 --> P3
- Agents <-.->|"RAG检索"| M1
- C --> R
- W -.->|"更新记忆"| M1
+ A --> B
+ B --> D1 --> D2 --> D3
+ D3 --> C --> E --> F --> G
+ B -.->|"存储"| M1
+ M1 -.->|"相似模式"| M2
+ M2 -.->|"可选上下文"| C
+ A2 --> M1
+ A3 --> M1
```
+**流程概要:**
+1. **数据采集** — 统一 `MarketDataCollector` 拉取价格、K 线、宏观、新闻、基本面
+2. **多周期共识** — 主周期 + 4H/1D 等技术周期,计算加权客观评分
+3. **单次 LLM** — 强约束 Prompt,综合技术 / 宏观 / 新闻 / 基本面
+4. **共识校准** — 当客观评分显著时,可覆盖 LLM 决策;数据质量差时倾向 HOLD
+5. **记忆存储** — 写入 `qd_analysis_memory`,支持历史查询与相似模式检索
+
+
+📈 AI 分析优化(已实现)
+
+| 功能 | 说明 | 配置 |
+|------|------|------|
+| **RAG 记忆注入** | 相似历史模式注入 Prompt | 默认启用 |
+| **多指标相似度** | RSI、MACD、MA 趋势、波动率加权相似度 | 默认启用 |
+| **反思验证** | 验证历史决策,更新 `was_correct` | `ENABLE_REFLECTION_WORKER=true` |
+| **阈值自校准** | 定期校准 BUY/SELL 阈值 | `scripts/run_calibration.py` 或 `scripts/run_reflection_task.py` |
+| **置信度校准** | 按置信度分桶统计准确率并调整 | `ENABLE_CONFIDENCE_CALIBRATION=true` |
+| **市场状态感知** | 趋势/震荡市使用不同阈值(震荡市更保守) | 默认启用 |
+| **多模型投票** | 2–3 模型投票降低单点偏差 | `ENABLE_AI_ENSEMBLE=true` + `AI_ENSEMBLE_MODELS=model1,model2` |
+
+详见 `backend_api_python/env.example` 中的 AI analysis optimizations 部分。
+
+
+
---
@@ -466,10 +485,12 @@ QuantDinger/
| **AI / LLM** | `LLM_PROVIDER`、`OPENROUTER_API_KEY`、`OPENAI_API_KEY` |
| **OAuth** | `GOOGLE_CLIENT_ID`、`GITHUB_CLIENT_ID` |
| **安全** | `TURNSTILE_SITE_KEY`、`ENABLE_REGISTRATION` |
+| **计费** | `BILLING_ENABLED`、`BILLING_COST_AI_ANALYSIS`、`BILLING_COST_AI_CODE_GEN` |
| **会员** | `MEMBERSHIP_MONTHLY_PRICE_USD`、`MEMBERSHIP_MONTHLY_CREDITS` |
| **USDT支付** | `USDT_PAY_ENABLED`、`USDT_TRC20_XPUB`、`TRONGRID_API_KEY` |
| **代理** | `PROXY_URL` |
-| **工作器** | `ENABLE_PENDING_ORDER_WORKER`、`ENABLE_PORTFOLIO_MONITOR` |
+| **工作器** | `ENABLE_PENDING_ORDER_WORKER`、`ENABLE_PORTFOLIO_MONITOR`、`ENABLE_REFLECTION_WORKER` |
+| **AI调优** | `ENABLE_AI_ENSEMBLE`、`ENABLE_CONFIDENCE_CALIBRATION`、`AI_ENSEMBLE_MODELS` |
diff --git a/frontend/VERSION b/frontend/VERSION
index b1b25a5..975ad37 100644
--- a/frontend/VERSION
+++ b/frontend/VERSION
@@ -1 +1 @@
-2.2.2
+3.0.4+indicators-copy-strict-20260323
diff --git a/frontend/dist/css/125.37fb7134.css b/frontend/dist/css/125.37fb7134.css
deleted file mode 100644
index 91cfae0..0000000
--- a/frontend/dist/css/125.37fb7134.css
+++ /dev/null
@@ -1 +0,0 @@
-.fast-analysis-report[data-v-693144f6]{height:100%;overflow-y:auto;padding:20px;background:linear-gradient(135deg,#f5f7fa,#e4e8ec);border-radius:12px}.fast-analysis-report .loading-container[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px;background:#fff;border-radius:12px}.fast-analysis-report .loading-container .loading-content-pro[data-v-693144f6]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-693144f6]{font-size:28px;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-693144f6]{font-size:20px;font-weight:600;color:#1e293b}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-693144f6]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-693144f6]{position:absolute;right:0;top:-24px;font-size:14px;font-weight:600;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:12px 20px;background:#f0f5ff;border-radius:8px;margin-bottom:24px;color:#1890ff;font-size:14px;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-693144f6]{font-size:16px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:10px 16px;background:#f8fafc;border-radius:8px;font-size:13px;color:#94a3b8;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-693144f6]{width:8px;height:8px;border-radius:50%;background:#e2e8f0;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-693144f6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-693144f6]{color:#52c41a;font-size:14px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-693144f6]{background:#e6f7ff;color:#1890ff;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-693144f6]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-693144f6]{background:#f6ffed;color:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-693144f6]{background:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-693144f6]{margin-top:24px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-693144f6]{font-size:13px;color:#94a3b8;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-693144f6]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-693144f6]{font-size:64px;color:#d9d9d9}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-693144f6]{margin-top:16px;font-size:18px;font-weight:600;color:#262626}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-693144f6]{margin-top:8px;color:#8c8c8c}.fast-analysis-report .result-container .decision-card[data-v-693144f6]{background:#fff;border-radius:16px;padding:24px;margin-bottom:20px;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.08);box-shadow:0 4px 12px rgba(0,0,0,.08);border-left:6px solid #1890ff}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-693144f6]{border-left-color:#52c41a;background:linear-gradient(135deg,#f6ffed,#fff)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-693144f6]{border-left-color:#ff4d4f;background:linear-gradient(135deg,#fff2f0,#fff)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-693144f6]{border-left-color:#faad14;background:linear-gradient(135deg,#fffbe6,#fff)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-693144f6]{font-size:32px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-693144f6]{font-size:36px;font-weight:800;letter-spacing:2px}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-693144f6]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-693144f6]{font-size:18px;font-weight:700}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-693144f6]{font-size:12px;color:#8c8c8c;margin-top:4px}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-693144f6]{font-size:16px;line-height:1.6;color:#595959;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-693144f6]{margin-top:14px;padding:12px 14px;border-radius:8px;background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2);font-size:13px;color:#434343}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:8px;color:#1890ff}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px 20px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-693144f6]{font-style:normal;color:#8c8c8c;margin-right:6px}.fast-analysis-report .result-container .price-info-row[data-v-693144f6]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .price-info-row .price-card[data-v-693144f6]{background:#fff;border-radius:12px;padding:16px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-693144f6]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-693144f6]{font-size:18px;font-weight:700;color:#262626}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-693144f6]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-693144f6]{font-size:10px;color:#bfbfbf;margin-top:6px;cursor:help}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-693144f6]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-693144f6]{font-size:14px;margin-top:4px;font-weight:600}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-693144f6]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-693144f6]{border-top:3px solid #1890ff}.fast-analysis-report .result-container .price-info-row .price-card.entry[data-v-693144f6]{border-top:3px solid #722ed1}.fast-analysis-report .result-container .price-info-row .price-card.stop[data-v-693144f6]{border-top:3px solid #ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.target[data-v-693144f6]{border-top:3px solid #52c41a}.fast-analysis-report .result-container .scores-row[data-v-693144f6]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .scores-row .score-item[data-v-693144f6]{background:#fff;border-radius:12px;padding:16px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-693144f6]{color:#1890ff}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-693144f6]{text-align:right;font-size:20px;font-weight:700;color:#262626;margin-top:8px}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-693144f6]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}.fast-analysis-report .result-container .detailed-analysis[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-693144f6]{background:linear-gradient(135deg,#fff,#fafafa);border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);border-left:4px solid #1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-693144f6]{border-left-color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-693144f6]{border-left-color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-693144f6]{border-left-color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:14px;font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-693144f6]{font-size:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-693144f6]{color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-693144f6]{color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-693144f6]{color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-693144f6]{font-size:14px;line-height:1.8;color:#595959;text-align:justify}.fast-analysis-report .result-container .analysis-details[data-v-693144f6]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-693144f6]{background:#fff;border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-693144f6]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-693144f6]{padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:14px;line-height:1.6;color:#595959}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-693144f6]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-693144f6]:before{content:"•";margin-right:8px;color:#1890ff}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-693144f6]{border-left:4px solid #52c41a}.fast-analysis-report .result-container .analysis-details .detail-section.risks[data-v-693144f6]{border-left:4px solid #faad14}.fast-analysis-report .result-container .indicators-section[data-v-693144f6]{background:#fff;border-radius:12px;padding:20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .indicators-section .section-title[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-693144f6]{color:#1890ff}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-693144f6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-693144f6]{background:#fafafa;border-radius:8px;padding:12px;text-align:center}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-693144f6]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-693144f6]{font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-693144f6],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-693144f6],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-693144f6],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-693144f6]{color:#ff4d4f}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-693144f6]{font-size:11px;color:#8c8c8c;margin-top:4px;text-transform:capitalize}.fast-analysis-report .result-container .feedback-section[data-v-693144f6]{background:#fff;border-radius:12px;padding:20px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-693144f6]{font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px;margin-bottom:16px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-693144f6]{min-width:100px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-693144f6]{font-size:12px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-693144f6],.fast-analysis-report .scores-row[data-v-693144f6]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-693144f6]{grid-template-columns:1fr}}@media (max-width:576px){.fast-analysis-report[data-v-693144f6]{padding:12px}.fast-analysis-report .price-info-row[data-v-693144f6],.fast-analysis-report .scores-row[data-v-693144f6]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-693144f6]{padding:16px}.fast-analysis-report .decision-card .decision-main[data-v-693144f6]{gap:16px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-693144f6],.fast-analysis-report .decision-card .decision-main[data-v-693144f6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-693144f6]{font-size:28px}}.fast-analysis-report.theme-dark[data-v-693144f6]{background:linear-gradient(135deg,#1e222d,#131722)}.fast-analysis-report.theme-dark .loading-content .loading-text[data-v-693144f6]{color:#00e5ff}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-693144f6]{color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card[data-v-693144f6]{background:#2a2e39;border-left-color:#1890ff}.fast-analysis-report.theme-dark .decision-card.decision-buy[data-v-693144f6]{background:linear-gradient(135deg,rgba(82,196,26,.1),#2a2e39)}.fast-analysis-report.theme-dark .decision-card.decision-sell[data-v-693144f6]{background:linear-gradient(135deg,rgba(255,77,79,.1),#2a2e39)}.fast-analysis-report.theme-dark .decision-card.decision-hold[data-v-693144f6]{background:linear-gradient(135deg,rgba(250,173,20,.1),#2a2e39)}.fast-analysis-report.theme-dark .decision-card .decision-summary[data-v-693144f6]{color:#868993;border-top-color:#363c4e}.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-693144f6]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35);color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-693144f6]{color:#69c0ff}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-693144f6]{color:#868993}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card[data-v-693144f6]{background:linear-gradient(135deg,#2a2e39,#1e222d)}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-693144f6]{border-left-color:#1890ff}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.fundamental[data-v-693144f6]{border-left-color:#722ed1}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.sentiment[data-v-693144f6]{border-left-color:#eb2f96}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-header[data-v-693144f6]{color:#d1d4dc}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-content[data-v-693144f6]{color:#868993}.fast-analysis-report.theme-dark .detail-section[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section[data-v-693144f6],.fast-analysis-report.theme-dark .price-card[data-v-693144f6],.fast-analysis-report.theme-dark .score-item[data-v-693144f6]{background:#2a2e39;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .section-title[data-v-693144f6]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .score-value[data-v-693144f6]{color:#d1d4dc}.fast-analysis-report.theme-dark .score-item.overall[data-v-693144f6]{background:linear-gradient(135deg,rgba(24,144,255,.1),#2a2e39);border-color:#1890ff}.fast-analysis-report.theme-dark .detail-list li[data-v-693144f6]{color:#868993;border-bottom-color:#363c4e}.fast-analysis-report.theme-dark .indicators-grid .indicator-item[data-v-693144f6]{background:#363c4e}.ai-analysis-container[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-41eda137]{height:auto;min-height:700px;background:transparent}.ai-analysis-container.embedded .main-content-full[data-v-41eda137]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.main-content-full[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-41eda137]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-41eda137],.top-index-bar[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-41eda137]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-41eda137]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-41eda137]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-41eda137]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-41eda137]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-41eda137]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-41eda137]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-41eda137],.top-index-bar .indicator-box.vix.low .ind-value[data-v-41eda137]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-41eda137]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-41eda137]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-41eda137]{color:#2563eb}.top-index-bar .indices-marquee[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-41eda137 35s linear infinite;animation:marquee-41eda137 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-41eda137]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-41eda137]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-41eda137]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-41eda137]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-41eda137]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-41eda137]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-41eda137]{color:#dc2626}@-webkit-keyframes marquee-41eda137{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-41eda137{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-41eda137]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-41eda137]:hover{color:#1e293b}.main-body[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-41eda137],.main-body[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.left-panel[data-v-41eda137]{width:280px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.left-panel .heatmap-box[data-v-41eda137]{background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0}.left-panel .heatmap-box .box-header[data-v-41eda137]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;padding:0 6px;height:22px;line-height:20px}.left-panel .heatmap-box .box-header[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);color:#fff}.left-panel .heatmap-box .heatmap-grid[data-v-41eda137]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-41eda137]{padding:6px 4px;border-radius:4px;text-align:center;font-size:9px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-41eda137]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-41eda137]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-41eda137]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-41eda137]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-41eda137]{font-size:12px;color:#64748b;font-weight:600}.left-panel .calendar-box .box-header .box-title .anticon[data-v-41eda137]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-41eda137]::-webkit-scrollbar{width:4px}.left-panel .calendar-box .calendar-list[data-v-41eda137]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-41eda137]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-41eda137]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-41eda137]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-41eda137]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-41eda137]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-41eda137]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-41eda137]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-41eda137]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-41eda137]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-41eda137]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-41eda137]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-41eda137]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:8px;border:1px solid #e2e8f0}.right-panel .analysis-toolbar[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f1f5f9;background:#fafafa;border-radius:8px 8px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-41eda137]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.right-panel .analysis-toolbar .history-button[data-v-41eda137]{border-color:#d9d9d9}.right-panel .analysis-main[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.right-panel .analysis-main .analysis-placeholder .placeholder-content[data-v-41eda137]{text-align:center}.right-panel .analysis-main .analysis-placeholder .placeholder-content .placeholder-icon[data-v-41eda137]{font-size:72px;color:var(--primary-color,#1890ff);opacity:.5;margin-bottom:20px}.right-panel .analysis-main .analysis-placeholder .placeholder-content h3[data-v-41eda137]{font-size:18px;color:#1e293b;margin-bottom:8px}.right-panel .analysis-main .analysis-placeholder .placeholder-content p[data-v-41eda137]{font-size:14px;color:#64748b}.watchlist-panel[data-v-41eda137]{width:200px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #f1f5f9;background:#fafafa}.watchlist-panel .panel-header .panel-title[data-v-41eda137]{font-size:12px;font-weight:600;color:#64748b}.watchlist-panel .panel-header .panel-title .anticon[data-v-41eda137]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:8px}.watchlist-panel .watchlist-list[data-v-41eda137]::-webkit-scrollbar{width:4px}.watchlist-panel .watchlist-list[data-v-41eda137]::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;border-radius:6px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;margin-bottom:4px}.watchlist-panel .watchlist-list .watchlist-item[data-v-41eda137]:hover{background:#f8fafc}.watchlist-panel .watchlist-list .watchlist-item.active[data-v-41eda137]{background:#e6f7ff;border:1px solid #91d5ff}.watchlist-panel .watchlist-list .watchlist-item .item-main[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.watchlist-panel .watchlist-list .watchlist-item .item-main .item-symbol[data-v-41eda137]{display:block;font-size:12px;font-weight:600;color:#1e293b}.watchlist-panel .watchlist-list .watchlist-item .item-main .item-name[data-v-41eda137]{display:block;font-size:10px;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.watchlist-panel .watchlist-list .watchlist-item .item-price[data-v-41eda137]{text-align:right;margin-right:8px;font-family:SF Mono,Monaco,monospace}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-value[data-v-41eda137]{display:block;font-size:11px;font-weight:600;color:#1e293b}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-change[data-v-41eda137]{display:block;font-size:10px;font-weight:600}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-change.up[data-v-41eda137]{color:#16a34a}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-change.down[data-v-41eda137]{color:#dc2626}.watchlist-panel .watchlist-list .watchlist-item .item-remove[data-v-41eda137]{color:#cbd5e1;font-size:12px;opacity:0;-webkit-transition:opacity .2s;transition:opacity .2s}.watchlist-panel .watchlist-list .watchlist-item .item-remove[data-v-41eda137]:hover{color:#dc2626}.watchlist-panel .watchlist-list .watchlist-item:hover .item-remove[data-v-41eda137]{opacity:1}.watchlist-panel .watchlist-list .watchlist-empty[data-v-41eda137]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-41eda137]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-41eda137]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-41eda137{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-41eda137{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-41eda137]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto}.main-content-full[data-v-41eda137]{height:auto;min-height:auto}.top-index-bar[data-v-41eda137]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:8px}.top-index-bar .indicator-box[data-v-41eda137]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-41eda137]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:8px}.main-body[data-v-41eda137]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:12px}.left-panel[data-v-41eda137]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px}.left-panel .calendar-box[data-v-41eda137],.left-panel .heatmap-box[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-41eda137]{max-height:200px}.right-panel .analysis-toolbar[data-v-41eda137]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-41eda137]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-41eda137],.right-panel .analysis-toolbar .history-button[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-41eda137]{width:100%;max-height:200px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}}.ai-analysis-container.theme-dark[data-v-41eda137]{background:#131722;color:#d1d4dc}.ai-analysis-container.theme-dark .main-content-full[data-v-41eda137]{background:#1e222d;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .top-index-bar[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-41eda137]:hover{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-panel[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item[data-v-41eda137]:hover{background:#363c4e}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item.active[data-v-41eda137]{background:rgba(24,144,255,.1);border-color:#1890ff}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item .item-main .item-symbol[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item .item-main .item-name[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item .item-price .price-value[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-41eda137],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-41eda137]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper{background:#1e222d;border-color:#363c4e;color:#868993}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper:hover{color:#d1d4dc}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-41eda137]{border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .right-panel[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-41eda137]{background:#2a2e39;border-color:#363c4e;color:#d1d4dc}.ai-analysis-container.theme-dark .right-panel .analysis-main .analysis-placeholder .placeholder-content h3[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .right-panel .analysis-main .analysis-placeholder .placeholder-content p[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-41eda137]{background:#1e222d;border-top-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-41eda137],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-41eda137]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark[data-v-41eda137] .symbol-selector .ant-select-selection{background-color:#2a2e39;border-color:#363c4e;color:#d1d4dc}.add-stock-modal-content .market-tabs[data-v-41eda137]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-41eda137],.add-stock-modal-content .search-results-section[data-v-41eda137],.add-stock-modal-content .symbol-search-section[data-v-41eda137]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-41eda137],.add-stock-modal-content .search-results-section .section-title[data-v-41eda137]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-41eda137]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-41eda137]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-41eda137]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-41eda137]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-41eda137]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-41eda137]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-41eda137]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-41eda137]{width:40px;height:9px}.skeleton-cell[data-v-41eda137]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-41eda137]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-41eda137]{width:50%;height:8px}.skeleton-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-41eda137]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-41eda137]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-41eda137],.indices-loading[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-41eda137]{margin-right:6px}.heatmap-empty[data-v-41eda137]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-41eda137{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-41eda137{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-41eda137],.theme-dark .skeleton-cell .skeleton-text[data-v-41eda137],.theme-dark .skeleton-item .skeleton-text[data-v-41eda137]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#363c4e),color-stop(50%,#424857),color-stop(75%,#363c4e));background:linear-gradient(90deg,#363c4e 25%,#424857 50%,#363c4e 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-41eda137]{background:#2a2e39!important}.theme-dark .heatmap-empty[data-v-41eda137],.theme-dark .indices-empty[data-v-41eda137],.theme-dark .indices-loading[data-v-41eda137]{color:#64748b}
\ No newline at end of file
diff --git a/frontend/dist/css/127.340147b1.css b/frontend/dist/css/127.340147b1.css
new file mode 100644
index 0000000..bb88163
--- /dev/null
+++ b/frontend/dist/css/127.340147b1.css
@@ -0,0 +1 @@
+.profile-page[data-v-6dceb76a]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-6dceb76a]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-6dceb76a]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-6dceb76a]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-6dceb76a]{margin:0}.profile-page .profile-card .profile-info[data-v-6dceb76a]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:500px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-6dceb76a]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-6dceb76a]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-6dceb76a]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-6dceb76a]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-6dceb76a]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-6dceb76a]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-6dceb76a]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-6dceb76a]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-6dceb76a]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-6dceb76a]{color:gold}.profile-page .referral-user-cell[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-6dceb76a]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-6dceb76a]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark[data-v-6dceb76a]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.profile-page.theme-dark .page-header .page-title[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a],.profile-page.theme-dark .profile-card[data-v-6dceb76a]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-6dceb76a] .ant-card-body{background:#1c1c1c}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-6dceb76a]{border-bottom-color:#2a2a2a}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-bar{border-bottom-color:#2a2a2a}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-6dceb76a]{background:linear-gradient(135deg,#1c1c1c,#1a1a1a 50%,#141414);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table{background:#1c1c1c;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2a2a;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1c1c1c;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-placeholder{background:#1c1c1c;color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .field-hint[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-warning[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-6dceb76a]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag.ant-tag-has-color{color:#fff!important;border-color:transparent!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-input-prefix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .ant-input-suffix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .credits-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .email-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .field-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .notification-settings-form .anticon{color:#c9d1d9!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-options .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-6dceb76a]{padding:12px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:22px}.profile-page .page-header .page-desc[data-v-6dceb76a]{font-size:13px}.profile-page .profile-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-card[data-v-6dceb76a]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-6dceb76a] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-6dceb76a]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-6dceb76a]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-6dceb76a] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:100%}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{font-size:11px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-6dceb76a]{gap:8px}.profile-page .referral-user-cell[data-v-6dceb76a] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-6dceb76a]{padding:8px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:20px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}}
\ No newline at end of file
diff --git a/frontend/dist/css/158.e48d5d81.css b/frontend/dist/css/158.e48d5d81.css
deleted file mode 100644
index fdd2b37..0000000
--- a/frontend/dist/css/158.e48d5d81.css
+++ /dev/null
@@ -1 +0,0 @@
-.profile-page[data-v-86a53e9c]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.profile-page .page-header[data-v-86a53e9c]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-86a53e9c]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.profile-page .page-header .page-title .anticon[data-v-86a53e9c]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-86a53e9c]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .profile-card-col[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-col[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-86a53e9c]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-86a53e9c] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-86a53e9c] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-86a53e9c]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-86a53e9c]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-86a53e9c] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-86a53e9c]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-86a53e9c]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-86a53e9c]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-86a53e9c]{margin:0}.profile-page .profile-card .profile-info[data-v-86a53e9c]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-86a53e9c]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-86a53e9c]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-86a53e9c]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-86a53e9c]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-86a53e9c],.profile-page .edit-card .profile-form[data-v-86a53e9c]{max-width:500px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input-password,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-86a53e9c],.profile-page .edit-card .profile-form .email-hint[data-v-86a53e9c]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-86a53e9c],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-86a53e9c]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-86a53e9c]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-86a53e9c]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-86a53e9c]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-86a53e9c]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-86a53e9c] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-86a53e9c] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-86a53e9c]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-86a53e9c]{font-size:18px}.profile-page .credits-card .credits-body[data-v-86a53e9c]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-86a53e9c]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-86a53e9c]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-86a53e9c]{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-86a53e9c]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-86a53e9c]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-86a53e9c]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-86a53e9c]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-86a53e9c]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-86a53e9c] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-86a53e9c] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-86a53e9c]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-86a53e9c]{font-size:18px}.profile-page .referral-card .referral-body[data-v-86a53e9c]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-86a53e9c]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-86a53e9c]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-86a53e9c]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-86a53e9c]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-86a53e9c]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-86a53e9c]{color:gold}.profile-page .referral-user-cell[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-86a53e9c]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-86a53e9c]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-86a53e9c]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-86a53e9c]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-86a53e9c]{color:#52c41a}.profile-page .test-result-msg.error[data-v-86a53e9c]{color:#f5222d}.profile-page.theme-dark[data-v-86a53e9c]{background:-webkit-gradient(linear,left top,left bottom,from(#0d1117),to(#161b22));background:linear-gradient(180deg,#0d1117,#161b22)}.profile-page.theme-dark .page-header .page-title[data-v-86a53e9c]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-86a53e9c],.profile-page.theme-dark .profile-card[data-v-86a53e9c]{background:#1e222d;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-86a53e9c] .ant-card-body{background:#1e222d}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-86a53e9c]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-86a53e9c]{border-bottom-color:#30363d}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-86a53e9c]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-bar{border-bottom-color:#30363d}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password{background:#0d1117;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-86a53e9c]{background:linear-gradient(135deg,#1a1a2e,#16213e 50%,#0f3460);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-86a53e9c] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-86a53e9c]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table{background:#1e222d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2e39;color:#c9d1d9;border-bottom-color:#30363d}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1e222d;color:#c9d1d9;border-bottom-color:#30363d}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2e39}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-placeholder{background:#1e222d;color:#8b949e}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector{background:#0d1117;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-86a53e9c],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-86a53e9c],.profile-page.theme-dark .password-form .email-hint[data-v-86a53e9c],.profile-page.theme-dark .password-form .field-hint[data-v-86a53e9c],.profile-page.theme-dark .profile-form .email-hint[data-v-86a53e9c],.profile-page.theme-dark .profile-form .field-hint[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-86a53e9c],.profile-page.theme-dark .password-form .email-warning[data-v-86a53e9c],.profile-page.theme-dark .profile-form .email-warning[data-v-86a53e9c]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-alert{background:#1e222d;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-86a53e9c],.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-86a53e9c]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-86a53e9c]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-86a53e9c]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark[data-v-86a53e9c] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item{background:#1e222d;border-color:#30363d}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1e222d;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-options .ant-select-selector{background:#0d1117;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-btn.ant-btn-default{background:#1e222d;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-86a53e9c]{padding:12px}.profile-page .page-header[data-v-86a53e9c]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-86a53e9c]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-86a53e9c]{font-size:22px}.profile-page .page-header .page-desc[data-v-86a53e9c]{font-size:13px}.profile-page .profile-cards-row[data-v-86a53e9c]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-86a53e9c]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-86a53e9c]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-86a53e9c]{margin-bottom:12px}.profile-page .profile-card[data-v-86a53e9c]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-86a53e9c]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-86a53e9c] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-86a53e9c]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-86a53e9c]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-86a53e9c]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-86a53e9c]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-86a53e9c]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-86a53e9c]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-86a53e9c]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-86a53e9c]{font-size:16px}.profile-page .credits-card .credits-body[data-v-86a53e9c]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-86a53e9c]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-86a53e9c]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-86a53e9c]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-86a53e9c]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-86a53e9c]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-86a53e9c]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-86a53e9c]{font-size:16px}.profile-page .referral-card .referral-body[data-v-86a53e9c]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-86a53e9c]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-86a53e9c],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-86a53e9c]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-86a53e9c]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-86a53e9c]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-86a53e9c] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-86a53e9c],.profile-page .edit-card .profile-form[data-v-86a53e9c]{max-width:100%}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input-password,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-86a53e9c],.profile-page .edit-card .profile-form .email-hint[data-v-86a53e9c]{font-size:11px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-86a53e9c]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-86a53e9c] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-86a53e9c] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-86a53e9c]{gap:8px}.profile-page .referral-user-cell[data-v-86a53e9c] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-86a53e9c]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-86a53e9c]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-86a53e9c]{padding:8px}.profile-page .page-header[data-v-86a53e9c]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-86a53e9c]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-86a53e9c]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-86a53e9c]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-86a53e9c]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-86a53e9c]{font-size:20px}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}}
\ No newline at end of file
diff --git a/frontend/dist/css/55.9a2b4136.css b/frontend/dist/css/18.8f36e18e.css
similarity index 59%
rename from frontend/dist/css/55.9a2b4136.css
rename to frontend/dist/css/18.8f36e18e.css
index 5240392..a46749f 100644
--- a/frontend/dist/css/55.9a2b4136.css
+++ b/frontend/dist/css/18.8f36e18e.css
@@ -1 +1 @@
-.billing-page[data-v-0cdd5f9c]{padding:18px}.billing-page .page-header[data-v-0cdd5f9c]{margin-bottom:14px}.billing-page .page-header .page-title[data-v-0cdd5f9c]{margin:0;font-size:18px;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;color:rgba(0,0,0,.85)}.billing-page .page-header .page-desc[data-v-0cdd5f9c]{margin:6px 0 0;color:rgba(0,0,0,.45)}.billing-page .snapshot-card .snapshot-row[data-v-0cdd5f9c]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:18px;-ms-flex-wrap:wrap;flex-wrap:wrap}.billing-page .snapshot-card .snap-item[data-v-0cdd5f9c]{min-width:220px}.billing-page .snapshot-card .snap-item .snap-label[data-v-0cdd5f9c]{color:rgba(0,0,0,.45);font-size:12px}.billing-page .snapshot-card .snap-item .snap-value[data-v-0cdd5f9c]{font-size:18px;font-weight:700;margin-top:2px}.billing-page .snapshot-card .snap-item .vip-exp[data-v-0cdd5f9c]{margin-left:8px;color:rgba(0,0,0,.55);font-size:12px}.billing-page .plan-card[data-v-0cdd5f9c]{border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);margin-top:12px}.billing-page .plan-card.highlight[data-v-0cdd5f9c]{border:1px solid rgba(24,144,255,.35)}.billing-page .plan-card .plan-title[data-v-0cdd5f9c]{font-weight:700;font-size:16px;color:rgba(0,0,0,.85)}.billing-page .plan-card .plan-price[data-v-0cdd5f9c]{margin-top:10px;font-size:28px;font-weight:800;color:rgba(0,0,0,.85)}.billing-page .plan-card .plan-price .plan-unit[data-v-0cdd5f9c]{font-size:12px;font-weight:500;color:rgba(0,0,0,.45);margin-left:6px}.billing-page .plan-card .plan-benefit[data-v-0cdd5f9c]{margin:10px 0 16px;color:rgba(0,0,0,.65);font-weight:600}.billing-page.theme-dark .page-header .page-title[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.9)}.billing-page.theme-dark .page-header .page-desc[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.55)}.billing-page.theme-dark .snapshot-card[data-v-0cdd5f9c]{background:#161b22}.billing-page.theme-dark .snapshot-card .snap-item .snap-label[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.55)}.billing-page.theme-dark .snapshot-card .snap-item .snap-value[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.9)}.billing-page.theme-dark .snapshot-card .snap-item .vip-exp[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.6)}.billing-page.theme-dark .plan-card[data-v-0cdd5f9c]{background:#161b22;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.billing-page.theme-dark .plan-card .plan-price[data-v-0cdd5f9c],.billing-page.theme-dark .plan-card .plan-title[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.9)}.billing-page.theme-dark .plan-card .plan-price .plan-unit[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.55)}.billing-page.theme-dark .plan-card .plan-benefit[data-v-0cdd5f9c]{color:hsla(0,0%,100%,.7)}.usdt-pay-modal-wrap .ant-modal-header{display:none}.usdt-pay-modal-wrap .ant-modal-body{padding:0!important}.usdt-pay-modal-wrap .ant-modal-content{border-radius:16px;overflow:hidden}.usdt-checkout .checkout-header{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,#26a17b,#1b8a6b)}.usdt-checkout .checkout-header,.usdt-checkout .checkout-header .header-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-header .header-left{gap:12px}.usdt-checkout .checkout-header .header-left .usdt-logo{width:40px;height:40px;border-radius:50%;background:hsla(0,0%,100%,.18);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.usdt-checkout .checkout-header .header-left .header-text .header-title{font-size:16px;font-weight:800;color:#fff}.usdt-checkout .checkout-header .header-left .header-text .header-desc{font-size:12px;color:hsla(0,0%,100%,.75);margin-top:2px;line-height:1.4}.usdt-checkout .checkout-header .close-btn{color:hsla(0,0%,100%,.8)!important;font-size:18px}.usdt-checkout .checkout-header .close-btn:hover{color:#fff!important}.usdt-checkout .checkout-steps{padding:16px 24px 12px}.usdt-checkout .checkout-steps,.usdt-checkout .checkout-steps .step-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-steps .step-item{gap:6px}.usdt-checkout .checkout-steps .step-item .step-dot{position:relative;width:18px;height:18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.usdt-checkout .checkout-steps .step-item .step-dot .dot-inner{width:10px;height:10px;border-radius:50%;background:#d9d9d9;-webkit-transition:all .3s;transition:all .3s}.usdt-checkout .checkout-steps .step-item .step-dot .dot-pulse{position:absolute;width:18px;height:18px;border-radius:50%;background:rgba(38,161,123,.35);-webkit-animation:pulse-ring 1.5s ease-out infinite;animation:pulse-ring 1.5s ease-out infinite}.usdt-checkout .checkout-steps .step-item .step-label{font-size:12px;color:rgba(0,0,0,.35);font-weight:500;white-space:nowrap;-webkit-transition:all .3s;transition:all .3s}.usdt-checkout .checkout-steps .step-item .step-line{-webkit-box-flex:1;-ms-flex:1;flex:1;height:2px;min-width:30px;background:#e8e8e8;margin:0 6px;border-radius:1px;-webkit-transition:all .3s;transition:all .3s}.usdt-checkout .checkout-steps .step-item .step-line.filled,.usdt-checkout .checkout-steps .step-item.active .dot-inner{background:#26a17b}.usdt-checkout .checkout-steps .step-item.active .step-label{color:rgba(0,0,0,.85);font-weight:700}.usdt-checkout .checkout-steps .step-item.current .dot-inner{background:#26a17b;-webkit-box-shadow:0 0 0 3px rgba(38,161,123,.2);box-shadow:0 0 0 3px rgba(38,161,123,.2)}@-webkit-keyframes pulse-ring{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:1}to{-webkit-transform:scale(1.8);transform:scale(1.8);opacity:0}}@keyframes pulse-ring{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:1}to{-webkit-transform:scale(1.8);transform:scale(1.8);opacity:0}}.usdt-checkout .checkout-body{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;padding:4px 24px 16px}.usdt-checkout .checkout-body .qr-section{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-negative:0;flex-shrink:0}.usdt-checkout .checkout-body .qr-section,.usdt-checkout .checkout-body .qr-section .qr-frame{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-body .qr-section .qr-frame{width:180px;height:180px;padding:8px;border-radius:14px;background:#fff;border:2px solid #e8e8e8;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-transition:border-color .4s;transition:border-color .4s;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.06);box-shadow:0 4px 20px rgba(0,0,0,.06)}.usdt-checkout .checkout-body .qr-section .qr-frame img{width:100%;height:100%;border-radius:8px}.usdt-checkout .checkout-body .qr-section .qr-frame.qr-confirmed{border-color:#26a17b}.usdt-checkout .checkout-body .qr-section .qr-frame.qr-confirmed:after{content:"\2713";position:absolute;top:-10px;right:-10px;width:28px;height:28px;background:#26a17b;color:#fff;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:16px;font-weight:700;-webkit-box-shadow:0 2px 8px rgba(38,161,123,.4);box-shadow:0 2px 8px rgba(38,161,123,.4)}.usdt-checkout .checkout-body .qr-section .qr-amount{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:4px}.usdt-checkout .checkout-body .qr-section .qr-amount .amt-number{font-size:22px;font-weight:900;color:rgba(0,0,0,.88);letter-spacing:-.5px}.usdt-checkout .checkout-body .qr-section .qr-amount .amt-currency{font-size:12px;font-weight:700;color:rgba(0,0,0,.45)}.usdt-checkout .checkout-body .qr-section .qr-chain{margin-top:4px}.usdt-checkout .checkout-body .info-section{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.usdt-checkout .checkout-body .info-section .info-block{margin-bottom:14px}.usdt-checkout .checkout-body .info-section .info-block .info-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;color:rgba(0,0,0,.45);font-weight:600;margin-bottom:6px}.usdt-checkout .checkout-body .info-section .addr-box,.usdt-checkout .checkout-body .info-section .amt-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;background:#f6f8fa;border:1px solid #e8e8e8;border-radius:8px;padding:8px 10px}.usdt-checkout .checkout-body .info-section .addr-box code,.usdt-checkout .checkout-body .info-section .amt-box code{-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Courier New,monospace;font-size:12px;color:rgba(0,0,0,.78);word-break:break-all;line-height:1.5;background:none;border:none;padding:0}.usdt-checkout .checkout-body .info-section .addr-box .copy-btn,.usdt-checkout .checkout-body .info-section .amt-box .copy-btn{-ms-flex-negative:0;flex-shrink:0;border:none;background:rgba(0,0,0,.04);color:rgba(0,0,0,.55);border-radius:6px}.usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,.usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.08);color:#1890ff}.usdt-checkout .checkout-body .info-section .warn-strip{gap:8px;padding:8px 12px;border-radius:8px;background:rgba(250,173,20,.08);border:1px solid rgba(250,173,20,.2);font-size:12px;font-weight:600;color:#d48806;margin-bottom:14px}.usdt-checkout .checkout-body .info-section .meta-row,.usdt-checkout .checkout-body .info-section .warn-strip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-body .info-section .meta-row{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.usdt-checkout .checkout-body .info-section .meta-row .meta-expire{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;font-size:12px;color:rgba(0,0,0,.45)}.usdt-checkout .checkout-body .info-section .confirmed-hint,.usdt-checkout .checkout-body .info-section .expired-hint{margin-top:12px}.usdt-checkout .checkout-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 24px 16px;border-top:1px solid rgba(0,0,0,.06)}@media (max-width:560px){.usdt-checkout .checkout-body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-body .info-section{width:100%}}.theme-dark .usdt-checkout .checkout-header,body.realdark .usdt-checkout .checkout-header{background:linear-gradient(135deg,#1a7a5a,#145c45)}.theme-dark .usdt-checkout .checkout-steps .step-item .step-label,body.realdark .usdt-checkout .checkout-steps .step-item .step-label{color:hsla(0,0%,100%,.35)}.theme-dark .usdt-checkout .checkout-steps .step-item .step-line,body.realdark .usdt-checkout .checkout-steps .step-item .step-line{background:hsla(0,0%,100%,.12)}.theme-dark .usdt-checkout .checkout-steps .step-item .step-line.filled,body.realdark .usdt-checkout .checkout-steps .step-item .step-line.filled{background:#26a17b}.theme-dark .usdt-checkout .checkout-steps .step-item.active .step-label,body.realdark .usdt-checkout .checkout-steps .step-item.active .step-label{color:hsla(0,0%,100%,.9)}.theme-dark .usdt-checkout .checkout-steps .step-item .dot-inner,body.realdark .usdt-checkout .checkout-steps .step-item .dot-inner{background:hsla(0,0%,100%,.2)}.theme-dark .usdt-checkout .checkout-steps .step-item.active .dot-inner,body.realdark .usdt-checkout .checkout-steps .step-item.active .dot-inner{background:#26a17b}.theme-dark .usdt-checkout .checkout-body .qr-section .qr-frame,body.realdark .usdt-checkout .checkout-body .qr-section .qr-frame{background:#1a1f28;border-color:hsla(0,0%,100%,.1);-webkit-box-shadow:0 4px 20px rgba(0,0,0,.3);box-shadow:0 4px 20px rgba(0,0,0,.3)}.theme-dark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-number,body.realdark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-number{color:hsla(0,0%,100%,.9)}.theme-dark .usdt-checkout .checkout-body .info-section .info-block .info-label,.theme-dark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-currency,body.realdark .usdt-checkout .checkout-body .info-section .info-block .info-label,body.realdark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-currency{color:hsla(0,0%,100%,.5)}.theme-dark .usdt-checkout .checkout-body .info-section .addr-box,.theme-dark .usdt-checkout .checkout-body .info-section .amt-box,body.realdark .usdt-checkout .checkout-body .info-section .addr-box,body.realdark .usdt-checkout .checkout-body .info-section .amt-box{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.1)}.theme-dark .usdt-checkout .checkout-body .info-section .addr-box code,.theme-dark .usdt-checkout .checkout-body .info-section .amt-box code,body.realdark .usdt-checkout .checkout-body .info-section .addr-box code,body.realdark .usdt-checkout .checkout-body .info-section .amt-box code{color:hsla(0,0%,100%,.8)}.theme-dark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn,.theme-dark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn,body.realdark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn,body.realdark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn{background:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.6)}.theme-dark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,.theme-dark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.15);color:#40a9ff}.theme-dark .usdt-checkout .checkout-body .info-section .warn-strip,body.realdark .usdt-checkout .checkout-body .info-section .warn-strip{background:rgba(250,173,20,.1);border-color:rgba(250,173,20,.2);color:#faad14}.theme-dark .usdt-checkout .checkout-body .info-section .meta-row .meta-expire,body.realdark .usdt-checkout .checkout-body .info-section .meta-row .meta-expire{color:hsla(0,0%,100%,.45)}.theme-dark .usdt-checkout .checkout-footer,body.realdark .usdt-checkout .checkout-footer{border-top-color:hsla(0,0%,100%,.08)}
\ No newline at end of file
+.billing-page[data-v-714c882a]{padding:18px}.billing-page .page-header[data-v-714c882a]{margin-bottom:14px}.billing-page .page-header .page-title[data-v-714c882a]{margin:0;font-size:18px;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;color:rgba(0,0,0,.85)}.billing-page .page-header .page-desc[data-v-714c882a]{margin:6px 0 0;color:rgba(0,0,0,.45)}.billing-page .snapshot-card .snapshot-row[data-v-714c882a]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:18px;-ms-flex-wrap:wrap;flex-wrap:wrap}.billing-page .snapshot-card .snap-item[data-v-714c882a]{min-width:220px}.billing-page .snapshot-card .snap-item .snap-label[data-v-714c882a]{color:rgba(0,0,0,.45);font-size:12px}.billing-page .snapshot-card .snap-item .snap-value[data-v-714c882a]{font-size:18px;font-weight:700;margin-top:2px}.billing-page .snapshot-card .snap-item .vip-exp[data-v-714c882a]{margin-left:8px;color:rgba(0,0,0,.55);font-size:12px}.billing-page .plan-card[data-v-714c882a]{border-radius:10px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);margin-top:12px}.billing-page .plan-card.highlight[data-v-714c882a]{border:1px solid rgba(24,144,255,.35)}.billing-page .plan-card .plan-title[data-v-714c882a]{font-weight:700;font-size:16px;color:rgba(0,0,0,.85)}.billing-page .plan-card .plan-price[data-v-714c882a]{margin-top:10px;font-size:28px;font-weight:800;color:rgba(0,0,0,.85)}.billing-page .plan-card .plan-price .plan-unit[data-v-714c882a]{font-size:12px;font-weight:500;color:rgba(0,0,0,.45);margin-left:6px}.billing-page .plan-card .plan-benefit[data-v-714c882a]{margin:10px 0 16px;color:rgba(0,0,0,.65);font-weight:600}.billing-page.theme-dark .page-header .page-title[data-v-714c882a]{color:hsla(0,0%,100%,.9)}.billing-page.theme-dark .page-header .page-desc[data-v-714c882a]{color:hsla(0,0%,100%,.55)}.billing-page.theme-dark .snapshot-card[data-v-714c882a]{background:#1c1c1c}.billing-page.theme-dark .snapshot-card .snap-item .snap-label[data-v-714c882a]{color:hsla(0,0%,100%,.55)}.billing-page.theme-dark .snapshot-card .snap-item .snap-value[data-v-714c882a]{color:hsla(0,0%,100%,.9)}.billing-page.theme-dark .snapshot-card .snap-item .vip-exp[data-v-714c882a]{color:hsla(0,0%,100%,.6)}.billing-page.theme-dark .plan-card[data-v-714c882a]{background:#1c1c1c;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.billing-page.theme-dark .plan-card .plan-price[data-v-714c882a],.billing-page.theme-dark .plan-card .plan-title[data-v-714c882a]{color:hsla(0,0%,100%,.9)}.billing-page.theme-dark .plan-card .plan-price .plan-unit[data-v-714c882a]{color:hsla(0,0%,100%,.55)}.billing-page.theme-dark .plan-card .plan-benefit[data-v-714c882a]{color:hsla(0,0%,100%,.7)}.usdt-pay-modal-wrap .ant-modal-header{display:none}.usdt-pay-modal-wrap .ant-modal-body{padding:0!important}.usdt-pay-modal-wrap .ant-modal-content{border-radius:16px;overflow:hidden}.usdt-checkout .checkout-header{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,#26a17b,#1b8a6b)}.usdt-checkout .checkout-header,.usdt-checkout .checkout-header .header-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-header .header-left{gap:12px}.usdt-checkout .checkout-header .header-left .usdt-logo{width:40px;height:40px;border-radius:50%;background:hsla(0,0%,100%,.18);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.usdt-checkout .checkout-header .header-left .header-text .header-title{font-size:16px;font-weight:800;color:#fff}.usdt-checkout .checkout-header .header-left .header-text .header-desc{font-size:12px;color:hsla(0,0%,100%,.75);margin-top:2px;line-height:1.4}.usdt-checkout .checkout-header .close-btn{color:hsla(0,0%,100%,.8)!important;font-size:18px}.usdt-checkout .checkout-header .close-btn:hover{color:#fff!important}.usdt-checkout .checkout-steps{padding:16px 24px 12px}.usdt-checkout .checkout-steps,.usdt-checkout .checkout-steps .step-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-steps .step-item{gap:6px}.usdt-checkout .checkout-steps .step-item .step-dot{position:relative;width:18px;height:18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.usdt-checkout .checkout-steps .step-item .step-dot .dot-inner{width:10px;height:10px;border-radius:50%;background:#d9d9d9;-webkit-transition:all .3s;transition:all .3s}.usdt-checkout .checkout-steps .step-item .step-dot .dot-pulse{position:absolute;width:18px;height:18px;border-radius:50%;background:rgba(38,161,123,.35);-webkit-animation:pulse-ring 1.5s ease-out infinite;animation:pulse-ring 1.5s ease-out infinite}.usdt-checkout .checkout-steps .step-item .step-label{font-size:12px;color:rgba(0,0,0,.35);font-weight:500;white-space:nowrap;-webkit-transition:all .3s;transition:all .3s}.usdt-checkout .checkout-steps .step-item .step-line{-webkit-box-flex:1;-ms-flex:1;flex:1;height:2px;min-width:30px;background:#e8e8e8;margin:0 6px;border-radius:1px;-webkit-transition:all .3s;transition:all .3s}.usdt-checkout .checkout-steps .step-item .step-line.filled,.usdt-checkout .checkout-steps .step-item.active .dot-inner{background:#26a17b}.usdt-checkout .checkout-steps .step-item.active .step-label{color:rgba(0,0,0,.85);font-weight:700}.usdt-checkout .checkout-steps .step-item.current .dot-inner{background:#26a17b;-webkit-box-shadow:0 0 0 3px rgba(38,161,123,.2);box-shadow:0 0 0 3px rgba(38,161,123,.2)}@-webkit-keyframes pulse-ring{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:1}to{-webkit-transform:scale(1.8);transform:scale(1.8);opacity:0}}@keyframes pulse-ring{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:1}to{-webkit-transform:scale(1.8);transform:scale(1.8);opacity:0}}.usdt-checkout .checkout-body{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;padding:4px 24px 16px}.usdt-checkout .checkout-body .qr-section{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-negative:0;flex-shrink:0}.usdt-checkout .checkout-body .qr-section,.usdt-checkout .checkout-body .qr-section .qr-frame{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-body .qr-section .qr-frame{width:180px;height:180px;padding:8px;border-radius:14px;background:#fff;border:2px solid #e8e8e8;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-transition:border-color .4s;transition:border-color .4s;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.06);box-shadow:0 4px 20px rgba(0,0,0,.06)}.usdt-checkout .checkout-body .qr-section .qr-frame img{width:100%;height:100%;border-radius:8px}.usdt-checkout .checkout-body .qr-section .qr-frame.qr-confirmed{border-color:#26a17b}.usdt-checkout .checkout-body .qr-section .qr-frame.qr-confirmed:after{content:"\2713";position:absolute;top:-10px;right:-10px;width:28px;height:28px;background:#26a17b;color:#fff;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:16px;font-weight:700;-webkit-box-shadow:0 2px 8px rgba(38,161,123,.4);box-shadow:0 2px 8px rgba(38,161,123,.4)}.usdt-checkout .checkout-body .qr-section .qr-amount{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:4px}.usdt-checkout .checkout-body .qr-section .qr-amount .amt-number{font-size:22px;font-weight:900;color:rgba(0,0,0,.88);letter-spacing:-.5px}.usdt-checkout .checkout-body .qr-section .qr-amount .amt-currency{font-size:12px;font-weight:700;color:rgba(0,0,0,.45)}.usdt-checkout .checkout-body .qr-section .qr-chain{margin-top:4px}.usdt-checkout .checkout-body .info-section{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.usdt-checkout .checkout-body .info-section .info-block{margin-bottom:14px}.usdt-checkout .checkout-body .info-section .info-block .info-label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:12px;color:rgba(0,0,0,.45);font-weight:600;margin-bottom:6px}.usdt-checkout .checkout-body .info-section .addr-box,.usdt-checkout .checkout-body .info-section .amt-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;background:#f6f8fa;border:1px solid #e8e8e8;border-radius:8px;padding:8px 10px}.usdt-checkout .checkout-body .info-section .addr-box code,.usdt-checkout .checkout-body .info-section .amt-box code{-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Courier New,monospace;font-size:12px;color:rgba(0,0,0,.78);word-break:break-all;line-height:1.5;background:none;border:none;padding:0}.usdt-checkout .checkout-body .info-section .addr-box .copy-btn,.usdt-checkout .checkout-body .info-section .amt-box .copy-btn{-ms-flex-negative:0;flex-shrink:0;border:none;background:rgba(0,0,0,.04);color:rgba(0,0,0,.55);border-radius:6px}.usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,.usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.08);color:#1890ff}.usdt-checkout .checkout-body .info-section .warn-strip{gap:8px;padding:8px 12px;border-radius:8px;background:rgba(250,173,20,.08);border:1px solid rgba(250,173,20,.2);font-size:12px;font-weight:600;color:#d48806;margin-bottom:14px}.usdt-checkout .checkout-body .info-section .meta-row,.usdt-checkout .checkout-body .info-section .warn-strip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-body .info-section .meta-row{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.usdt-checkout .checkout-body .info-section .meta-row .meta-expire{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;font-size:12px;color:rgba(0,0,0,.45)}.usdt-checkout .checkout-body .info-section .confirmed-hint,.usdt-checkout .checkout-body .info-section .expired-hint{margin-top:12px}.usdt-checkout .checkout-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 24px 16px;border-top:1px solid rgba(0,0,0,.06)}@media (max-width:560px){.usdt-checkout .checkout-body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.usdt-checkout .checkout-body .info-section{width:100%}}body.dark .usdt-pay-modal-wrap .ant-modal-content,body.realdark .usdt-pay-modal-wrap .ant-modal-content{background:#1c1c1c}body.dark .usdt-checkout .checkout-header,body.realdark .usdt-checkout .checkout-header{background:linear-gradient(135deg,#1a7a5a,#145c45)}body.dark .usdt-checkout .checkout-steps .step-item .step-label,body.realdark .usdt-checkout .checkout-steps .step-item .step-label{color:hsla(0,0%,100%,.35)}body.dark .usdt-checkout .checkout-steps .step-item .step-line,body.realdark .usdt-checkout .checkout-steps .step-item .step-line{background:hsla(0,0%,100%,.12)}body.dark .usdt-checkout .checkout-steps .step-item .step-line.filled,body.realdark .usdt-checkout .checkout-steps .step-item .step-line.filled{background:#26a17b}body.dark .usdt-checkout .checkout-steps .step-item.active .step-label,body.realdark .usdt-checkout .checkout-steps .step-item.active .step-label{color:hsla(0,0%,100%,.9)}body.dark .usdt-checkout .checkout-steps .step-item .dot-inner,body.realdark .usdt-checkout .checkout-steps .step-item .dot-inner{background:hsla(0,0%,100%,.2)}body.dark .usdt-checkout .checkout-steps .step-item.active .dot-inner,body.realdark .usdt-checkout .checkout-steps .step-item.active .dot-inner{background:#26a17b}body.dark .usdt-checkout .checkout-body .qr-section .qr-frame,body.realdark .usdt-checkout .checkout-body .qr-section .qr-frame{background:#252525;border-color:hsla(0,0%,100%,.1);-webkit-box-shadow:0 4px 20px rgba(0,0,0,.3);box-shadow:0 4px 20px rgba(0,0,0,.3)}body.dark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-number,body.realdark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-number{color:hsla(0,0%,100%,.9)}body.dark .usdt-checkout .checkout-body .info-section .info-block .info-label,body.dark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-currency,body.realdark .usdt-checkout .checkout-body .info-section .info-block .info-label,body.realdark .usdt-checkout .checkout-body .qr-section .qr-amount .amt-currency{color:hsla(0,0%,100%,.5)}body.dark .usdt-checkout .checkout-body .info-section .addr-box,body.dark .usdt-checkout .checkout-body .info-section .amt-box,body.realdark .usdt-checkout .checkout-body .info-section .addr-box,body.realdark .usdt-checkout .checkout-body .info-section .amt-box{background:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.1)}body.dark .usdt-checkout .checkout-body .info-section .addr-box code,body.dark .usdt-checkout .checkout-body .info-section .amt-box code,body.realdark .usdt-checkout .checkout-body .info-section .addr-box code,body.realdark .usdt-checkout .checkout-body .info-section .amt-box code{color:hsla(0,0%,100%,.8)}body.dark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn,body.dark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn,body.realdark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn,body.realdark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn{background:hsla(0,0%,100%,.08);color:hsla(0,0%,100%,.6)}body.dark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.dark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.15);color:#40a9ff}body.dark .usdt-checkout .checkout-body .info-section .warn-strip,body.realdark .usdt-checkout .checkout-body .info-section .warn-strip{background:rgba(250,173,20,.1);border-color:rgba(250,173,20,.2);color:#faad14}body.dark .usdt-checkout .checkout-body .info-section .meta-row .meta-expire,body.realdark .usdt-checkout .checkout-body .info-section .meta-row .meta-expire{color:hsla(0,0%,100%,.45)}body.dark .usdt-checkout .checkout-footer,body.realdark .usdt-checkout .checkout-footer{border-top-color:hsla(0,0%,100%,.08)}body.dark .usdt-checkout .checkout-footer .ant-btn:not(.ant-btn-primary),body.realdark .usdt-checkout .checkout-footer .ant-btn:not(.ant-btn-primary){background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.15);color:hsla(0,0%,100%,.8)}body.dark .usdt-checkout .checkout-footer .ant-btn:not(.ant-btn-primary):hover,body.realdark .usdt-checkout .checkout-footer .ant-btn:not(.ant-btn-primary):hover{background:hsla(0,0%,100%,.12);border-color:hsla(0,0%,100%,.25);color:#fff}
\ No newline at end of file
diff --git a/frontend/dist/css/206.136e873f.css b/frontend/dist/css/206.136e873f.css
new file mode 100644
index 0000000..d950081
--- /dev/null
+++ b/frontend/dist/css/206.136e873f.css
@@ -0,0 +1 @@
+.dashboard-pro[data-v-7ff4e505]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-7ff4e505]{background:#141414}.dashboard-pro.theme-dark .kpi-card[data-v-7ff4e505]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .chart-panel[data-v-7ff4e505],.dashboard-pro.theme-dark .table-panel[data-v-7ff4e505]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-7ff4e505],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-7ff4e505]{border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-7ff4e505],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card[data-v-7ff4e505]{background:hsla(0,0%,100%,.03);border-color:#2a2a2a}.dashboard-pro.theme-dark .ranking-card .rank-name[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card .rank-stats label[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-7ff4e505],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-7ff4e505]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-7ff4e505],.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-7ff4e505]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-7ff4e505]{background:hsla(0,0%,100%,.02)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-7ff4e505]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-thead>tr>th{background:#141414;color:#888;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-tbody>tr>td{border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-tbody>tr:hover>td{background:#252525}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-placeholder .ant-empty-description{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .kpi-card[data-v-7ff4e505]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-7ff4e505]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-7ff4e505]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-7ff4e505]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-7ff4e505]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-7ff4e505]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-7ff4e505]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-7ff4e505]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-7ff4e505],.dashboard-pro .kpi-card .kpi-icon[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-7ff4e505]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-7ff4e505]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-7ff4e505]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-7ff4e505]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-7ff4e505]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-7ff4e505]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-7ff4e505]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-7ff4e505]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-7ff4e505]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-7ff4e505]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-7ff4e505]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-7ff4e505]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-7ff4e505],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-7ff4e505],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-7ff4e505]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-7ff4e505]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-7ff4e505]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-7ff4e505]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-7ff4e505]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-7ff4e505]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-7ff4e505]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-7ff4e505]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-7ff4e505]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-7ff4e505]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-7ff4e505]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-7ff4e505]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-7ff4e505]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-7ff4e505]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-7ff4e505],.dashboard-pro .chart-panel .panel-title[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-7ff4e505]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-7ff4e505]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-7ff4e505]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-7ff4e505]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-7ff4e505]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-7ff4e505]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-7ff4e505]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-7ff4e505]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-7ff4e505]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-7ff4e505]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-7ff4e505]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-7ff4e505]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-7ff4e505]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-7ff4e505]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-7ff4e505]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-7ff4e505]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-7ff4e505],.dashboard-pro .chart-panel .profit-calendar[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-7ff4e505]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-7ff4e505]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-7ff4e505]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-7ff4e505]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-7ff4e505]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-7ff4e505]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-7ff4e505]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-7ff4e505]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-7ff4e505]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-7ff4e505]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-7ff4e505]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-7ff4e505]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-7ff4e505]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-7ff4e505]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-7ff4e505]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-7ff4e505]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-7ff4e505]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-7ff4e505]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-7ff4e505]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-7ff4e505]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-7ff4e505]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-7ff4e505]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-7ff4e505]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-7ff4e505]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-7ff4e505]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-7ff4e505]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-7ff4e505]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-7ff4e505]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-7ff4e505]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-top:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-7ff4e505]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-7ff4e505]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-7ff4e505],.dashboard-pro .table-panel .panel-title[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-7ff4e505]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-7ff4e505]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-7ff4e505]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-7ff4e505]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-7ff4e505]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-7ff4e505]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-7ff4e505]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-7ff4e505]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-7ff4e505]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-7ff4e505]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-7ff4e505]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-7ff4e505]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-7ff4e505],.dashboard-pro .symbol-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-7ff4e505]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-7ff4e505]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-7ff4e505]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-7ff4e505]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-7ff4e505]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-7ff4e505]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-7ff4e505]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-7ff4e505]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-7ff4e505]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-7ff4e505]{margin-right:4px}.dashboard-pro .notify-icons[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-7ff4e505]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-7ff4e505]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-7ff4e505]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-7ff4e505]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-7ff4e505]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-7ff4e505]{color:#64748b}.dashboard-pro .positive[data-v-7ff4e505]{color:#10b981}.dashboard-pro .negative[data-v-7ff4e505]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-7ff4e505]{padding:12px}.dashboard-pro .kpi-grid[data-v-7ff4e505]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-7ff4e505]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-7ff4e505]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-7ff4e505]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-7ff4e505]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-7ff4e505]{height:180px}.dashboard-pro .ranking-grid[data-v-7ff4e505]{grid-template-columns:1fr}}
\ No newline at end of file
diff --git a/frontend/dist/css/221.340147b1.css b/frontend/dist/css/221.340147b1.css
new file mode 100644
index 0000000..bb88163
--- /dev/null
+++ b/frontend/dist/css/221.340147b1.css
@@ -0,0 +1 @@
+.profile-page[data-v-6dceb76a]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-6dceb76a]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-6dceb76a]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-6dceb76a]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-6dceb76a] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-6dceb76a]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-6dceb76a]{margin:0}.profile-page .profile-card .profile-info[data-v-6dceb76a]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:500px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-6dceb76a]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-6dceb76a]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-6dceb76a]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-6dceb76a]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-6dceb76a]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-6dceb76a]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-6dceb76a]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-6dceb76a]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-6dceb76a] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:18px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-6dceb76a]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-6dceb76a]{color:gold}.profile-page .referral-user-cell[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-6dceb76a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-6dceb76a]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-6dceb76a]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark[data-v-6dceb76a]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.profile-page.theme-dark .page-header .page-title[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a],.profile-page.theme-dark .profile-card[data-v-6dceb76a]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-6dceb76a] .ant-card-body{background:#1c1c1c}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-6dceb76a]{border-bottom-color:#2a2a2a}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-6dceb76a]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-bar{border-bottom-color:#2a2a2a}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-6dceb76a]{background:linear-gradient(135deg,#1c1c1c,#1a1a1a 50%,#141414);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-6dceb76a] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-6dceb76a]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table{background:#1c1c1c;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2a2a;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1c1c1c;color:#c9d1d9;border-bottom-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-placeholder{background:#1c1c1c;color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-6dceb76a] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .password-form .field-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-hint[data-v-6dceb76a],.profile-page.theme-dark .profile-form .field-hint[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .password-form .email-warning[data-v-6dceb76a],.profile-page.theme-dark .profile-form .email-warning[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-6dceb76a],.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-6dceb76a]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-6dceb76a]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-6dceb76a]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-6dceb76a]{color:#8b949e}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-tag.ant-tag-has-color{color:#fff!important;border-color:transparent!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-input-prefix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .ant-input-suffix .anticon,.profile-page.theme-dark[data-v-6dceb76a] .credits-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .email-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .field-hint .anticon,.profile-page.theme-dark[data-v-6dceb76a] .notification-settings-form .anticon{color:#c9d1d9!important}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-options .ant-select-selector{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#c9d1d9}.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-6dceb76a]{padding:12px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:22px}.profile-page .page-header .page-desc[data-v-6dceb76a]{font-size:13px}.profile-page .profile-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-6dceb76a]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-6dceb76a]{margin-bottom:12px}.profile-page .profile-card[data-v-6dceb76a]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-6dceb76a]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-6dceb76a] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-6dceb76a]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-6dceb76a]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-6dceb76a]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-6dceb76a]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-6dceb76a]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-6dceb76a]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .credits-card .credits-body[data-v-6dceb76a]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-6dceb76a]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-6dceb76a]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-6dceb76a]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-6dceb76a]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-6dceb76a]{font-size:16px}.profile-page .referral-card .referral-body[data-v-6dceb76a]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-6dceb76a],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-6dceb76a]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-6dceb76a] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-6dceb76a]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-6dceb76a]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-6dceb76a] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-6dceb76a],.profile-page .edit-card .profile-form[data-v-6dceb76a]{max-width:100%}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-input-password,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input,.profile-page .edit-card .profile-form[data-v-6dceb76a] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-6dceb76a],.profile-page .edit-card .profile-form .email-hint[data-v-6dceb76a]{font-size:11px}.profile-page .edit-card .password-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-6dceb76a]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-6dceb76a] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-6dceb76a]{gap:8px}.profile-page .referral-user-cell[data-v-6dceb76a] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-6dceb76a]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-6dceb76a]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-6dceb76a]{padding:8px}.profile-page .page-header[data-v-6dceb76a]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-6dceb76a]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-6dceb76a]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-6dceb76a]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-6dceb76a]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-6dceb76a]{font-size:20px}.profile-page .edit-card[data-v-6dceb76a] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-6dceb76a] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}}
\ No newline at end of file
diff --git a/frontend/dist/css/320.136e873f.css b/frontend/dist/css/320.136e873f.css
new file mode 100644
index 0000000..d950081
--- /dev/null
+++ b/frontend/dist/css/320.136e873f.css
@@ -0,0 +1 @@
+.dashboard-pro[data-v-7ff4e505]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-7ff4e505]{background:#141414}.dashboard-pro.theme-dark .kpi-card[data-v-7ff4e505]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .chart-panel[data-v-7ff4e505],.dashboard-pro.theme-dark .table-panel[data-v-7ff4e505]{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-7ff4e505],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-7ff4e505]{border-color:#2a2a2a}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-7ff4e505],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card[data-v-7ff4e505]{background:hsla(0,0%,100%,.03);border-color:#2a2a2a}.dashboard-pro.theme-dark .ranking-card .rank-name[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card .rank-stats label[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-7ff4e505],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-7ff4e505]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-7ff4e505],.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-7ff4e505]{color:#888}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-7ff4e505]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-7ff4e505]{background:hsla(0,0%,100%,.02)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-7ff4e505]{background:hsla(0,0%,100%,.03)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-7ff4e505]{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-thead>tr>th{background:#141414;color:#888;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-tbody>tr>td{border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-tbody>tr:hover>td{background:#252525}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-table-placeholder .ant-empty-description{color:#888}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-item{background:#1c1c1c;border-color:#2a2a2a}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-7ff4e505] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1c1c1c;border-color:#2a2a2a;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .kpi-card[data-v-7ff4e505]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-7ff4e505]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-7ff4e505]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-7ff4e505]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-7ff4e505]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-7ff4e505]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-7ff4e505]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-7ff4e505]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-7ff4e505],.dashboard-pro .kpi-card .kpi-icon[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-7ff4e505]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-7ff4e505]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-7ff4e505]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-7ff4e505]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-7ff4e505]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-7ff4e505]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-7ff4e505]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-7ff4e505]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-7ff4e505]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-7ff4e505]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-7ff4e505]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-7ff4e505]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-7ff4e505],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-7ff4e505],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-7ff4e505]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-7ff4e505]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-7ff4e505]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-7ff4e505]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-7ff4e505]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-7ff4e505]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-7ff4e505]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-7ff4e505]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-7ff4e505]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-7ff4e505]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-7ff4e505]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-7ff4e505]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-7ff4e505]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-7ff4e505]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-7ff4e505],.dashboard-pro .chart-panel .panel-title[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-7ff4e505]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-7ff4e505]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-7ff4e505]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-7ff4e505]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-7ff4e505]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-7ff4e505]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-7ff4e505]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-7ff4e505]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-7ff4e505]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-7ff4e505]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-7ff4e505]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-7ff4e505]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-7ff4e505]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-7ff4e505]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-7ff4e505]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-7ff4e505]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-7ff4e505],.dashboard-pro .chart-panel .profit-calendar[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-7ff4e505]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-7ff4e505]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-7ff4e505]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-7ff4e505]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-7ff4e505]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-7ff4e505]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-7ff4e505]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-7ff4e505]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-7ff4e505]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-7ff4e505]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-7ff4e505]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-7ff4e505]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-7ff4e505]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-7ff4e505]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-7ff4e505]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-7ff4e505]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-7ff4e505]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-7ff4e505]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-7ff4e505]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-7ff4e505]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-7ff4e505]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-7ff4e505]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-7ff4e505]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-7ff4e505]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-7ff4e505]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-7ff4e505]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-7ff4e505]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-7ff4e505]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-7ff4e505]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-7ff4e505]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-7ff4e505]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-7ff4e505]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-top:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-7ff4e505]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-7ff4e505]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-7ff4e505]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-7ff4e505],.dashboard-pro .table-panel .panel-title[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-7ff4e505]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-7ff4e505]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-7ff4e505]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-7ff4e505]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-7ff4e505]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-7ff4e505]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-7ff4e505]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-7ff4e505] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-7ff4e505]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-7ff4e505]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-7ff4e505]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-7ff4e505]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-7ff4e505]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-7ff4e505],.dashboard-pro .symbol-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-7ff4e505]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-7ff4e505]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-7ff4e505]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-7ff4e505]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-7ff4e505]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-7ff4e505]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-7ff4e505]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-7ff4e505]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-7ff4e505]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-7ff4e505]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-7ff4e505]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-7ff4e505]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-7ff4e505]{margin-right:4px}.dashboard-pro .notify-icons[data-v-7ff4e505]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-7ff4e505]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-7ff4e505]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-7ff4e505]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-7ff4e505]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-7ff4e505]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-7ff4e505]{color:#64748b}.dashboard-pro .positive[data-v-7ff4e505]{color:#10b981}.dashboard-pro .negative[data-v-7ff4e505]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-7ff4e505]{padding:12px}.dashboard-pro .kpi-grid[data-v-7ff4e505]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-7ff4e505]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-7ff4e505]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-7ff4e505]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-7ff4e505]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-7ff4e505]{height:180px}.dashboard-pro .ranking-grid[data-v-7ff4e505]{grid-template-columns:1fr}}
\ No newline at end of file
diff --git a/frontend/dist/css/355.02ed56c8.css b/frontend/dist/css/355.02ed56c8.css
deleted file mode 100644
index 0244b44..0000000
--- a/frontend/dist/css/355.02ed56c8.css
+++ /dev/null
@@ -1 +0,0 @@
-.dashboard-pro[data-v-16dc1b35]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-16dc1b35]{background:#0f172a}.dashboard-pro.theme-dark .kpi-card[data-v-16dc1b35]{background:#1e293b;border-color:#334155}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .chart-panel[data-v-16dc1b35],.dashboard-pro.theme-dark .table-panel[data-v-16dc1b35]{background:#1e293b;border-color:#334155}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-16dc1b35],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-16dc1b35]{border-color:#334155}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-16dc1b35],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card[data-v-16dc1b35]{background:rgba(51,65,85,.5);border-color:#334155}.dashboard-pro.theme-dark .ranking-card .rank-name[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card .rank-stats label[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-16dc1b35],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-16dc1b35]{background:rgba(51,65,85,.5)}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-16dc1b35],.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-16dc1b35]{background:rgba(51,65,85,.3)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-16dc1b35]{background:rgba(51,65,85,.2)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-16dc1b35]{background:rgba(100,116,139,.2)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-thead>tr>th{background:rgba(51,65,85,.5);color:#94a3b8;border-color:#334155}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-tbody>tr>td{border-color:#334155;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-tbody>tr:hover>td{background:rgba(51,65,85,.3)}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-placeholder .ant-empty-description{color:#94a3b8}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-item{background:#1e293b;border-color:#334155}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1e293b;border-color:#334155;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .kpi-card[data-v-16dc1b35]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-16dc1b35]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-16dc1b35]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-16dc1b35]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-16dc1b35]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-16dc1b35]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-16dc1b35]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-16dc1b35]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-16dc1b35],.dashboard-pro .kpi-card .kpi-icon[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-16dc1b35]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-16dc1b35]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-16dc1b35]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-16dc1b35]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-16dc1b35]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-16dc1b35]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-16dc1b35]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-16dc1b35]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-16dc1b35]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-16dc1b35]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-16dc1b35]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-16dc1b35]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-16dc1b35],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-16dc1b35],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-16dc1b35]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-16dc1b35]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-16dc1b35]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-16dc1b35]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-16dc1b35]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-16dc1b35]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-16dc1b35]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-16dc1b35]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-16dc1b35]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-16dc1b35]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-16dc1b35]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-16dc1b35]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-16dc1b35]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-16dc1b35]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-16dc1b35],.dashboard-pro .chart-panel .panel-title[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-16dc1b35]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-16dc1b35]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-16dc1b35]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-16dc1b35]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-16dc1b35]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-16dc1b35]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-16dc1b35]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-16dc1b35]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-16dc1b35]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-16dc1b35]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-16dc1b35]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-16dc1b35]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-16dc1b35]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-16dc1b35]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-16dc1b35]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-16dc1b35]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-16dc1b35],.dashboard-pro .chart-panel .profit-calendar[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-16dc1b35]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-16dc1b35]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-16dc1b35]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-16dc1b35]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-16dc1b35]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-16dc1b35]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-16dc1b35]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-16dc1b35]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-16dc1b35]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-16dc1b35]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-16dc1b35]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-16dc1b35]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-16dc1b35]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-16dc1b35]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-16dc1b35]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-16dc1b35]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-16dc1b35]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-16dc1b35]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-16dc1b35]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-16dc1b35]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-16dc1b35]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-16dc1b35]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-16dc1b35]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-16dc1b35]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-16dc1b35]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-16dc1b35]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-16dc1b35]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-16dc1b35]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-16dc1b35]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-16dc1b35]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-16dc1b35]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-16dc1b35],.dashboard-pro .table-panel .panel-title[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-16dc1b35]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-16dc1b35]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-16dc1b35]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-16dc1b35]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-16dc1b35]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-16dc1b35]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-16dc1b35]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-16dc1b35]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-16dc1b35]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-16dc1b35]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-16dc1b35]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-16dc1b35]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-16dc1b35],.dashboard-pro .symbol-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-16dc1b35]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-16dc1b35]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-16dc1b35]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-16dc1b35]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-16dc1b35]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-16dc1b35]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-16dc1b35]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-16dc1b35]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-16dc1b35]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-16dc1b35]{margin-right:4px}.dashboard-pro .notify-icons[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-16dc1b35]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-16dc1b35]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-16dc1b35]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-16dc1b35]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-16dc1b35]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-16dc1b35]{color:#64748b}.dashboard-pro .positive[data-v-16dc1b35]{color:#10b981}.dashboard-pro .negative[data-v-16dc1b35]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-16dc1b35]{padding:12px}.dashboard-pro .kpi-grid[data-v-16dc1b35]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-16dc1b35]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-16dc1b35]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-16dc1b35]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-16dc1b35]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-16dc1b35]{height:180px}.dashboard-pro .ranking-grid[data-v-16dc1b35]{grid-template-columns:1fr}}
\ No newline at end of file
diff --git a/frontend/dist/css/367.729cfe93.css b/frontend/dist/css/367.729cfe93.css
deleted file mode 100644
index 982c1cf..0000000
--- a/frontend/dist/css/367.729cfe93.css
+++ /dev/null
@@ -1 +0,0 @@
-.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-41dfa054]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-41dfa054]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-41dfa054]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-41dfa054]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-41dfa054]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-41dfa054]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-41dfa054]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-41dfa054]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-41dfa054]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-41dfa054]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-41dfa054]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-41dfa054]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-41dfa054]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-41dfa054]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-41dfa054]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-41dfa054]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-41dfa054]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-41dfa054],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-41dfa054]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-41dfa054],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-41dfa054]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-41dfa054],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-41dfa054]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-41dfa054]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-41dfa054]{text-align:center;padding:40px 0}.theme-dark .polymarket-analysis-modal .market-info h3[data-v-41dfa054]{color:hsla(0,0%,100%,.85)}.theme-dark .polymarket-analysis-modal .market-info .market-meta .meta-item[data-v-41dfa054]{color:hsla(0,0%,100%,.65)}.theme-dark .polymarket-analysis-modal .analysis-result .probability-comparison .prob-item[data-v-41dfa054]{background:hsla(0,0%,100%,.05)}.theme-dark .polymarket-analysis-modal .analysis-result .probability-comparison .prob-item .prob-label[data-v-41dfa054]{color:hsla(0,0%,100%,.65)}.theme-dark .polymarket-analysis-modal .analysis-result .recommendation-section .rec-card[data-v-41dfa054]{background:hsla(0,0%,100%,.05)}.theme-dark .polymarket-analysis-modal .analysis-result .recommendation-section .rec-card .rec-label[data-v-41dfa054]{color:hsla(0,0%,100%,.65)}.theme-dark .polymarket-analysis-modal .analysis-result .key-factors-section .reasoning-text[data-v-41dfa054],.theme-dark .polymarket-analysis-modal .analysis-result .key-factors-section h4[data-v-41dfa054],.theme-dark .polymarket-analysis-modal .analysis-result .reasoning-section .reasoning-text[data-v-41dfa054],.theme-dark .polymarket-analysis-modal .analysis-result .reasoning-section h4[data-v-41dfa054]{color:hsla(0,0%,100%,.85)}.ai-asset-analysis-page[data-v-20b827f5]{padding:16px;min-height:calc(100vh - 120px);background:#f0f2f5}.ai-asset-analysis-page .opp-section[data-v-20b827f5]{margin-bottom:12px}.ai-asset-analysis-page .opp-section .opp-header[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px;padding:0 4px}.ai-asset-analysis-page .opp-section .opp-header .opp-title[data-v-20b827f5]{font-size:14px;font-weight:600;color:#1a1a2e}.ai-asset-analysis-page .opp-section .opp-header .opp-header-right[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.ai-asset-analysis-page .opp-section .opp-header .opp-update-hint[data-v-20b827f5]{font-size:12px;color:#8c8c8c}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]{overflow:hidden;position:relative;border-radius:10px}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:after,.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:before{content:"";position:absolute;top:0;bottom:0;width:40px;z-index:2;pointer-events:none}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-track[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-animation:opp-scroll-left-20b827f5 60s linear infinite;animation:opp-scroll-left-20b827f5 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .opp-section .opp-track.paused[data-v-20b827f5]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes opp-scroll-left-20b827f5{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes opp-scroll-left-20b827f5{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .opp-section .opp-card[data-v-20b827f5]{width:190px;background:#fff;border-radius:10px;padding:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-left:3px solid #d9d9d9;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .opp-section .opp-card.is-prediction-market[data-v-20b827f5]{width:280px;min-height:160px}.ai-asset-analysis-page .opp-section .opp-card.bullish[data-v-20b827f5]{border-left-color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card.bearish[data-v-20b827f5]{border-left-color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card.market-predictionmarket[data-v-20b827f5]{border-left-color:#13c2c2;background:linear-gradient(135deg,#fff,#f0f9ff)}.ai-asset-analysis-page .opp-section .opp-card[data-v-20b827f5]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.1);box-shadow:0 4px 12px rgba(0,0,0,.1)}.ai-asset-analysis-page .opp-section .opp-card .opp-top[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:6px;gap:8px}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol[data-v-20b827f5]{font-weight:700;font-size:14px;color:#1a1a2e;-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-word;line-height:1.4}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol.prediction-title[data-v-20b827f5]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.ai-asset-analysis-page .opp-section .opp-card .opp-market-tag[data-v-20b827f5]{font-size:11px;-ms-flex-negative:0;flex-shrink:0;margin-left:auto}.ai-asset-analysis-page .opp-section .opp-card .opp-price[data-v-20b827f5]{font-size:13px;color:#595959}.ai-asset-analysis-page .opp-section .opp-card .opp-change[data-v-20b827f5]{font-size:15px;font-weight:600}.ai-asset-analysis-page .opp-section .opp-card .opp-change.up[data-v-20b827f5]{color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card .opp-change.down[data-v-20b827f5]{color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card .opp-signal[data-v-20b827f5]{margin-top:4px}.ai-asset-analysis-page .opp-section .opp-card .opp-reason[data-v-20b827f5]{font-size:11px;color:#8c8c8c;margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .opp-section .opp-card .opp-actions[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px;gap:6px}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-20b827f5]{font-size:12px;color:#1890ff;font-weight:500;cursor:pointer}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-20b827f5]:hover{text-decoration:underline}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-20b827f5]{font-size:11px;color:#fff;background:linear-gradient(135deg,#1890ff,#722ed1);padding:2px 8px;border-radius:10px;font-weight:600;cursor:pointer;white-space:nowrap;-webkit-transition:all .2s;transition:all .2s}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-20b827f5]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 8px rgba(114,46,209,.3);box-shadow:0 2px 8px rgba(114,46,209,.3)}.ai-asset-analysis-page .qt-floating-btn[data-v-20b827f5]{position:fixed;right:24px;bottom:80px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:24px;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-20b827f5 2s ease-in-out infinite;animation:qt-float-pulse-20b827f5 2s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-20b827f5]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(114,46,209,.5);box-shadow:0 6px 24px rgba(114,46,209,.5)}@-webkit-keyframes qt-float-pulse-20b827f5{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-20b827f5{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-20b827f5]{border-radius:12px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06)}.ai-asset-analysis-page .workspace-card[data-v-20b827f5] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-bar{margin-bottom:0;padding:0 16px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab{font-size:15px;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-20b827f5] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-20b827f5] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-20b827f5]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-20b827f5]{font-size:64px;color:#1890ff;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-20b827f5]{font-size:20px;font-weight:600;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-20b827f5]{font-size:14px;color:rgba(0,0,0,.65);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-20b827f5]{background:#0d1117}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-title[data-v-20b827f5]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-update-hint[data-v-20b827f5]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-20b827f5]:before{background:-webkit-gradient(linear,left top,right top,from(#0d1117),to(transparent));background:linear-gradient(90deg,#0d1117,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-20b827f5]:after{background:-webkit-gradient(linear,right top,left top,from(#0d1117),to(transparent));background:linear-gradient(270deg,#0d1117,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-20b827f5]{background:#161b22;border-color:#30363d;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card.market-predictionmarket[data-v-20b827f5]{background:linear-gradient(135deg,#161b22,#0d1419);border-left-color:#13c2c2}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-symbol[data-v-20b827f5]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-price[data-v-20b827f5],.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-reason[data-v-20b827f5]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-action[data-v-20b827f5]{color:#58a6ff}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-trade-btn[data-v-20b827f5]{background:linear-gradient(135deg,#58a6ff,#8957e5)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-20b827f5]:hover{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-20b827f5]{background:#161b22;border-color:#30363d}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-bar{border-bottom-color:#30363d}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab-active{color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-ink-bar{background-color:#58a6ff}
\ No newline at end of file
diff --git a/frontend/dist/css/38.973fab6f.css b/frontend/dist/css/38.973fab6f.css
new file mode 100644
index 0000000..ea7a701
--- /dev/null
+++ b/frontend/dist/css/38.973fab6f.css
@@ -0,0 +1 @@
+.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-webkit-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-monokai.CodeMirror{background:#272822;color:#f8f8f2}.cm-s-monokai div.CodeMirror-selected{background:#49483e}.cm-s-monokai .CodeMirror-line::selection,.cm-s-monokai .CodeMirror-line>span::selection,.cm-s-monokai .CodeMirror-line>span>span::selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-line::-moz-selection,.cm-s-monokai .CodeMirror-line>span::-moz-selection,.cm-s-monokai .CodeMirror-line>span>span::-moz-selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-gutters{background:#272822;border-right:0}.cm-s-monokai .CodeMirror-guttermarker{color:#fff}.cm-s-monokai .CodeMirror-guttermarker-subtle,.cm-s-monokai .CodeMirror-linenumber{color:#d0d0d0}.cm-s-monokai .CodeMirror-cursor{border-left:1px solid #f8f8f0}.cm-s-monokai span.cm-comment{color:#75715e}.cm-s-monokai span.cm-atom,.cm-s-monokai span.cm-number{color:#ae81ff}.cm-s-monokai span.cm-comment.cm-attribute{color:#97b757}.cm-s-monokai span.cm-comment.cm-def{color:#bc9262}.cm-s-monokai span.cm-comment.cm-tag{color:#bc6283}.cm-s-monokai span.cm-comment.cm-type{color:#5998a6}.cm-s-monokai span.cm-attribute,.cm-s-monokai span.cm-property{color:#a6e22e}.cm-s-monokai span.cm-keyword{color:#f92672}.cm-s-monokai span.cm-builtin{color:#66d9ef}.cm-s-monokai span.cm-string{color:#e6db74}.cm-s-monokai span.cm-variable{color:#f8f8f2}.cm-s-monokai span.cm-variable-2{color:#9effff}.cm-s-monokai span.cm-type,.cm-s-monokai span.cm-variable-3{color:#66d9ef}.cm-s-monokai span.cm-def{color:#fd971f}.cm-s-monokai span.cm-bracket{color:#f8f8f2}.cm-s-monokai span.cm-tag{color:#f92672}.cm-s-monokai span.cm-header,.cm-s-monokai span.cm-link{color:#ae81ff}.cm-s-monokai span.cm-error{background:#f92672;color:#f8f8f0}.cm-s-monokai .CodeMirror-activeline-background{background:#373831}.cm-s-monokai .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.cm-s-eclipse span.cm-meta{color:#ff1717}.cm-s-eclipse span.cm-keyword{line-height:1em;font-weight:700;color:#7f0055}.cm-s-eclipse span.cm-atom{color:#219}.cm-s-eclipse span.cm-number{color:#164}.cm-s-eclipse span.cm-def{color:#00f}.cm-s-eclipse span.cm-variable{color:#000}.cm-s-eclipse span.cm-type,.cm-s-eclipse span.cm-variable-2,.cm-s-eclipse span.cm-variable-3{color:#0000c0}.cm-s-eclipse span.cm-operator,.cm-s-eclipse span.cm-property{color:#000}.cm-s-eclipse span.cm-comment{color:#3f7f5f}.cm-s-eclipse span.cm-string{color:#2a00ff}.cm-s-eclipse span.cm-string-2{color:#f50}.cm-s-eclipse span.cm-qualifier{color:#555}.cm-s-eclipse span.cm-builtin{color:#30a}.cm-s-eclipse span.cm-bracket{color:#cc7}.cm-s-eclipse span.cm-tag{color:#170}.cm-s-eclipse span.cm-attribute{color:#00c}.cm-s-eclipse span.cm-link{color:#219}.cm-s-eclipse span.cm-error{color:red}.cm-s-eclipse .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-eclipse .CodeMirror-matchingbracket{outline:1px solid grey;color:#000!important}[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-58f93984]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.chart-wrapper[data-v-58f93984]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-58f93984]{background:#141414}.drawing-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.drawing-tool-btn[data-v-58f93984]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]{color:#d1d4dc}.drawing-tool-btn[data-v-58f93984]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]:hover{background:#252525;color:#13c2c2}.drawing-tool-btn.active[data-v-58f93984]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-58f93984]{background:#252525;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-58f93984]{margin:8px 0;height:20px}.indicator-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-58f93984]{background:#141414;border-bottom-color:#2a2a2a}.indicator-btn[data-v-58f93984]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-58f93984]{color:#d1d4dc;background:#252525;border-color:#2a2a2a}.indicator-btn[data-v-58f93984]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-58f93984]:hover{color:#13c2c2;border-color:#13c2c2;background:#252525}.indicator-btn.active[data-v-58f93984]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-58f93984]{color:#13c2c2;background:#252525;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-58f93984]{background:#141414}.chart-overlay[data-v-58f93984]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-58f93984]{background:hsla(0,0%,8%,.95)}.error-box[data-v-58f93984]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.hint-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.warning-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-58f93984]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-58f93984]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-58f93984]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-58f93984]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-58f93984]{color:#868993}.chart-left.theme-dark .hint-box[data-v-58f93984]{color:#d1d4dc}.hint-title[data-v-58f93984]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-58f93984]{color:#d1d4dc}.hint-desc[data-v-58f93984]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-58f93984]{color:#787b86}.history-loading-hint[data-v-58f93984]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)!important;border-color:#2a2a2a;color:#d1d4dc!important}.loading-text[data-v-58f93984]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px}.kline-chart-container[data-v-58f93984]{margin-left:0}.chart-left[data-v-58f93984]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-58f93984]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-58f93984]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-58f93984]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}[data-v-473e449c] .ant-form-item-label{white-space:normal;line-height:1.2}[data-v-473e449c] .ant-form-item-label>label{white-space:normal}[data-v-473e449c] .ant-form-item-control{min-width:0}.backtest-modal[data-v-473e449c] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.backtest-content[data-v-473e449c]{position:relative}.field-hint[data-v-473e449c]{margin-top:4px;font-size:12px;line-height:1.4;color:#8c8c8c}.section-title[data-v-473e449c]{font-size:15px;font-weight:600;color:#262626;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.section-title .anticon[data-v-473e449c]{color:#1890ff}.config-section[data-v-473e449c]{margin-bottom:24px}.precision-info[data-v-473e449c]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.date-quick-select[data-v-473e449c],.precision-info[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.date-quick-select[data-v-473e449c]{padding:8px 12px;background:#fafafa;border-radius:6px;border:1px solid #f0f0f0}.result-section[data-v-473e449c]{margin-top:24px}.metrics-cards[data-v-473e449c]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}@media (max-width:1200px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(4,1fr)}}@media (max-width:992px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(3,1fr)}}@media (max-width:576px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-473e449c]{background:#fafafa;border-radius:8px;padding:16px;text-align:center;-webkit-transition:all .3s;transition:all .3s}.metric-card[data-v-473e449c]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.1);box-shadow:0 2px 8px rgba(0,0,0,.1)}.metric-card.positive[data-v-473e449c]{background:linear-gradient(135deg,#f6ffed,#d9f7be)}.metric-card.positive .metric-value[data-v-473e449c]{color:#52c41a}.metric-card.negative[data-v-473e449c]{background:linear-gradient(135deg,#fff2f0,#ffccc7)}.metric-card.negative .metric-value[data-v-473e449c]{color:#f5222d}.metric-card .metric-label[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.metric-card .metric-value[data-v-473e449c]{font-size:20px;font-weight:700;color:#262626}.metric-card .metric-amount[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-top:4px}.chart-section[data-v-473e449c]{margin-bottom:24px}.chart-title[data-v-473e449c]{font-size:14px;font-weight:600;color:#595959;margin-bottom:12px}.equity-chart[data-v-473e449c]{width:100%;height:300px;border:1px solid #f0f0f0;border-radius:8px}.trades-section[data-v-473e449c]{margin-top:24px}.loading-overlay[data-v-473e449c]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.9);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:100;border-radius:8px}.loading-overlay .loading-content[data-v-473e449c]{text-align:center}.loading-overlay .loading-animation[data-v-473e449c]{margin-bottom:20px}.loading-overlay .chart-bars[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;height:60px;gap:6px}.loading-overlay .bar[data-v-473e449c]{width:8px;background:-webkit-gradient(linear,left top,left bottom,from(#1890ff),to(#52c41a));background:linear-gradient(180deg,#1890ff,#52c41a);border-radius:4px;-webkit-animation:barPulse-473e449c 1.2s ease-in-out infinite;animation:barPulse-473e449c 1.2s ease-in-out infinite}.loading-overlay .bar1[data-v-473e449c]{height:20px;-webkit-animation-delay:0s;animation-delay:0s}.loading-overlay .bar2[data-v-473e449c]{height:35px;-webkit-animation-delay:.1s;animation-delay:.1s}.loading-overlay .bar3[data-v-473e449c]{height:50px;-webkit-animation-delay:.2s;animation-delay:.2s}.loading-overlay .bar4[data-v-473e449c]{height:35px;-webkit-animation-delay:.3s;animation-delay:.3s}.loading-overlay .bar5[data-v-473e449c]{height:20px;-webkit-animation-delay:.4s;animation-delay:.4s}@-webkit-keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}@keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}.loading-overlay .loading-text[data-v-473e449c]{font-size:16px;font-weight:500;color:#1890ff;margin-bottom:8px}.loading-overlay .loading-subtext[data-v-473e449c]{font-size:13px;color:#666;-webkit-animation:fadeInOut-473e449c 2s ease-in-out infinite;animation:fadeInOut-473e449c 2s ease-in-out infinite}@-webkit-keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}@keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}.backtest-run-viewer[data-v-a484239a] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.metrics-cards[data-v-a484239a]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.metric-card[data-v-a484239a]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:12px}.metric-card.positive[data-v-a484239a]{border-color:rgba(82,196,26,.35)}.metric-card.negative[data-v-a484239a]{border-color:rgba(245,34,45,.35)}.metric-label[data-v-a484239a]{color:#8c8c8c;font-size:12px}.metric-value[data-v-a484239a]{font-size:18px;font-weight:600;margin-top:4px}.metric-amount[data-v-a484239a]{color:#8c8c8c;font-size:12px;margin-top:4px}.chart-section[data-v-a484239a]{margin-top:8px}.chart-title[data-v-a484239a]{font-weight:600;margin:8px 0;color:#262626}.equity-chart[data-v-a484239a]{width:100%;height:280px}.trades-section[data-v-a484239a]{margin-top:16px}.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.chart-container[data-v-211c2fea]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-211c2fea],.chart-header[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-211c2fea]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-211c2fea]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-211c2fea],.header-top[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-211c2fea]{gap:20px}.symbol-select[data-v-211c2fea]{width:220px}.symbol-select[data-v-211c2fea] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-211c2fea] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-211c2fea] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-211c2fea] .ant-select-arrow,.symbol-select[data-v-211c2fea] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-211c2fea]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-211c2fea]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-211c2fea]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-211c2fea]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-211c2fea]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-211c2fea]{color:#0ecb81}.price-info.color-down[data-v-211c2fea]{color:#f6465d}.symbol-price[data-v-211c2fea]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-211c2fea]{font-size:12px}.mobile-symbol-price[data-v-211c2fea]{display:none}.panel-header .theme-switcher[data-v-211c2fea]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-211c2fea],.panel-header .theme-toggle-btn[data-v-211c2fea]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-211c2fea]:hover,.panel-header .theme-toggle-btn[data-v-211c2fea]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-211c2fea],.panel-header .theme-toggle-btn.active[data-v-211c2fea]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-211c2fea],.panel-header .theme-toggle-btn .anticon[data-v-211c2fea]{font-size:16px}.chart-content[data-v-211c2fea]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-211c2fea],.chart-main-row[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-211c2fea]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-211c2fea]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-211c2fea],.indicators-panel[data-v-211c2fea]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-211c2fea]{height:100%}.panel-header[data-v-211c2fea]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-211c2fea]{margin-right:0}.panel-body[data-v-211c2fea]{padding:0;overflow:hidden}.indicator-section[data-v-211c2fea],.panel-body[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-211c2fea]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-211c2fea]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-211c2fea]{min-height:200px}.section-label[data-v-211c2fea]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-211c2fea],.section-label[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-211c2fea]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-211c2fea]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-211c2fea]{font-weight:500}.section-label .buy-indicator-btn[data-v-211c2fea]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-211c2fea]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-211c2fea]{display:none!important}}.section-content[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-211c2fea]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-211c2fea]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-211c2fea]{color:#1890ff}.indicator-card.indicator-active[data-v-211c2fea]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-211c2fea]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-211c2fea]{color:#52c41a}.indicator-card.disabled[data-v-211c2fea]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-211c2fea]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-211c2fea]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-211c2fea]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-211c2fea]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-211c2fea]{color:#999;font-size:12px}.card-action[data-v-211c2fea]:hover{color:#1890ff}.card-actions[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-211c2fea]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-211c2fea]{color:#1890ff}.action-icon.edit-icon[data-v-211c2fea]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-211c2fea]{color:#ff4d4f}.action-icon.delete-icon[data-v-211c2fea]:hover{color:#ff7875}.action-icon[data-v-211c2fea]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-211c2fea]{color:#52c41a}.action-icon.backtest-icon[data-v-211c2fea]{color:#722ed1}.action-icon.backtest-icon[data-v-211c2fea]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-211c2fea]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-211c2fea]:hover{color:#08979c}.action-icon.publish-icon[data-v-211c2fea]{color:#1890ff}.action-icon.publish-icon[data-v-211c2fea]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-211c2fea]{color:#52c41a}.action-icon.publish-icon.published[data-v-211c2fea]:hover{color:#73d13d}.action-icon.status-icon.status-normal[data-v-211c2fea]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-211c2fea]{color:#ff4d4f}.action-icon.expiry-icon[data-v-211c2fea]{color:#1890ff}.empty-indicators[data-v-211c2fea]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-211c2fea],.loading-indicators[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-211c2fea]{padding:20px}.custom-scrollbar[data-v-211c2fea]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-211c2fea]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-211c2fea]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-211c2fea]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-211c2fea]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-211c2fea]{padding:12px}.chart-header .header-top[data-v-211c2fea],.chart-header[data-v-211c2fea]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-211c2fea]{padding:0}.chart-header .header-left[data-v-211c2fea]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-211c2fea]{width:100%}.chart-header .search-section .symbol-select[data-v-211c2fea]{width:100%!important}.chart-header .timeframe-group[data-v-211c2fea]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-211c2fea]{display:none}.chart-content[data-v-211c2fea]{overflow-y:auto}.chart-content[data-v-211c2fea],.chart-main-row[data-v-211c2fea]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-211c2fea]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-211c2fea],.mobile-symbol-price[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-211c2fea]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-211c2fea]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-211c2fea]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-211c2fea]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-211c2fea]{font-size:14px;font-weight:500}kline-chart[data-v-211c2fea]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-211c2fea] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-211c2fea]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-211c2fea]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-211c2fea]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-211c2fea]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-211c2fea]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea],.chart-right .indicators-panel .panel-body[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-211c2fea],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-211c2fea]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-211c2fea],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-211c2fea]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-211c2fea]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-211c2fea]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-211c2fea]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-211c2fea]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-211c2fea],.chart-right .indicators-panel .indicator-card .card-params[data-v-211c2fea]{font-size:11px}}.qt-header-btn[data-v-211c2fea]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-211c2fea]:focus,.qt-header-btn[data-v-211c2fea]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-211c2fea]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-211c2fea]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-211c2fea],body.dark,body.realdark{background:#141414;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-211c2fea],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-211c2fea],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-211c2fea],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-211c2fea],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-211c2fea]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-211c2fea]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-211c2fea],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-211c2fea]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-selection,body.dark,body.realdark{background-color:#1c1c1c;border-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-211c2fea],body.dark,body.realdark{background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff;background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-211c2fea],body.dark,body.realdark{color:#1890ff;background:#1c1c1c;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-211c2fea],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-211c2fea],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-211c2fea],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-211c2fea],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-left-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-211c2fea],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-211c2fea],body.dark,body.realdark{color:#868993;background:#2a2a2a;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-211c2fea]:hover,body.dark,body.realdark{background:#2a2a2a;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-211c2fea],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-211c2fea]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-211c2fea],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-211c2fea],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-211c2fea],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-211c2fea],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-211c2fea],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-211c2fea]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-211c2fea],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-211c2fea],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-211c2fea],body.dark,body.realdark{border-top-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-211c2fea],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-211c2fea],body.dark,body.realdark{border-top-color:#2a2a2a;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-211c2fea],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-211c2fea],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-211c2fea],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-211c2fea],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-211c2fea]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-211c2fea],.add-stock-modal-content .search-results-section[data-v-211c2fea],.add-stock-modal-content .symbol-search-section[data-v-211c2fea]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-211c2fea],.add-stock-modal-content .search-results-section .section-title[data-v-211c2fea]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-211c2fea]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-211c2fea]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-211c2fea]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-211c2fea]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-211c2fea]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-211c2fea]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-211c2fea],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-211c2fea],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2a2a}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-211c2fea]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-211c2fea],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-211c2fea]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-211c2fea]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-211c2fea]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-211c2fea]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-211c2fea]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-211c2fea]{color:#d0d0d0}
\ No newline at end of file
diff --git a/frontend/dist/css/397.20e2b587.css b/frontend/dist/css/397.20e2b587.css
deleted file mode 100644
index b52c133..0000000
--- a/frontend/dist/css/397.20e2b587.css
+++ /dev/null
@@ -1 +0,0 @@
-.settings-page[data-v-20857e25]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.settings-page .restart-alert[data-v-20857e25]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-20857e25]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-20857e25]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.settings-page .settings-header .page-title .anticon[data-v-20857e25]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-20857e25]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-20857e25]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-20857e25]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-20857e25]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-20857e25]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-20857e25]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-20857e25]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-20857e25] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-20857e25] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-20857e25]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-20857e25]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-20857e25]{background:transparent}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-20857e25] .ant-input,.settings-page .settings-form[data-v-20857e25] .ant-input-number,.settings-page .settings-form[data-v-20857e25] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-20857e25] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-20857e25]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-20857e25]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-20857e25]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-20857e25]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-20857e25]{background:-webkit-gradient(linear,left top,left bottom,from(#0d1117),to(#161b22));background:linear-gradient(180deg,#0d1117,#161b22)}.settings-page.theme-dark .restart-alert[data-v-20857e25]{background:#2d333b;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-20857e25]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-20857e25]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item{background:#1e222d;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252a36,#1e222d);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1e222d}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection{background:#0d1117;border-color:#30363d;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form .field-default[data-v-20857e25]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-20857e25]{background:#1e222d;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-20857e25]{padding:16px}.settings-page .settings-footer[data-v-20857e25]{left:0;padding:12px 16px}}
\ No newline at end of file
diff --git a/frontend/dist/css/40.02ed56c8.css b/frontend/dist/css/40.02ed56c8.css
deleted file mode 100644
index 0244b44..0000000
--- a/frontend/dist/css/40.02ed56c8.css
+++ /dev/null
@@ -1 +0,0 @@
-.dashboard-pro[data-v-16dc1b35]{min-height:100vh;padding:20px;background:#f8fafc;-webkit-transition:background .3s;transition:background .3s}.dashboard-pro.theme-dark[data-v-16dc1b35]{background:#0f172a}.dashboard-pro.theme-dark .kpi-card[data-v-16dc1b35]{background:#1e293b;border-color:#334155}.dashboard-pro.theme-dark .kpi-card .kpi-label[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .kpi-card .kpi-value .amount[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .kpi-card .kpi-sub[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .chart-panel[data-v-16dc1b35],.dashboard-pro.theme-dark .table-panel[data-v-16dc1b35]{background:#1e293b;border-color:#334155}.dashboard-pro.theme-dark .chart-panel .panel-header[data-v-16dc1b35],.dashboard-pro.theme-dark .table-panel .panel-header[data-v-16dc1b35]{border-color:#334155}.dashboard-pro.theme-dark .chart-panel .panel-header .panel-title[data-v-16dc1b35],.dashboard-pro.theme-dark .table-panel .panel-header .panel-title[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card[data-v-16dc1b35]{background:rgba(51,65,85,.5);border-color:#334155}.dashboard-pro.theme-dark .ranking-card .rank-name[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .ranking-card .rank-stats label[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .calendar-nav .current-month[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .calendar-nav .ant-btn-link[data-v-16dc1b35],.dashboard-pro.theme-dark .profit-calendar .calendar-empty[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .profit-calendar .month-summary[data-v-16dc1b35]{background:rgba(51,65,85,.5)}.dashboard-pro.theme-dark .profit-calendar .calendar-weekdays .weekday[data-v-16dc1b35],.dashboard-pro.theme-dark .profit-calendar .month-summary .summary-label[data-v-16dc1b35]{color:#94a3b8}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell[data-v-16dc1b35]{background:rgba(51,65,85,.3)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-16dc1b35]{background:rgba(51,65,85,.2)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.profit[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(34,197,94,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.loss[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(239,68,68,.15),rgba(239,68,68,.25))}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell.zero[data-v-16dc1b35]{background:rgba(100,116,139,.2)}.dashboard-pro.theme-dark .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-16dc1b35]{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table{background:transparent;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-thead>tr>th{background:rgba(51,65,85,.5);color:#94a3b8;border-color:#334155}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-tbody>tr>td{border-color:#334155;color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-tbody>tr:hover>td{background:rgba(51,65,85,.3)}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-placeholder{background:transparent}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-table-placeholder .ant-empty-description{color:#94a3b8}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-item{background:#1e293b;border-color:#334155}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-item a{color:#f1f5f9}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:#3b82f6;border-color:#3b82f6}.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.dashboard-pro.theme-dark .pro-table[data-v-16dc1b35] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1e293b;border-color:#334155;color:#f1f5f9}.dashboard-pro .kpi-grid[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}.dashboard-pro .kpi-card[data-v-16dc1b35]{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px;overflow:hidden;-webkit-transition:all .3s cubic-bezier(.4,0,.2,1);transition:all .3s cubic-bezier(.4,0,.2,1)}.dashboard-pro .kpi-card[data-v-16dc1b35]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 10px 40px rgba(0,0,0,.1);box-shadow:0 10px 40px rgba(0,0,0,.1)}.dashboard-pro .kpi-card.clickable[data-v-16dc1b35]{cursor:pointer}.dashboard-pro .kpi-card.clickable .card-arrow[data-v-16dc1b35]{position:absolute;right:16px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:.4;-webkit-transition:all .3s;transition:all .3s}.dashboard-pro .kpi-card.clickable:hover .card-arrow[data-v-16dc1b35]{opacity:1;right:12px}.dashboard-pro .kpi-card .kpi-glow[data-v-16dc1b35]{position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(59,130,246,.15) 0,transparent 70%);pointer-events:none}.dashboard-pro .kpi-card .kpi-content[data-v-16dc1b35]{position:relative;z-index:1}.dashboard-pro .kpi-card .kpi-header[data-v-16dc1b35]{gap:8px;margin-bottom:12px}.dashboard-pro .kpi-card .kpi-header[data-v-16dc1b35],.dashboard-pro .kpi-card .kpi-icon[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .kpi-card .kpi-icon[data-v-16dc1b35]{width:32px;height:32px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;background:rgba(59,130,246,.1);color:#3b82f6;font-size:16px}.dashboard-pro .kpi-card .kpi-label[data-v-16dc1b35]{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .kpi-card .kpi-value[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:2px}.dashboard-pro .kpi-card .kpi-value .currency[data-v-16dc1b35]{font-size:18px;font-weight:500;color:#64748b}.dashboard-pro .kpi-card .kpi-value .amount[data-v-16dc1b35]{font-size:28px;font-weight:700;color:#1e293b;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}.dashboard-pro .kpi-card .kpi-value .unit[data-v-16dc1b35]{font-size:14px;font-weight:500;color:#64748b;margin-left:4px}.dashboard-pro .kpi-card .kpi-sub[data-v-16dc1b35]{margin-top:8px;font-size:12px;color:#64748b}.dashboard-pro .kpi-card .kpi-sub .label[data-v-16dc1b35]{margin:0 2px}.dashboard-pro .kpi-card .kpi-sub .divider[data-v-16dc1b35]{margin:0 6px;opacity:.5}.dashboard-pro .kpi-card .kpi-sub .highlight[data-v-16dc1b35]{font-weight:600;color:#3b82f6}.dashboard-pro .kpi-card.kpi-primary[data-v-16dc1b35]{background:linear-gradient(135deg,#1e40af,#3b82f6 50%,#60a5fa);border:none}.dashboard-pro .kpi-card.kpi-primary .kpi-icon[data-v-16dc1b35]{background:hsla(0,0%,100%,.2);color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-label[data-v-16dc1b35]{color:hsla(0,0%,100%,.8)}.dashboard-pro .kpi-card.kpi-primary .kpi-value .amount[data-v-16dc1b35],.dashboard-pro .kpi-card.kpi-primary .kpi-value .currency[data-v-16dc1b35],.dashboard-pro .kpi-card.kpi-primary .kpi-value .unit[data-v-16dc1b35]{color:#fff}.dashboard-pro .kpi-card.kpi-primary .kpi-sub[data-v-16dc1b35]{color:hsla(0,0%,100%,.7)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-16dc1b35]{position:absolute;right:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:60px;height:60px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg[data-v-16dc1b35]{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-bg[data-v-16dc1b35]{fill:none;stroke:rgba(16,185,129,.15);stroke-width:3}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring svg .ring-progress[data-v-16dc1b35]{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;-webkit-transition:stroke-dasharray .5s ease;transition:stroke-dasharray .5s ease}.dashboard-pro .kpi-card.kpi-win-rate .kpi-icon[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .kpi-card.kpi-profit-factor .kpi-icon[data-v-16dc1b35]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .kpi-card.kpi-drawdown .kpi-icon[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .kpi-card.kpi-drawdown .kpi-value .amount[data-v-16dc1b35]{color:#ef4444}.dashboard-pro .kpi-card.kpi-trades .kpi-icon[data-v-16dc1b35]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .kpi-card.kpi-strategies .kpi-icon[data-v-16dc1b35]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .chart-row[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .chart-row[data-v-16dc1b35]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .chart-panel[data-v-16dc1b35]{background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .chart-panel.chart-main[data-v-16dc1b35]{-webkit-box-flex:2;-ms-flex:2;flex:2}.dashboard-pro .chart-panel.chart-side[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:300px}.dashboard-pro .chart-panel.chart-half[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1}.dashboard-pro .chart-panel .panel-header[data-v-16dc1b35]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .chart-panel .panel-header[data-v-16dc1b35],.dashboard-pro .chart-panel .panel-title[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .chart-panel .panel-title[data-v-16dc1b35]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .chart-panel .panel-title .anticon[data-v-16dc1b35]{color:#3b82f6}.dashboard-pro .chart-panel .panel-legend[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b}.dashboard-pro .chart-panel .panel-legend .legend-item[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot[data-v-16dc1b35]{width:10px;height:10px;border-radius:2px}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.bar[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,left bottom,from(#34d399),to(#10b981));background:linear-gradient(180deg,#34d399,#10b981)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.line[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,right top,from(#3b82f6),to(#8b5cf6));background:linear-gradient(90deg,#3b82f6,#8b5cf6)}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.loss[data-v-16dc1b35]{background:#ef4444}.dashboard-pro .chart-panel .panel-legend .legend-item .dot.profit[data-v-16dc1b35]{background:#10b981}.dashboard-pro .chart-panel .panel-legend.calendar-legend[data-v-16dc1b35]{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.dashboard-pro .chart-panel .panel-legend.calendar-legend .legend-gradient[data-v-16dc1b35]{width:80px;height:10px;border-radius:3px;background:-webkit-gradient(linear,left top,right top,from(#ef4444),color-stop(#fca5a5),color-stop(#f4f4f5),color-stop(#86efac),to(#22c55e));background:linear-gradient(90deg,#ef4444,#fca5a5,#f4f4f5,#86efac,#22c55e)}.dashboard-pro .chart-panel .panel-badge[data-v-16dc1b35]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .chart-panel .chart-body[data-v-16dc1b35]{height:320px;padding:16px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-16dc1b35]{height:220px}.dashboard-pro .chart-panel .chart-body.calendar-chart[data-v-16dc1b35]{height:280px}.dashboard-pro .chart-panel .calendar-nav[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.dashboard-pro .chart-panel .calendar-nav .current-month[data-v-16dc1b35]{font-size:14px;font-weight:600;color:#1e293b;min-width:80px;text-align:center}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-16dc1b35]{padding:0;height:auto;color:#64748b}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-16dc1b35]:hover:not(:disabled){color:#3b82f6}.dashboard-pro .chart-panel .calendar-nav .ant-btn-link[data-v-16dc1b35]:disabled{opacity:.3}.dashboard-pro .chart-panel .profit-calendar[data-v-16dc1b35]{padding:12px 16px;overflow:hidden}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-16dc1b35],.dashboard-pro .chart-panel .profit-calendar[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dashboard-pro .chart-panel .profit-calendar .calendar-empty[data-v-16dc1b35]{height:280px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#64748b}.dashboard-pro .chart-panel .profit-calendar .calendar-empty .anticon[data-v-16dc1b35]{font-size:40px;margin-bottom:10px;opacity:.3}.dashboard-pro .chart-panel .profit-calendar .month-summary[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:20px;margin-bottom:10px;padding:8px 12px;background:rgba(241,245,249,.5);border-radius:8px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:2px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-label[data-v-16dc1b35]{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:.5px}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value[data-v-16dc1b35]{font-size:15px;font-weight:700;font-family:JetBrains Mono,monospace}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.positive[data-v-16dc1b35]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .month-summary .summary-item .summary-value.negative[data-v-16dc1b35]{color:#ef4444}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}.dashboard-pro .chart-panel .profit-calendar .calendar-weekdays .weekday[data-v-16dc1b35]{text-align:center;font-size:10px;font-weight:600;color:#64748b;padding:4px 0}.dashboard-pro .chart-panel .profit-calendar .calendar-grid[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell[data-v-16dc1b35]{height:36px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:6px;background:rgba(241,245,249,.5);border:1px solid transparent;-webkit-transition:all .2s ease;transition:all .2s ease;position:relative}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.empty[data-v-16dc1b35]{background:transparent;border:none}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.no-data[data-v-16dc1b35]{background:rgba(241,245,249,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(34,197,94,.12),rgba(34,197,94,.2));border-color:rgba(34,197,94,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.profit[data-v-16dc1b35]:hover{background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(34,197,94,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(34,197,94,.2);box-shadow:0 4px 12px rgba(34,197,94,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-16dc1b35]{background:linear-gradient(135deg,rgba(239,68,68,.12),rgba(239,68,68,.2));border-color:rgba(239,68,68,.3)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.loss[data-v-16dc1b35]:hover{background:linear-gradient(135deg,rgba(239,68,68,.2),rgba(239,68,68,.3));-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(239,68,68,.2);box-shadow:0 4px 12px rgba(239,68,68,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell.zero[data-v-16dc1b35]{background:hsla(240,5%,65%,.1);border-color:hsla(240,5%,65%,.2)}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-number[data-v-16dc1b35]{font-size:11px;font-weight:600;color:#1e293b;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit[data-v-16dc1b35]{font-size:9px;font-weight:600;font-family:JetBrains Mono,monospace;margin-top:1px;line-height:1}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.positive[data-v-16dc1b35]{color:#10b981}.dashboard-pro .chart-panel .profit-calendar .calendar-grid .calendar-cell .day-profit.negative[data-v-16dc1b35]{color:#ef4444}.dashboard-pro .strategy-ranking[data-v-16dc1b35]{padding:16px}.dashboard-pro .strategy-ranking .empty-state[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:40px;color:#64748b}.dashboard-pro .strategy-ranking .empty-state .anticon[data-v-16dc1b35]{font-size:40px;margin-bottom:12px;opacity:.3}.dashboard-pro .strategy-ranking .ranking-grid[data-v-16dc1b35]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.dashboard-pro .strategy-ranking .ranking-card[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:14px 16px;background:rgba(241,245,249,.5);border:1px solid #e2e8f0;border-radius:12px;position:relative;overflow:hidden}.dashboard-pro .strategy-ranking .ranking-card.rank-top[data-v-16dc1b35]{border-color:transparent;background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(139,92,246,.08))}.dashboard-pro .strategy-ranking .ranking-card .rank-badge[data-v-16dc1b35]{width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:8px;font-size:12px;font-weight:700;background:#64748b;color:#fff;-ms-flex-negative:0;flex-shrink:0}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-1[data-v-16dc1b35]{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-2[data-v-16dc1b35]{background:linear-gradient(135deg,#9ca3af,#6b7280)}.dashboard-pro .strategy-ranking .ranking-card .rank-badge.rank-3[data-v-16dc1b35]{background:linear-gradient(135deg,#cd7f32,#b87333)}.dashboard-pro .strategy-ranking .ranking-card .rank-info[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-name[data-v-16dc1b35]{font-size:13px;font-weight:600;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-ms-flex-wrap:wrap;flex-wrap:wrap}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat[data-v-16dc1b35]{font-size:11px}.dashboard-pro .strategy-ranking .ranking-card .rank-info .rank-stats .stat label[data-v-16dc1b35]{color:#64748b;margin-right:4px}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar[data-v-16dc1b35]{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(0,0,0,.05)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill[data-v-16dc1b35]{height:100%;border-radius:0 3px 3px 0;-webkit-transition:width .5s ease;transition:width .5s ease}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.positive[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,right top,from(#10b981),to(#34d399));background:linear-gradient(90deg,#10b981,#34d399)}.dashboard-pro .strategy-ranking .ranking-card .rank-pnl-bar .bar-fill.negative[data-v-16dc1b35]{background:-webkit-gradient(linear,left top,right top,from(#ef4444),to(#f87171));background:linear-gradient(90deg,#ef4444,#f87171)}.dashboard-pro .table-row[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin-bottom:16px}@media (max-width:1024px){.dashboard-pro .table-row[data-v-16dc1b35]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.dashboard-pro .table-panel[data-v-16dc1b35]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.dashboard-pro .table-panel .panel-header[data-v-16dc1b35]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.dashboard-pro .table-panel .panel-header[data-v-16dc1b35],.dashboard-pro .table-panel .panel-title[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dashboard-pro .table-panel .panel-title[data-v-16dc1b35]{gap:8px;font-size:14px;font-weight:600;color:#1e293b}.dashboard-pro .table-panel .panel-title .anticon[data-v-16dc1b35]{color:#3b82f6}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-16dc1b35]{margin-left:8px;font-size:16px;cursor:pointer;color:#10b981;-webkit-transition:all .2s;transition:all .2s}.dashboard-pro .table-panel .panel-title .sound-toggle[data-v-16dc1b35]:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.dashboard-pro .table-panel .panel-title .sound-toggle.sound-off[data-v-16dc1b35]{color:#64748b}.dashboard-pro .table-panel .panel-badge[data-v-16dc1b35]{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.dashboard-pro .orders-panel[data-v-16dc1b35]{margin-bottom:20px}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table{font-size:13px}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table-thead>tr>th{background:rgba(241,245,249,.8);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#64748b;border-bottom:1px solid #e2e8f0;padding:12px 16px}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table-tbody>tr>td{padding:12px 16px;border-bottom:1px solid #e2e8f0}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-table-tbody>tr:hover>td{background:rgba(59,130,246,.04)}.dashboard-pro .pro-table[data-v-16dc1b35] .ant-pagination{padding:12px 16px;margin:0}.dashboard-pro .symbol-cell .symbol-name[data-v-16dc1b35]{font-weight:600;display:block}.dashboard-pro .symbol-cell .symbol-strategy[data-v-16dc1b35]{font-size:11px;color:#64748b}.dashboard-pro .side-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .side-tag.long[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .side-tag.short[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .type-tag.long[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .type-tag.short[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .type-tag.close-long[data-v-16dc1b35]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .type-tag.close-short[data-v-16dc1b35]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .symbol-tag[data-v-16dc1b35]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .exchange-tag[data-v-16dc1b35],.dashboard-pro .symbol-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .exchange-tag.binance[data-v-16dc1b35]{background:rgba(240,185,11,.1);color:#f0b90b}.dashboard-pro .exchange-tag.okx[data-v-16dc1b35]{background:rgba(139,92,246,.1);color:#8b5cf6}.dashboard-pro .exchange-tag.bitget[data-v-16dc1b35]{background:rgba(6,182,212,.1);color:#06b6d4}.dashboard-pro .exchange-tag.signal[data-v-16dc1b35]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .market-type[data-v-16dc1b35]{font-size:10px;color:#64748b;margin-top:2px}.dashboard-pro .status-tag[data-v-16dc1b35]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.dashboard-pro .status-tag.pending[data-v-16dc1b35]{background:rgba(245,158,11,.1);color:#f59e0b}.dashboard-pro .status-tag.processing[data-v-16dc1b35]{background:rgba(59,130,246,.1);color:#3b82f6}.dashboard-pro .status-tag.completed[data-v-16dc1b35]{background:rgba(16,185,129,.1);color:#10b981}.dashboard-pro .status-tag.failed[data-v-16dc1b35]{background:rgba(239,68,68,.1);color:#ef4444}.dashboard-pro .status-tag.cancelled[data-v-16dc1b35]{background:rgba(100,116,139,.1);color:#64748b}.dashboard-pro .error-hint[data-v-16dc1b35]{font-size:11px;color:#ef4444;margin-top:4px;cursor:pointer}.dashboard-pro .error-hint .anticon[data-v-16dc1b35]{margin-right:4px}.dashboard-pro .notify-icons[data-v-16dc1b35]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.dashboard-pro .notify-icons .notify-icon[data-v-16dc1b35]{color:#64748b;font-size:14px}.dashboard-pro .pnl-cell[data-v-16dc1b35]{text-align:right}.dashboard-pro .pnl-cell .pnl-percent[data-v-16dc1b35]{display:block;font-size:11px}.dashboard-pro .time-cell[data-v-16dc1b35]{font-size:12px;color:#64748b}.dashboard-pro .sub-text[data-v-16dc1b35]{font-size:11px;color:#64748b}.dashboard-pro .text-muted[data-v-16dc1b35]{color:#64748b}.dashboard-pro .positive[data-v-16dc1b35]{color:#10b981}.dashboard-pro .negative[data-v-16dc1b35]{color:#ef4444}@media (max-width:768px){.dashboard-pro[data-v-16dc1b35]{padding:12px}.dashboard-pro .kpi-grid[data-v-16dc1b35]{grid-template-columns:repeat(2,1fr);gap:10px}.dashboard-pro .kpi-card[data-v-16dc1b35]{padding:14px}.dashboard-pro .kpi-card .kpi-value .amount[data-v-16dc1b35]{font-size:22px}.dashboard-pro .kpi-card.kpi-win-rate .kpi-ring[data-v-16dc1b35]{width:48px;height:48px;right:8px}.dashboard-pro .chart-panel .chart-body[data-v-16dc1b35]{height:260px;padding:12px}.dashboard-pro .chart-panel .chart-body.chart-sm[data-v-16dc1b35]{height:180px}.dashboard-pro .ranking-grid[data-v-16dc1b35]{grid-template-columns:1fr}}
\ No newline at end of file
diff --git a/frontend/dist/css/447.1113ae8a.css b/frontend/dist/css/447.1113ae8a.css
deleted file mode 100644
index 3433139..0000000
--- a/frontend/dist/css/447.1113ae8a.css
+++ /dev/null
@@ -1 +0,0 @@
-.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-webkit-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-monokai.CodeMirror{background:#272822;color:#f8f8f2}.cm-s-monokai div.CodeMirror-selected{background:#49483e}.cm-s-monokai .CodeMirror-line::selection,.cm-s-monokai .CodeMirror-line>span::selection,.cm-s-monokai .CodeMirror-line>span>span::selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-line::-moz-selection,.cm-s-monokai .CodeMirror-line>span::-moz-selection,.cm-s-monokai .CodeMirror-line>span>span::-moz-selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-gutters{background:#272822;border-right:0}.cm-s-monokai .CodeMirror-guttermarker{color:#fff}.cm-s-monokai .CodeMirror-guttermarker-subtle,.cm-s-monokai .CodeMirror-linenumber{color:#d0d0d0}.cm-s-monokai .CodeMirror-cursor{border-left:1px solid #f8f8f0}.cm-s-monokai span.cm-comment{color:#75715e}.cm-s-monokai span.cm-atom,.cm-s-monokai span.cm-number{color:#ae81ff}.cm-s-monokai span.cm-comment.cm-attribute{color:#97b757}.cm-s-monokai span.cm-comment.cm-def{color:#bc9262}.cm-s-monokai span.cm-comment.cm-tag{color:#bc6283}.cm-s-monokai span.cm-comment.cm-type{color:#5998a6}.cm-s-monokai span.cm-attribute,.cm-s-monokai span.cm-property{color:#a6e22e}.cm-s-monokai span.cm-keyword{color:#f92672}.cm-s-monokai span.cm-builtin{color:#66d9ef}.cm-s-monokai span.cm-string{color:#e6db74}.cm-s-monokai span.cm-variable{color:#f8f8f2}.cm-s-monokai span.cm-variable-2{color:#9effff}.cm-s-monokai span.cm-type,.cm-s-monokai span.cm-variable-3{color:#66d9ef}.cm-s-monokai span.cm-def{color:#fd971f}.cm-s-monokai span.cm-bracket{color:#f8f8f2}.cm-s-monokai span.cm-tag{color:#f92672}.cm-s-monokai span.cm-header,.cm-s-monokai span.cm-link{color:#ae81ff}.cm-s-monokai span.cm-error{background:#f92672;color:#f8f8f0}.cm-s-monokai .CodeMirror-activeline-background{background:#373831}.cm-s-monokai .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.cm-s-eclipse span.cm-meta{color:#ff1717}.cm-s-eclipse span.cm-keyword{line-height:1em;font-weight:700;color:#7f0055}.cm-s-eclipse span.cm-atom{color:#219}.cm-s-eclipse span.cm-number{color:#164}.cm-s-eclipse span.cm-def{color:#00f}.cm-s-eclipse span.cm-variable{color:#000}.cm-s-eclipse span.cm-type,.cm-s-eclipse span.cm-variable-2,.cm-s-eclipse span.cm-variable-3{color:#0000c0}.cm-s-eclipse span.cm-operator,.cm-s-eclipse span.cm-property{color:#000}.cm-s-eclipse span.cm-comment{color:#3f7f5f}.cm-s-eclipse span.cm-string{color:#2a00ff}.cm-s-eclipse span.cm-string-2{color:#f50}.cm-s-eclipse span.cm-qualifier{color:#555}.cm-s-eclipse span.cm-builtin{color:#30a}.cm-s-eclipse span.cm-bracket{color:#cc7}.cm-s-eclipse span.cm-tag{color:#170}.cm-s-eclipse span.cm-attribute{color:#00c}.cm-s-eclipse span.cm-link{color:#219}.cm-s-eclipse span.cm-error{color:red}.cm-s-eclipse .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-eclipse .CodeMirror-matchingbracket{outline:1px solid grey;color:#000!important}[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-5f0b12e1]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-5f0b12e1]{background:#131722;border-right-color:#2a2e39}.chart-wrapper[data-v-5f0b12e1]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-5f0b12e1]{background:#131722}.drawing-toolbar[data-v-5f0b12e1]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-5f0b12e1]{background:#131722;border-right-color:#2a2e39}.drawing-tool-btn[data-v-5f0b12e1]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-5f0b12e1]{color:#d1d4dc}.drawing-tool-btn[data-v-5f0b12e1]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-5f0b12e1]:hover{background:#1f2943;color:#13c2c2}.drawing-tool-btn.active[data-v-5f0b12e1]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-5f0b12e1]{background:#1f2943;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-5f0b12e1]{margin:8px 0;height:20px}.indicator-toolbar[data-v-5f0b12e1]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-5f0b12e1]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-5f0b12e1]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-5f0b12e1]{background:#131722;border-bottom-color:#2a2e39}.indicator-btn[data-v-5f0b12e1]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-5f0b12e1]{color:#d1d4dc;background:#1f2943;border-color:#2a2e39}.indicator-btn[data-v-5f0b12e1]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-5f0b12e1]:hover{color:#13c2c2;border-color:#13c2c2;background:#1f2943}.indicator-btn.active[data-v-5f0b12e1]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-5f0b12e1]{color:#13c2c2;background:#1f2943;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-5f0b12e1]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-5f0b12e1]{background:#131722}.chart-overlay[data-v-5f0b12e1]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-5f0b12e1]{background:rgba(19,23,34,.95)}.error-box[data-v-5f0b12e1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-5f0b12e1]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-5f0b12e1]{background:rgba(19,23,34,.98)}.hint-box[data-v-5f0b12e1]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-5f0b12e1]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-5f0b12e1]{background:rgba(19,23,34,.98)}.warning-box[data-v-5f0b12e1]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-5f0b12e1]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-5f0b12e1]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-5f0b12e1]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-5f0b12e1]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-5f0b12e1]{color:#868993}.chart-left.theme-dark .hint-box[data-v-5f0b12e1]{color:#d1d4dc}.hint-title[data-v-5f0b12e1]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-5f0b12e1]{color:#d1d4dc}.hint-desc[data-v-5f0b12e1]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-5f0b12e1]{color:#787b86}.history-loading-hint[data-v-5f0b12e1]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-5f0b12e1]{background:rgba(19,23,34,.98)!important;border-color:#2a2e39;color:#d1d4dc!important}.loading-text[data-v-5f0b12e1]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-5f0b12e1]{display:none}.indicator-toolbar[data-v-5f0b12e1]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-5f0b12e1]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-5f0b12e1]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-5f0b12e1]{display:none}.indicator-toolbar[data-v-5f0b12e1]{padding-left:12px}.kline-chart-container[data-v-5f0b12e1]{margin-left:0}.chart-left[data-v-5f0b12e1]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-5f0b12e1],.kline-chart-container[data-v-5f0b12e1]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-5f0b12e1]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-5f0b12e1],.kline-chart-container[data-v-5f0b12e1]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-5f0b12e1]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-5f0b12e1]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-5f0b12e1]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-5f0b12e1]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-5f0b12e1]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-5f0b12e1]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}[data-v-473e449c] .ant-form-item-label{white-space:normal;line-height:1.2}[data-v-473e449c] .ant-form-item-label>label{white-space:normal}[data-v-473e449c] .ant-form-item-control{min-width:0}.backtest-modal[data-v-473e449c] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.backtest-content[data-v-473e449c]{position:relative}.field-hint[data-v-473e449c]{margin-top:4px;font-size:12px;line-height:1.4;color:#8c8c8c}.section-title[data-v-473e449c]{font-size:15px;font-weight:600;color:#262626;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.section-title .anticon[data-v-473e449c]{color:#1890ff}.config-section[data-v-473e449c]{margin-bottom:24px}.precision-info[data-v-473e449c]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.date-quick-select[data-v-473e449c],.precision-info[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.date-quick-select[data-v-473e449c]{padding:8px 12px;background:#fafafa;border-radius:6px;border:1px solid #f0f0f0}.result-section[data-v-473e449c]{margin-top:24px}.metrics-cards[data-v-473e449c]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}@media (max-width:1200px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(4,1fr)}}@media (max-width:992px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(3,1fr)}}@media (max-width:576px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-473e449c]{background:#fafafa;border-radius:8px;padding:16px;text-align:center;-webkit-transition:all .3s;transition:all .3s}.metric-card[data-v-473e449c]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.1);box-shadow:0 2px 8px rgba(0,0,0,.1)}.metric-card.positive[data-v-473e449c]{background:linear-gradient(135deg,#f6ffed,#d9f7be)}.metric-card.positive .metric-value[data-v-473e449c]{color:#52c41a}.metric-card.negative[data-v-473e449c]{background:linear-gradient(135deg,#fff2f0,#ffccc7)}.metric-card.negative .metric-value[data-v-473e449c]{color:#f5222d}.metric-card .metric-label[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.metric-card .metric-value[data-v-473e449c]{font-size:20px;font-weight:700;color:#262626}.metric-card .metric-amount[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-top:4px}.chart-section[data-v-473e449c]{margin-bottom:24px}.chart-title[data-v-473e449c]{font-size:14px;font-weight:600;color:#595959;margin-bottom:12px}.equity-chart[data-v-473e449c]{width:100%;height:300px;border:1px solid #f0f0f0;border-radius:8px}.trades-section[data-v-473e449c]{margin-top:24px}.loading-overlay[data-v-473e449c]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.9);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:100;border-radius:8px}.loading-overlay .loading-content[data-v-473e449c]{text-align:center}.loading-overlay .loading-animation[data-v-473e449c]{margin-bottom:20px}.loading-overlay .chart-bars[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;height:60px;gap:6px}.loading-overlay .bar[data-v-473e449c]{width:8px;background:-webkit-gradient(linear,left top,left bottom,from(#1890ff),to(#52c41a));background:linear-gradient(180deg,#1890ff,#52c41a);border-radius:4px;-webkit-animation:barPulse-473e449c 1.2s ease-in-out infinite;animation:barPulse-473e449c 1.2s ease-in-out infinite}.loading-overlay .bar1[data-v-473e449c]{height:20px;-webkit-animation-delay:0s;animation-delay:0s}.loading-overlay .bar2[data-v-473e449c]{height:35px;-webkit-animation-delay:.1s;animation-delay:.1s}.loading-overlay .bar3[data-v-473e449c]{height:50px;-webkit-animation-delay:.2s;animation-delay:.2s}.loading-overlay .bar4[data-v-473e449c]{height:35px;-webkit-animation-delay:.3s;animation-delay:.3s}.loading-overlay .bar5[data-v-473e449c]{height:20px;-webkit-animation-delay:.4s;animation-delay:.4s}@-webkit-keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}@keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}.loading-overlay .loading-text[data-v-473e449c]{font-size:16px;font-weight:500;color:#1890ff;margin-bottom:8px}.loading-overlay .loading-subtext[data-v-473e449c]{font-size:13px;color:#666;-webkit-animation:fadeInOut-473e449c 2s ease-in-out infinite;animation:fadeInOut-473e449c 2s ease-in-out infinite}@-webkit-keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}@keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}.backtest-run-viewer[data-v-a484239a] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.metrics-cards[data-v-a484239a]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.metric-card[data-v-a484239a]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:12px}.metric-card.positive[data-v-a484239a]{border-color:rgba(82,196,26,.35)}.metric-card.negative[data-v-a484239a]{border-color:rgba(245,34,45,.35)}.metric-label[data-v-a484239a]{color:#8c8c8c;font-size:12px}.metric-value[data-v-a484239a]{font-size:18px;font-weight:600;margin-top:4px}.metric-amount[data-v-a484239a]{color:#8c8c8c;font-size:12px;margin-top:4px}.chart-section[data-v-a484239a]{margin-top:8px}.chart-title[data-v-a484239a]{font-weight:600;margin:8px 0;color:#262626}.equity-chart[data-v-a484239a]{width:100%;height:280px}.trades-section[data-v-a484239a]{margin-top:16px}.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.chart-container[data-v-b17e86c2]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-b17e86c2],.chart-header[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-b17e86c2]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-b17e86c2]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-b17e86c2],.header-top[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-b17e86c2]{gap:20px}.symbol-select[data-v-b17e86c2]{width:220px}.symbol-select[data-v-b17e86c2] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-b17e86c2] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-b17e86c2] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-b17e86c2] .ant-select-arrow,.symbol-select[data-v-b17e86c2] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-b17e86c2]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-b17e86c2]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-b17e86c2]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-b17e86c2]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-b17e86c2]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-b17e86c2]{color:#0ecb81}.price-info.color-down[data-v-b17e86c2]{color:#f6465d}.symbol-price[data-v-b17e86c2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-b17e86c2]{font-size:12px}.mobile-symbol-price[data-v-b17e86c2]{display:none}.panel-header .theme-switcher[data-v-b17e86c2]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-b17e86c2],.panel-header .theme-toggle-btn[data-v-b17e86c2]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-b17e86c2]:hover,.panel-header .theme-toggle-btn[data-v-b17e86c2]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-b17e86c2],.panel-header .theme-toggle-btn.active[data-v-b17e86c2]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-b17e86c2],.panel-header .theme-toggle-btn .anticon[data-v-b17e86c2]{font-size:16px}.chart-content[data-v-b17e86c2]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-b17e86c2],.chart-main-row[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-b17e86c2]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-b17e86c2]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-b17e86c2],.indicators-panel[data-v-b17e86c2]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-b17e86c2]{height:100%}.panel-header[data-v-b17e86c2]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-b17e86c2]{margin-right:0}.panel-body[data-v-b17e86c2]{padding:0;overflow:hidden}.indicator-section[data-v-b17e86c2],.panel-body[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-b17e86c2]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-b17e86c2]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-b17e86c2]{min-height:200px}.section-label[data-v-b17e86c2]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-b17e86c2],.section-label[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-b17e86c2]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-b17e86c2]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-b17e86c2]{font-weight:500}.section-label .buy-indicator-btn[data-v-b17e86c2]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-b17e86c2]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-b17e86c2]{display:none!important}}.section-content[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-b17e86c2]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-b17e86c2]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-b17e86c2]{color:#1890ff}.indicator-card.indicator-active[data-v-b17e86c2]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-b17e86c2]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-b17e86c2]{color:#52c41a}.indicator-card.disabled[data-v-b17e86c2]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-b17e86c2]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-b17e86c2]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-b17e86c2]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-b17e86c2]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-b17e86c2]{color:#999;font-size:12px}.card-action[data-v-b17e86c2]:hover{color:#1890ff}.card-actions[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-b17e86c2]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-b17e86c2]{color:#1890ff}.action-icon.edit-icon[data-v-b17e86c2]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-b17e86c2]{color:#ff4d4f}.action-icon.delete-icon[data-v-b17e86c2]:hover{color:#ff7875}.action-icon[data-v-b17e86c2]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-b17e86c2]{color:#52c41a}.action-icon.backtest-icon[data-v-b17e86c2]{color:#722ed1}.action-icon.backtest-icon[data-v-b17e86c2]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-b17e86c2]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-b17e86c2]:hover{color:#08979c}.action-icon.publish-icon[data-v-b17e86c2]{color:#1890ff}.action-icon.publish-icon[data-v-b17e86c2]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-b17e86c2]{color:#52c41a}.action-icon.publish-icon.published[data-v-b17e86c2]:hover{color:#73d13d}.action-icon.status-icon.status-normal[data-v-b17e86c2]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-b17e86c2]{color:#ff4d4f}.action-icon.expiry-icon[data-v-b17e86c2]{color:#1890ff}.empty-indicators[data-v-b17e86c2]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-b17e86c2],.loading-indicators[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-b17e86c2]{padding:20px}.custom-scrollbar[data-v-b17e86c2]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-b17e86c2]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-b17e86c2]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-b17e86c2]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-b17e86c2]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-b17e86c2]{padding:12px}.chart-header .header-top[data-v-b17e86c2],.chart-header[data-v-b17e86c2]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-b17e86c2]{padding:0}.chart-header .header-left[data-v-b17e86c2]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-b17e86c2]{width:100%}.chart-header .search-section .symbol-select[data-v-b17e86c2]{width:100%!important}.chart-header .timeframe-group[data-v-b17e86c2]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-b17e86c2]{display:none}.chart-content[data-v-b17e86c2]{overflow-y:auto}.chart-content[data-v-b17e86c2],.chart-main-row[data-v-b17e86c2]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-b17e86c2]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-b17e86c2],.mobile-symbol-price[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-b17e86c2]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-b17e86c2]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-b17e86c2]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-b17e86c2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-b17e86c2]{font-size:14px;font-weight:500}kline-chart[data-v-b17e86c2]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-b17e86c2] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-b17e86c2]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-b17e86c2]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-b17e86c2]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-b17e86c2]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-b17e86c2]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2],.chart-right .indicators-panel .panel-body[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-b17e86c2],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-b17e86c2]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-b17e86c2],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-b17e86c2]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-b17e86c2]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-b17e86c2]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-b17e86c2]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-b17e86c2]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-b17e86c2],.chart-right .indicators-panel .indicator-card .card-params[data-v-b17e86c2]{font-size:11px}}.qt-header-btn[data-v-b17e86c2]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-b17e86c2]:focus,.qt-header-btn[data-v-b17e86c2]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-b17e86c2]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-b17e86c2]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-b17e86c2],body.dark,body.realdark{background:#131722;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-b17e86c2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-b17e86c2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-b17e86c2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-b17e86c2]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-b17e86c2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-selection,body.dark,body.realdark{background-color:#1e222d;border-color:#2a2e39;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-b17e86c2],body.dark,body.realdark{background:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff;background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff;background:#1e222d;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-b17e86c2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#21283c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-b17e86c2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-b17e86c2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-left-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-b17e86c2],body.dark,body.realdark{border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#2a2e39;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-b17e86c2]:hover,body.dark,body.realdark{background:#2a2e39;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-b17e86c2],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-b17e86c2]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-b17e86c2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-b17e86c2],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-b17e86c2],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-b17e86c2],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-b17e86c2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-b17e86c2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-b17e86c2],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-b17e86c2],body.dark,body.realdark{border-top-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-b17e86c2],body.dark,body.realdark{border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-b17e86c2],body.dark,body.realdark{border-top-color:#2a2e39;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-b17e86c2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-b17e86c2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-b17e86c2],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-b17e86c2]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-b17e86c2],.add-stock-modal-content .search-results-section[data-v-b17e86c2],.add-stock-modal-content .symbol-search-section[data-v-b17e86c2]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-b17e86c2],.add-stock-modal-content .search-results-section .section-title[data-v-b17e86c2]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-b17e86c2]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-b17e86c2]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-b17e86c2]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-b17e86c2]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-b17e86c2]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-b17e86c2]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-b17e86c2],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-b17e86c2],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2e39}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-b17e86c2]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-b17e86c2]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-b17e86c2]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-b17e86c2]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-b17e86c2]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-b17e86c2]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-b17e86c2]{color:#d0d0d0}
\ No newline at end of file
diff --git a/frontend/dist/css/472.e7ead240.css b/frontend/dist/css/472.e7ead240.css
new file mode 100644
index 0000000..2b4c6f3
--- /dev/null
+++ b/frontend/dist/css/472.e7ead240.css
@@ -0,0 +1 @@
+.user-manage-page[data-v-f0405968]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.user-manage-page .page-header[data-v-f0405968]{margin-bottom:24px}.user-manage-page .page-header .page-title[data-v-f0405968]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.user-manage-page .page-header .page-title .anticon[data-v-f0405968]{font-size:28px;color:#1890ff}.user-manage-page .page-header .page-desc[data-v-f0405968]{color:#64748b;font-size:14px;margin:0}.user-manage-page .manage-tabs[data-v-f0405968] .ant-tabs-bar{margin-bottom:20px}.user-manage-page .summary-cards[data-v-f0405968]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.user-manage-page .summary-cards .summary-card[data-v-f0405968]{background:#fff;border-radius:12px;padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);-webkit-transition:-webkit-transform .2s,-webkit-box-shadow .2s;transition:-webkit-transform .2s,-webkit-box-shadow .2s;transition:transform .2s,box-shadow .2s;transition:transform .2s,box-shadow .2s,-webkit-transform .2s,-webkit-box-shadow .2s}.user-manage-page .summary-cards .summary-card[data-v-f0405968]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 20px rgba(0,0,0,.1);box-shadow:0 4px 20px rgba(0,0,0,.1)}.user-manage-page .summary-cards .summary-card .summary-icon[data-v-f0405968]{width:48px;height:48px;border-radius:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.user-manage-page .summary-cards .summary-card .summary-icon .anticon[data-v-f0405968]{font-size:22px;color:#fff}.user-manage-page .summary-cards .summary-card .summary-info[data-v-f0405968]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.user-manage-page .summary-cards .summary-card .summary-info .summary-value[data-v-f0405968]{font-size:22px;font-weight:700;color:#1e293b;line-height:1.3}.user-manage-page .summary-cards .summary-card .summary-info .summary-value .roi-badge[data-v-f0405968]{font-size:13px;font-weight:600;margin-left:6px;padding:1px 6px;border-radius:4px;background:rgba(0,0,0,.04)}.user-manage-page .summary-cards .summary-card .summary-info .summary-sub[data-v-f0405968]{font-size:12px;color:#64748b;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-manage-page .summary-cards .summary-card .summary-info .summary-label[data-v-f0405968]{font-size:13px;color:#94a3b8;margin-top:2px}.user-manage-page .toolbar[data-v-f0405968]{margin-bottom:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-manage-page .toolbar .toolbar-left[data-v-f0405968],.user-manage-page .toolbar .toolbar-right[data-v-f0405968]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.user-manage-page .user-table-card[data-v-f0405968]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.user-manage-page .user-table-card .text-muted[data-v-f0405968]{color:#94a3b8}.user-manage-page .text-profit[data-v-f0405968]{color:#52c41a;font-weight:600}.user-manage-page .text-loss[data-v-f0405968]{color:#ff4d4f;font-weight:600}.user-manage-page .pnl-value[data-v-f0405968]{font-size:14px}.user-manage-page .roi-text[data-v-f0405968]{font-size:12px;margin-left:4px}.user-manage-page .pnl-detail[data-v-f0405968]{font-size:11px;margin-top:2px}.user-manage-page .symbol-text[data-v-f0405968]{font-weight:500}.user-manage-page .symbol-count[data-v-f0405968]{font-size:11px;margin-top:2px}.user-manage-page .status-cell[data-v-f0405968]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;white-space:nowrap}.user-manage-page .status-cell .status-dot[data-v-f0405968]{display:inline-block;width:7px;height:7px;border-radius:50%;-ms-flex-negative:0;flex-shrink:0}.user-manage-page .status-cell .status-dot.dot-running[data-v-f0405968]{background:#52c41a;-webkit-box-shadow:0 0 6px rgba(82,196,26,.5);box-shadow:0 0 6px rgba(82,196,26,.5);-webkit-animation:pulse-green-f0405968 2s infinite;animation:pulse-green-f0405968 2s infinite}.user-manage-page .status-cell .status-dot.dot-stopped[data-v-f0405968]{background:#d9d9d9}.user-manage-page .status-cell .status-running[data-v-f0405968]{color:#52c41a;font-weight:500;font-size:13px}.user-manage-page .status-cell .status-stopped[data-v-f0405968]{color:#999;font-size:13px}@-webkit-keyframes pulse-green-f0405968{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-green-f0405968{0%,to{opacity:1}50%{opacity:.5}}.user-manage-page .user-cell[data-v-f0405968]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;overflow:hidden;white-space:nowrap;cursor:default}.user-manage-page .user-cell .user-name[data-v-f0405968]{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80px}.user-manage-page .indicator-name[data-v-f0405968]{color:#722ed1;font-size:12px}.user-manage-page .exchange-name[data-v-f0405968]{font-size:12px;text-transform:capitalize}.user-manage-page .address-text[data-v-f0405968],.user-manage-page .hash-text[data-v-f0405968]{font-family:Roboto Mono,Courier New,monospace;font-size:12px;color:#1890ff;cursor:pointer}.user-manage-page .address-text[data-v-f0405968]:hover,.user-manage-page .hash-text[data-v-f0405968]:hover{text-decoration:underline}.user-manage-page[data-v-f0405968] .ant-tag.ant-tag-grey{background-color:#f5f5f5;border-color:#d9d9d9;color:#595959}.user-manage-page.theme-dark[data-v-f0405968]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.user-manage-page.theme-dark .page-header .page-title[data-v-f0405968]{color:#e0e6ed}.user-manage-page.theme-dark .page-header .page-desc[data-v-f0405968]{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-bar{border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab:hover{color:#c9d1d9}.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab-active{color:#1890ff}.user-manage-page.theme-dark .summary-cards .summary-card[data-v-f0405968]{background:#1c1c1c;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.3);box-shadow:0 2px 12px rgba(0,0,0,.3)}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-value[data-v-f0405968]{color:#e0e6ed}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-value .roi-badge[data-v-f0405968]{background:hsla(0,0%,100%,.08)}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-sub[data-v-f0405968]{color:#8b949e}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-label[data-v-f0405968]{color:#6e7681}.user-manage-page.theme-dark .user-table-card[data-v-f0405968]{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-card-body{background:#1c1c1c}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table{background:#1c1c1c;color:#c9d1d9}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table .ant-table-thead>tr>th{background:#252525;color:#e0e6ed;border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a}.user-manage-page.theme-dark .user-table-card[data-v-f0405968] .ant-table .ant-table-tbody>tr:hover>td{background:#252525}.user-manage-page.theme-dark .user-table-card .text-muted[data-v-f0405968]{color:#6e7681}.user-manage-page.theme-dark .user-table-card h4[data-v-f0405968]{color:#e0e6ed!important}.user-manage-page .credits-value[data-v-f0405968]{font-weight:600;color:#722ed1}.user-manage-page .current-credits-info[data-v-f0405968],.user-manage-page .current-vip-info[data-v-f0405968]{margin-bottom:16px;padding:12px 16px;background:#f5f5f5;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.user-manage-page .current-credits-info .label[data-v-f0405968],.user-manage-page .current-vip-info .label[data-v-f0405968]{color:#666}.user-manage-page .current-credits-info .value[data-v-f0405968],.user-manage-page .current-vip-info .value[data-v-f0405968]{font-weight:600;color:#1890ff;font-size:18px}.user-manage-page .current-credits-info .value.active[data-v-f0405968],.user-manage-page .current-vip-info .value.active[data-v-f0405968]{color:#52c41a}.user-manage-page .current-credits-info .value.expired[data-v-f0405968],.user-manage-page .current-vip-info .value.expired[data-v-f0405968]{color:#999}@media (max-width:1200px){.summary-cards[data-v-f0405968]{grid-template-columns:repeat(2,1fr)!important}}@media (max-width:768px){.summary-cards[data-v-f0405968]{grid-template-columns:1fr!important}}
\ No newline at end of file
diff --git a/frontend/dist/css/488.c66b70a6.css b/frontend/dist/css/488.c66b70a6.css
new file mode 100644
index 0000000..07a455f
--- /dev/null
+++ b/frontend/dist/css/488.c66b70a6.css
@@ -0,0 +1 @@
+.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-443699fa]{padding:16px;min-height:calc(100vh - 120px);background:#f0f2f5}.ai-asset-analysis-page .opp-section[data-v-443699fa]{margin-bottom:12px}.ai-asset-analysis-page .opp-section .opp-header[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px;padding:0 4px}.ai-asset-analysis-page .opp-section .opp-header .opp-title[data-v-443699fa]{font-size:14px;font-weight:600;color:#1a1a2e}.ai-asset-analysis-page .opp-section .opp-header .opp-header-right[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.ai-asset-analysis-page .opp-section .opp-header .opp-update-hint[data-v-443699fa]{font-size:12px;color:#8c8c8c}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]{overflow:hidden;position:relative;border-radius:10px}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after,.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{content:"";position:absolute;top:0;bottom:0;width:40px;z-index:2;pointer-events:none}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-track[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-animation:opp-scroll-left-443699fa 60s linear infinite;animation:opp-scroll-left-443699fa 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .opp-section .opp-track.paused[data-v-443699fa]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]{width:190px;background:#fff;border-radius:10px;padding:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-left:3px solid #d9d9d9;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .opp-section .opp-card.is-prediction-market[data-v-443699fa]{width:280px;min-height:160px}.ai-asset-analysis-page .opp-section .opp-card.bullish[data-v-443699fa]{border-left-color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card.bearish[data-v-443699fa]{border-left-color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{border-left-color:#13c2c2;background:linear-gradient(135deg,#fff,#f0f9ff)}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.1);box-shadow:0 4px 12px rgba(0,0,0,.1)}.ai-asset-analysis-page .opp-section .opp-card .opp-top[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:6px;gap:8px}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol[data-v-443699fa]{font-weight:700;font-size:14px;color:#1a1a2e;-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-word;line-height:1.4}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol.prediction-title[data-v-443699fa]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.ai-asset-analysis-page .opp-section .opp-card .opp-market-tag[data-v-443699fa]{font-size:11px;-ms-flex-negative:0;flex-shrink:0;margin-left:auto}.ai-asset-analysis-page .opp-section .opp-card .opp-price[data-v-443699fa]{font-size:13px;color:#595959}.ai-asset-analysis-page .opp-section .opp-card .opp-change[data-v-443699fa]{font-size:15px;font-weight:600}.ai-asset-analysis-page .opp-section .opp-card .opp-change.up[data-v-443699fa]{color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card .opp-change.down[data-v-443699fa]{color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card .opp-signal[data-v-443699fa]{margin-top:4px}.ai-asset-analysis-page .opp-section .opp-card .opp-reason[data-v-443699fa]{font-size:11px;color:#8c8c8c;margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .opp-section .opp-card .opp-actions[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px;gap:6px}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]{font-size:12px;color:#1890ff;font-weight:500;cursor:pointer}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]:hover{text-decoration:underline}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{font-size:11px;color:#fff;background:linear-gradient(135deg,#1890ff,#722ed1);padding:2px 8px;border-radius:10px;font-weight:600;cursor:pointer;white-space:nowrap;-webkit-transition:all .2s;transition:all .2s}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 8px rgba(114,46,209,.3);box-shadow:0 2px 8px rgba(114,46,209,.3)}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]{position:fixed;right:24px;bottom:80px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:24px;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-443699fa 2s ease-in-out infinite;animation:qt-float-pulse-443699fa 2s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(114,46,209,.5);box-shadow:0 6px 24px rgba(114,46,209,.5)}@-webkit-keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-443699fa]{border-radius:12px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06)}.ai-asset-analysis-page .workspace-card[data-v-443699fa] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{margin-bottom:0;padding:0 16px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{font-size:15px;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-443699fa]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-443699fa]{font-size:64px;color:#1890ff;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{font-size:20px;font-weight:600;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{font-size:14px;color:rgba(0,0,0,.65);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-443699fa]{background:#141414}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-title[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-update-hint[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{background:linear-gradient(135deg,#1c1c1c,#141414);border-left-color:#13c2c2}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-symbol[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-price[data-v-443699fa],.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-reason[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-action[data-v-443699fa]{color:#58a6ff}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{background:linear-gradient(135deg,#58a6ff,#8957e5)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]:hover{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab-active{color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-ink-bar{background-color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{color:#a3a3a3}
\ No newline at end of file
diff --git a/frontend/dist/css/185.c3803b75.css b/frontend/dist/css/506.c3803b75.css
similarity index 100%
rename from frontend/dist/css/185.c3803b75.css
rename to frontend/dist/css/506.c3803b75.css
diff --git a/frontend/dist/css/620.973fab6f.css b/frontend/dist/css/620.973fab6f.css
new file mode 100644
index 0000000..ea7a701
--- /dev/null
+++ b/frontend/dist/css/620.973fab6f.css
@@ -0,0 +1 @@
+.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-webkit-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-monokai.CodeMirror{background:#272822;color:#f8f8f2}.cm-s-monokai div.CodeMirror-selected{background:#49483e}.cm-s-monokai .CodeMirror-line::selection,.cm-s-monokai .CodeMirror-line>span::selection,.cm-s-monokai .CodeMirror-line>span>span::selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-line::-moz-selection,.cm-s-monokai .CodeMirror-line>span::-moz-selection,.cm-s-monokai .CodeMirror-line>span>span::-moz-selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-gutters{background:#272822;border-right:0}.cm-s-monokai .CodeMirror-guttermarker{color:#fff}.cm-s-monokai .CodeMirror-guttermarker-subtle,.cm-s-monokai .CodeMirror-linenumber{color:#d0d0d0}.cm-s-monokai .CodeMirror-cursor{border-left:1px solid #f8f8f0}.cm-s-monokai span.cm-comment{color:#75715e}.cm-s-monokai span.cm-atom,.cm-s-monokai span.cm-number{color:#ae81ff}.cm-s-monokai span.cm-comment.cm-attribute{color:#97b757}.cm-s-monokai span.cm-comment.cm-def{color:#bc9262}.cm-s-monokai span.cm-comment.cm-tag{color:#bc6283}.cm-s-monokai span.cm-comment.cm-type{color:#5998a6}.cm-s-monokai span.cm-attribute,.cm-s-monokai span.cm-property{color:#a6e22e}.cm-s-monokai span.cm-keyword{color:#f92672}.cm-s-monokai span.cm-builtin{color:#66d9ef}.cm-s-monokai span.cm-string{color:#e6db74}.cm-s-monokai span.cm-variable{color:#f8f8f2}.cm-s-monokai span.cm-variable-2{color:#9effff}.cm-s-monokai span.cm-type,.cm-s-monokai span.cm-variable-3{color:#66d9ef}.cm-s-monokai span.cm-def{color:#fd971f}.cm-s-monokai span.cm-bracket{color:#f8f8f2}.cm-s-monokai span.cm-tag{color:#f92672}.cm-s-monokai span.cm-header,.cm-s-monokai span.cm-link{color:#ae81ff}.cm-s-monokai span.cm-error{background:#f92672;color:#f8f8f0}.cm-s-monokai .CodeMirror-activeline-background{background:#373831}.cm-s-monokai .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.cm-s-eclipse span.cm-meta{color:#ff1717}.cm-s-eclipse span.cm-keyword{line-height:1em;font-weight:700;color:#7f0055}.cm-s-eclipse span.cm-atom{color:#219}.cm-s-eclipse span.cm-number{color:#164}.cm-s-eclipse span.cm-def{color:#00f}.cm-s-eclipse span.cm-variable{color:#000}.cm-s-eclipse span.cm-type,.cm-s-eclipse span.cm-variable-2,.cm-s-eclipse span.cm-variable-3{color:#0000c0}.cm-s-eclipse span.cm-operator,.cm-s-eclipse span.cm-property{color:#000}.cm-s-eclipse span.cm-comment{color:#3f7f5f}.cm-s-eclipse span.cm-string{color:#2a00ff}.cm-s-eclipse span.cm-string-2{color:#f50}.cm-s-eclipse span.cm-qualifier{color:#555}.cm-s-eclipse span.cm-builtin{color:#30a}.cm-s-eclipse span.cm-bracket{color:#cc7}.cm-s-eclipse span.cm-tag{color:#170}.cm-s-eclipse span.cm-attribute{color:#00c}.cm-s-eclipse span.cm-link{color:#219}.cm-s-eclipse span.cm-error{color:red}.cm-s-eclipse .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-eclipse .CodeMirror-matchingbracket{outline:1px solid grey;color:#000!important}[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-58f93984]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.chart-wrapper[data-v-58f93984]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-58f93984]{background:#141414}.drawing-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-58f93984]{background:#141414;border-right-color:#2a2a2a}.drawing-tool-btn[data-v-58f93984]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]{color:#d1d4dc}.drawing-tool-btn[data-v-58f93984]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-58f93984]:hover{background:#252525;color:#13c2c2}.drawing-tool-btn.active[data-v-58f93984]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-58f93984]{background:#252525;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-58f93984]{margin:8px 0;height:20px}.indicator-toolbar[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-58f93984]{background:#141414;border-bottom-color:#2a2a2a}.indicator-btn[data-v-58f93984]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-58f93984]{color:#d1d4dc;background:#252525;border-color:#2a2a2a}.indicator-btn[data-v-58f93984]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-58f93984]:hover{color:#13c2c2;border-color:#13c2c2;background:#252525}.indicator-btn.active[data-v-58f93984]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-58f93984]{color:#13c2c2;background:#252525;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-58f93984]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-58f93984]{background:#141414}.chart-overlay[data-v-58f93984]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-58f93984]{background:hsla(0,0%,8%,.95)}.error-box[data-v-58f93984]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.hint-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-58f93984]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-58f93984]{background:hsla(0,0%,8%,.98)}.warning-box[data-v-58f93984]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-58f93984]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-58f93984]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-58f93984]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-58f93984]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-58f93984]{color:#868993}.chart-left.theme-dark .hint-box[data-v-58f93984]{color:#d1d4dc}.hint-title[data-v-58f93984]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-58f93984]{color:#d1d4dc}.hint-desc[data-v-58f93984]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-58f93984]{color:#787b86}.history-loading-hint[data-v-58f93984]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-58f93984]{background:hsla(0,0%,8%,.98)!important;border-color:#2a2a2a;color:#d1d4dc!important}.loading-text[data-v-58f93984]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-58f93984]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-58f93984]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-58f93984]{display:none}.indicator-toolbar[data-v-58f93984]{padding-left:12px}.kline-chart-container[data-v-58f93984]{margin-left:0}.chart-left[data-v-58f93984]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-58f93984]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-58f93984],.kline-chart-container[data-v-58f93984]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-58f93984]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-58f93984]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-58f93984]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-58f93984]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}[data-v-473e449c] .ant-form-item-label{white-space:normal;line-height:1.2}[data-v-473e449c] .ant-form-item-label>label{white-space:normal}[data-v-473e449c] .ant-form-item-control{min-width:0}.backtest-modal[data-v-473e449c] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.backtest-content[data-v-473e449c]{position:relative}.field-hint[data-v-473e449c]{margin-top:4px;font-size:12px;line-height:1.4;color:#8c8c8c}.section-title[data-v-473e449c]{font-size:15px;font-weight:600;color:#262626;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.section-title .anticon[data-v-473e449c]{color:#1890ff}.config-section[data-v-473e449c]{margin-bottom:24px}.precision-info[data-v-473e449c]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.date-quick-select[data-v-473e449c],.precision-info[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.date-quick-select[data-v-473e449c]{padding:8px 12px;background:#fafafa;border-radius:6px;border:1px solid #f0f0f0}.result-section[data-v-473e449c]{margin-top:24px}.metrics-cards[data-v-473e449c]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}@media (max-width:1200px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(4,1fr)}}@media (max-width:992px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(3,1fr)}}@media (max-width:576px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-473e449c]{background:#fafafa;border-radius:8px;padding:16px;text-align:center;-webkit-transition:all .3s;transition:all .3s}.metric-card[data-v-473e449c]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.1);box-shadow:0 2px 8px rgba(0,0,0,.1)}.metric-card.positive[data-v-473e449c]{background:linear-gradient(135deg,#f6ffed,#d9f7be)}.metric-card.positive .metric-value[data-v-473e449c]{color:#52c41a}.metric-card.negative[data-v-473e449c]{background:linear-gradient(135deg,#fff2f0,#ffccc7)}.metric-card.negative .metric-value[data-v-473e449c]{color:#f5222d}.metric-card .metric-label[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.metric-card .metric-value[data-v-473e449c]{font-size:20px;font-weight:700;color:#262626}.metric-card .metric-amount[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-top:4px}.chart-section[data-v-473e449c]{margin-bottom:24px}.chart-title[data-v-473e449c]{font-size:14px;font-weight:600;color:#595959;margin-bottom:12px}.equity-chart[data-v-473e449c]{width:100%;height:300px;border:1px solid #f0f0f0;border-radius:8px}.trades-section[data-v-473e449c]{margin-top:24px}.loading-overlay[data-v-473e449c]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.9);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:100;border-radius:8px}.loading-overlay .loading-content[data-v-473e449c]{text-align:center}.loading-overlay .loading-animation[data-v-473e449c]{margin-bottom:20px}.loading-overlay .chart-bars[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;height:60px;gap:6px}.loading-overlay .bar[data-v-473e449c]{width:8px;background:-webkit-gradient(linear,left top,left bottom,from(#1890ff),to(#52c41a));background:linear-gradient(180deg,#1890ff,#52c41a);border-radius:4px;-webkit-animation:barPulse-473e449c 1.2s ease-in-out infinite;animation:barPulse-473e449c 1.2s ease-in-out infinite}.loading-overlay .bar1[data-v-473e449c]{height:20px;-webkit-animation-delay:0s;animation-delay:0s}.loading-overlay .bar2[data-v-473e449c]{height:35px;-webkit-animation-delay:.1s;animation-delay:.1s}.loading-overlay .bar3[data-v-473e449c]{height:50px;-webkit-animation-delay:.2s;animation-delay:.2s}.loading-overlay .bar4[data-v-473e449c]{height:35px;-webkit-animation-delay:.3s;animation-delay:.3s}.loading-overlay .bar5[data-v-473e449c]{height:20px;-webkit-animation-delay:.4s;animation-delay:.4s}@-webkit-keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}@keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}.loading-overlay .loading-text[data-v-473e449c]{font-size:16px;font-weight:500;color:#1890ff;margin-bottom:8px}.loading-overlay .loading-subtext[data-v-473e449c]{font-size:13px;color:#666;-webkit-animation:fadeInOut-473e449c 2s ease-in-out infinite;animation:fadeInOut-473e449c 2s ease-in-out infinite}@-webkit-keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}@keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}.backtest-run-viewer[data-v-a484239a] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.metrics-cards[data-v-a484239a]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.metric-card[data-v-a484239a]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:12px}.metric-card.positive[data-v-a484239a]{border-color:rgba(82,196,26,.35)}.metric-card.negative[data-v-a484239a]{border-color:rgba(245,34,45,.35)}.metric-label[data-v-a484239a]{color:#8c8c8c;font-size:12px}.metric-value[data-v-a484239a]{font-size:18px;font-weight:600;margin-top:4px}.metric-amount[data-v-a484239a]{color:#8c8c8c;font-size:12px;margin-top:4px}.chart-section[data-v-a484239a]{margin-top:8px}.chart-title[data-v-a484239a]{font-weight:600;margin:8px 0;color:#262626}.equity-chart[data-v-a484239a]{width:100%;height:280px}.trades-section[data-v-a484239a]{margin-top:16px}.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.chart-container[data-v-211c2fea]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-211c2fea],.chart-header[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-211c2fea]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-211c2fea]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-211c2fea],.header-top[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-211c2fea]{gap:20px}.symbol-select[data-v-211c2fea]{width:220px}.symbol-select[data-v-211c2fea] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-211c2fea] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-211c2fea] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-211c2fea] .ant-select-arrow,.symbol-select[data-v-211c2fea] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-211c2fea]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-211c2fea]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-211c2fea]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-211c2fea]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-211c2fea]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-211c2fea]{color:#0ecb81}.price-info.color-down[data-v-211c2fea]{color:#f6465d}.symbol-price[data-v-211c2fea]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-211c2fea]{font-size:12px}.mobile-symbol-price[data-v-211c2fea]{display:none}.panel-header .theme-switcher[data-v-211c2fea]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-211c2fea],.panel-header .theme-toggle-btn[data-v-211c2fea]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-211c2fea]:hover,.panel-header .theme-toggle-btn[data-v-211c2fea]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-211c2fea],.panel-header .theme-toggle-btn.active[data-v-211c2fea]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-211c2fea],.panel-header .theme-toggle-btn .anticon[data-v-211c2fea]{font-size:16px}.chart-content[data-v-211c2fea]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-211c2fea],.chart-main-row[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-211c2fea]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-211c2fea]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-211c2fea],.indicators-panel[data-v-211c2fea]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-211c2fea]{height:100%}.panel-header[data-v-211c2fea]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-211c2fea]{margin-right:0}.panel-body[data-v-211c2fea]{padding:0;overflow:hidden}.indicator-section[data-v-211c2fea],.panel-body[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-211c2fea]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-211c2fea]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-211c2fea]{min-height:200px}.section-label[data-v-211c2fea]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-211c2fea],.section-label[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-211c2fea]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-211c2fea]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-211c2fea]{font-weight:500}.section-label .buy-indicator-btn[data-v-211c2fea]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-211c2fea]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-211c2fea]{display:none!important}}.section-content[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-211c2fea]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-211c2fea]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-211c2fea]{color:#1890ff}.indicator-card.indicator-active[data-v-211c2fea]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-211c2fea]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-211c2fea]{color:#52c41a}.indicator-card.disabled[data-v-211c2fea]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-211c2fea]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-211c2fea]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-211c2fea]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-211c2fea]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-211c2fea]{color:#999;font-size:12px}.card-action[data-v-211c2fea]:hover{color:#1890ff}.card-actions[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-211c2fea]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-211c2fea]{color:#1890ff}.action-icon.edit-icon[data-v-211c2fea]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-211c2fea]{color:#ff4d4f}.action-icon.delete-icon[data-v-211c2fea]:hover{color:#ff7875}.action-icon[data-v-211c2fea]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-211c2fea]{color:#52c41a}.action-icon.backtest-icon[data-v-211c2fea]{color:#722ed1}.action-icon.backtest-icon[data-v-211c2fea]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-211c2fea]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-211c2fea]:hover{color:#08979c}.action-icon.publish-icon[data-v-211c2fea]{color:#1890ff}.action-icon.publish-icon[data-v-211c2fea]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-211c2fea]{color:#52c41a}.action-icon.publish-icon.published[data-v-211c2fea]:hover{color:#73d13d}.action-icon.status-icon.status-normal[data-v-211c2fea]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-211c2fea]{color:#ff4d4f}.action-icon.expiry-icon[data-v-211c2fea]{color:#1890ff}.empty-indicators[data-v-211c2fea]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-211c2fea],.loading-indicators[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-211c2fea]{padding:20px}.custom-scrollbar[data-v-211c2fea]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-211c2fea]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-211c2fea]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-211c2fea]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-211c2fea]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-211c2fea]{padding:12px}.chart-header .header-top[data-v-211c2fea],.chart-header[data-v-211c2fea]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-211c2fea]{padding:0}.chart-header .header-left[data-v-211c2fea]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-211c2fea]{width:100%}.chart-header .search-section .symbol-select[data-v-211c2fea]{width:100%!important}.chart-header .timeframe-group[data-v-211c2fea]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-211c2fea]{display:none}.chart-content[data-v-211c2fea]{overflow-y:auto}.chart-content[data-v-211c2fea],.chart-main-row[data-v-211c2fea]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-211c2fea]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-211c2fea],.mobile-symbol-price[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-211c2fea]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-211c2fea]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-211c2fea]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-211c2fea]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-211c2fea]{font-size:14px;font-weight:500}kline-chart[data-v-211c2fea]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-211c2fea] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-211c2fea]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-211c2fea]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-211c2fea]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-211c2fea]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-211c2fea]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea],.chart-right .indicators-panel .panel-body[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-211c2fea],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-211c2fea]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-211c2fea]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-211c2fea],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-211c2fea]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-211c2fea]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-211c2fea]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-211c2fea]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-211c2fea]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-211c2fea],.chart-right .indicators-panel .indicator-card .card-params[data-v-211c2fea]{font-size:11px}}.qt-header-btn[data-v-211c2fea]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-211c2fea]:focus,.qt-header-btn[data-v-211c2fea]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-211c2fea]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-211c2fea]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-211c2fea],body.dark,body.realdark{background:#141414;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-211c2fea],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-211c2fea],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-211c2fea],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-211c2fea],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-211c2fea]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-211c2fea]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-211c2fea],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-211c2fea]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-selection,body.dark,body.realdark{background-color:#1c1c1c;border-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-211c2fea],body.dark,body.realdark{background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff;background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-211c2fea],body.dark,body.realdark{color:#1890ff;background:#1c1c1c;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-211c2fea],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-211c2fea],body.dark,body.realdark{color:#888;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-211c2fea],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-211c2fea],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-left-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-211c2fea],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-211c2fea],body.dark,body.realdark{color:#868993;background:#2a2a2a;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-211c2fea]:hover,body.dark,body.realdark{background:#2a2a2a;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-211c2fea],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-211c2fea]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-211c2fea],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-211c2fea],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-211c2fea],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-211c2fea],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-211c2fea],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-211c2fea],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-211c2fea]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-211c2fea],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-211c2fea],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-211c2fea],body.dark,body.realdark{border-top-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-211c2fea],body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-211c2fea],body.dark,body.realdark{border-top-color:#2a2a2a;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-211c2fea] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-211c2fea],body.dark,body.realdark{background:#1c1c1c;border-bottom-color:#2a2a2a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-211c2fea],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-211c2fea],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-211c2fea],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-211c2fea],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-211c2fea]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-211c2fea],.add-stock-modal-content .search-results-section[data-v-211c2fea],.add-stock-modal-content .symbol-search-section[data-v-211c2fea]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-211c2fea],.add-stock-modal-content .search-results-section .section-title[data-v-211c2fea]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-211c2fea]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-211c2fea]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-211c2fea]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-211c2fea]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-211c2fea]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-211c2fea]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-211c2fea],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-211c2fea],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2a2a}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-211c2fea]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-211c2fea],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-211c2fea],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-211c2fea]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-211c2fea]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-211c2fea]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-211c2fea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-211c2fea]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-211c2fea]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-211c2fea]{color:#d0d0d0}
\ No newline at end of file
diff --git a/frontend/dist/css/645.20e2b587.css b/frontend/dist/css/645.20e2b587.css
deleted file mode 100644
index b52c133..0000000
--- a/frontend/dist/css/645.20e2b587.css
+++ /dev/null
@@ -1 +0,0 @@
-.settings-page[data-v-20857e25]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.settings-page .restart-alert[data-v-20857e25]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-20857e25]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-20857e25]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.settings-page .settings-header .page-title .anticon[data-v-20857e25]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-20857e25]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-20857e25]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-20857e25]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-20857e25]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-20857e25]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-20857e25]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-20857e25]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-20857e25] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-20857e25] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-20857e25]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-20857e25]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-20857e25]{background:transparent}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-20857e25] .ant-input,.settings-page .settings-form[data-v-20857e25] .ant-input-number,.settings-page .settings-form[data-v-20857e25] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-20857e25] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-20857e25]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-20857e25]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-20857e25]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-20857e25]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-20857e25]{background:-webkit-gradient(linear,left top,left bottom,from(#0d1117),to(#161b22));background:linear-gradient(180deg,#0d1117,#161b22)}.settings-page.theme-dark .restart-alert[data-v-20857e25]{background:#2d333b;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-20857e25]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-20857e25]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item{background:#1e222d;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252a36,#1e222d);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1e222d}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection{background:#0d1117;border-color:#30363d;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form .field-default[data-v-20857e25]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-20857e25]{background:#1e222d;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-20857e25]{padding:16px}.settings-page .settings-footer[data-v-20857e25]{left:0;padding:12px 16px}}
\ No newline at end of file
diff --git a/frontend/dist/css/662.ff086137.css b/frontend/dist/css/662.ff086137.css
new file mode 100644
index 0000000..cd4ae9d
--- /dev/null
+++ b/frontend/dist/css/662.ff086137.css
@@ -0,0 +1 @@
+.fast-analysis-report[data-v-75da11ec]{height:100%;overflow-y:auto;padding:20px;background:linear-gradient(135deg,#f5f7fa,#e4e8ec);border-radius:12px}.fast-analysis-report .loading-container[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px;background:#fff;border-radius:12px}.fast-analysis-report .loading-container .loading-content-pro[data-v-75da11ec]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-75da11ec]{font-size:28px;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-75da11ec]{font-size:20px;font-weight:600;color:#1e293b}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-75da11ec]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-75da11ec]{position:absolute;right:0;top:-24px;font-size:14px;font-weight:600;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:12px 20px;background:#f0f5ff;border-radius:8px;margin-bottom:24px;color:#1890ff;font-size:14px;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-75da11ec]{font-size:16px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:10px 16px;background:#f8fafc;border-radius:8px;font-size:13px;color:#94a3b8;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-75da11ec]{width:8px;height:8px;border-radius:50%;background:#e2e8f0;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-75da11ec]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-75da11ec]{color:#52c41a;font-size:14px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-75da11ec]{background:#e6f7ff;color:#1890ff;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-75da11ec]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-75da11ec]{background:#f6ffed;color:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-75da11ec]{background:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-75da11ec]{margin-top:24px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-75da11ec]{font-size:13px;color:#94a3b8;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-75da11ec]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-75da11ec]{font-size:64px;color:#d9d9d9}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-75da11ec]{margin-top:16px;font-size:18px;font-weight:600;color:#262626}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-75da11ec]{margin-top:8px;color:#8c8c8c}.fast-analysis-report .result-container .decision-card[data-v-75da11ec]{background:#fff;border-radius:16px;padding:24px;margin-bottom:20px;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.08);box-shadow:0 4px 12px rgba(0,0,0,.08);border-left:6px solid #1890ff}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-75da11ec]{border-left-color:#52c41a;background:linear-gradient(135deg,#f6ffed,#fff)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-75da11ec]{border-left-color:#ff4d4f;background:linear-gradient(135deg,#fff2f0,#fff)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-75da11ec]{border-left-color:#faad14;background:linear-gradient(135deg,#fffbe6,#fff)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-75da11ec]{font-size:32px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:36px;font-weight:800;letter-spacing:2px}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-75da11ec]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-75da11ec]{font-size:18px;font-weight:700}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-top:4px}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-75da11ec]{font-size:16px;line-height:1.6;color:#595959;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-75da11ec]{margin-top:14px;padding:12px 14px;border-radius:8px;background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2);font-size:13px;color:#434343}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:8px;color:#1890ff}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px 20px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{font-style:normal;color:#8c8c8c;margin-right:6px}.fast-analysis-report .result-container .price-info-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .price-info-row .price-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-75da11ec]{font-size:18px;font-weight:700;color:#262626}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-75da11ec]{font-size:10px;color:#bfbfbf;margin-top:6px;cursor:help}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-75da11ec]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-75da11ec]{font-size:14px;margin-top:4px;font-weight:600}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-75da11ec]{border-top:3px solid #1890ff}.fast-analysis-report .result-container .price-info-row .price-card.entry[data-v-75da11ec]{border-top:3px solid #722ed1}.fast-analysis-report .result-container .price-info-row .price-card.stop[data-v-75da11ec]{border-top:3px solid #ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.target[data-v-75da11ec]{border-top:3px solid #52c41a}.fast-analysis-report .result-container .trend-outlook-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px 20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06);border-left:4px solid #722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#262626;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{font-size:13px;line-height:1.65;color:#595959;margin-bottom:14px;padding:10px 12px;background:#fafafa;border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:10px 12px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-75da11ec]{font-size:14px;font-weight:700;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-75da11ec]{color:#faad14}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{font-size:11px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:1fr}}.fast-analysis-report .result-container .scores-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .scores-row .score-item[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-75da11ec]{text-align:right;font-size:20px;font-weight:700;color:#262626;margin-top:8px}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}.fast-analysis-report .result-container .detailed-analysis[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#fff,#fafafa);border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);border-left:4px solid #1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:14px;font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-75da11ec]{font-size:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-75da11ec]{color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{font-size:14px;line-height:1.8;color:#595959;text-align:justify}.fast-analysis-report .result-container .analysis-details[data-v-75da11ec]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-75da11ec]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]{padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:14px;line-height:1.6;color:#595959}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:before{content:"•";margin-right:8px;color:#1890ff}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-75da11ec]{border-left:4px solid #52c41a}.fast-analysis-report .result-container .analysis-details .detail-section.risks[data-v-75da11ec]{border-left:4px solid #faad14}.fast-analysis-report .result-container .indicators-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .indicators-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:16px;font-weight:600;margin-bottom:10px;color:#262626}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-75da11ec]{margin:0;font-size:11px;line-height:18px;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:12px;line-height:1.55;color:#595959;margin-bottom:16px;padding:10px 12px;background:-webkit-gradient(linear,left top,right top,from(#f0f5ff),to(#fafafa));background:linear-gradient(90deg,#f0f5ff,#fafafa);border-radius:8px;border:1px solid #e6f0ff}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-75da11ec]{color:#2f54eb;margin-top:2px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-75da11ec]{margin-top:20px;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#434343;margin-bottom:12px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;width:38%;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content[data-v-75da11ec]{font-size:12px;font-family:SF Mono,Consolas,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#52c41a;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff4d4f;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:12px;text-align:center}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-75da11ec]{font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-top:4px;text-transform:capitalize}.fast-analysis-report .result-container .feedback-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-75da11ec]{font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px;margin-bottom:16px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-75da11ec]{min-width:100px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-75da11ec]{font-size:12px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-75da11ec]{grid-template-columns:1fr}}@media (max-width:576px){.fast-analysis-report[data-v-75da11ec]{padding:12px}.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-75da11ec]{padding:16px}.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{gap:16px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-75da11ec],.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:28px}}.fast-analysis-report.theme-dark[data-v-75da11ec]{background:linear-gradient(135deg,#141414,#1c1c1c)}.fast-analysis-report.theme-dark .loading-content .loading-text[data-v-75da11ec]{color:#00e5ff}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#1890ff}.fast-analysis-report.theme-dark .decision-card.decision-buy[data-v-75da11ec]{background:linear-gradient(135deg,rgba(82,196,26,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-sell[data-v-75da11ec]{background:linear-gradient(135deg,rgba(255,77,79,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-hold[data-v-75da11ec]{background:linear-gradient(135deg,rgba(250,173,20,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-value[data-v-75da11ec]{color:#e5e5e5}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-label[data-v-75da11ec]{color:#a3a3a3}.fast-analysis-report.theme-dark .decision-card .decision-summary[data-v-75da11ec]{color:#868993;border-top-color:#363c4e}.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35);color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#1c1c1c,#141414)}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{background:#252525;color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#252525}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec],.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item[data-v-75da11ec]{background:#1c1c1c;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology[data-v-75da11ec]{background:-webkit-gradient(linear,left top,right top,from(hsla(0,0%,47%,.12)),to(#252525));background:linear-gradient(90deg,hsla(0,0%,47%,.12),#252525);border-color:hsla(0,0%,71%,.2);color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology .anticon[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap[data-v-75da11ec]{border-top-color:#2a2a2a}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{background:#1c1c1c;border-color:#2a2a2a!important;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec]{color:#d1d4dc!important}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#73d13d}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff7875}.fast-analysis-report.theme-dark .detail-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .section-title[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-value[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,hsla(0,0%,47%,.12),#1c1c1c);border-color:#3a3a3a}.fast-analysis-report.theme-dark .detail-list li[data-v-75da11ec]{color:#868993;border-bottom-color:#2a2a2a}.fast-analysis-report.theme-dark .indicators-grid .indicator-item[data-v-75da11ec]{background:#252525}.ai-analysis-container[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-5cbe52d9]{height:auto;min-height:700px;background:transparent}.ai-analysis-container.embedded .main-content-full[data-v-5cbe52d9]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.main-content-full[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-5cbe52d9]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-5cbe52d9],.top-index-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-5cbe52d9]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-5cbe52d9]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-5cbe52d9],.top-index-bar .indicator-box.vix.low .ind-value[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-5cbe52d9]{color:#2563eb}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-5cbe52d9 35s linear infinite;animation:marquee-5cbe52d9 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-5cbe52d9]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-5cbe52d9]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-5cbe52d9]{color:#dc2626}@-webkit-keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#1e293b}.main-body[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-5cbe52d9],.main-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.left-panel[data-v-5cbe52d9]{width:280px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.left-panel .heatmap-box[data-v-5cbe52d9]{background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0}.left-panel .heatmap-box .box-header[data-v-5cbe52d9]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;padding:0 6px;height:22px;line-height:20px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);color:#fff}.left-panel .heatmap-box .heatmap-grid[data-v-5cbe52d9]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-5cbe52d9]{padding:6px 4px;border-radius:4px;text-align:center;font-size:9px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-5cbe52d9]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-5cbe52d9]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-5cbe52d9]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-5cbe52d9]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-5cbe52d9]{font-size:12px;color:#64748b;font-weight:600}.left-panel .calendar-box .box-header .box-title .anticon[data-v-5cbe52d9]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-5cbe52d9]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-5cbe52d9]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-5cbe52d9]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-5cbe52d9]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-5cbe52d9]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-5cbe52d9]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-5cbe52d9]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-5cbe52d9]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-5cbe52d9]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-5cbe52d9]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:8px;border:1px solid #e2e8f0}.right-panel .analysis-toolbar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f1f5f9;background:#fafafa;border-radius:8px 8px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{border-color:#d9d9d9}.right-panel .analysis-main[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.watchlist-panel[data-v-5cbe52d9]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #f1f5f9;background:#fafafa}.watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#64748b}.watchlist-panel .panel-header .panel-title .anticon[data-v-5cbe52d9]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:8px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-5cbe52d9]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-5cbe52d9]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-5cbe52d9]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto}.main-content-full[data-v-5cbe52d9]{height:auto;min-height:auto}.top-index-bar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:8px}.top-index-bar .indicator-box[data-v-5cbe52d9]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:8px}.main-body[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:12px}.left-panel[data-v-5cbe52d9]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px}.left-panel .calendar-box[data-v-5cbe52d9],.left-panel .heatmap-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-5cbe52d9]{max-height:200px}.right-panel .analysis-toolbar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9],.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-5cbe52d9]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-5cbe52d9]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}.ai-analysis-container.theme-dark[data-v-5cbe52d9]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-5cbe52d9]{background:#141414;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.5);box-shadow:0 2px 8px rgba(0,0,0,.5)}.ai-analysis-container.theme-dark .top-index-bar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-5cbe52d9]{border-right-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.04);border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-5cbe52d9]:hover{background:#252525}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-5cbe52d9]{background:rgba(24,144,255,.08);border-color:#1890ff}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-5cbe52d9]{color:#666;background:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-5cbe52d9]{background:#2a2a2a;color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#252525));background:linear-gradient(90deg,transparent,#252525 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]{background:#1c1c1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:rgba(220,38,38,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,rgba(24,144,255,.06)));background:linear-gradient(90deg,transparent,rgba(24,144,255,.06) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-5cbe52d9]{color:#2a2a2a}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-5cbe52d9]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-5cbe52d9]{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.2)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-5cbe52d9],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(114,46,209,.08))}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.35);box-shadow:0 4px 14px rgba(24,144,255,.35)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{background:#141414;border-color:#2a2a2a;color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-5cbe52d9]{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .right-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary),.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-5cbe52d9]{background:rgba(22,163,74,.15)}.ai-analysis-container.theme-dark .wl-change.down[data-v-5cbe52d9]{background:rgba(220,38,38,.12)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .panel-summary[data-v-5cbe52d9]{background:#141414}.ai-analysis-container.theme-dark .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.03)!important;border-bottom-color:#2a2a2a!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-5cbe52d9]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-5cbe52d9]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-5cbe52d9]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-5cbe52d9]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-5cbe52d9]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-5cbe52d9 6s ease-in-out infinite;animation:hero-float-5cbe52d9 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-5cbe52d9]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-5cbe52d9 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-5cbe52d9]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-5cbe52d9]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-5cbe52d9]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-5cbe52d9]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-5cbe52d9]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-5cbe52d9]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-5cbe52d9],.hstat-val[data-v-5cbe52d9]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-5cbe52d9]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-5cbe52d9]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-5cbe52d9]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]:last-child{border-right:none}.sc-num[data-v-5cbe52d9]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-5cbe52d9]{color:#16a34a}.sc-num.down[data-v-5cbe52d9]{color:#dc2626}.sc-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:-webkit-gradient(linear,left top,right top,from(#eff6ff),to(#f0f5ff));background:linear-gradient(90deg,#eff6ff,#f0f5ff);border-bottom:1px solid #dbeafe}.batch-all-cb[data-v-5cbe52d9]{font-size:12px}.wl-card[data-v-5cbe52d9]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;margin-bottom:2px;border:1px solid transparent}.wl-card[data-v-5cbe52d9]:hover{background:#f8fafc}.wl-card.active[data-v-5cbe52d9]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border-color:#91d5ff}.wl-card-cb[data-v-5cbe52d9]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-5cbe52d9]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-5cbe52d9]{padding-left:24px}.wl-row-main[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-5cbe52d9]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-5cbe52d9]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-5cbe52d9]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-5cbe52d9]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-5cbe52d9]{color:#16a34a}.wl-pnl-val.down[data-v-5cbe52d9]{color:#dc2626}.wl-row-task[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-5cbe52d9],.wl-task-badge[data-v-5cbe52d9]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-5cbe52d9]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-5cbe52d9]:hover{opacity:.75}.wl-task-next[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-5cbe52d9]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-5cbe52d9]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:32px 16px}.we-icon[data-v-5cbe52d9]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-5cbe52d9]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-5cbe52d9]{margin-bottom:16px}.batch-modal-summary p[data-v-5cbe52d9]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-5cbe52d9]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-5cbe52d9]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-5cbe52d9]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-5cbe52d9]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-5cbe52d9]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-5cbe52d9]{margin-right:4px}.task-item-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.add-stock-modal-content .market-tabs[data-v-5cbe52d9]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-5cbe52d9],.add-stock-modal-content .search-results-section[data-v-5cbe52d9],.add-stock-modal-content .symbol-search-section[data-v-5cbe52d9]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-5cbe52d9],.add-stock-modal-content .search-results-section .section-title[data-v-5cbe52d9]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-5cbe52d9]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-5cbe52d9]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-5cbe52d9]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-5cbe52d9]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-5cbe52d9]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-5cbe52d9]{width:40px;height:9px}.skeleton-cell[data-v-5cbe52d9]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-5cbe52d9]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-5cbe52d9]{width:50%;height:8px}.skeleton-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-5cbe52d9]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-5cbe52d9]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-5cbe52d9],.indices-loading[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-5cbe52d9]{margin-right:6px}.heatmap-empty[data-v-5cbe52d9]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-cell .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-item .skeleton-text[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-5cbe52d9]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-5cbe52d9],.theme-dark .indices-empty[data-v-5cbe52d9],.theme-dark .indices-loading[data-v-5cbe52d9]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff}
\ No newline at end of file
diff --git a/frontend/dist/css/734.1113ae8a.css b/frontend/dist/css/734.1113ae8a.css
deleted file mode 100644
index 3433139..0000000
--- a/frontend/dist/css/734.1113ae8a.css
+++ /dev/null
@@ -1 +0,0 @@
-.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-webkit-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-monokai.CodeMirror{background:#272822;color:#f8f8f2}.cm-s-monokai div.CodeMirror-selected{background:#49483e}.cm-s-monokai .CodeMirror-line::selection,.cm-s-monokai .CodeMirror-line>span::selection,.cm-s-monokai .CodeMirror-line>span>span::selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-line::-moz-selection,.cm-s-monokai .CodeMirror-line>span::-moz-selection,.cm-s-monokai .CodeMirror-line>span>span::-moz-selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-gutters{background:#272822;border-right:0}.cm-s-monokai .CodeMirror-guttermarker{color:#fff}.cm-s-monokai .CodeMirror-guttermarker-subtle,.cm-s-monokai .CodeMirror-linenumber{color:#d0d0d0}.cm-s-monokai .CodeMirror-cursor{border-left:1px solid #f8f8f0}.cm-s-monokai span.cm-comment{color:#75715e}.cm-s-monokai span.cm-atom,.cm-s-monokai span.cm-number{color:#ae81ff}.cm-s-monokai span.cm-comment.cm-attribute{color:#97b757}.cm-s-monokai span.cm-comment.cm-def{color:#bc9262}.cm-s-monokai span.cm-comment.cm-tag{color:#bc6283}.cm-s-monokai span.cm-comment.cm-type{color:#5998a6}.cm-s-monokai span.cm-attribute,.cm-s-monokai span.cm-property{color:#a6e22e}.cm-s-monokai span.cm-keyword{color:#f92672}.cm-s-monokai span.cm-builtin{color:#66d9ef}.cm-s-monokai span.cm-string{color:#e6db74}.cm-s-monokai span.cm-variable{color:#f8f8f2}.cm-s-monokai span.cm-variable-2{color:#9effff}.cm-s-monokai span.cm-type,.cm-s-monokai span.cm-variable-3{color:#66d9ef}.cm-s-monokai span.cm-def{color:#fd971f}.cm-s-monokai span.cm-bracket{color:#f8f8f2}.cm-s-monokai span.cm-tag{color:#f92672}.cm-s-monokai span.cm-header,.cm-s-monokai span.cm-link{color:#ae81ff}.cm-s-monokai span.cm-error{background:#f92672;color:#f8f8f0}.cm-s-monokai .CodeMirror-activeline-background{background:#373831}.cm-s-monokai .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.cm-s-eclipse span.cm-meta{color:#ff1717}.cm-s-eclipse span.cm-keyword{line-height:1em;font-weight:700;color:#7f0055}.cm-s-eclipse span.cm-atom{color:#219}.cm-s-eclipse span.cm-number{color:#164}.cm-s-eclipse span.cm-def{color:#00f}.cm-s-eclipse span.cm-variable{color:#000}.cm-s-eclipse span.cm-type,.cm-s-eclipse span.cm-variable-2,.cm-s-eclipse span.cm-variable-3{color:#0000c0}.cm-s-eclipse span.cm-operator,.cm-s-eclipse span.cm-property{color:#000}.cm-s-eclipse span.cm-comment{color:#3f7f5f}.cm-s-eclipse span.cm-string{color:#2a00ff}.cm-s-eclipse span.cm-string-2{color:#f50}.cm-s-eclipse span.cm-qualifier{color:#555}.cm-s-eclipse span.cm-builtin{color:#30a}.cm-s-eclipse span.cm-bracket{color:#cc7}.cm-s-eclipse span.cm-tag{color:#170}.cm-s-eclipse span.cm-attribute{color:#00c}.cm-s-eclipse span.cm-link{color:#219}.cm-s-eclipse span.cm-error{color:red}.cm-s-eclipse .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-eclipse .CodeMirror-matchingbracket{outline:1px solid grey;color:#000!important}[data-v-4fea1865] .ant-modal{top:20px!important}.visual-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;background:#fafafa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:500px;overflow:hidden}.visual-modules-list[data-v-4fea1865]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px}.empty-visual-state[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;color:#999}.visual-module-card[data-v-4fea1865]{background:#fff;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:12px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.visual-module-card .module-header[data-v-4fea1865]{padding:8px 12px;border-bottom:1px solid #f0f0f0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#f9f9f9}.visual-module-card .module-header .module-title[data-v-4fea1865],.visual-module-card .module-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.visual-module-card .module-header .module-title[data-v-4fea1865]{font-weight:500;gap:8px}.visual-module-card .module-header .remove-icon[data-v-4fea1865]{cursor:pointer;color:#999}.visual-module-card .module-header .remove-icon[data-v-4fea1865]:hover{color:#ff4d4f}.visual-module-card .module-body[data-v-4fea1865]{padding:12px}.visual-module-card .style-config[data-v-4fea1865]{margin-top:12px;padding-top:12px;border-top:1px dashed #f0f0f0}.visual-module-card .style-config .label[data-v-4fea1865]{margin-right:8px;color:#666}.add-module-bar[data-v-4fea1865]{padding:12px;background:#fff;border-top:1px solid #e8e8e8}@media (max-width:768px){.visual-editor-container[data-v-4fea1865]{height:auto;min-height:400px}}.ant-form-item[data-v-4fea1865]{margin-bottom:16px}.editor-content[data-v-4fea1865]{padding:24px;background:#fff;min-height:500px;max-height:82vh;overflow-y:auto}.editor-layout[data-v-4fea1865]{min-height:450px}.code-editor-column[data-v-4fea1865]{height:100%}.code-editor-column[data-v-4fea1865],.code-section[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.code-section[data-v-4fea1865]{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:12px;padding-bottom:12px;border-bottom:2px solid #f0f0f0}.code-section .section-header .section-title[data-v-4fea1865],.code-section .section-header[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.code-section .section-header .section-title[data-v-4fea1865]{font-weight:600;font-size:14px;color:#262626;gap:8px}.code-section .section-header .section-title[data-v-4fea1865]:before{content:"";display:inline-block;width:4px;height:14px;background:#1890ff;border-radius:2px}.code-section .section-header .section-actions[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff;padding:0 8px}.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}.code-editor-container[data-v-4fea1865]{border:1px solid #d9d9d9;border-radius:6px;overflow:hidden;height:62vh;min-height:520px;max-height:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05);box-shadow:inset 0 1px 3px rgba(0,0,0,.05);-webkit-transition:all .3s ease;transition:all .3s ease}.code-editor-container[data-v-4fea1865]:hover{border-color:#40a9ff}.code-editor-container[data-v-4fea1865]:focus-within{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05);box-shadow:0 0 0 2px rgba(24,144,255,.2),inset 0 1px 3px rgba(0,0,0,.05)}.code-editor-container[data-v-4fea1865] .CodeMirror{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;font-family:Courier New,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fafafa}.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:100%;max-height:none;overflow-y:auto;overflow-x:auto}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:100%!important;padding-left:12px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-gutters{border-right:1px solid #e8e8e8;background:-webkit-gradient(linear,left top,right top,from(#fafafa),to(#f5f5f5));background:linear-gradient(90deg,#fafafa 0,#f5f5f5);width:45px;padding-right:4px}.code-editor-container[data-v-4fea1865] .CodeMirror-linenumber{padding:0 8px 0 4px;min-width:30px;text-align:right;color:#999;font-size:12px}.code-editor-container[data-v-4fea1865] .CodeMirror-lines{padding:12px 8px;background:#fff}.code-editor-container[data-v-4fea1865] .CodeMirror-line{padding-left:0}.code-editor-container[data-v-4fea1865] .CodeMirror-cursor{border-left:2px solid #1890ff}.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}.code-mode-split[data-v-4fea1865]{width:100%}.ai-pane[data-v-4fea1865],.ai-panel[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ai-panel[data-v-4fea1865]{border:1px solid #e8e8e8;border-radius:6px;background:#fafafa;padding:12px;height:62vh;min-height:520px}.ai-panel-title[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:10px;color:#262626}.ai-panel-hint[data-v-4fea1865]{margin-top:10px;color:#8c8c8c;font-size:12px;line-height:1.5}.ai-panel[data-v-4fea1865] textarea.ant-input{-webkit-box-flex:1;-ms-flex:1;flex:1;resize:none}.editor-footer[data-v-4fea1865]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.editor-footer[data-v-4fea1865] .ant-btn{height:36px;padding:0 20px;font-weight:500;border-radius:4px;-webkit-transition:all .3s ease;transition:all .3s ease}.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@media (max-width:768px){.indicator-editor-modal[data-v-4fea1865] .ant-modal{width:100%!important;max-width:100%!important;margin:0!important;top:0!important;padding-bottom:0!important;max-height:100vh!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-content{height:100vh!important;max-height:100vh!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0!important}.indicator-editor-modal[data-v-4fea1865] .ant-modal-header{-ms-flex-negative:0;flex-shrink:0;padding:16px;border-bottom:1px solid #e8e8e8}.indicator-editor-modal[data-v-4fea1865] .ant-modal-body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:0!important;min-height:0}.indicator-editor-modal[data-v-4fea1865] .ant-modal-footer{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;border-top:1px solid #e8e8e8}.editor-content[data-v-4fea1865]{padding:16px!important;min-height:auto!important;max-height:none!important;overflow-y:visible!important}.editor-layout[data-v-4fea1865]{min-height:auto!important}.code-editor-column[data-v-4fea1865]{width:100%!important;margin-bottom:16px}.code-section[data-v-4fea1865]{margin-bottom:16px}.code-section .section-header[data-v-4fea1865]{padding-bottom:8px;margin-bottom:8px}.code-section .section-header .section-title[data-v-4fea1865]{font-size:13px}.code-editor-container[data-v-4fea1865]{height:250px!important}.code-editor-container[data-v-4fea1865],.code-editor-container[data-v-4fea1865] .CodeMirror-scroll{min-height:250px!important;max-height:250px!important}.code-editor-container[data-v-4fea1865] .CodeMirror-sizer{min-height:250px!important}.ai-panel[data-v-4fea1865]{height:auto!important;min-height:auto!important}.editor-footer[data-v-4fea1865]{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;gap:8px;padding:0}.editor-footer[data-v-4fea1865] .ant-btn{width:100%;height:40px;margin:0}}.chart-left[data-v-5f0b12e1]{width:70%!important;-webkit-box-flex:0!important;-ms-flex:0 0 70%!important;flex:0 0 70%!important;position:relative;border-right:1px solid #e8e8e8;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch}.chart-left.theme-dark[data-v-5f0b12e1]{background:#131722;border-right-color:#2a2e39}.chart-wrapper[data-v-5f0b12e1]{width:100%;height:100%;position:relative;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;display:-webkit-box;display:-ms-flexbox;display:flex}.theme-dark .chart-wrapper[data-v-5f0b12e1]{background:#131722}.drawing-toolbar[data-v-5f0b12e1]{-ms-flex-negative:0;flex-shrink:0;width:40px;background:#fff;border-right:1px solid #e8e8e8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;gap:4px;z-index:10;overflow-y:auto;overflow-x:hidden}.chart-left.theme-dark .drawing-toolbar[data-v-5f0b12e1]{background:#131722;border-right-color:#2a2e39}.drawing-tool-btn[data-v-5f0b12e1]{width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;border-radius:4px;-webkit-transition:all .2s;transition:all .2s;color:#666;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .drawing-tool-btn[data-v-5f0b12e1]{color:#d1d4dc}.drawing-tool-btn[data-v-5f0b12e1]:hover{background:#f0f2f5;color:#1890ff}.chart-left.theme-dark .drawing-tool-btn[data-v-5f0b12e1]:hover{background:#1f2943;color:#13c2c2}.drawing-tool-btn.active[data-v-5f0b12e1]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}.chart-left.theme-dark .drawing-tool-btn.active[data-v-5f0b12e1]{background:#1f2943;color:#13c2c2;border-color:#13c2c2}.drawing-toolbar .ant-divider-vertical[data-v-5f0b12e1]{margin:8px 0;height:20px}.indicator-toolbar[data-v-5f0b12e1]{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid #e8e8e8;-ms-flex-wrap:wrap;flex-wrap:wrap;z-index:1;position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.indicator-toolbar[data-v-5f0b12e1]::-webkit-scrollbar{display:none;width:0;height:0}.chart-content-area[data-v-5f0b12e1]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden}.chart-left.theme-dark .indicator-toolbar[data-v-5f0b12e1]{background:#131722;border-bottom-color:#2a2e39}.indicator-btn[data-v-5f0b12e1]{padding:4px 12px;font-size:12px;font-weight:600;color:#666;background:#f0f2f5;border:1px solid #e8e8e8;border-radius:4px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;white-space:nowrap;min-width:40px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chart-left.theme-dark .indicator-btn[data-v-5f0b12e1]{color:#d1d4dc;background:#1f2943;border-color:#2a2e39}.indicator-btn[data-v-5f0b12e1]:hover{color:#1890ff;border-color:#1890ff;background:#f0f8ff}.chart-left.theme-dark .indicator-btn[data-v-5f0b12e1]:hover{color:#13c2c2;border-color:#13c2c2;background:#1f2943}.indicator-btn.active[data-v-5f0b12e1]{color:#1890ff;background:#fff;border-color:#1890ff;border-width:2px;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}.chart-left.theme-dark .indicator-btn.active[data-v-5f0b12e1]{color:#13c2c2;background:#1f2943;border-color:#13c2c2;-webkit-box-shadow:0 0 0 2px rgba(19,194,194,.2);box-shadow:0 0 0 2px rgba(19,194,194,.2)}.kline-chart-container[data-v-5f0b12e1]{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;min-width:0;background:#fff;-webkit-transition:background-color .3s;transition:background-color .3s;-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overflow:hidden}.theme-dark .kline-chart-container[data-v-5f0b12e1]{background:#131722}.chart-overlay[data-v-5f0b12e1]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.95);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;z-index:1;backdrop-filter:blur(2px)}.chart-left.theme-dark .chart-overlay[data-v-5f0b12e1]{background:rgba(19,23,34,.95)}.error-box[data-v-5f0b12e1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#333}.initial-hint[data-v-5f0b12e1]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .initial-hint[data-v-5f0b12e1]{background:rgba(19,23,34,.98)}.hint-box[data-v-5f0b12e1]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:400px;padding:20px}.pyodide-warning[data-v-5f0b12e1]{background:hsla(0,0%,100%,.98)}.chart-left.theme-dark .pyodide-warning[data-v-5f0b12e1]{background:rgba(19,23,34,.98)}.warning-box[data-v-5f0b12e1]{text-align:center;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:500px;padding:20px}.warning-title[data-v-5f0b12e1]{font-size:16px;font-weight:600;color:#faad14;margin-bottom:8px}.warning-desc[data-v-5f0b12e1]{font-size:14px;color:#666;line-height:1.6}.chart-left.theme-dark .warning-box[data-v-5f0b12e1]{color:#d1d4dc}.chart-left.theme-dark .warning-title[data-v-5f0b12e1]{color:#faad14}.chart-left.theme-dark .warning-desc[data-v-5f0b12e1]{color:#868993}.chart-left.theme-dark .hint-box[data-v-5f0b12e1]{color:#d1d4dc}.hint-title[data-v-5f0b12e1]{font-size:18px;font-weight:600;color:#333;margin-bottom:12px}.chart-left.theme-dark .hint-title[data-v-5f0b12e1]{color:#d1d4dc}.hint-desc[data-v-5f0b12e1]{font-size:14px;color:#999;line-height:1.6}.chart-left.theme-dark .hint-desc[data-v-5f0b12e1]{color:#787b86}.history-loading-hint[data-v-5f0b12e1]{position:absolute;left:20px;top:60px;z-index:1000!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 16px;background:hsla(0,0%,100%,.98)!important;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);font-size:14px;color:#666!important;backdrop-filter:blur(4px);pointer-events:none;visibility:visible!important;opacity:1!important}.chart-left.theme-dark .history-loading-hint[data-v-5f0b12e1]{background:rgba(19,23,34,.98)!important;border-color:#2a2e39;color:#d1d4dc!important}.loading-text[data-v-5f0b12e1]{white-space:nowrap;margin-left:4px}@media (max-width:768px){.drawing-toolbar[data-v-5f0b12e1]{display:none}.indicator-toolbar[data-v-5f0b12e1]{padding-left:12px;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.indicator-toolbar[data-v-5f0b12e1]::-webkit-scrollbar{display:none;width:0;height:0}.indicator-btn[data-v-5f0b12e1]{-ms-flex-negative:0;flex-shrink:0}}@media (max-width:1200px){.drawing-toolbar[data-v-5f0b12e1]{display:none}.indicator-toolbar[data-v-5f0b12e1]{padding-left:12px}.kline-chart-container[data-v-5f0b12e1]{margin-left:0}.chart-left[data-v-5f0b12e1]{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid #e8e8e8;height:600px!important;min-height:600px!important}.chart-wrapper[data-v-5f0b12e1],.kline-chart-container[data-v-5f0b12e1]{height:100%!important;min-height:600px!important}}@media (max-width:992px){.chart-left[data-v-5f0b12e1]{height:650px!important;min-height:650px!important}.chart-wrapper[data-v-5f0b12e1],.kline-chart-container[data-v-5f0b12e1]{height:100%!important;min-height:650px!important}}@media (max-width:768px){.chart-left[data-v-5f0b12e1]{height:60vh!important;min-height:400px!important;max-height:80vh!important}.chart-wrapper[data-v-5f0b12e1]{height:100%!important;min-height:400px!important;max-height:100%!important}.kline-chart-container[data-v-5f0b12e1]{height:calc(100% - 45px)!important;min-height:350px!important;max-height:calc(100% - 45px)!important}}@media (max-width:576px){.chart-left[data-v-5f0b12e1]{height:55vh!important;min-height:350px!important;max-height:75vh!important}.chart-wrapper[data-v-5f0b12e1]{height:100%!important;min-height:350px!important;max-height:100%!important}.kline-chart-container[data-v-5f0b12e1]{height:calc(100% - 45px)!important;min-height:300px!important;max-height:calc(100% - 45px)!important}}[data-v-473e449c] .ant-form-item-label{white-space:normal;line-height:1.2}[data-v-473e449c] .ant-form-item-label>label{white-space:normal}[data-v-473e449c] .ant-form-item-control{min-width:0}.backtest-modal[data-v-473e449c] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.backtest-content[data-v-473e449c]{position:relative}.field-hint[data-v-473e449c]{margin-top:4px;font-size:12px;line-height:1.4;color:#8c8c8c}.section-title[data-v-473e449c]{font-size:15px;font-weight:600;color:#262626;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.section-title .anticon[data-v-473e449c]{color:#1890ff}.config-section[data-v-473e449c]{margin-bottom:24px}.precision-info[data-v-473e449c]{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.date-quick-select[data-v-473e449c],.precision-info[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.date-quick-select[data-v-473e449c]{padding:8px 12px;background:#fafafa;border-radius:6px;border:1px solid #f0f0f0}.result-section[data-v-473e449c]{margin-top:24px}.metrics-cards[data-v-473e449c]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}@media (max-width:1200px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(4,1fr)}}@media (max-width:992px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(3,1fr)}}@media (max-width:576px){.metrics-cards[data-v-473e449c]{grid-template-columns:repeat(2,1fr)}}.metric-card[data-v-473e449c]{background:#fafafa;border-radius:8px;padding:16px;text-align:center;-webkit-transition:all .3s;transition:all .3s}.metric-card[data-v-473e449c]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.1);box-shadow:0 2px 8px rgba(0,0,0,.1)}.metric-card.positive[data-v-473e449c]{background:linear-gradient(135deg,#f6ffed,#d9f7be)}.metric-card.positive .metric-value[data-v-473e449c]{color:#52c41a}.metric-card.negative[data-v-473e449c]{background:linear-gradient(135deg,#fff2f0,#ffccc7)}.metric-card.negative .metric-value[data-v-473e449c]{color:#f5222d}.metric-card .metric-label[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.metric-card .metric-value[data-v-473e449c]{font-size:20px;font-weight:700;color:#262626}.metric-card .metric-amount[data-v-473e449c]{font-size:12px;color:#8c8c8c;margin-top:4px}.chart-section[data-v-473e449c]{margin-bottom:24px}.chart-title[data-v-473e449c]{font-size:14px;font-weight:600;color:#595959;margin-bottom:12px}.equity-chart[data-v-473e449c]{width:100%;height:300px;border:1px solid #f0f0f0;border-radius:8px}.trades-section[data-v-473e449c]{margin-top:24px}.loading-overlay[data-v-473e449c]{position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.9);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:100;border-radius:8px}.loading-overlay .loading-content[data-v-473e449c]{text-align:center}.loading-overlay .loading-animation[data-v-473e449c]{margin-bottom:20px}.loading-overlay .chart-bars[data-v-473e449c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;height:60px;gap:6px}.loading-overlay .bar[data-v-473e449c]{width:8px;background:-webkit-gradient(linear,left top,left bottom,from(#1890ff),to(#52c41a));background:linear-gradient(180deg,#1890ff,#52c41a);border-radius:4px;-webkit-animation:barPulse-473e449c 1.2s ease-in-out infinite;animation:barPulse-473e449c 1.2s ease-in-out infinite}.loading-overlay .bar1[data-v-473e449c]{height:20px;-webkit-animation-delay:0s;animation-delay:0s}.loading-overlay .bar2[data-v-473e449c]{height:35px;-webkit-animation-delay:.1s;animation-delay:.1s}.loading-overlay .bar3[data-v-473e449c]{height:50px;-webkit-animation-delay:.2s;animation-delay:.2s}.loading-overlay .bar4[data-v-473e449c]{height:35px;-webkit-animation-delay:.3s;animation-delay:.3s}.loading-overlay .bar5[data-v-473e449c]{height:20px;-webkit-animation-delay:.4s;animation-delay:.4s}@-webkit-keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}@keyframes barPulse-473e449c{0%,to{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:.7}50%{-webkit-transform:scaleY(1.5);transform:scaleY(1.5);opacity:1}}.loading-overlay .loading-text[data-v-473e449c]{font-size:16px;font-weight:500;color:#1890ff;margin-bottom:8px}.loading-overlay .loading-subtext[data-v-473e449c]{font-size:13px;color:#666;-webkit-animation:fadeInOut-473e449c 2s ease-in-out infinite;animation:fadeInOut-473e449c 2s ease-in-out infinite}@-webkit-keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}@keyframes fadeInOut-473e449c{0%,to{opacity:.5}50%{opacity:1}}.backtest-run-viewer[data-v-a484239a] .ant-modal-body{padding:16px;max-height:70vh;overflow-y:auto}.metrics-cards[data-v-a484239a]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.metric-card[data-v-a484239a]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:12px}.metric-card.positive[data-v-a484239a]{border-color:rgba(82,196,26,.35)}.metric-card.negative[data-v-a484239a]{border-color:rgba(245,34,45,.35)}.metric-label[data-v-a484239a]{color:#8c8c8c;font-size:12px}.metric-value[data-v-a484239a]{font-size:18px;font-weight:600;margin-top:4px}.metric-amount[data-v-a484239a]{color:#8c8c8c;font-size:12px;margin-top:4px}.chart-section[data-v-a484239a]{margin-top:8px}.chart-title[data-v-a484239a]{font-weight:600;margin:8px 0;color:#262626}.equity-chart[data-v-a484239a]{width:100%;height:280px}.trades-section[data-v-a484239a]{margin-top:16px}.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.chart-container[data-v-b17e86c2]{background:#f0f2f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.chart-container[data-v-b17e86c2],.chart-header[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;min-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-header[data-v-b17e86c2]{max-width:100%;background:#fff;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.02);box-shadow:0 2px 4px rgba(0,0,0,.02)}.header-top[data-v-b17e86c2]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;height:60px}.header-left[data-v-b17e86c2],.header-top[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header-left[data-v-b17e86c2]{gap:20px}.symbol-select[data-v-b17e86c2]{width:220px}.symbol-select[data-v-b17e86c2] .ant-select-selection{background-color:#fff;border:1px solid #e8e8e8;color:#333;border-radius:4px;-webkit-box-shadow:none;box-shadow:none}.symbol-select[data-v-b17e86c2] .ant-select-selection:hover{border-color:#1890ff}.symbol-select[data-v-b17e86c2] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}.symbol-select[data-v-b17e86c2] .ant-select-arrow,.symbol-select[data-v-b17e86c2] .ant-select-selection__placeholder{color:#999}.timeframe-group[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#f0f2f5;border-radius:4px;padding:2px}.timeframe-item[data-v-b17e86c2]{padding:4px 12px;font-size:13px;font-weight:600;color:#666;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-radius:4px}.timeframe-item[data-v-b17e86c2]:hover{color:#1890ff;background:#fff}.timeframe-item.active[data-v-b17e86c2]{color:#1890ff;background:#fff;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.current-symbol[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.symbol-info[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.symbol-label[data-v-b17e86c2]{font-size:16px;font-weight:700;color:#333;line-height:1.2}.market-tag[data-v-b17e86c2]{font-size:10px;color:#666;background:#f0f2f5;padding:1px 4px;border-radius:2px;margin-top:2px}.price-info[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.price-info.color-up[data-v-b17e86c2]{color:#0ecb81}.price-info.color-down[data-v-b17e86c2]{color:#f6465d}.symbol-price[data-v-b17e86c2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace;line-height:1.2}.symbol-change[data-v-b17e86c2]{font-size:12px}.mobile-symbol-price[data-v-b17e86c2]{display:none}.panel-header .theme-switcher[data-v-b17e86c2]{margin-left:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.panel-header .realtime-toggle-btn[data-v-b17e86c2],.panel-header .theme-toggle-btn[data-v-b17e86c2]{color:#666;border:none;padding:4px 8px;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;min-width:32px;height:32px}.panel-header .realtime-toggle-btn[data-v-b17e86c2]:hover,.panel-header .theme-toggle-btn[data-v-b17e86c2]:hover{color:#1890ff;background:#f0f2f5}.panel-header .realtime-toggle-btn.active[data-v-b17e86c2],.panel-header .theme-toggle-btn.active[data-v-b17e86c2]{color:#1890ff;background:#e6f7ff}.panel-header .realtime-toggle-btn .anticon[data-v-b17e86c2],.panel-header .theme-toggle-btn .anticon[data-v-b17e86c2]{font-size:16px}.chart-content[data-v-b17e86c2]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:100%;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.chart-content[data-v-b17e86c2],.chart-main-row[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;width:100%}.chart-main-row[data-v-b17e86c2]{height:80vh!important;min-height:500px!important;max-height:80vh!important;-ms-flex-negative:0;flex-shrink:0}.chart-right[data-v-b17e86c2]{width:30%!important;-webkit-box-flex:0!important;-ms-flex:0 0 30%!important;flex:0 0 30%!important;border-left:1px solid #e8e8e8}.chart-right[data-v-b17e86c2],.indicators-panel[data-v-b17e86c2]{background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicators-panel[data-v-b17e86c2]{height:100%}.panel-header[data-v-b17e86c2]{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;border-bottom:1px solid #e8e8e8;font-weight:600;color:#333;background:#fff}.panel-header .mobile-header-create-btn[data-v-b17e86c2]{margin-right:0}.panel-body[data-v-b17e86c2]{padding:0;overflow:hidden}.indicator-section[data-v-b17e86c2],.panel-body[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.indicator-section[data-v-b17e86c2]{min-height:0;border-bottom:1px solid #e8e8e8}.indicator-section[data-v-b17e86c2]:last-child{border-bottom:none}.indicator-section.section-empty[data-v-b17e86c2]{min-height:200px}.section-label[data-v-b17e86c2]{-ms-flex-negative:0;flex-shrink:0;padding:12px 16px;background:#fafafa;border-bottom:1px solid #e8e8e8;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.section-label .section-label-left[data-v-b17e86c2],.section-label[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.section-label .section-label-left[data-v-b17e86c2]{gap:8px;-webkit-box-flex:1;-ms-flex:1;flex:1}.section-label .section-label-left .collapse-icon[data-v-b17e86c2]{font-size:12px;color:#999;-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.section-label .section-label-left span[data-v-b17e86c2]{font-weight:500}.section-label .buy-indicator-btn[data-v-b17e86c2]{padding:0;height:auto;margin-left:8px}.create-indicator-btn[data-v-b17e86c2]{margin-left:auto;margin-right:0}@media (max-width:768px){.create-indicator-btn[data-v-b17e86c2]{display:none!important}}.section-content[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:12px 16px;min-height:0}.indicator-card[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:1px solid #e8e8e8}.indicator-card[data-v-b17e86c2]:hover{background:#f0f2f5;border-color:#1890ff;-webkit-transform:translateY(-1px);transform:translateY(-1px);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.05);box-shadow:0 2px 4px rgba(0,0,0,.05)}.indicator-card.active[data-v-b17e86c2]{background:#e6f7ff;border-color:#1890ff}.indicator-card.active .card-name[data-v-b17e86c2]{color:#1890ff}.indicator-card.indicator-active[data-v-b17e86c2]{border-color:#52c41a;border-width:2px;background:#f6ffed}.indicator-card.indicator-active[data-v-b17e86c2]:hover{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.2);box-shadow:0 2px 8px rgba(82,196,26,.2)}.indicator-card.indicator-active .card-name[data-v-b17e86c2]{color:#52c41a}.indicator-card.disabled[data-v-b17e86c2]{opacity:.5;cursor:not-allowed}.indicator-card.disabled[data-v-b17e86c2]:hover{-webkit-transform:none;transform:none;background:#fff;border-color:#e8e8e8;-webkit-box-shadow:none;box-shadow:none}.card-content[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.card-header[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:4px}.card-name[data-v-b17e86c2]{font-size:13px;color:#333;font-weight:500;-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:8px}.card-params[data-v-b17e86c2]{font-size:11px;color:#999;margin-top:2px}.card-desc[data-v-b17e86c2]{font-size:11px;color:#999;margin-top:0;display:-webkit-box;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal;line-height:1.4;min-height:1.4em;max-height:2.8em}.card-action[data-v-b17e86c2]{color:#999;font-size:12px}.card-action[data-v-b17e86c2]:hover{color:#1890ff}.card-actions[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;-ms-flex-negative:0;flex-shrink:0}.action-icon[data-v-b17e86c2]{font-size:16px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;color:#999}.action-icon.edit-icon[data-v-b17e86c2]{color:#1890ff}.action-icon.edit-icon[data-v-b17e86c2]:hover{color:#40a9ff}.action-icon.delete-icon[data-v-b17e86c2]{color:#ff4d4f}.action-icon.delete-icon[data-v-b17e86c2]:hover{color:#ff7875}.action-icon[data-v-b17e86c2]:hover{color:#1890ff}.action-icon.toggle-icon.active[data-v-b17e86c2]{color:#52c41a}.action-icon.backtest-icon[data-v-b17e86c2]{color:#722ed1}.action-icon.backtest-icon[data-v-b17e86c2]:hover{color:#9254de}.action-icon.backtest-history-icon[data-v-b17e86c2]{color:#13c2c2}.action-icon.backtest-history-icon[data-v-b17e86c2]:hover{color:#08979c}.action-icon.publish-icon[data-v-b17e86c2]{color:#1890ff}.action-icon.publish-icon[data-v-b17e86c2]:hover{color:#40a9ff}.action-icon.publish-icon.published[data-v-b17e86c2]{color:#52c41a}.action-icon.publish-icon.published[data-v-b17e86c2]:hover{color:#73d13d}.action-icon.status-icon.status-normal[data-v-b17e86c2]{color:#52c41a}.action-icon.status-icon.status-expired[data-v-b17e86c2]{color:#ff4d4f}.action-icon.expiry-icon[data-v-b17e86c2]{color:#1890ff}.empty-indicators[data-v-b17e86c2]{padding:40px 20px;gap:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.empty-indicators[data-v-b17e86c2],.loading-indicators[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#999;font-size:13px}.loading-indicators[data-v-b17e86c2]{padding:20px}.custom-scrollbar[data-v-b17e86c2]{scrollbar-width:none;-ms-overflow-style:none}.custom-scrollbar[data-v-b17e86c2]::-webkit-scrollbar{display:none;width:0;height:0}.dark-dropdown{background-color:#fff;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.dark-dropdown .ant-select-dropdown-menu-item{color:#333}.dark-dropdown .ant-select-dropdown-menu-item:hover{background-color:#f0f2f5}.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}.dark-dropdown .ant-empty-description{color:#999}.symbol-option[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.symbol-option .symbol-name[data-v-b17e86c2]{font-weight:600;color:#8f8d8d;margin-right:8px}.symbol-option .symbol-name-extra[data-v-b17e86c2]{font-size:12px;color:#999;margin-left:4px}.empty-watchlist-hint[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:12px}@media (max-width:768px){.chart-container[data-v-b17e86c2]{padding:0;width:calc(100% + 44px)!important;margin:-22px}.chart-header[data-v-b17e86c2]{padding:12px}.chart-header .header-top[data-v-b17e86c2],.chart-header[data-v-b17e86c2]{gap:12px;height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-header .header-top[data-v-b17e86c2]{padding:0}.chart-header .header-left[data-v-b17e86c2]{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.chart-header .search-section[data-v-b17e86c2]{width:100%}.chart-header .search-section .symbol-select[data-v-b17e86c2]{width:100%!important}.chart-header .timeframe-group[data-v-b17e86c2]{width:100%;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px}.chart-header .timeframe-group .timeframe-item[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:calc(14.28% - 4px);text-align:center;padding:6px 8px;font-size:12px}.chart-header .current-symbol[data-v-b17e86c2]{display:none}.chart-content[data-v-b17e86c2]{overflow-y:auto}.chart-content[data-v-b17e86c2],.chart-main-row[data-v-b17e86c2]{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important;height:auto!important;min-height:auto!important;max-height:none!important}.mobile-symbol-price[data-v-b17e86c2]{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 16px;background:#fff;width:100%}.mobile-symbol-price .mobile-price-info[data-v-b17e86c2],.mobile-symbol-price[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mobile-symbol-price .mobile-price-info[data-v-b17e86c2]{gap:12px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mobile-symbol-price .mobile-price-info.color-up[data-v-b17e86c2]{color:#0ecb81}.mobile-symbol-price .mobile-price-info.color-down[data-v-b17e86c2]{color:#f6465d}.mobile-symbol-price .mobile-price-info .mobile-symbol-price[data-v-b17e86c2]{font-size:18px;font-weight:600;font-family:Roboto Mono,monospace}.mobile-symbol-price .mobile-price-info .mobile-symbol-change[data-v-b17e86c2]{font-size:14px;font-weight:500}kline-chart[data-v-b17e86c2]{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important;width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;display:block!important;margin-bottom:0!important}kline-chart[data-v-b17e86c2] .chart-left{width:100%!important;height:350px!important;min-height:350px!important;max-height:350px!important;border-right:none!important;border-bottom:1px solid #e8e8e8!important}.chart-right[data-v-b17e86c2]{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;width:100%!important;min-width:100%!important;max-width:100%!important;-webkit-box-flex:0!important;-ms-flex:0 0 auto!important;flex:0 0 auto!important;height:auto!important;max-height:calc(100vh - 470px)!important;border-left:none!important;border-top:none!important;margin-top:0!important;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;visibility:visible!important;opacity:1!important}.chart-right .indicators-panel[data-v-b17e86c2]{height:auto!important;min-height:600px!important;max-height:calc(100vh - 410px)!important;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .panel-header[data-v-b17e86c2]{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid #e8e8e8;padding:12px;font-size:14px;-ms-flex-negative:0;flex-shrink:0}.chart-right .indicators-panel .panel-header .mobile-header-create-btn[data-v-b17e86c2]{margin-right:0;font-size:12px;height:28px;padding:0 12px}.chart-right .indicators-panel .panel-body[data-v-b17e86c2]{padding:0;overflow:visible;min-height:400px!important}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2],.chart-right .indicators-panel .panel-body[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2]{overflow:hidden;min-height:0;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-bar{margin-bottom:0;-ms-flex-negative:0;flex-shrink:0;border-bottom:1px solid #e8e8e8}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab{color:#666;font-size:14px}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab-active{color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-ink-bar{background-color:#1890ff}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-content{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tabpane{height:100%;overflow:hidden;display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tabpane-active{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;height:100%;overflow:hidden}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-b17e86c2],.chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-content-holder{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-height:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-tab-content[data-v-b17e86c2]{width:100%}.chart-right .indicators-panel .mobile-indicator-tabs .section-content[data-v-b17e86c2]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto!important;overflow-x:hidden;padding:12px;min-height:0;height:100%;-webkit-overflow-scrolling:touch;position:relative}.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-b17e86c2],.chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn[data-v-b17e86c2]{display:none!important}.chart-right .indicators-panel .indicator-section .section-label[data-v-b17e86c2]{padding:10px 12px;font-size:13px}.chart-right .indicators-panel .section-content[data-v-b17e86c2]{padding:10px 12px}.chart-right .indicators-panel .indicator-card[data-v-b17e86c2]{padding:10px}.chart-right .indicators-panel .indicator-card .card-name[data-v-b17e86c2]{font-size:13px}.chart-right .indicators-panel .indicator-card .card-desc[data-v-b17e86c2],.chart-right .indicators-panel .indicator-card .card-params[data-v-b17e86c2]{font-size:11px}}.qt-header-btn[data-v-b17e86c2]{margin-left:16px;background:linear-gradient(135deg,#1890ff,#722ed1);border:none;color:#fff;border-radius:6px;font-weight:600;font-size:12px;padding:0 12px;height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3);-webkit-transition:all .3s;transition:all .3s}.qt-header-btn[data-v-b17e86c2]:focus,.qt-header-btn[data-v-b17e86c2]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);color:#fff;-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45);-webkit-transform:translateY(-1px);transform:translateY(-1px)}.qt-floating-btn[data-v-b17e86c2]{position:fixed;right:24px;bottom:80px;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:999;-webkit-transition:all .3s;transition:all .3s;font-size:22px}.qt-floating-btn[data-v-b17e86c2]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark[data-v-b17e86c2],body.dark,body.realdark{background:#131722;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .symbol-label[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .market-tag[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-up[data-v-b17e86c2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .price-info.color-down[data-v-b17e86c2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-b17e86c2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 2px 8px rgba(23,125,220,.35);box-shadow:0 2px 8px rgba(23,125,220,.35)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-b17e86c2]:focus,.chart-container.theme-dark .chart-header .header-top .current-symbol .qt-header-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{background:linear-gradient(135deg,#3c9ae8,#854eca);-webkit-box-shadow:0 4px 12px rgba(23,125,220,.5);box-shadow:0 4px 12px rgba(23,125,220,.5)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-b17e86c2],body.dark,body.realdark{background:linear-gradient(135deg,#177ddc,#642ab5);-webkit-box-shadow:0 4px 16px rgba(23,125,220,.45);box-shadow:0 4px 16px rgba(23,125,220,.45)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .qt-floating-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{-webkit-box-shadow:0 6px 24px rgba(23,125,220,.6);box-shadow:0 6px 24px rgba(23,125,220,.6)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-selection,body.dark,body.realdark{background-color:#1e222d;border-color:#2a2e39;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-arrow,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-selection__placeholder,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group[data-v-b17e86c2],body.dark,body.realdark{background:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff;background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff;background:#1e222d;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-b17e86c2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#21283c}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-b17e86c2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-b17e86c2],body.dark,body.realdark{color:#f6465d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-left-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff;background:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-body[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-section[data-v-b17e86c2],body.dark,body.realdark{border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#2a2e39;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left .collapse-icon[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .section-label-left span[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-b17e86c2]:hover,body.dark,body.realdark{background:#2a2e39;border-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-b17e86c2],body.dark,body.realdark{border-color:#52c41a;background:#1e3a1e}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active[data-v-b17e86c2]:hover,body.dark,body.realdark{border-color:#73d13d;-webkit-box-shadow:0 2px 8px rgba(82,196,26,.3);box-shadow:0 2px 8px rgba(82,196,26,.3)}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.indicator-active .card-name[data-v-b17e86c2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-name[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-desc[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .card-params[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-b17e86c2],body.dark,body.realdark{color:#ff4d4f}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.delete-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#ff7875}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-b17e86c2],body.dark,body.realdark{color:#b37feb}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#d3adf7}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-b17e86c2],body.dark,body.realdark{color:#5cdbd3}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.backtest-history-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#87e8de}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-b17e86c2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon.published[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#73d13d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.toggle-icon.active[data-v-b17e86c2],body.dark,body.realdark{color:#52c41a}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .empty-indicators[data-v-b17e86c2],body.dark,body.realdark{color:#868993}@media (max-width:768px){.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-header .current-symbol[data-v-b17e86c2],body.dark,body.realdark{border-top-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-left[data-v-b17e86c2],body.dark,body.realdark{border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right[data-v-b17e86c2],body.dark,body.realdark{border-top-color:#2a2e39;max-height:500px!important}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-bar,body.dark,body.realdark{border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab,body.dark,body.realdark{color:#868993}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-tab-active,body.dark,body.realdark{color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs[data-v-b17e86c2] .ant-tabs-ink-bar,body.dark,body.realdark{background-color:#1890ff}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .mobile-indicator-tabs .mobile-create-btn-wrapper[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price[data-v-b17e86c2],body.dark,body.realdark{background:#1e222d;border-bottom-color:#2a2e39}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-symbol-label[data-v-b17e86c2],body.dark,body.realdark{margin-left:5px;color:#d1d4dc}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-market-tag[data-v-b17e86c2],body.dark,body.realdark{color:#868993;background:#2a3932}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-up[data-v-b17e86c2],body.dark,body.realdark{color:#0ecb81}.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .mobile-symbol-price .mobile-price-info.color-down[data-v-b17e86c2],body.dark,body.realdark{color:#f6465d}}.add-stock-modal-content .market-tabs[data-v-b17e86c2]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-b17e86c2],.add-stock-modal-content .search-results-section[data-v-b17e86c2],.add-stock-modal-content .symbol-search-section[data-v-b17e86c2]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-b17e86c2],.add-stock-modal-content .search-results-section .section-title[data-v-b17e86c2]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-b17e86c2]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-b17e86c2]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-b17e86c2]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-b17e86c2]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-b17e86c2]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-b17e86c2]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chart-container.theme-dark .add-stock-modal-content .hot-symbols-section .section-title[data-v-b17e86c2],.chart-container.theme-dark .add-stock-modal-content .search-results-section .section-title[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list[data-v-b17e86c2],body.dark,body.realdark{border-color:#363c4e;background-color:#2a2e39}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item[data-v-b17e86c2]:hover,body.dark,body.realdark{background-color:#363c4e}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-b17e86c2],body.dark,body.realdark{color:#d1d4dc}.chart-container.theme-dark .add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-b17e86c2],body.dark,body.realdark{color:#868993}.params-config-modal .indicator-info[data-v-b17e86c2]{text-align:center;margin-bottom:8px}.params-config-modal .indicator-info .indicator-name[data-v-b17e86c2]{font-size:16px;font-weight:600;color:#1f1f1f}.params-config-modal .params-form .param-item[data-v-b17e86c2]{margin-bottom:16px}.params-config-modal .params-form .param-item .param-header[data-v-b17e86c2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:6px}.params-config-modal .params-form .param-item .param-header .param-label[data-v-b17e86c2]{font-weight:500;color:#333}.theme-dark .params-config-modal .indicator-info .indicator-name[data-v-b17e86c2]{color:#e0e0e0}.theme-dark .params-config-modal .params-form .param-item .param-header .param-label[data-v-b17e86c2]{color:#d0d0d0}
\ No newline at end of file
diff --git a/frontend/dist/css/795.752239ab.css b/frontend/dist/css/795.752239ab.css
new file mode 100644
index 0000000..ffcfbe4
--- /dev/null
+++ b/frontend/dist/css/795.752239ab.css
@@ -0,0 +1 @@
+.settings-page[data-v-f144964c]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.settings-page .restart-alert[data-v-f144964c]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-f144964c]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-f144964c]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.settings-page .settings-header .page-title .anticon[data-v-f144964c]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-f144964c]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-f144964c]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-f144964c]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-f144964c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-f144964c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-f144964c]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-f144964c]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-f144964c]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-f144964c]{background:transparent}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-f144964c] .ant-input,.settings-page .settings-form[data-v-f144964c] .ant-input-number,.settings-page .settings-form[data-v-f144964c] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-f144964c] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-f144964c]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-f144964c]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-f144964c]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-f144964c]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-f144964c]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.settings-page.theme-dark .restart-alert[data-v-f144964c]{background:#1c1c1c;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-f144964c]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-f144964c]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252525,#1c1c1c);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1c1c1c}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form .field-default[data-v-f144964c]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-f144964c]{background:#1c1c1c;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-f144964c]{padding:16px}.settings-page .settings-footer[data-v-f144964c]{left:0;padding:12px 16px}}
\ No newline at end of file
diff --git a/frontend/dist/css/798.c66b70a6.css b/frontend/dist/css/798.c66b70a6.css
new file mode 100644
index 0000000..07a455f
--- /dev/null
+++ b/frontend/dist/css/798.c66b70a6.css
@@ -0,0 +1 @@
+.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-67e891d2]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-67e891d2]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-67e891d2]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-67e891d2]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-67e891d2]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-67e891d2]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-67e891d2]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-67e891d2]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-67e891d2]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-67e891d2]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-67e891d2]{text-align:center;padding:40px 0}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-bar{border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-tab-active{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-tabs-ink-bar{background:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider{color:#d4d4d4;border-top-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-divider-inner-text{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-affix-wrapper,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-number,.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-input-textarea textarea{background:#141414!important;border-color:#2a2a2a!important;color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table{background:#1c1c1c;color:#d4d4d4}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-thead>tr>th{background:#252525;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-table-tbody>tr>td{background:#1c1c1c;color:#d4d4d4;border-bottom-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-btn-link{color:#58a6ff!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert{background:#1c1c1c;border-color:#2a2a2a}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-message{color:#d4d4d4!important}.polymarket-analysis-modal.theme-dark[data-v-67e891d2] .ant-alert-description{color:#a3a3a3!important}.polymarket-analysis-modal.theme-dark .market-info h3[data-v-67e891d2]{color:#d4d4d4}.polymarket-analysis-modal.theme-dark .market-info .market-meta .meta-item[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-67e891d2]{color:#b3b3b3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card[data-v-67e891d2]{background:#252525;border:1px solid #2a2a2a}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-label[data-v-67e891d2]{color:#a3a3a3}.polymarket-analysis-modal.theme-dark .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#e5e5e5}.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .key-factors-section h4[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section .reasoning-text[data-v-67e891d2],.polymarket-analysis-modal.theme-dark .analysis-result .reasoning-section h4[data-v-67e891d2]{color:#d4d4d4}.ai-asset-analysis-page[data-v-443699fa]{padding:16px;min-height:calc(100vh - 120px);background:#f0f2f5}.ai-asset-analysis-page .opp-section[data-v-443699fa]{margin-bottom:12px}.ai-asset-analysis-page .opp-section .opp-header[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px;padding:0 4px}.ai-asset-analysis-page .opp-section .opp-header .opp-title[data-v-443699fa]{font-size:14px;font-weight:600;color:#1a1a2e}.ai-asset-analysis-page .opp-section .opp-header .opp-header-right[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.ai-asset-analysis-page .opp-section .opp-header .opp-update-hint[data-v-443699fa]{font-size:12px;color:#8c8c8c}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]{overflow:hidden;position:relative;border-radius:10px}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after,.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{content:"";position:absolute;top:0;bottom:0;width:40px;z-index:2;pointer-events:none}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-track[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-animation:opp-scroll-left-443699fa 60s linear infinite;animation:opp-scroll-left-443699fa 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .opp-section .opp-track.paused[data-v-443699fa]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes opp-scroll-left-443699fa{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]{width:190px;background:#fff;border-radius:10px;padding:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-left:3px solid #d9d9d9;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .opp-section .opp-card.is-prediction-market[data-v-443699fa]{width:280px;min-height:160px}.ai-asset-analysis-page .opp-section .opp-card.bullish[data-v-443699fa]{border-left-color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card.bearish[data-v-443699fa]{border-left-color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{border-left-color:#13c2c2;background:linear-gradient(135deg,#fff,#f0f9ff)}.ai-asset-analysis-page .opp-section .opp-card[data-v-443699fa]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.1);box-shadow:0 4px 12px rgba(0,0,0,.1)}.ai-asset-analysis-page .opp-section .opp-card .opp-top[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:6px;gap:8px}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol[data-v-443699fa]{font-weight:700;font-size:14px;color:#1a1a2e;-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-word;line-height:1.4}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol.prediction-title[data-v-443699fa]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.ai-asset-analysis-page .opp-section .opp-card .opp-market-tag[data-v-443699fa]{font-size:11px;-ms-flex-negative:0;flex-shrink:0;margin-left:auto}.ai-asset-analysis-page .opp-section .opp-card .opp-price[data-v-443699fa]{font-size:13px;color:#595959}.ai-asset-analysis-page .opp-section .opp-card .opp-change[data-v-443699fa]{font-size:15px;font-weight:600}.ai-asset-analysis-page .opp-section .opp-card .opp-change.up[data-v-443699fa]{color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card .opp-change.down[data-v-443699fa]{color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card .opp-signal[data-v-443699fa]{margin-top:4px}.ai-asset-analysis-page .opp-section .opp-card .opp-reason[data-v-443699fa]{font-size:11px;color:#8c8c8c;margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .opp-section .opp-card .opp-actions[data-v-443699fa]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px;gap:6px}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]{font-size:12px;color:#1890ff;font-weight:500;cursor:pointer}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]:hover{text-decoration:underline}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{font-size:11px;color:#fff;background:linear-gradient(135deg,#1890ff,#722ed1);padding:2px 8px;border-radius:10px;font-weight:600;cursor:pointer;white-space:nowrap;-webkit-transition:all .2s;transition:all .2s}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 8px rgba(114,46,209,.3);box-shadow:0 2px 8px rgba(114,46,209,.3)}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]{position:fixed;right:24px;bottom:80px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:24px;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-443699fa 2s ease-in-out infinite;animation:qt-float-pulse-443699fa 2s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(114,46,209,.5);box-shadow:0 6px 24px rgba(114,46,209,.5)}@-webkit-keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-443699fa{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-443699fa]{border-radius:12px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06)}.ai-asset-analysis-page .workspace-card[data-v-443699fa] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{margin-bottom:0;padding:0 16px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{font-size:15px;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-443699fa] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-443699fa]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-443699fa]{font-size:64px;color:#1890ff;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{font-size:20px;font-weight:600;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{font-size:14px;color:rgba(0,0,0,.65);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-443699fa]{background:#141414}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-title[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-update-hint[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:before{background:-webkit-gradient(linear,left top,right top,from(#141414),to(transparent));background:linear-gradient(90deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-443699fa]:after{background:-webkit-gradient(linear,right top,left top,from(#141414),to(transparent));background:linear-gradient(270deg,#141414,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card.market-predictionmarket[data-v-443699fa]{background:linear-gradient(135deg,#1c1c1c,#141414);border-left-color:#13c2c2}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-symbol[data-v-443699fa]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-price[data-v-443699fa],.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-reason[data-v-443699fa]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-action[data-v-443699fa]{color:#58a6ff}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{background:linear-gradient(135deg,#58a6ff,#8957e5)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-443699fa]:hover{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-443699fa]{background:#1c1c1c;border-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-tab-active{color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-443699fa] .ant-tabs-ink-bar{background-color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder h3[data-v-443699fa]{color:#d4d4d4}.ai-asset-analysis-page.theme-dark .workspace-card .polymarket-tab-content .polymarket-placeholder p[data-v-443699fa]{color:#a3a3a3}
\ No newline at end of file
diff --git a/frontend/dist/css/805.ff086137.css b/frontend/dist/css/805.ff086137.css
new file mode 100644
index 0000000..cd4ae9d
--- /dev/null
+++ b/frontend/dist/css/805.ff086137.css
@@ -0,0 +1 @@
+.fast-analysis-report[data-v-75da11ec]{height:100%;overflow-y:auto;padding:20px;background:linear-gradient(135deg,#f5f7fa,#e4e8ec);border-radius:12px}.fast-analysis-report .loading-container[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px;background:#fff;border-radius:12px}.fast-analysis-report .loading-container .loading-content-pro[data-v-75da11ec]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-75da11ec]{font-size:28px;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-75da11ec]{font-size:20px;font-weight:600;color:#1e293b}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-75da11ec]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-75da11ec]{position:absolute;right:0;top:-24px;font-size:14px;font-weight:600;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:12px 20px;background:#f0f5ff;border-radius:8px;margin-bottom:24px;color:#1890ff;font-size:14px;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-75da11ec]{font-size:16px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:10px 16px;background:#f8fafc;border-radius:8px;font-size:13px;color:#94a3b8;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-75da11ec]{width:8px;height:8px;border-radius:50%;background:#e2e8f0;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-75da11ec]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-75da11ec]{color:#52c41a;font-size:14px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-75da11ec]{background:#e6f7ff;color:#1890ff;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-75da11ec]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-75da11ec]{background:#f6ffed;color:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-75da11ec]{background:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-75da11ec]{margin-top:24px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-75da11ec]{font-size:13px;color:#94a3b8;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-75da11ec]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-75da11ec]{font-size:64px;color:#d9d9d9}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-75da11ec]{margin-top:16px;font-size:18px;font-weight:600;color:#262626}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-75da11ec]{margin-top:8px;color:#8c8c8c}.fast-analysis-report .result-container .decision-card[data-v-75da11ec]{background:#fff;border-radius:16px;padding:24px;margin-bottom:20px;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.08);box-shadow:0 4px 12px rgba(0,0,0,.08);border-left:6px solid #1890ff}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-75da11ec]{border-left-color:#52c41a;background:linear-gradient(135deg,#f6ffed,#fff)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-75da11ec]{border-left-color:#ff4d4f;background:linear-gradient(135deg,#fff2f0,#fff)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-75da11ec]{border-left-color:#faad14;background:linear-gradient(135deg,#fffbe6,#fff)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-75da11ec]{font-size:32px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:36px;font-weight:800;letter-spacing:2px}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-75da11ec]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-75da11ec]{font-size:18px;font-weight:700}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-top:4px}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-75da11ec]{font-size:16px;line-height:1.6;color:#595959;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-75da11ec]{margin-top:14px;padding:12px 14px;border-radius:8px;background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2);font-size:13px;color:#434343}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:8px;color:#1890ff}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px 20px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{font-style:normal;color:#8c8c8c;margin-right:6px}.fast-analysis-report .result-container .price-info-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .price-info-row .price-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-75da11ec]{font-size:18px;font-weight:700;color:#262626}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-75da11ec]{font-size:10px;color:#bfbfbf;margin-top:6px;cursor:help}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-75da11ec]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-75da11ec]{font-size:14px;margin-top:4px;font-weight:600}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-75da11ec]{border-top:3px solid #1890ff}.fast-analysis-report .result-container .price-info-row .price-card.entry[data-v-75da11ec]{border-top:3px solid #722ed1}.fast-analysis-report .result-container .price-info-row .price-card.stop[data-v-75da11ec]{border-top:3px solid #ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.target[data-v-75da11ec]{border-top:3px solid #52c41a}.fast-analysis-report .result-container .trend-outlook-card[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px 20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06);border-left:4px solid #722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#262626;margin-bottom:10px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{font-size:13px;line-height:1.65;color:#595959;margin-bottom:14px;padding:10px 12px;background:#fafafa;border-radius:8px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:10px 12px;text-align:center}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend[data-v-75da11ec]{font-size:14px;font-weight:700;margin-bottom:6px}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bull[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-bear[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-trend.trend-neutral[data-v-75da11ec]{color:#faad14}.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{font-size:11px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px}@media (max-width:992px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-grid[data-v-75da11ec]{grid-template-columns:1fr}}.fast-analysis-report .result-container .scores-row[data-v-75da11ec]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .scores-row .score-item[data-v-75da11ec]{background:#fff;border-radius:12px;padding:16px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-75da11ec]{text-align:right;font-size:20px;font-weight:700;color:#262626;margin-top:8px}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}.fast-analysis-report .result-container .detailed-analysis[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#fff,#fafafa);border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);border-left:4px solid #1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:14px;font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-75da11ec]{font-size:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-75da11ec]{color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{font-size:14px;line-height:1.8;color:#595959;text-align:justify}.fast-analysis-report .result-container .analysis-details[data-v-75da11ec]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-75da11ec]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]{padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:14px;line-height:1.6;color:#595959}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:before{content:"•";margin-right:8px;color:#1890ff}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-75da11ec]{border-left:4px solid #52c41a}.fast-analysis-report .result-container .analysis-details .detail-section.risks[data-v-75da11ec]{border-left:4px solid #faad14}.fast-analysis-report .result-container .indicators-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .indicators-section .section-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;font-size:16px;font-weight:600;margin-bottom:10px;color:#262626}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-75da11ec]{color:#1890ff}.fast-analysis-report .result-container .indicators-section .section-title .indicators-pro-badge[data-v-75da11ec]{margin:0;font-size:11px;line-height:18px;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-methodology[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:8px;font-size:12px;line-height:1.55;color:#595959;margin-bottom:16px;padding:10px 12px;background:-webkit-gradient(linear,left top,right top,from(#f0f5ff),to(#fafafa));background:linear-gradient(90deg,#f0f5ff,#fafafa);border-radius:8px;border:1px solid #e6f0ff}.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-75da11ec]{color:#2f54eb;margin-top:2px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap[data-v-75da11ec]{margin-top:20px;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#434343;margin-bottom:12px}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#722ed1}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-label[data-v-75da11ec]{font-size:12px;color:#8c8c8c;width:38%;font-weight:500}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content[data-v-75da11ec]{font-size:12px;font-family:SF Mono,Consolas,monospace}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#52c41a;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff4d4f;font-weight:600}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-75da11ec]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-75da11ec]{background:#fafafa;border-radius:8px;padding:12px;text-align:center}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-75da11ec]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-75da11ec]{font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-75da11ec],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-75da11ec]{color:#ff4d4f}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-75da11ec]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-75da11ec]{font-size:11px;color:#8c8c8c;margin-top:4px;text-transform:capitalize}.fast-analysis-report .result-container .feedback-section[data-v-75da11ec]{background:#fff;border-radius:12px;padding:20px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-75da11ec]{font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-75da11ec]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px;margin-bottom:16px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-75da11ec]{min-width:100px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-75da11ec]{font-size:12px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-75da11ec]{grid-template-columns:1fr}}@media (max-width:576px){.fast-analysis-report[data-v-75da11ec]{padding:12px}.fast-analysis-report .price-info-row[data-v-75da11ec],.fast-analysis-report .scores-row[data-v-75da11ec]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-75da11ec]{padding:16px}.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{gap:16px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-75da11ec],.fast-analysis-report .decision-card .decision-main[data-v-75da11ec]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-75da11ec]{font-size:28px}}.fast-analysis-report.theme-dark[data-v-75da11ec]{background:linear-gradient(135deg,#141414,#1c1c1c)}.fast-analysis-report.theme-dark .loading-content .loading-text[data-v-75da11ec]{color:#00e5ff}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#1890ff}.fast-analysis-report.theme-dark .decision-card.decision-buy[data-v-75da11ec]{background:linear-gradient(135deg,rgba(82,196,26,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-sell[data-v-75da11ec]{background:linear-gradient(135deg,rgba(255,77,79,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card.decision-hold[data-v-75da11ec]{background:linear-gradient(135deg,rgba(250,173,20,.1),#1c1c1c)}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-value[data-v-75da11ec]{color:#e5e5e5}.fast-analysis-report.theme-dark .decision-card .confidence-ring .confidence-label[data-v-75da11ec]{color:#a3a3a3}.fast-analysis-report.theme-dark .decision-card .decision-summary[data-v-75da11ec]{color:#868993;border-top-color:#363c4e}.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35);color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card[data-v-75da11ec]{background:linear-gradient(135deg,#1c1c1c,#141414)}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.fundamental[data-v-75da11ec]{border-left-color:#722ed1}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.sentiment[data-v-75da11ec]{border-left-color:#eb2f96}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-content[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card[data-v-75da11ec]{background:#1c1c1c;border-left-color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-header .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-summary[data-v-75da11ec]{background:#252525;color:#868993}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item[data-v-75da11ec]{background:#252525}.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-label[data-v-75da11ec],.fast-analysis-report.theme-dark .trend-outlook-card .trend-outlook-item .to-meta[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item[data-v-75da11ec]{background:#1c1c1c;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology[data-v-75da11ec]{background:-webkit-gradient(linear,left top,right top,from(hsla(0,0%,47%,.12)),to(#252525));background:linear-gradient(90deg,hsla(0,0%,47%,.12),#252525);border-color:hsla(0,0%,71%,.2);color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology .anticon[data-v-75da11ec]{color:#69c0ff}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap[data-v-75da11ec]{border-top-color:#2a2a2a}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-title .anticon[data-v-75da11ec]{color:#b37feb}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-content[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{background:#1c1c1c;border-color:#2a2a2a!important;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-bordered .ant-descriptions-item-label[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .ant-descriptions-item-content>span[data-v-75da11ec]{color:#d1d4dc!important}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bullish[data-v-75da11ec]{color:#73d13d}.fast-analysis-report.theme-dark .detail-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-pro-wrap .indicators-pro-desc .bearish[data-v-75da11ec]{color:#ff7875}.fast-analysis-report.theme-dark .detail-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .section-title[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .analysis-meta[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .feedback-question[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-name[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-signal[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-label[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-header[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .section-title[data-v-75da11ec]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .detail-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .score-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicator-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .price-value[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .score-value[data-v-75da11ec]{color:#d1d4dc}.fast-analysis-report.theme-dark .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,hsla(0,0%,47%,.12),#1c1c1c);border-color:#3a3a3a}.fast-analysis-report.theme-dark .detail-list li[data-v-75da11ec]{color:#868993;border-bottom-color:#2a2a2a}.fast-analysis-report.theme-dark .indicators-grid .indicator-item[data-v-75da11ec]{background:#252525}.ai-analysis-container[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-5cbe52d9]{height:auto;min-height:700px;background:transparent}.ai-analysis-container.embedded .main-content-full[data-v-5cbe52d9]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.main-content-full[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-5cbe52d9]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-5cbe52d9],.top-index-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-5cbe52d9]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-5cbe52d9]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-5cbe52d9],.top-index-bar .indicator-box.vix.low .ind-value[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-5cbe52d9]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-5cbe52d9]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-5cbe52d9]{color:#2563eb}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-5cbe52d9 35s linear infinite;animation:marquee-5cbe52d9 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-5cbe52d9]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-5cbe52d9]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-5cbe52d9]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-5cbe52d9]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-5cbe52d9]{color:#dc2626}@-webkit-keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-5cbe52d9{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#1e293b}.main-body[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-5cbe52d9],.main-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.left-panel[data-v-5cbe52d9]{width:280px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.left-panel .heatmap-box[data-v-5cbe52d9]{background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0}.left-panel .heatmap-box .box-header[data-v-5cbe52d9]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;padding:0 6px;height:22px;line-height:20px}.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);color:#fff}.left-panel .heatmap-box .heatmap-grid[data-v-5cbe52d9]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-5cbe52d9]{padding:6px 4px;border-radius:4px;text-align:center;font-size:9px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-5cbe52d9]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-5cbe52d9]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-5cbe52d9]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-5cbe52d9]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-5cbe52d9]{font-size:12px;color:#64748b;font-weight:600}.left-panel .calendar-box .box-header .box-title .anticon[data-v-5cbe52d9]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.left-panel .calendar-box .calendar-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-5cbe52d9]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-5cbe52d9]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-5cbe52d9]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-5cbe52d9]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-5cbe52d9]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-5cbe52d9]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-5cbe52d9]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-5cbe52d9]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-5cbe52d9]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-5cbe52d9]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-5cbe52d9]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:8px;border:1px solid #e2e8f0}.right-panel .analysis-toolbar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f1f5f9;background:#fafafa;border-radius:8px 8px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{border-color:#d9d9d9}.right-panel .analysis-main[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.watchlist-panel[data-v-5cbe52d9]{width:320px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #f1f5f9;background:#fafafa}.watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#64748b}.watchlist-panel .panel-header .panel-title .anticon[data-v-5cbe52d9]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:8px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar{width:4px}.watchlist-panel .watchlist-list[data-v-5cbe52d9]::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-5cbe52d9]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-5cbe52d9]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-5cbe52d9{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-5cbe52d9]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto}.main-content-full[data-v-5cbe52d9]{height:auto;min-height:auto}.top-index-bar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:8px}.top-index-bar .indicator-box[data-v-5cbe52d9]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-5cbe52d9]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:8px}.main-body[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:12px}.left-panel[data-v-5cbe52d9]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px}.left-panel .calendar-box[data-v-5cbe52d9],.left-panel .heatmap-box[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-5cbe52d9]{max-height:200px}.right-panel .analysis-toolbar[data-v-5cbe52d9]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-5cbe52d9]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9],.right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-5cbe52d9]{width:100%;max-height:250px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.hero-stats[data-v-5cbe52d9]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hero-stats .hstat[data-v-5cbe52d9]{width:100%;max-width:300px;-webkit-box-flex:0;-ms-flex:none;flex:none}}.ai-analysis-container.theme-dark[data-v-5cbe52d9]{background:#0a0a0a;color:#d4d4d4}.ai-analysis-container.theme-dark .main-content-full[data-v-5cbe52d9]{background:#141414;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.5);box-shadow:0 2px 8px rgba(0,0,0,.5)}.ai-analysis-container.theme-dark .top-index-bar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-5cbe52d9]:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .summary-chip[data-v-5cbe52d9]{border-right-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-num[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .panel-summary .sc-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.04);border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card[data-v-5cbe52d9]:hover{background:#252525}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-5cbe52d9]{background:rgba(24,144,255,.08);border-color:#1890ff}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-market[data-v-5cbe52d9]{color:#666;background:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-price[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-pnl-qty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-badge.paused[data-v-5cbe52d9]{background:#2a2a2a;color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card .wl-task-next[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#252525));background:linear-gradient(90deg,transparent,#252525 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]{background:#1c1c1c;color:#888;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:rgba(220,38,38,.1)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,rgba(24,144,255,.06)));background:linear-gradient(90deg,transparent,rgba(24,144,255,.06) 30%)}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .we-icon[data-v-5cbe52d9]{color:#2a2a2a}.ai-analysis-container.theme-dark .placeholder-hero .hero-bg-grid[data-v-5cbe52d9]{background-image:linear-gradient(hsla(0,0%,100%,.02) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.02) 1px,transparent 0)}.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-5cbe52d9]{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.2)}.ai-analysis-container.theme-dark .placeholder-hero .hero-title[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hero-hint[data-v-5cbe52d9],.ai-analysis-container.theme-dark .placeholder-hero .hero-subtitle[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;-webkit-box-shadow:none;box-shadow:none}.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12)}.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(114,46,209,.08))}.ai-analysis-container.theme-dark .placeholder-hero .hstat-val[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .placeholder-hero .hstat-label[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.35);box-shadow:0 4px 14px rgba(24,144,255,.35)}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper{background:#141414;border-color:#2a2a2a;color:#888}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper:hover{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-5cbe52d9]{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .right-panel[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-5cbe52d9]{background:#141414;border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary),.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark .wl-change.up[data-v-5cbe52d9]{background:rgba(22,163,74,.15)}.ai-analysis-container.theme-dark .wl-change.down[data-v-5cbe52d9]{background:rgba(220,38,38,.12)}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .panel-summary[data-v-5cbe52d9]{background:#141414}.ai-analysis-container.theme-dark .batch-bar[data-v-5cbe52d9]{background:hsla(0,0%,100%,.03)!important;border-bottom-color:#2a2a2a!important}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-5cbe52d9]{background:#141414;border-top-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]{background:#1c1c1c;border-color:#2a2a2a}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-5cbe52d9]{color:#d4d4d4}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-5cbe52d9]{color:#888}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-5cbe52d9]{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .symbol-selector .ant-select-selection{background-color:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-bar{border-bottom-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab:hover{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab-active{color:#1890ff!important}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-ink-bar{background-color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-webkit-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-moz-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input:-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::-ms-input-placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input::placeholder{color:#555}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-input-number .ant-input-number-handler-wrap{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-select-arrow{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-checkbox-wrapper,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-form-item-label>label,.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-radio-wrapper{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-title{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-list-item-meta-description{color:#888}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-empty-description{color:#666}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tooltip-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-badge-count{-webkit-box-shadow:0 0 0 1px #141414;box-shadow:0 0 0 1px #141414}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-inner{background:#1c1c1c}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-message{color:#d4d4d4}.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-popover-arrow{border-color:#1c1c1c}.placeholder-hero[data-v-5cbe52d9]{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;overflow:hidden}.hero-bg[data-v-5cbe52d9]{position:absolute;inset:0;pointer-events:none}.hero-bg-circle[data-v-5cbe52d9]{position:absolute;border-radius:50%;opacity:.5}.hero-bg-circle.c1[data-v-5cbe52d9]{width:320px;height:320px;top:-80px;right:-60px;background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%);-webkit-animation:hero-float-5cbe52d9 6s ease-in-out infinite;animation:hero-float-5cbe52d9 6s ease-in-out infinite}.hero-bg-circle.c2[data-v-5cbe52d9]{width:240px;height:240px;bottom:-40px;left:-40px;background:radial-gradient(circle,rgba(114,46,209,.08) 0,transparent 70%);animation:hero-float-5cbe52d9 8s ease-in-out infinite reverse}.hero-bg-grid[data-v-5cbe52d9]{position:absolute;inset:0;background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0);background-size:32px 32px}@-webkit-keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}@keyframes hero-float-5cbe52d9{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-12px);transform:translateY(-12px)}}.hero-body[data-v-5cbe52d9]{position:relative;text-align:center;padding:40px 32px;max-width:560px}.hero-badge[data-v-5cbe52d9]{display:inline-block;padding:3px 12px;border-radius:20px;font-size:10px;font-weight:700;letter-spacing:1.5px;color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2);margin-bottom:16px}.hero-title[data-v-5cbe52d9]{font-size:26px;font-weight:800;color:#0f172a;margin-bottom:8px;letter-spacing:-.3px;line-height:1.3}.hero-subtitle[data-v-5cbe52d9]{font-size:14px;color:#64748b;margin-bottom:32px;line-height:1.5}.hero-stats[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:32px;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.hstat[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.04);box-shadow:0 1px 3px rgba(0,0,0,.04);-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;text-align:left;-webkit-transition:all .25s;transition:all .25s}.hstat[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.hstat-icon[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));font-size:16px;color:var(--primary-color,#1890ff);-ms-flex-negative:0;flex-shrink:0}.hstat-body[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0}.hstat-val[data-v-5cbe52d9]{font-size:12px;font-weight:700;color:#0f172a}.hstat-label[data-v-5cbe52d9],.hstat-val[data-v-5cbe52d9]{line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hstat-label[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-top:1px}.hero-cta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:16px}.hero-cta .ant-btn[data-v-5cbe52d9]{border-radius:10px;font-weight:600;height:42px;padding:0 24px;font-size:14px}.hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}.hero-hint[data-v-5cbe52d9]{font-size:12px;color:#94a3b8}.panel-header-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.panel-header-icon[data-v-5cbe52d9]{font-size:15px;color:#94a3b8;cursor:pointer;padding:4px;border-radius:6px;-webkit-transition:color .2s,background .2s;transition:color .2s,background .2s}.panel-header-icon[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}.panel-summary[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:0;padding:0;border-bottom:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 4px;border-right:1px solid #f1f5f9}.summary-chip[data-v-5cbe52d9]:last-child{border-right:none}.sc-num[data-v-5cbe52d9]{font-size:14px;font-weight:700;color:#0f172a;line-height:1.2;font-family:SF Mono,Monaco,monospace}.sc-num.up[data-v-5cbe52d9]{color:#16a34a}.sc-num.down[data-v-5cbe52d9]{color:#dc2626}.sc-label[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.batch-bar[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px;background:-webkit-gradient(linear,left top,right top,from(#eff6ff),to(#f0f5ff));background:linear-gradient(90deg,#eff6ff,#f0f5ff);border-bottom:1px solid #dbeafe}.batch-all-cb[data-v-5cbe52d9]{font-size:12px}.wl-card[data-v-5cbe52d9]{position:relative;padding:10px 12px;border-radius:8px;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;margin-bottom:2px;border:1px solid transparent}.wl-card[data-v-5cbe52d9]:hover{background:#f8fafc}.wl-card.active[data-v-5cbe52d9]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border-color:#91d5ff}.wl-card-cb[data-v-5cbe52d9]{position:absolute;top:12px;left:4px;z-index:1}.wl-card-body[data-v-5cbe52d9]{-webkit-transition:padding-left .2s;transition:padding-left .2s}.wl-card-body.with-cb[data-v-5cbe52d9]{padding-left:24px}.wl-row-main[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;gap:5px}.wl-symbol[data-v-5cbe52d9]{font-size:13px;font-weight:700;color:#0f172a}.wl-market[data-v-5cbe52d9]{font-size:9px;color:#94a3b8;letter-spacing:.3px;padding:1px 4px;background:#f1f5f9;border-radius:3px}.wl-spacer[data-v-5cbe52d9]{-webkit-box-flex:1;-ms-flex:1;flex:1}.wl-price[data-v-5cbe52d9]{font-size:12px;font-weight:600;color:#0f172a;font-family:SF Mono,Monaco,monospace}.wl-change[data-v-5cbe52d9]{font-size:10px;font-weight:700;font-family:SF Mono,Monaco,monospace;padding:1px 5px;border-radius:4px;margin-left:4px}.wl-change.up[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-change.down[data-v-5cbe52d9]{color:#dc2626;background:rgba(220,38,38,.06)}.wl-row-pnl[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;margin-top:4px;font-family:SF Mono,Monaco,monospace}.wl-pnl-qty[data-v-5cbe52d9]{font-size:10px;color:#94a3b8}.wl-pnl-val[data-v-5cbe52d9]{font-size:10px;font-weight:600;margin-left:auto}.wl-pnl-val.up[data-v-5cbe52d9]{color:#16a34a}.wl-pnl-val.down[data-v-5cbe52d9]{color:#dc2626}.wl-row-task[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:4px}.wl-row-task[data-v-5cbe52d9],.wl-task-badge[data-v-5cbe52d9]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wl-task-badge[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;gap:3px;font-size:10px;padding:1px 8px;border-radius:10px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.wl-task-badge.active[data-v-5cbe52d9]{color:#16a34a;background:rgba(22,163,74,.08)}.wl-task-badge.paused[data-v-5cbe52d9]{color:#94a3b8;background:#f1f5f9}.wl-task-badge[data-v-5cbe52d9]:hover{opacity:.75}.wl-task-next[data-v-5cbe52d9]{font-size:10px;color:#94a3b8;margin-left:auto}.wl-card-hover-actions[data-v-5cbe52d9]{position:absolute;top:0;right:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px;padding-right:8px;opacity:0;-webkit-transition:opacity .15s;transition:opacity .15s;background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#f8fafc));background:linear-gradient(90deg,transparent,#f8fafc 30%);border-radius:0 8px 8px 0;pointer-events:none}.wl-card:hover .wl-card-hover-actions[data-v-5cbe52d9]{opacity:1;pointer-events:auto}.wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}.wl-hover-btn[data-v-5cbe52d9]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:13px;color:#64748b;cursor:pointer;-webkit-transition:all .15s;transition:all .15s;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06)}.wl-hover-btn[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}.wl-hover-btn.danger[data-v-5cbe52d9]:hover{color:#dc2626;background:#fef2f2}.watchlist-empty[data-v-5cbe52d9]{text-align:center;padding:32px 16px}.we-icon[data-v-5cbe52d9]{font-size:36px;color:#e2e8f0;margin-bottom:12px}.watchlist-empty p[data-v-5cbe52d9]{font-size:12px;color:#94a3b8;margin-bottom:12px}.batch-modal-summary[data-v-5cbe52d9]{margin-bottom:16px}.batch-modal-summary p[data-v-5cbe52d9]{font-size:13px;color:#475569;margin-bottom:8px}.batch-symbols-preview[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:4px;max-height:80px;overflow-y:auto}.task-drawer-empty[data-v-5cbe52d9]{text-align:center;padding:48px 16px;color:#94a3b8}.task-drawer-empty p[data-v-5cbe52d9]{margin-top:12px;font-size:13px}.task-drawer-list[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.task-item[data-v-5cbe52d9]{padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;background:#fafafa;-webkit-transition:-webkit-box-shadow .2s;transition:-webkit-box-shadow .2s;transition:box-shadow .2s;transition:box-shadow .2s,-webkit-box-shadow .2s}.task-item[data-v-5cbe52d9]:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.task-item-header[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.task-item-name[data-v-5cbe52d9]{font-size:13px;font-weight:600;color:#0f172a}.task-item-meta[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;font-size:12px;color:#64748b;margin-bottom:10px}.task-item-meta .anticon[data-v-5cbe52d9]{margin-right:4px}.task-item-actions[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.add-stock-modal-content .market-tabs[data-v-5cbe52d9]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-5cbe52d9],.add-stock-modal-content .search-results-section[data-v-5cbe52d9],.add-stock-modal-content .symbol-search-section[data-v-5cbe52d9]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-5cbe52d9],.add-stock-modal-content .search-results-section .section-title[data-v-5cbe52d9]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-5cbe52d9]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-5cbe52d9]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-5cbe52d9]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-5cbe52d9]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-5cbe52d9]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-5cbe52d9]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-5cbe52d9]{width:40px;height:9px}.skeleton-cell[data-v-5cbe52d9]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-5cbe52d9]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-5cbe52d9]{width:50%;height:8px}.skeleton-item[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-5cbe52d9]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;animation:skeleton-pulse-5cbe52d9 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-5cbe52d9]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-5cbe52d9],.indices-loading[data-v-5cbe52d9]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-5cbe52d9]{margin-right:6px}.heatmap-empty[data-v-5cbe52d9]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-5cbe52d9{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-cell .skeleton-text[data-v-5cbe52d9],.theme-dark .skeleton-item .skeleton-text[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#2a2a2a),color-stop(50%,#333),color-stop(75%,#2a2a2a));background:linear-gradient(90deg,#2a2a2a 25%,#333 50%,#2a2a2a 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-5cbe52d9]{background:#1c1c1c!important}.theme-dark .heatmap-empty[data-v-5cbe52d9],.theme-dark .indices-empty[data-v-5cbe52d9],.theme-dark .indices-loading[data-v-5cbe52d9]{color:#666}.qd-dark-modal .ant-modal-content{background:#141414}.qd-dark-modal .ant-modal-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-modal .ant-modal-header .ant-modal-title{color:#d4d4d4}.qd-dark-modal .ant-modal-close-x{color:#888}.qd-dark-modal .ant-modal-body{background:#141414;color:#d4d4d4}.qd-dark-modal .ant-modal-footer{background:#141414;border-top-color:#2a2a2a}.qd-dark-modal .ant-modal-footer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-modal .ant-form-item-label>label{color:#d4d4d4}.qd-dark-modal .ant-input{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-input::-webkit-input-placeholder{color:#555}.qd-dark-modal .ant-input::-moz-placeholder{color:#555}.qd-dark-modal .ant-input:-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::-ms-input-placeholder{color:#555}.qd-dark-modal .ant-input::placeholder{color:#555}.qd-dark-modal .ant-input-number,.qd-dark-modal .ant-select-selection{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-arrow{color:#666}.qd-dark-modal .ant-checkbox-wrapper,.qd-dark-modal .ant-radio-wrapper{color:#d4d4d4}.qd-dark-modal .ant-tabs-bar{border-bottom-color:#2a2a2a}.qd-dark-modal .ant-tabs-tab{color:#888}.qd-dark-modal .ant-tabs-tab:hover{color:#d4d4d4}.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}.qd-dark-modal .ant-tag{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06);border-color:#2a2a2a}.qd-dark-modal .ant-alert-message{color:#d4d4d4}.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}.qd-dark-modal .ant-list-item{border-bottom-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-title{color:#d4d4d4}.qd-dark-modal .ant-list-item-meta-description{color:#888}.qd-dark-modal .ant-empty-description{color:#666}.qd-dark-modal .add-stock-modal-content,.qd-dark-modal p{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .section-title{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list{border-color:#2a2a2a;background:#1c1c1c}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item:hover{background:#252525!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-code{color:#d4d4d4!important}.qd-dark-modal .add-stock-modal-content .symbol-list .symbol-list-item .symbol-name{color:#888!important}.qd-dark-modal .add-stock-modal-content .selected-symbol-info strong{color:#d4d4d4}.qd-dark-modal .add-stock-modal-content .selected-symbol-info span{color:#888!important}.qd-dark-modal .batch-modal-summary p{color:#d4d4d4}.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}.qd-dark-modal .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-modal .task-item-name{color:#d4d4d4}.qd-dark-modal .task-item-meta{color:#888}.qd-dark-modal .task-drawer-empty{color:#666}.qd-dark-modal .history-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-modal .search-result-item{color:#d4d4d4}.qd-dark-modal .search-result-item:hover{background:#1c1c1c}.qd-dark-modal .search-result-name{color:#d4d4d4}.qd-dark-modal .search-result-market{color:#888}.qd-dark-drawer .ant-drawer-content{background:#141414}.qd-dark-drawer .ant-drawer-header{background:#141414;border-bottom-color:#2a2a2a}.qd-dark-drawer .ant-drawer-header .ant-drawer-title{color:#d4d4d4}.qd-dark-drawer .ant-drawer-header .ant-drawer-close{color:#888}.qd-dark-drawer .ant-drawer-body{background:#141414;color:#d4d4d4}.qd-dark-drawer .task-item{background:#1c1c1c;border-color:#2a2a2a}.qd-dark-drawer .task-item:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.qd-dark-drawer .task-item-name{color:#d4d4d4}.qd-dark-drawer .task-item-meta{color:#888}.qd-dark-drawer .task-drawer-empty{color:#666}.qd-dark-drawer .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}.qd-dark-drawer .ant-btn-danger{background:transparent}.qd-dark-drawer .ant-popover-inner{background:#1c1c1c}.qd-dark-drawer .ant-popover-message,.qd-dark-drawer .ant-popover-message-title{color:#d4d4d4}.qd-dark-drawer .ant-popover-buttons .ant-btn-default{background:#1c1c1c;border-color:#2a2a2a;color:#d4d4d4}.qd-dark-modal .ant-select-dropdown,body.colorWeak .ant-select-dropdown{background:#1c1c1c}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item{color:#d4d4d4}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-active,.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525}.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff}
\ No newline at end of file
diff --git a/frontend/dist/css/811.fea2e0fa.css b/frontend/dist/css/811.fea2e0fa.css
deleted file mode 100644
index 50b6956..0000000
--- a/frontend/dist/css/811.fea2e0fa.css
+++ /dev/null
@@ -1 +0,0 @@
-.user-manage-page[data-v-49c4f239]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.user-manage-page .page-header[data-v-49c4f239]{margin-bottom:24px}.user-manage-page .page-header .page-title[data-v-49c4f239]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.user-manage-page .page-header .page-title .anticon[data-v-49c4f239]{font-size:28px;color:#1890ff}.user-manage-page .page-header .page-desc[data-v-49c4f239]{color:#64748b;font-size:14px;margin:0}.user-manage-page .manage-tabs[data-v-49c4f239] .ant-tabs-bar{margin-bottom:20px}.user-manage-page .summary-cards[data-v-49c4f239]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.user-manage-page .summary-cards .summary-card[data-v-49c4f239]{background:#fff;border-radius:12px;padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);-webkit-transition:-webkit-transform .2s,-webkit-box-shadow .2s;transition:-webkit-transform .2s,-webkit-box-shadow .2s;transition:transform .2s,box-shadow .2s;transition:transform .2s,box-shadow .2s,-webkit-transform .2s,-webkit-box-shadow .2s}.user-manage-page .summary-cards .summary-card[data-v-49c4f239]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 20px rgba(0,0,0,.1);box-shadow:0 4px 20px rgba(0,0,0,.1)}.user-manage-page .summary-cards .summary-card .summary-icon[data-v-49c4f239]{width:48px;height:48px;border-radius:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.user-manage-page .summary-cards .summary-card .summary-icon .anticon[data-v-49c4f239]{font-size:22px;color:#fff}.user-manage-page .summary-cards .summary-card .summary-info[data-v-49c4f239]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.user-manage-page .summary-cards .summary-card .summary-info .summary-value[data-v-49c4f239]{font-size:22px;font-weight:700;color:#1e293b;line-height:1.3}.user-manage-page .summary-cards .summary-card .summary-info .summary-value .roi-badge[data-v-49c4f239]{font-size:13px;font-weight:600;margin-left:6px;padding:1px 6px;border-radius:4px;background:rgba(0,0,0,.04)}.user-manage-page .summary-cards .summary-card .summary-info .summary-sub[data-v-49c4f239]{font-size:12px;color:#64748b;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-manage-page .summary-cards .summary-card .summary-info .summary-label[data-v-49c4f239]{font-size:13px;color:#94a3b8;margin-top:2px}.user-manage-page .toolbar[data-v-49c4f239]{margin-bottom:16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.user-manage-page .toolbar .toolbar-left[data-v-49c4f239],.user-manage-page .toolbar .toolbar-right[data-v-49c4f239]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.user-manage-page .user-table-card[data-v-49c4f239]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.user-manage-page .user-table-card .text-muted[data-v-49c4f239]{color:#94a3b8}.user-manage-page .text-profit[data-v-49c4f239]{color:#52c41a;font-weight:600}.user-manage-page .text-loss[data-v-49c4f239]{color:#ff4d4f;font-weight:600}.user-manage-page .pnl-value[data-v-49c4f239]{font-size:14px}.user-manage-page .roi-text[data-v-49c4f239]{font-size:12px;margin-left:4px}.user-manage-page .pnl-detail[data-v-49c4f239]{font-size:11px;margin-top:2px}.user-manage-page .symbol-text[data-v-49c4f239]{font-weight:500}.user-manage-page .symbol-count[data-v-49c4f239]{font-size:11px;margin-top:2px}.user-manage-page .status-cell[data-v-49c4f239]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;white-space:nowrap}.user-manage-page .status-cell .status-dot[data-v-49c4f239]{display:inline-block;width:7px;height:7px;border-radius:50%;-ms-flex-negative:0;flex-shrink:0}.user-manage-page .status-cell .status-dot.dot-running[data-v-49c4f239]{background:#52c41a;-webkit-box-shadow:0 0 6px rgba(82,196,26,.5);box-shadow:0 0 6px rgba(82,196,26,.5);-webkit-animation:pulse-green-49c4f239 2s infinite;animation:pulse-green-49c4f239 2s infinite}.user-manage-page .status-cell .status-dot.dot-stopped[data-v-49c4f239]{background:#d9d9d9}.user-manage-page .status-cell .status-running[data-v-49c4f239]{color:#52c41a;font-weight:500;font-size:13px}.user-manage-page .status-cell .status-stopped[data-v-49c4f239]{color:#999;font-size:13px}@-webkit-keyframes pulse-green-49c4f239{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-green-49c4f239{0%,to{opacity:1}50%{opacity:.5}}.user-manage-page .user-cell[data-v-49c4f239]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;overflow:hidden;white-space:nowrap;cursor:default}.user-manage-page .user-cell .user-name[data-v-49c4f239]{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:80px}.user-manage-page .indicator-name[data-v-49c4f239]{color:#722ed1;font-size:12px}.user-manage-page .exchange-name[data-v-49c4f239]{font-size:12px;text-transform:capitalize}.user-manage-page .address-text[data-v-49c4f239],.user-manage-page .hash-text[data-v-49c4f239]{font-family:Roboto Mono,Courier New,monospace;font-size:12px;color:#1890ff;cursor:pointer}.user-manage-page .address-text[data-v-49c4f239]:hover,.user-manage-page .hash-text[data-v-49c4f239]:hover{text-decoration:underline}.user-manage-page[data-v-49c4f239] .ant-tag.ant-tag-grey{background-color:#f5f5f5;border-color:#d9d9d9;color:#595959}.user-manage-page.theme-dark[data-v-49c4f239]{background:-webkit-gradient(linear,left top,left bottom,from(#0d1117),to(#161b22));background:linear-gradient(180deg,#0d1117,#161b22)}.user-manage-page.theme-dark .page-header .page-title[data-v-49c4f239]{color:#e0e6ed}.user-manage-page.theme-dark .page-header .page-desc[data-v-49c4f239]{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-49c4f239] .ant-tabs-bar{border-bottom-color:#30363d}.user-manage-page.theme-dark .manage-tabs[data-v-49c4f239] .ant-tabs-tab{color:#8b949e}.user-manage-page.theme-dark .manage-tabs[data-v-49c4f239] .ant-tabs-tab:hover{color:#c9d1d9}.user-manage-page.theme-dark .manage-tabs[data-v-49c4f239] .ant-tabs-tab-active{color:#1890ff}.user-manage-page.theme-dark .summary-cards .summary-card[data-v-49c4f239]{background:#1e222d;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.3);box-shadow:0 2px 12px rgba(0,0,0,.3)}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-value[data-v-49c4f239]{color:#e0e6ed}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-value .roi-badge[data-v-49c4f239]{background:hsla(0,0%,100%,.08)}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-sub[data-v-49c4f239]{color:#8b949e}.user-manage-page.theme-dark .summary-cards .summary-card .summary-info .summary-label[data-v-49c4f239]{color:#6e7681}.user-manage-page.theme-dark .user-table-card[data-v-49c4f239]{background:#1e222d;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.user-manage-page.theme-dark .user-table-card[data-v-49c4f239] .ant-card-body{background:#1e222d}.user-manage-page.theme-dark .user-table-card[data-v-49c4f239] .ant-table{background:#1e222d;color:#c9d1d9}.user-manage-page.theme-dark .user-table-card[data-v-49c4f239] .ant-table .ant-table-thead>tr>th{background:#252a36;color:#e0e6ed;border-bottom-color:#30363d}.user-manage-page.theme-dark .user-table-card[data-v-49c4f239] .ant-table .ant-table-tbody>tr>td{border-bottom-color:#30363d}.user-manage-page.theme-dark .user-table-card[data-v-49c4f239] .ant-table .ant-table-tbody>tr:hover>td{background:#252a36}.user-manage-page.theme-dark .user-table-card .text-muted[data-v-49c4f239]{color:#6e7681}.user-manage-page.theme-dark .user-table-card h4[data-v-49c4f239]{color:#e0e6ed!important}.user-manage-page .credits-value[data-v-49c4f239]{font-weight:600;color:#722ed1}.user-manage-page .current-credits-info[data-v-49c4f239],.user-manage-page .current-vip-info[data-v-49c4f239]{margin-bottom:16px;padding:12px 16px;background:#f5f5f5;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.user-manage-page .current-credits-info .label[data-v-49c4f239],.user-manage-page .current-vip-info .label[data-v-49c4f239]{color:#666}.user-manage-page .current-credits-info .value[data-v-49c4f239],.user-manage-page .current-vip-info .value[data-v-49c4f239]{font-weight:600;color:#1890ff;font-size:18px}.user-manage-page .current-credits-info .value.active[data-v-49c4f239],.user-manage-page .current-vip-info .value.active[data-v-49c4f239]{color:#52c41a}.user-manage-page .current-credits-info .value.expired[data-v-49c4f239],.user-manage-page .current-vip-info .value.expired[data-v-49c4f239]{color:#999}@media (max-width:1200px){.summary-cards[data-v-49c4f239]{grid-template-columns:repeat(2,1fr)!important}}@media (max-width:768px){.summary-cards[data-v-49c4f239]{grid-template-columns:1fr!important}}
\ No newline at end of file
diff --git a/frontend/dist/css/829.e48d5d81.css b/frontend/dist/css/829.e48d5d81.css
deleted file mode 100644
index fdd2b37..0000000
--- a/frontend/dist/css/829.e48d5d81.css
+++ /dev/null
@@ -1 +0,0 @@
-.profile-page[data-v-86a53e9c]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.profile-page .page-header[data-v-86a53e9c]{margin-bottom:24px}.profile-page .page-header .page-title[data-v-86a53e9c]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.profile-page .page-header .page-title .anticon[data-v-86a53e9c]{font-size:28px;color:#1890ff}.profile-page .page-header .page-desc[data-v-86a53e9c]{color:#64748b;font-size:14px;margin:0}.profile-page .profile-cards-row[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .profile-card-col[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-col[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-col .ant-card[data-v-86a53e9c]{height:100%}.profile-page .profile-cards-row .profile-card-col[data-v-86a53e9c] .ant-card-body,.profile-page .profile-cards-row .right-cards-col[data-v-86a53e9c] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row[data-v-86a53e9c]{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-86a53e9c],.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-row .ant-col .ant-card[data-v-86a53e9c]{height:100%}.profile-page .profile-cards-row .right-cards-row .ant-col[data-v-86a53e9c] .ant-card-body{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);text-align:center}.profile-page .profile-card .avatar-section[data-v-86a53e9c]{padding:20px 0}.profile-page .profile-card .avatar-section .ant-avatar[data-v-86a53e9c]{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}.profile-page .profile-card .avatar-section .username[data-v-86a53e9c]{margin:16px 0 8px;font-size:20px;font-weight:600;color:#1e3a5f}.profile-page .profile-card .avatar-section .user-role[data-v-86a53e9c]{margin:0}.profile-page .profile-card .profile-info[data-v-86a53e9c]{text-align:left;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .profile-card .profile-info .info-item[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 0;border-bottom:1px solid #f0f0f0}.profile-page .profile-card .profile-info .info-item[data-v-86a53e9c]:last-child{border-bottom:none}.profile-page .profile-card .profile-info .info-item .anticon[data-v-86a53e9c]{font-size:16px;color:#1890ff;margin-right:12px}.profile-page .profile-card .profile-info .info-item .label[data-v-86a53e9c]{color:#64748b;margin-right:8px}.profile-page .profile-card .profile-info .info-item .value[data-v-86a53e9c]{color:#1e3a5f;font-weight:500}.profile-page .edit-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.profile-page .edit-card .password-form[data-v-86a53e9c],.profile-page .edit-card .profile-form[data-v-86a53e9c]{max-width:500px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input-password,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input-password{border-radius:8px}.profile-page .edit-card .password-form .email-hint[data-v-86a53e9c],.profile-page .edit-card .profile-form .email-hint[data-v-86a53e9c]{margin-top:8px;font-size:12px;color:rgba(0,0,0,.45)}.profile-page .edit-card .password-form .email-hint.email-warning[data-v-86a53e9c],.profile-page .edit-card .profile-form .email-hint.email-warning[data-v-86a53e9c]{color:#faad14}.profile-page .edit-card .amount-positive[data-v-86a53e9c]{color:#52c41a;font-weight:600}.profile-page .edit-card .amount-negative[data-v-86a53e9c]{color:#ff4d4f;font-weight:600}.profile-page .edit-card .notification-settings-form .field-hint[data-v-86a53e9c]{margin-top:6px;font-size:12px;color:rgba(0,0,0,.45);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.profile-page .edit-card .notification-settings-form .field-hint .anticon[data-v-86a53e9c]{font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group{width:100%}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-wrapper{margin-bottom:8px}.profile-page .credits-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.profile-page .credits-card[data-v-86a53e9c] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .credits-card[data-v-86a53e9c] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .credits-card .credits-header .credits-title[data-v-86a53e9c]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-86a53e9c]{font-size:18px}.profile-page .credits-card .credits-body[data-v-86a53e9c]{padding:20px 0;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-86a53e9c]{font-size:42px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.2)}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-86a53e9c]{font-size:16px;color:hsla(0,0%,100%,.9);margin-left:8px}.profile-page .credits-card .credits-body .vip-status[data-v-86a53e9c]{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;font-size:13px}.profile-page .credits-card .credits-body .vip-status .vip-active[data-v-86a53e9c]{color:gold}.profile-page .credits-card .credits-body .vip-status .vip-expired[data-v-86a53e9c]{color:hsla(0,0%,100%,.6)}.profile-page .credits-card .credits-body .vip-status .no-vip[data-v-86a53e9c]{color:hsla(0,0%,100%,.7)}.profile-page .credits-card .credits-actions[data-v-86a53e9c]{text-align:center;margin-top:auto}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{border-radius:20px;padding:0 24px;height:36px;font-weight:500;background:#fff;color:#667eea;border:none}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]:hover{background:hsla(0,0%,100%,.9);color:#764ba2}.profile-page .credits-card .credits-hint[data-v-86a53e9c]{margin-top:12px;text-align:center;font-size:12px;color:hsla(0,0%,100%,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card[data-v-86a53e9c]{border-radius:12px;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08);background:linear-gradient(135deg,#11998e,#38ef7d);color:#fff}.profile-page .referral-card[data-v-86a53e9c] .ant-card-body{background:transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-card[data-v-86a53e9c] .ant-divider{border-color:hsla(0,0%,100%,.2)}.profile-page .referral-card .referral-header .referral-title[data-v-86a53e9c]{font-size:16px;font-weight:600;margin:0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-86a53e9c]{font-size:18px}.profile-page .referral-card .referral-body[data-v-86a53e9c]{padding:12px 0;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.profile-page .referral-card .referral-body .referral-stats[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.profile-page .referral-card .referral-body .referral-stats .stat-item[data-v-86a53e9c]{text-align:center}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-86a53e9c]{font-size:28px;font-weight:700;color:#fff;display:block}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-86a53e9c]{font-size:12px;color:hsla(0,0%,100%,.8)}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-86a53e9c]{font-size:12px;color:hsla(0,0%,100%,.9);margin-bottom:6px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input{background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::-webkit-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::-moz-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input:-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::-ms-input-placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input::placeholder{color:hsla(0,0%,100%,.6)}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .anticon-copy{color:#fff}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .anticon-copy:hover{color:gold}.profile-page .referral-card .referral-body .referral-hint[data-v-86a53e9c]{margin-top:auto;text-align:center;font-size:12px;color:hsla(0,0%,100%,.85);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px}.profile-page .referral-card .referral-body .referral-hint .anticon-gift[data-v-86a53e9c]{color:gold}.profile-page .referral-user-cell[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px}.profile-page .referral-user-cell .user-info[data-v-86a53e9c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .referral-user-cell .user-info .nickname[data-v-86a53e9c]{font-weight:500;color:#333}.profile-page .referral-user-cell .user-info .username[data-v-86a53e9c]{font-size:12px;color:#999}.profile-page .exchange-config-section .credential-hint[data-v-86a53e9c]{font-family:SFMono-Regular,Consolas,monospace;font-size:13px;color:#666}.profile-page .test-result-msg[data-v-86a53e9c]{margin-top:8px;font-size:13px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.profile-page .test-result-msg.success[data-v-86a53e9c]{color:#52c41a}.profile-page .test-result-msg.error[data-v-86a53e9c]{color:#f5222d}.profile-page.theme-dark[data-v-86a53e9c]{background:-webkit-gradient(linear,left top,left bottom,from(#0d1117),to(#161b22));background:linear-gradient(180deg,#0d1117,#161b22)}.profile-page.theme-dark .page-header .page-title[data-v-86a53e9c]{color:#e0e6ed}.profile-page.theme-dark .page-header .page-desc[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-86a53e9c],.profile-page.theme-dark .profile-card[data-v-86a53e9c]{background:#1e222d;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-card-body,.profile-page.theme-dark .profile-card[data-v-86a53e9c] .ant-card-body{background:#1e222d}.profile-page.theme-dark .profile-card .avatar-section .username[data-v-86a53e9c]{color:#e0e6ed}.profile-page.theme-dark .profile-card .profile-info .info-item[data-v-86a53e9c]{border-bottom-color:#30363d}.profile-page.theme-dark .profile-card .profile-info .info-item .label[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark .profile-card .profile-info .info-item .value[data-v-86a53e9c]{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-bar{border-bottom-color:#30363d}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-tab{color:#8b949e}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-tab:hover{color:#e0e6ed}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-tab-active{color:#1890ff}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-form-item-label label{color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password{background:#0d1117;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input:hover{border-color:#1890ff}.profile-page.theme-dark .credits-card[data-v-86a53e9c]{background:linear-gradient(135deg,#1a1a2e,#16213e 50%,#0f3460);-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.profile-page.theme-dark .credits-card[data-v-86a53e9c] .ant-divider{border-color:hsla(0,0%,100%,.1)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{background:hsla(0,0%,100%,.15);color:#fff;border:1px solid hsla(0,0%,100%,.2)}.profile-page.theme-dark .credits-card .credits-actions .ant-btn[data-v-86a53e9c]:hover{background:hsla(0,0%,100%,.25)}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table{background:#1e222d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-thead>tr>th{background:#2a2e39;color:#c9d1d9;border-bottom-color:#30363d}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td{background:#1e222d;color:#c9d1d9;border-bottom-color:#30363d}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr:hover>td{background:#2a2e39}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-placeholder{background:#1e222d;color:#8b949e}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td,.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td :not(.ant-tag):not(.ant-btn),.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td div,.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .ant-table-tbody>tr>td span{color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .amount-positive{color:#52c41a}.profile-page.theme-dark[data-v-86a53e9c] .ant-table-wrapper .amount-negative{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-form-item-label>label,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-form-item-label>label,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-form-item-label>label{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-form-item-explain,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-form-item-extra,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-form-item-explain,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-form-item-extra,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-form-item-explain,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-form-item-extra{color:#8b949e}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector{background:#0d1117;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::-webkit-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::-webkit-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::-moz-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::-moz-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::-moz-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::-moz-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input:-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector:-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::-ms-input-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::-ms-input-placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-number::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input-password::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-input::placeholder,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selector::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-number::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input-password::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-input::placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selector::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-number::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input-password::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-input::placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selector::placeholder{color:#6e7681}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-checkbox-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-checkbox-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-radio-wrapper,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-radio-wrapper span,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selection-item,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-select-selection-placeholder,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-checkbox-wrapper,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-checkbox-wrapper span,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-radio-wrapper,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-radio-wrapper span,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selection-item,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-select-selection-placeholder,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-checkbox-wrapper,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-checkbox-wrapper span,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-radio-wrapper,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-radio-wrapper span,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selection-item,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-select-selection-placeholder{color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}.profile-page.theme-dark .notification-settings-form .email-hint[data-v-86a53e9c],.profile-page.theme-dark .notification-settings-form .field-hint[data-v-86a53e9c],.profile-page.theme-dark .password-form .email-hint[data-v-86a53e9c],.profile-page.theme-dark .password-form .field-hint[data-v-86a53e9c],.profile-page.theme-dark .profile-form .email-hint[data-v-86a53e9c],.profile-page.theme-dark .profile-form .field-hint[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark .notification-settings-form .email-warning[data-v-86a53e9c],.profile-page.theme-dark .password-form .email-warning[data-v-86a53e9c],.profile-page.theme-dark .profile-form .email-warning[data-v-86a53e9c]{color:#f5222d}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-alert{background:#1e222d;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-alert .ant-alert-message{color:#c9d1d9}.profile-page.theme-dark .exchange-config-section .credential-hint[data-v-86a53e9c],.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-alert .ant-alert-description{color:#8b949e}.profile-page.theme-dark .test-result-msg.success[data-v-86a53e9c]{color:#52c41a}.profile-page.theme-dark .test-result-msg.error[data-v-86a53e9c]{color:#f5222d}.profile-page.theme-dark .referral-user-cell .user-info .nickname[data-v-86a53e9c]{color:#c9d1d9}.profile-page.theme-dark .referral-user-cell .user-info .username[data-v-86a53e9c]{color:#8b949e}.profile-page.theme-dark[data-v-86a53e9c] .ant-tag{color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item{background:#1e222d;border-color:#30363d}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item a{color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item-active a{color:#fff}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-next .ant-pagination-item-link,.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-prev .ant-pagination-item-link{background:#1e222d;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-options .ant-select-selector{background:#0d1117;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-btn.ant-btn-default{background:#1e222d;border-color:#30363d;color:#c9d1d9}.profile-page.theme-dark[data-v-86a53e9c] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}@media screen and (max-width:768px){.profile-page[data-v-86a53e9c]{padding:12px}.profile-page .page-header[data-v-86a53e9c]{margin-bottom:16px}.profile-page .page-header .page-title[data-v-86a53e9c]{font-size:20px}.profile-page .page-header .page-title .anticon[data-v-86a53e9c]{font-size:22px}.profile-page .page-header .page-desc[data-v-86a53e9c]{font-size:13px}.profile-page .profile-cards-row[data-v-86a53e9c]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .profile-card-col[data-v-86a53e9c]{margin-bottom:12px}.profile-page .profile-cards-row .right-cards-col .right-cards-row[data-v-86a53e9c]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.profile-page .profile-cards-row .right-cards-col .right-cards-row .ant-col[data-v-86a53e9c]{margin-bottom:12px}.profile-page .profile-card[data-v-86a53e9c]{border-radius:10px}.profile-page .profile-card .avatar-section[data-v-86a53e9c]{padding:16px 0}.profile-page .profile-card .avatar-section[data-v-86a53e9c] .ant-avatar{width:80px!important;height:80px!important;line-height:80px!important}.profile-page .profile-card .avatar-section .username[data-v-86a53e9c]{font-size:18px;margin:12px 0 6px}.profile-page .profile-card .profile-info .info-item[data-v-86a53e9c]{padding:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .profile-card .profile-info .info-item .anticon[data-v-86a53e9c]{font-size:14px;margin-right:8px}.profile-page .profile-card .profile-info .info-item .label[data-v-86a53e9c]{font-size:13px}.profile-page .profile-card .profile-info .info-item .value[data-v-86a53e9c]{font-size:13px;word-break:break-all}.profile-page .credits-card[data-v-86a53e9c]{border-radius:10px}.profile-page .credits-card .credits-header .credits-title[data-v-86a53e9c]{font-size:15px}.profile-page .credits-card .credits-header .credits-title .anticon[data-v-86a53e9c]{font-size:16px}.profile-page .credits-card .credits-body[data-v-86a53e9c]{padding:16px 0}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-86a53e9c]{font-size:32px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-86a53e9c]{font-size:14px}.profile-page .credits-card .credits-body .vip-status[data-v-86a53e9c]{font-size:12px;margin-top:10px}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{height:34px;padding:0 20px;font-size:14px}.profile-page .credits-card .credits-hint[data-v-86a53e9c]{font-size:11px;margin-top:10px}.profile-page .referral-card[data-v-86a53e9c]{border-radius:10px}.profile-page .referral-card .referral-header .referral-title[data-v-86a53e9c]{font-size:15px}.profile-page .referral-card .referral-header .referral-title .anticon[data-v-86a53e9c]{font-size:16px}.profile-page .referral-card .referral-body[data-v-86a53e9c]{padding:10px 0}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-86a53e9c]{font-size:24px}.profile-page .referral-card .referral-body .referral-link-section .link-label[data-v-86a53e9c],.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-label[data-v-86a53e9c]{font-size:11px}.profile-page .referral-card .referral-body .referral-link-section .link-box[data-v-86a53e9c] .ant-input{font-size:12px}.profile-page .referral-card .referral-body .referral-hint[data-v-86a53e9c]{font-size:11px;padding-top:8px}.profile-page .edit-card[data-v-86a53e9c]{border-radius:10px;margin-top:12px!important}.profile-page .edit-card[data-v-86a53e9c] .ant-card-body{padding:12px}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav .ant-tabs-tab{padding:10px 12px;font-size:13px}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav-scroll::-webkit-scrollbar{display:none}.profile-page .edit-card .password-form[data-v-86a53e9c],.profile-page .edit-card .profile-form[data-v-86a53e9c]{max-width:100%}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-form-item-label,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-form-item-label{padding-bottom:4px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-form-item-label label,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-form-item-label label{font-size:13px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-input-password,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input,.profile-page .edit-card .profile-form[data-v-86a53e9c] .ant-input-password{font-size:14px}.profile-page .edit-card .password-form .email-hint[data-v-86a53e9c],.profile-page .edit-card .profile-form .email-hint[data-v-86a53e9c]{font-size:11px}.profile-page .edit-card .password-form[data-v-86a53e9c] .ant-alert{font-size:12px;padding:8px 12px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-alert{font-size:12px;padding:8px 12px;margin-bottom:16px!important}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form{max-width:100%}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-row{margin-left:0!important;margin-right:0!important}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-row .ant-col{padding-left:0!important;padding-right:8px!important}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-checkbox-wrapper{font-size:13px;margin-bottom:6px}.profile-page .edit-card .notification-settings-form .field-hint[data-v-86a53e9c]{font-size:11px;-ms-flex-wrap:wrap;flex-wrap:wrap}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form-item{margin-bottom:16px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form-item:last-child .ant-btn{width:100%;margin-bottom:8px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-form-item:last-child .ant-btn+.ant-btn{margin-left:0!important}.profile-page .edit-card[data-v-86a53e9c] .ant-table-wrapper{overflow-x:auto}.profile-page .edit-card[data-v-86a53e9c] .ant-table-wrapper .ant-table{min-width:500px}.profile-page .referral-user-cell[data-v-86a53e9c]{gap:8px}.profile-page .referral-user-cell[data-v-86a53e9c] .ant-avatar{width:28px!important;height:28px!important;line-height:28px!important}.profile-page .referral-user-cell .user-info .nickname[data-v-86a53e9c]{font-size:13px}.profile-page .referral-user-cell .user-info .username[data-v-86a53e9c]{font-size:11px}}@media screen and (max-width:480px){.profile-page[data-v-86a53e9c]{padding:8px}.profile-page .page-header[data-v-86a53e9c]{margin-bottom:12px}.profile-page .page-header .page-title[data-v-86a53e9c]{font-size:18px;gap:8px}.profile-page .page-header .page-title .anticon[data-v-86a53e9c]{font-size:20px}.profile-page .credits-card .credits-body .credits-amount .amount-value[data-v-86a53e9c]{font-size:28px}.profile-page .credits-card .credits-body .credits-amount .amount-label[data-v-86a53e9c]{font-size:13px}.profile-page .credits-card .credits-actions .ant-btn[data-v-86a53e9c]{width:100%}.profile-page .referral-card .referral-body .referral-stats .stat-item .stat-value[data-v-86a53e9c]{font-size:20px}.profile-page .edit-card[data-v-86a53e9c] .ant-tabs-nav .ant-tabs-tab{padding:8px 10px;font-size:12px}.profile-page .edit-card .notification-settings-form[data-v-86a53e9c] .ant-checkbox-group .ant-row .ant-col{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}}
\ No newline at end of file
diff --git a/frontend/dist/css/875.752239ab.css b/frontend/dist/css/875.752239ab.css
new file mode 100644
index 0000000..ffcfbe4
--- /dev/null
+++ b/frontend/dist/css/875.752239ab.css
@@ -0,0 +1 @@
+.settings-page[data-v-f144964c]{padding:24px;min-height:calc(100vh - 120px);background:-webkit-gradient(linear,left top,left bottom,from(#f8fafc),to(#f1f5f9));background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.settings-page .restart-alert[data-v-f144964c]{margin-bottom:16px;border-radius:8px}.settings-page .settings-header[data-v-f144964c]{margin-bottom:24px}.settings-page .settings-header .page-title[data-v-f144964c]{font-size:24px;font-weight:700;margin:0 0 8px 0;color:#1e3a5f;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.settings-page .settings-header .page-title .anticon[data-v-f144964c]{font-size:28px;color:#1890ff}.settings-page .settings-header .page-desc[data-v-f144964c]{color:#64748b;font-size:14px;margin:0}.settings-page .settings-content[data-v-f144964c]{margin-bottom:80px}.settings-page .openrouter-balance-card[data-v-f144964c]{margin-bottom:20px}.settings-page .openrouter-balance-card .ant-card[data-v-f144964c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff;border-radius:8px}.settings-page .openrouter-balance-card .balance-header[data-v-f144964c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:12px}.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-f144964c]{font-size:15px;font-weight:600;color:#1890ff}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c]{padding:8px 0}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-title{font-size:12px;color:#666}.settings-page .openrouter-balance-card .balance-info[data-v-f144964c] .ant-statistic-content{font-size:18px}.settings-page .openrouter-balance-card .balance-info .free-tier-badge[data-v-f144964c]{margin-top:12px;text-align:right}.settings-page .openrouter-balance-card .balance-empty[data-v-f144964c]{color:#8c8c8c;font-size:13px;padding:8px 0}.settings-page .settings-collapse[data-v-f144964c]{background:transparent}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item{margin-bottom:16px;border:none;border-radius:12px;overflow:hidden;background:#fff;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.08)}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{font-size:16px;font-weight:600;color:#1e3a5f;padding:16px 24px;padding-left:48px;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff;left:20px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{font-size:18px;color:#1890ff}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{font-size:16px}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content{border-top:none}.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{padding:24px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label{padding-bottom:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label label{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-ms-flex-wrap:wrap;flex-wrap:wrap}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text{color:#475569;font-weight:500}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{font-size:14px;color:#94a3b8;cursor:help;-webkit-transition:color .2s;transition:color .2s}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{font-size:12px;font-weight:400;color:#1890ff;text-decoration:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:2px 8px;background:rgba(24,144,255,.08);border-radius:4px;-webkit-transition:all .2s;transition:all .2s;margin-left:4px}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15);color:#0076e4}.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link .anticon{font-size:11px}.settings-page .settings-form[data-v-f144964c] .ant-input,.settings-page .settings-form[data-v-f144964c] .ant-input-number,.settings-page .settings-form[data-v-f144964c] .ant-select-selection{border-radius:8px}.settings-page .settings-form[data-v-f144964c] .ant-input-number{width:100%}.settings-page .settings-form .password-field .field-hint[data-v-f144964c]{margin-top:4px;font-size:12px;color:#52c41a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px}.settings-page .settings-form .field-default[data-v-f144964c]{margin-top:4px;font-size:12px;color:#94a3b8}.settings-page .settings-footer[data-v-f144964c]{position:fixed;bottom:0;left:208px;right:0;padding:16px 24px;background:#fff;-webkit-box-shadow:0 -4px 20px rgba(0,0,0,.08);box-shadow:0 -4px 20px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px;z-index:100}.settings-page .settings-footer .ant-btn[data-v-f144964c]{min-width:100px;height:40px;border-radius:8px;font-weight:500}.settings-page.theme-dark[data-v-f144964c]{background:-webkit-gradient(linear,left top,left bottom,from(#141414),to(#1c1c1c));background:linear-gradient(180deg,#141414,#1c1c1c)}.settings-page.theme-dark .restart-alert[data-v-f144964c]{background:#1c1c1c;border-color:#b08800}.settings-page.theme-dark .settings-header .page-title[data-v-f144964c]{color:#e0e6ed}.settings-page.theme-dark .settings-header .page-desc[data-v-f144964c]{color:#8b949e}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item{background:#1c1c1c;-webkit-box-shadow:0 4px 24px rgba(0,0,0,.25);box-shadow:0 4px 24px rgba(0,0,0,.25)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header{background:linear-gradient(135deg,#252525,#1c1c1c);color:#e0e6ed;border-bottom-color:hsla(0,0%,100%,.06)}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#58a6ff}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-title{color:#e0e6ed}.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content,.settings-page.theme-dark .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-content .ant-collapse-content-box{background:#1c1c1c}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .label-text,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label label{color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon{color:#6e7681}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15);color:#58a6ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection{background:#141414;border-color:#2a2a2a;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:hover{border-color:#1890ff}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number-input{background:transparent;color:#c9d1d9}.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-arrow{color:#8b949e}.settings-page.theme-dark .settings-form .field-default[data-v-f144964c]{color:#6e7681}.settings-page.theme-dark .settings-footer[data-v-f144964c]{background:#1c1c1c;border-top:1px solid hsla(0,0%,100%,.06);-webkit-box-shadow:0 -4px 24px rgba(0,0,0,.25);box-shadow:0 -4px 24px rgba(0,0,0,.25)}@media (max-width:768px){.settings-page[data-v-f144964c]{padding:16px}.settings-page .settings-footer[data-v-f144964c]{left:0;padding:12px 16px}}
\ No newline at end of file
diff --git a/frontend/dist/css/896.37fb7134.css b/frontend/dist/css/896.37fb7134.css
deleted file mode 100644
index 91cfae0..0000000
--- a/frontend/dist/css/896.37fb7134.css
+++ /dev/null
@@ -1 +0,0 @@
-.fast-analysis-report[data-v-693144f6]{height:100%;overflow-y:auto;padding:20px;background:linear-gradient(135deg,#f5f7fa,#e4e8ec);border-radius:12px}.fast-analysis-report .loading-container[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px;background:#fff;border-radius:12px}.fast-analysis-report .loading-container .loading-content-pro[data-v-693144f6]{width:100%;max-width:400px;padding:40px}.fast-analysis-report .loading-container .loading-content-pro .loading-header[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:12px;margin-bottom:32px}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-693144f6]{font-size:28px;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-title[data-v-693144f6]{font-size:20px;font-weight:600;color:#1e293b}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper[data-v-693144f6]{margin-bottom:24px;position:relative}.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-693144f6]{position:absolute;right:0;top:-24px;font-size:14px;font-weight:600;color:#1890ff}.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;padding:12px 20px;background:#f0f5ff;border-radius:8px;margin-bottom:24px;color:#1890ff;font-size:14px;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .current-step .anticon[data-v-693144f6]{font-size:16px}.fast-analysis-report .loading-container .loading-content-pro .steps-list[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:12px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:10px 16px;background:#f8fafc;border-radius:8px;font-size:13px;color:#94a3b8;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-dot[data-v-693144f6]{width:8px;height:8px;border-radius:50%;background:#e2e8f0;-webkit-transition:all .3s;transition:all .3s}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-text[data-v-693144f6]{-webkit-box-flex:1;-ms-flex:1;flex:1}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item .step-check[data-v-693144f6]{color:#52c41a;font-size:14px}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-693144f6]{background:#e6f7ff;color:#1890ff;font-weight:500}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-693144f6]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done[data-v-693144f6]{background:#f6ffed;color:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.done .step-dot[data-v-693144f6]{background:#52c41a}.fast-analysis-report .loading-container .loading-content-pro .loading-footer[data-v-693144f6]{margin-top:24px;text-align:center}.fast-analysis-report .loading-container .loading-content-pro .loading-footer .elapsed-time[data-v-693144f6]{font-size:13px;color:#94a3b8;font-family:SF Mono,Monaco,monospace}.fast-analysis-report .empty-container[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:400px}.fast-analysis-report .empty-container .empty-content[data-v-693144f6]{text-align:center}.fast-analysis-report .empty-container .empty-content .empty-icon[data-v-693144f6]{font-size:64px;color:#d9d9d9}.fast-analysis-report .empty-container .empty-content .empty-title[data-v-693144f6]{margin-top:16px;font-size:18px;font-weight:600;color:#262626}.fast-analysis-report .empty-container .empty-content .empty-hint[data-v-693144f6]{margin-top:8px;color:#8c8c8c}.fast-analysis-report .result-container .decision-card[data-v-693144f6]{background:#fff;border-radius:16px;padding:24px;margin-bottom:20px;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.08);box-shadow:0 4px 12px rgba(0,0,0,.08);border-left:6px solid #1890ff}.fast-analysis-report .result-container .decision-card.decision-buy[data-v-693144f6]{border-left-color:#52c41a;background:linear-gradient(135deg,#f6ffed,#fff)}.fast-analysis-report .result-container .decision-card.decision-sell[data-v-693144f6]{border-left-color:#ff4d4f;background:linear-gradient(135deg,#fff2f0,#fff)}.fast-analysis-report .result-container .decision-card.decision-hold[data-v-693144f6]{border-left-color:#faad14;background:linear-gradient(135deg,#fffbe6,#fff)}.fast-analysis-report .result-container .decision-card .decision-main[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .anticon[data-v-693144f6]{font-size:32px}.fast-analysis-report .result-container .decision-card .decision-main .decision-badge .decision-text[data-v-693144f6]{font-size:36px;font-weight:800;letter-spacing:2px}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring[data-v-693144f6]{text-align:center}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-value[data-v-693144f6]{font-size:18px;font-weight:700}.fast-analysis-report .result-container .decision-card .decision-main .confidence-ring .confidence-label[data-v-693144f6]{font-size:12px;color:#8c8c8c;margin-top:4px}.fast-analysis-report .result-container .decision-card .decision-summary[data-v-693144f6]{font-size:16px;line-height:1.6;color:#595959;padding-top:16px;border-top:1px dashed #e8e8e8}.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-693144f6]{margin-top:14px;padding:12px 14px;border-radius:8px;background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2);font-size:13px;color:#434343}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-weight:600;margin-bottom:8px;color:#1890ff}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:12px 20px}.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-693144f6]{font-style:normal;color:#8c8c8c;margin-right:6px}.fast-analysis-report .result-container .price-info-row[data-v-693144f6]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .price-info-row .price-card[data-v-693144f6]{background:#fff;border-radius:12px;padding:16px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .price-info-row .price-card .price-label[data-v-693144f6]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .price-info-row .price-card .price-value[data-v-693144f6]{font-size:18px;font-weight:700;color:#262626}.fast-analysis-report .result-container .price-info-row .price-card .price-value.positive[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-value.negative[data-v-693144f6]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card .price-hint[data-v-693144f6]{font-size:10px;color:#bfbfbf;margin-top:6px;cursor:help}.fast-analysis-report .result-container .price-info-row .price-card .price-hint .anticon[data-v-693144f6]{margin-right:2px}.fast-analysis-report .result-container .price-info-row .price-card .price-change[data-v-693144f6]{font-size:14px;margin-top:4px;font-weight:600}.fast-analysis-report .result-container .price-info-row .price-card .price-change.positive[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .price-info-row .price-card .price-change.negative[data-v-693144f6]{color:#ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-693144f6]{border-top:3px solid #1890ff}.fast-analysis-report .result-container .price-info-row .price-card.entry[data-v-693144f6]{border-top:3px solid #722ed1}.fast-analysis-report .result-container .price-info-row .price-card.stop[data-v-693144f6]{border-top:3px solid #ff4d4f}.fast-analysis-report .result-container .price-info-row .price-card.target[data-v-693144f6]{border-top:3px solid #52c41a}.fast-analysis-report .result-container .scores-row[data-v-693144f6]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .scores-row .score-item[data-v-693144f6]{background:#fff;border-radius:12px;padding:16px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .scores-row .score-item .score-header[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-693144f6]{color:#1890ff}.fast-analysis-report .result-container .scores-row .score-item .score-value[data-v-693144f6]{text-align:right;font-size:20px;font-weight:700;color:#262626;margin-top:8px}.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-693144f6]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}.fast-analysis-report .result-container .detailed-analysis[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:16px;margin-bottom:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-693144f6]{background:linear-gradient(135deg,#fff,#fafafa);border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.06);box-shadow:0 2px 12px rgba(0,0,0,.06);border-left:4px solid #1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-693144f6]{border-left-color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-693144f6]{border-left-color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card.sentiment[data-v-693144f6]{border-left-color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:14px;font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header .anticon[data-v-693144f6]{font-size:20px}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-693144f6]{color:#1890ff}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-693144f6]{color:#722ed1}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.sentiment .anticon[data-v-693144f6]{color:#eb2f96}.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-content[data-v-693144f6]{font-size:14px;line-height:1.8;color:#595959;text-align:justify}.fast-analysis-report .result-container .analysis-details[data-v-693144f6]{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.fast-analysis-report .result-container .analysis-details .detail-section[data-v-693144f6]{background:#fff;border-radius:12px;padding:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .analysis-details .detail-section .section-title[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list[data-v-693144f6]{list-style:none;padding:0;margin:0}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-693144f6]{padding:10px 0;border-bottom:1px solid #f0f0f0;font-size:14px;line-height:1.6;color:#595959}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-693144f6]:last-child{border-bottom:none}.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-693144f6]:before{content:"•";margin-right:8px;color:#1890ff}.fast-analysis-report .result-container .analysis-details .detail-section.reasons[data-v-693144f6]{border-left:4px solid #52c41a}.fast-analysis-report .result-container .analysis-details .detail-section.risks[data-v-693144f6]{border-left:4px solid #faad14}.fast-analysis-report .result-container .indicators-section[data-v-693144f6]{background:#fff;border-radius:12px;padding:20px;margin-bottom:20px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .indicators-section .section-title[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;font-size:16px;font-weight:600;margin-bottom:16px;color:#262626}.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-693144f6]{color:#1890ff}.fast-analysis-report .result-container .indicators-section .indicators-grid[data-v-693144f6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item[data-v-693144f6]{background:#fafafa;border-radius:8px;padding:12px;text-align:center}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-name[data-v-693144f6]{font-size:12px;color:#8c8c8c;margin-bottom:8px}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value[data-v-693144f6]{font-size:16px;font-weight:600;color:#262626}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bullish[data-v-693144f6],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.oversold[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.bearish[data-v-693144f6],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.high-volatility[data-v-693144f6],.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.overbought[data-v-693144f6]{color:#ff4d4f}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-value.low-volatility[data-v-693144f6]{color:#52c41a}.fast-analysis-report .result-container .indicators-section .indicators-grid .indicator-item .indicator-signal[data-v-693144f6]{font-size:11px;color:#8c8c8c;margin-top:4px;text-transform:capitalize}.fast-analysis-report .result-container .feedback-section[data-v-693144f6]{background:#fff;border-radius:12px;padding:20px;text-align:center;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.06);box-shadow:0 2px 8px rgba(0,0,0,.06)}.fast-analysis-report .result-container .feedback-section .feedback-question[data-v-693144f6]{font-size:14px;color:#595959;margin-bottom:12px}.fast-analysis-report .result-container .feedback-section .feedback-buttons[data-v-693144f6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px;margin-bottom:16px}.fast-analysis-report .result-container .feedback-section .feedback-buttons .ant-btn[data-v-693144f6]{min-width:100px}.fast-analysis-report .result-container .feedback-section .analysis-meta[data-v-693144f6]{font-size:12px;color:#8c8c8c;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:16px}@media (max-width:992px){.fast-analysis-report .price-info-row[data-v-693144f6],.fast-analysis-report .scores-row[data-v-693144f6]{grid-template-columns:repeat(2,1fr)}.fast-analysis-report .analysis-details[data-v-693144f6]{grid-template-columns:1fr}}@media (max-width:576px){.fast-analysis-report[data-v-693144f6]{padding:12px}.fast-analysis-report .price-info-row[data-v-693144f6],.fast-analysis-report .scores-row[data-v-693144f6]{grid-template-columns:1fr}.fast-analysis-report .decision-card[data-v-693144f6]{padding:16px}.fast-analysis-report .decision-card .decision-main[data-v-693144f6]{gap:16px;text-align:center}.fast-analysis-report .decision-card .decision-main .decision-badge[data-v-693144f6],.fast-analysis-report .decision-card .decision-main[data-v-693144f6]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.fast-analysis-report .decision-card .decision-main .decision-badge .decision-text[data-v-693144f6]{font-size:28px}}.fast-analysis-report.theme-dark[data-v-693144f6]{background:linear-gradient(135deg,#1e222d,#131722)}.fast-analysis-report.theme-dark .loading-content .loading-text[data-v-693144f6]{color:#00e5ff}.fast-analysis-report.theme-dark .empty-content .empty-title[data-v-693144f6]{color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card[data-v-693144f6]{background:#2a2e39;border-left-color:#1890ff}.fast-analysis-report.theme-dark .decision-card.decision-buy[data-v-693144f6]{background:linear-gradient(135deg,rgba(82,196,26,.1),#2a2e39)}.fast-analysis-report.theme-dark .decision-card.decision-sell[data-v-693144f6]{background:linear-gradient(135deg,rgba(255,77,79,.1),#2a2e39)}.fast-analysis-report.theme-dark .decision-card.decision-hold[data-v-693144f6]{background:linear-gradient(135deg,rgba(250,173,20,.1),#2a2e39)}.fast-analysis-report.theme-dark .decision-card .decision-summary[data-v-693144f6]{color:#868993;border-top-color:#363c4e}.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-693144f6]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35);color:#d1d4dc}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-693144f6]{color:#69c0ff}.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-metrics .cm-item em[data-v-693144f6]{color:#868993}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card[data-v-693144f6]{background:linear-gradient(135deg,#2a2e39,#1e222d)}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-693144f6]{border-left-color:#1890ff}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.fundamental[data-v-693144f6]{border-left-color:#722ed1}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.sentiment[data-v-693144f6]{border-left-color:#eb2f96}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-header[data-v-693144f6]{color:#d1d4dc}.fast-analysis-report.theme-dark .detailed-analysis .analysis-card .analysis-card-content[data-v-693144f6]{color:#868993}.fast-analysis-report.theme-dark .detail-section[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section[data-v-693144f6],.fast-analysis-report.theme-dark .price-card[data-v-693144f6],.fast-analysis-report.theme-dark .score-item[data-v-693144f6]{background:#2a2e39;color:#d1d4dc}.fast-analysis-report.theme-dark .detail-section .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .section-title[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .analysis-meta[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .feedback-question[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .indicator-name[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .indicator-signal[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .price-label[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .score-header[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .section-title[data-v-693144f6]{color:#868993}.fast-analysis-report.theme-dark .detail-section .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .detail-section .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .feedback-section .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .indicators-section .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .price-card .score-value[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .indicator-value[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .price-value[data-v-693144f6],.fast-analysis-report.theme-dark .score-item .score-value[data-v-693144f6]{color:#d1d4dc}.fast-analysis-report.theme-dark .score-item.overall[data-v-693144f6]{background:linear-gradient(135deg,rgba(24,144,255,.1),#2a2e39);border-color:#1890ff}.fast-analysis-report.theme-dark .detail-list li[data-v-693144f6]{color:#868993;border-bottom-color:#363c4e}.fast-analysis-report.theme-dark .indicators-grid .indicator-item[data-v-693144f6]{background:#363c4e}.ai-analysis-container[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;height:calc(100vh - 120px);background:#f0f2f5;overflow:hidden;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ai-analysis-container.embedded[data-v-41eda137]{height:auto;min-height:700px;background:transparent}.ai-analysis-container.embedded .main-content-full[data-v-41eda137]{-webkit-box-shadow:none;box-shadow:none;border-radius:0}.main-content-full[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;background:#fff;border-radius:12px;height:100%;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.08);box-shadow:0 2px 8px rgba(0,0,0,.08);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.top-index-bar[data-v-41eda137]{gap:8px;padding:8px 16px;background:#f8fafc;border-bottom:1px solid #e2e8f0;font-family:SF Mono,Monaco,Consolas,monospace}.top-index-bar .indicator-box[data-v-41eda137],.top-index-bar[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.top-index-bar .indicator-box[data-v-41eda137]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:4px 10px;background:#fff;border-radius:6px;border:1px solid #e2e8f0;min-width:50px}.top-index-bar .indicator-box .ind-label[data-v-41eda137]{font-size:9px;color:#94a3b8;text-transform:uppercase}.top-index-bar .indicator-box .ind-value[data-v-41eda137]{font-size:13px;font-weight:700;color:#1e293b}.top-index-bar .indicator-box.fear-greed.extreme-fear .ind-value[data-v-41eda137]{color:#dc2626}.top-index-bar .indicator-box.fear-greed.fear .ind-value[data-v-41eda137]{color:#ea580c}.top-index-bar .indicator-box.fear-greed.neutral .ind-value[data-v-41eda137]{color:#ca8a04}.top-index-bar .indicator-box.fear-greed.greed .ind-value[data-v-41eda137]{color:#65a30d}.top-index-bar .indicator-box.fear-greed.extreme-greed .ind-value[data-v-41eda137],.top-index-bar .indicator-box.vix.low .ind-value[data-v-41eda137]{color:#16a34a}.top-index-bar .indicator-box.vix.medium .ind-value[data-v-41eda137]{color:#ca8a04}.top-index-bar .indicator-box.vix.high .ind-value[data-v-41eda137]{color:#dc2626}.top-index-bar .indicator-box.dxy .ind-value[data-v-41eda137]{color:#2563eb}.top-index-bar .indices-marquee[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;min-width:0}.top-index-bar .indices-marquee .marquee-track[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-webkit-animation:marquee-41eda137 35s linear infinite;animation:marquee-41eda137 35s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content}.top-index-bar .indices-marquee .marquee-track[data-v-41eda137]:hover{-webkit-animation-play-state:paused;animation-play-state:paused}.top-index-bar .indices-marquee .index-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:4px 8px;background:#fff;border-radius:4px;border:1px solid #e2e8f0;font-size:11px;white-space:nowrap}.top-index-bar .indices-marquee .index-item .idx-flag[data-v-41eda137]{font-size:11px}.top-index-bar .indices-marquee .index-item .idx-symbol[data-v-41eda137]{color:#64748b;font-weight:500}.top-index-bar .indices-marquee .index-item .idx-price[data-v-41eda137]{color:#1e293b;font-weight:600}.top-index-bar .indices-marquee .index-item .idx-change[data-v-41eda137]{font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1px}.top-index-bar .indices-marquee .index-item .idx-change.up[data-v-41eda137]{color:#16a34a}.top-index-bar .indices-marquee .index-item .idx-change.down[data-v-41eda137]{color:#dc2626}@-webkit-keyframes marquee-41eda137{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes marquee-41eda137{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.top-index-bar .refresh-btn[data-v-41eda137]{color:#94a3b8;-ms-flex-negative:0;flex-shrink:0}.top-index-bar .refresh-btn[data-v-41eda137]:hover{color:#1e293b}.main-body[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:12px;overflow:hidden;min-height:0}.left-panel[data-v-41eda137],.main-body[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.left-panel[data-v-41eda137]{width:280px;-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.left-panel .heatmap-box[data-v-41eda137]{background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0}.left-panel .heatmap-box .box-header[data-v-41eda137]{margin-bottom:10px}.left-panel .heatmap-box .box-header[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper{font-size:10px;padding:0 6px;height:22px;line-height:20px}.left-panel .heatmap-box .box-header[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff);color:#fff}.left-panel .heatmap-box .heatmap-grid[data-v-41eda137]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.left-panel .heatmap-box .heatmap-grid .heat-cell[data-v-41eda137]{padding:6px 4px;border-radius:4px;text-align:center;font-size:9px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-name[data-v-41eda137]{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-price[data-v-41eda137]{display:block;font-size:9px;opacity:.8;margin-bottom:1px}.left-panel .heatmap-box .heatmap-grid .heat-cell .heat-val[data-v-41eda137]{font-weight:700;font-size:10px}.left-panel .calendar-box[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;background:#fff;border-radius:8px;padding:12px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0;overflow:hidden}.left-panel .calendar-box .box-header[data-v-41eda137]{margin-bottom:8px}.left-panel .calendar-box .box-header .box-title[data-v-41eda137]{font-size:12px;color:#64748b;font-weight:600}.left-panel .calendar-box .box-header .box-title .anticon[data-v-41eda137]{margin-right:6px;color:var(--primary-color,#1890ff)}.left-panel .calendar-box .calendar-list[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto}.left-panel .calendar-box .calendar-list[data-v-41eda137]::-webkit-scrollbar{width:4px}.left-panel .calendar-box .calendar-list[data-v-41eda137]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.left-panel .calendar-box .calendar-list .cal-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid #f1f5f9;font-size:10px}.left-panel .calendar-box .calendar-list .cal-item[data-v-41eda137]:last-child{border-bottom:none}.left-panel .calendar-box .calendar-list .cal-item.high[data-v-41eda137]{border-left:3px solid #dc2626;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.medium[data-v-41eda137]{border-left:3px solid #ca8a04;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item.low[data-v-41eda137]{border-left:3px solid #16a34a;padding-left:8px;margin-left:-4px}.left-panel .calendar-box .calendar-list .cal-item .cal-date[data-v-41eda137]{font-size:9px;color:#94a3b8;min-width:32px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-time[data-v-41eda137]{color:#64748b;min-width:36px;font-weight:500}.left-panel .calendar-box .calendar-list .cal-item .cal-flag[data-v-41eda137]{font-size:12px}.left-panel .calendar-box .calendar-list .cal-item .cal-name[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-panel .calendar-box .calendar-list .cal-item .cal-impact[data-v-41eda137]{font-weight:600;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2px}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bullish[data-v-41eda137]{color:#16a34a}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.bearish[data-v-41eda137]{color:#dc2626}.left-panel .calendar-box .calendar-list .cal-item .cal-impact.neutral[data-v-41eda137]{color:#94a3b8}.left-panel .calendar-box .calendar-list .cal-empty[data-v-41eda137]{text-align:center;color:#94a3b8;padding:20px 0;font-size:12px}.right-panel[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;overflow:hidden;background:#fff;border-radius:8px;border:1px solid #e2e8f0}.right-panel .analysis-toolbar[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #f1f5f9;background:#fafafa;border-radius:8px 8px 0 0}.right-panel .analysis-toolbar .symbol-selector[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:320px}.right-panel .analysis-toolbar .analyze-button[data-v-41eda137]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}.right-panel .analysis-toolbar .history-button[data-v-41eda137]{border-color:#d9d9d9}.right-panel .analysis-main[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;padding:16px;min-height:0}.right-panel .analysis-main .analysis-placeholder[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;min-height:300px}.right-panel .analysis-main .analysis-placeholder .placeholder-content[data-v-41eda137]{text-align:center}.right-panel .analysis-main .analysis-placeholder .placeholder-content .placeholder-icon[data-v-41eda137]{font-size:72px;color:var(--primary-color,#1890ff);opacity:.5;margin-bottom:20px}.right-panel .analysis-main .analysis-placeholder .placeholder-content h3[data-v-41eda137]{font-size:18px;color:#1e293b;margin-bottom:8px}.right-panel .analysis-main .analysis-placeholder .placeholder-content p[data-v-41eda137]{font-size:14px;color:#64748b}.watchlist-panel[data-v-41eda137]{width:200px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:8px;border:1px solid #e2e8f0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.watchlist-panel .panel-header[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #f1f5f9;background:#fafafa}.watchlist-panel .panel-header .panel-title[data-v-41eda137]{font-size:12px;font-weight:600;color:#64748b}.watchlist-panel .panel-header .panel-title .anticon[data-v-41eda137]{color:#facc15;margin-right:6px}.watchlist-panel .watchlist-list[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:8px}.watchlist-panel .watchlist-list[data-v-41eda137]::-webkit-scrollbar{width:4px}.watchlist-panel .watchlist-list[data-v-41eda137]::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:2px}.watchlist-panel .watchlist-list .watchlist-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 10px;border-radius:6px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;margin-bottom:4px}.watchlist-panel .watchlist-list .watchlist-item[data-v-41eda137]:hover{background:#f8fafc}.watchlist-panel .watchlist-list .watchlist-item.active[data-v-41eda137]{background:#e6f7ff;border:1px solid #91d5ff}.watchlist-panel .watchlist-list .watchlist-item .item-main[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.watchlist-panel .watchlist-list .watchlist-item .item-main .item-symbol[data-v-41eda137]{display:block;font-size:12px;font-weight:600;color:#1e293b}.watchlist-panel .watchlist-list .watchlist-item .item-main .item-name[data-v-41eda137]{display:block;font-size:10px;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.watchlist-panel .watchlist-list .watchlist-item .item-price[data-v-41eda137]{text-align:right;margin-right:8px;font-family:SF Mono,Monaco,monospace}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-value[data-v-41eda137]{display:block;font-size:11px;font-weight:600;color:#1e293b}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-change[data-v-41eda137]{display:block;font-size:10px;font-weight:600}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-change.up[data-v-41eda137]{color:#16a34a}.watchlist-panel .watchlist-list .watchlist-item .item-price .price-change.down[data-v-41eda137]{color:#dc2626}.watchlist-panel .watchlist-list .watchlist-item .item-remove[data-v-41eda137]{color:#cbd5e1;font-size:12px;opacity:0;-webkit-transition:opacity .2s;transition:opacity .2s}.watchlist-panel .watchlist-list .watchlist-item .item-remove[data-v-41eda137]:hover{color:#dc2626}.watchlist-panel .watchlist-list .watchlist-item:hover .item-remove[data-v-41eda137]{opacity:1}.watchlist-panel .watchlist-list .watchlist-empty[data-v-41eda137]{text-align:center;padding:24px 12px;color:#94a3b8}.watchlist-panel .watchlist-list .watchlist-empty .anticon[data-v-41eda137]{font-size:32px;margin-bottom:8px;display:block}.watchlist-panel .watchlist-list .watchlist-empty p[data-v-41eda137]{font-size:12px;margin-bottom:12px}@-webkit-keyframes pulse-41eda137{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-41eda137{0%,to{opacity:1}50%{opacity:.5}}@media (max-width:992px){.ai-analysis-container[data-v-41eda137]{height:auto;min-height:calc(100vh - 64px);overflow-y:auto}.main-content-full[data-v-41eda137]{height:auto;min-height:auto}.top-index-bar[data-v-41eda137]{-ms-flex-wrap:wrap;flex-wrap:wrap;padding:8px}.top-index-bar .indicator-box[data-v-41eda137]{min-width:45px;padding:3px 6px}.top-index-bar .indices-marquee[data-v-41eda137]{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10;width:100%;margin-top:8px}.main-body[data-v-41eda137]{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:12px}.left-panel[data-v-41eda137]{width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:12px}.left-panel .calendar-box[data-v-41eda137],.left-panel .heatmap-box[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.left-panel .calendar-box[data-v-41eda137]{max-height:200px}.right-panel .analysis-toolbar[data-v-41eda137]{-ms-flex-wrap:wrap;flex-wrap:wrap}.right-panel .analysis-toolbar .symbol-selector[data-v-41eda137]{width:100%!important;max-width:none!important}.right-panel .analysis-toolbar .analyze-button[data-v-41eda137],.right-panel .analysis-toolbar .history-button[data-v-41eda137]{-webkit-box-flex:1;-ms-flex:1;flex:1}.watchlist-panel[data-v-41eda137]{width:100%;max-height:200px;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}}.ai-analysis-container.theme-dark[data-v-41eda137]{background:#131722;color:#d1d4dc}.ai-analysis-container.theme-dark .main-content-full[data-v-41eda137]{background:#1e222d;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.3);box-shadow:0 2px 8px rgba(0,0,0,.3)}.ai-analysis-container.theme-dark .top-index-bar[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .top-index-bar .indicator-box[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-label[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .top-index-bar .indicator-box .ind-value[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-symbol[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .top-index-bar .indices-marquee .index-item .idx-price[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .top-index-bar .refresh-btn[data-v-41eda137]:hover{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-panel[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-panel .panel-header[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-panel .panel-header .panel-title[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item[data-v-41eda137]:hover{background:#363c4e}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item.active[data-v-41eda137]{background:rgba(24,144,255,.1);border-color:#1890ff}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item .item-main .item-symbol[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item .item-main .item-name[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item .item-price .price-value[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-empty[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .watchlist-bar-legacy[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-41eda137],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-41eda137]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-symbol[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip .chip-price[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper{background:#1e222d;border-color:#363c4e;color:#868993}.ai-analysis-container.theme-dark .left-panel .heatmap-box[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper:hover{color:#d1d4dc}.ai-analysis-container.theme-dark .left-panel .calendar-box[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .left-panel .calendar-box .box-title[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item[data-v-41eda137]{border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-date[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-time[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-item .cal-name[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .left-panel .calendar-box .cal-empty[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark .right-panel[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar[data-v-41eda137]{background:#1e222d;border-bottom-color:#363c4e}.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-41eda137]{background:#2a2e39;border-color:#363c4e;color:#d1d4dc}.ai-analysis-container.theme-dark .right-panel .analysis-main .analysis-placeholder .placeholder-content h3[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .right-panel .analysis-main .analysis-placeholder .placeholder-content p[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-bar-compat[data-v-41eda137]{background:#1e222d;border-top-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-compat .bar-label[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-41eda137]{background:#2a2e39;border-color:#363c4e}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-41eda137],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-41eda137]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.1)}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-symbol[data-v-41eda137]{color:#d1d4dc}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-price[data-v-41eda137]{color:#868993}.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip .chip-remove[data-v-41eda137]{color:#64748b}.ai-analysis-container.theme-dark[data-v-41eda137] .symbol-selector .ant-select-selection{background-color:#2a2e39;border-color:#363c4e;color:#d1d4dc}.add-stock-modal-content .market-tabs[data-v-41eda137]{margin-bottom:16px}.add-stock-modal-content .hot-symbols-section[data-v-41eda137],.add-stock-modal-content .search-results-section[data-v-41eda137],.add-stock-modal-content .symbol-search-section[data-v-41eda137]{margin-bottom:24px}.add-stock-modal-content .hot-symbols-section .section-title[data-v-41eda137],.add-stock-modal-content .search-results-section .section-title[data-v-41eda137]{font-size:14px;font-weight:600;color:#262626;margin-bottom:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.add-stock-modal-content .symbol-list[data-v-41eda137]{max-height:200px;overflow-y:auto;border:1px solid #e8e8e8;border-radius:4px}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-41eda137]{cursor:pointer;padding:8px 12px;-webkit-transition:background-color .3s;transition:background-color .3s}.add-stock-modal-content .symbol-list .symbol-list-item[data-v-41eda137]:hover{background-color:#f5f5f5}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-code[data-v-41eda137]{font-weight:600;color:#262626;min-width:80px}.add-stock-modal-content .symbol-list .symbol-list-item .symbol-item-content .symbol-name[data-v-41eda137]{color:#595959;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-stock-modal-content .selected-symbol-section[data-v-41eda137]{margin-top:16px}.add-stock-modal-content .selected-symbol-section .selected-symbol-info[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skeleton-box .skeleton-text[data-v-41eda137]{display:block;height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;border-radius:4px;margin:3px 0}.skeleton-box .skeleton-text.short[data-v-41eda137]{width:40px;height:9px}.skeleton-cell[data-v-41eda137]{background:#f8fafc!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:8px 4px}.skeleton-cell .skeleton-text[data-v-41eda137]{width:80%;height:10px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;border-radius:3px;margin:2px 0}.skeleton-cell .skeleton-text.short[data-v-41eda137]{width:50%;height:8px}.skeleton-item[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:6px 0}.skeleton-item .skeleton-text[data-v-41eda137]{height:12px;background:-webkit-gradient(linear,left top,right top,color-stop(25%,#e2e8f0),color-stop(50%,#f1f5f9),color-stop(75%,#e2e8f0));background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 50%,#e2e8f0 75%);background-size:200% 100%;-webkit-animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;animation:skeleton-pulse-41eda137 1.5s ease-in-out infinite;border-radius:4px;-webkit-box-flex:1;-ms-flex:1;flex:1}.skeleton-item .skeleton-text.short[data-v-41eda137]{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40px}.indices-empty[data-v-41eda137],.indices-loading[data-v-41eda137]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;font-size:11px;color:#94a3b8;padding:4px 16px}.indices-loading .anticon[data-v-41eda137]{margin-right:6px}.heatmap-empty[data-v-41eda137]{grid-column:-1;text-align:center;padding:20px;color:#94a3b8;font-size:12px}@-webkit-keyframes skeleton-pulse-41eda137{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes skeleton-pulse-41eda137{0%{background-position:200% 0}to{background-position:-200% 0}}.theme-dark .skeleton-box .skeleton-text[data-v-41eda137],.theme-dark .skeleton-cell .skeleton-text[data-v-41eda137],.theme-dark .skeleton-item .skeleton-text[data-v-41eda137]{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#363c4e),color-stop(50%,#424857),color-stop(75%,#363c4e));background:linear-gradient(90deg,#363c4e 25%,#424857 50%,#363c4e 75%);background-size:200% 100%}.theme-dark .skeleton-cell[data-v-41eda137]{background:#2a2e39!important}.theme-dark .heatmap-empty[data-v-41eda137],.theme-dark .indices-empty[data-v-41eda137],.theme-dark .indices-loading[data-v-41eda137]{color:#64748b}
\ No newline at end of file
diff --git a/frontend/dist/css/958.729cfe93.css b/frontend/dist/css/958.729cfe93.css
deleted file mode 100644
index 982c1cf..0000000
--- a/frontend/dist/css/958.729cfe93.css
+++ /dev/null
@@ -1 +0,0 @@
-.quick-trade-drawer[data-v-0d547552] .ant-drawer-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow-y:auto}.qt-header[data-v-0d547552]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid #f0f0f0}.qt-header .qt-header-left[data-v-0d547552],.qt-header[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-header .qt-header-left[data-v-0d547552]{gap:8px}.qt-header .qt-header-left .qt-icon[data-v-0d547552]{font-size:20px;color:#1890ff}.qt-header .qt-header-left .qt-header-title[data-v-0d547552]{font-size:16px;font-weight:600}.qt-header .qt-close[data-v-0d547552]{font-size:16px;cursor:pointer;color:#999}.qt-header .qt-close[data-v-0d547552]:hover{color:#333}.qt-symbol-bar[data-v-0d547552]{padding:12px 20px;background:linear-gradient(135deg,#f6f8fc,#eef2f8);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:8px}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552],.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select{width:100%}.qt-symbol-bar .qt-symbol-selector[data-v-0d547552] .ant-select-selection{border-radius:6px;border:1px solid #d9d9d9}.qt-symbol-bar .qt-price-display[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.qt-symbol-bar .qt-price-display .qt-current-price[data-v-0d547552]{font-size:16px;font-weight:600;color:#333}.qt-symbol-option[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{font-weight:600;font-size:14px}.qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999;font-size:12px}.qt-section[data-v-0d547552]{padding:8px 20px}.qt-section .qt-label[data-v-0d547552]{font-size:12px;color:#999;margin-bottom:4px;font-weight:500}.qt-section .qt-crypto-hint[data-v-0d547552]{font-size:10px;color:#faad14;background:rgba(250,173,20,.1);padding:1px 6px;border-radius:4px;margin-left:4px}.qt-balance[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;margin-top:6px;font-size:12px}.qt-balance .qt-balance-label[data-v-0d547552]{color:#999}.qt-balance .qt-balance-value[data-v-0d547552]{color:#52c41a;font-weight:600}.qt-direction-toggle[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px}.qt-direction-toggle .qt-dir-btn[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px;text-align:center;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border:2px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-direction-toggle .qt-dir-long[data-v-0d547552]{color:#52c41a;background:rgba(82,196,26,.06);border-color:rgba(82,196,26,.2)}.qt-direction-toggle .qt-dir-long.active[data-v-0d547552]{background:#52c41a;color:#fff;border-color:#52c41a;-webkit-box-shadow:0 4px 12px rgba(82,196,26,.3);box-shadow:0 4px 12px rgba(82,196,26,.3)}.qt-direction-toggle .qt-dir-long[data-v-0d547552]:hover:not(.active){border-color:#52c41a}.qt-direction-toggle .qt-dir-short[data-v-0d547552]{color:#f5222d;background:rgba(245,34,45,.06);border-color:rgba(245,34,45,.2)}.qt-direction-toggle .qt-dir-short.active[data-v-0d547552]{background:#f5222d;color:#fff;border-color:#f5222d;-webkit-box-shadow:0 4px 12px rgba(245,34,45,.3);box-shadow:0 4px 12px rgba(245,34,45,.3)}.qt-direction-toggle .qt-dir-short[data-v-0d547552]:hover:not(.active){border-color:#f5222d}.qt-quick-amounts[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:6px;margin-top:6px}.qt-quick-amounts button[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:12px}.qt-leverage-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.qt-tpsl-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px}.qt-tpsl-row .qt-tpsl-item[data-v-0d547552]{-webkit-box-flex:1;-ms-flex:1;flex:1}.qt-submit-section[data-v-0d547552]{padding:12px 20px}.qt-submit-section .qt-submit-btn[data-v-0d547552]{height:48px;font-size:16px;font-weight:700;border-radius:8px;letter-spacing:.5px}.qt-submit-section .qt-btn-long[data-v-0d547552]{background:#52c41a!important;border-color:#52c41a!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:hover{background:#73d13d!important}.qt-submit-section .qt-btn-long[data-v-0d547552]:active{background:#389e0d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]{background:#f5222d!important;border-color:#f5222d!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:hover{background:#ff4d4f!important}.qt-submit-section .qt-btn-short[data-v-0d547552]:active{background:#cf1322!important}.qt-position-section[data-v-0d547552]{padding:8px 20px 12px}.qt-position-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;margin-bottom:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-history-section[data-v-0d547552]{padding:8px 20px 12px}.qt-history-section[data-v-0d547552] .ant-collapse{background:transparent;border:none}.qt-history-section[data-v-0d547552] .ant-collapse-item{border:none}.qt-history-section[data-v-0d547552] .ant-collapse-header{padding:0!important;cursor:pointer}.qt-history-section[data-v-0d547552] .ant-collapse-header:hover{opacity:.8}.qt-history-section[data-v-0d547552] .ant-collapse-content{border:none;background:transparent}.qt-history-section[data-v-0d547552] .ant-collapse-content-box{padding:8px 0 0 0!important}.qt-history-section .qt-section-header[data-v-0d547552]{font-size:13px;font-weight:600;color:#666;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.qt-history-section .qt-history-count[data-v-0d547552]{font-size:12px;color:#999;font-weight:400}.qt-position-card[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:10px 12px;border-left:3px solid #d9d9d9}.qt-position-card.long[data-v-0d547552]{border-left-color:#52c41a}.qt-position-card.short[data-v-0d547552]{border-left-color:#f5222d}.qt-position-card .qt-pos-row[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:13px;padding:2px 0}.qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#999}.qt-position-empty[data-v-0d547552]{background:#fafafa;border-radius:8px;padding:20px 12px;text-align:center;border:1px dashed #d9d9d9}.qt-green[data-v-0d547552]{color:#52c41a!important}.qt-red[data-v-0d547552]{color:#f5222d!important}.qt-trade-list .qt-trade-item[data-v-0d547552]{padding:6px 0;border-bottom:1px solid #f5f5f5}.qt-trade-list .qt-trade-item[data-v-0d547552]:last-child{border-bottom:none}.qt-trade-list .qt-trade-item .qt-trade-main[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-symbol[data-v-0d547552]{font-weight:600;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-main .qt-trade-amount[data-v-0d547552]{margin-left:auto;font-size:13px}.qt-trade-list .qt-trade-item .qt-trade-meta[data-v-0d547552]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:2px}.qt-trade-list .qt-trade-item .qt-trade-meta .qt-trade-time[data-v-0d547552]{font-size:11px;color:#bbb}.theme-dark .qt-header[data-v-0d547552]{border-bottom-color:#303030}.theme-dark .qt-header .qt-header-title[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-header .qt-close[data-v-0d547552]{color:#666}.theme-dark .qt-header .qt-close[data-v-0d547552]:hover{color:#bbb}.theme-dark .qt-symbol-bar[data-v-0d547552]{background:linear-gradient(135deg,#1a1f2e,#141824)}.theme-dark .qt-symbol-bar .qt-current-price[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark .qt-symbol-bar[data-v-0d547552] .ant-select-selection__placeholder{color:#666}.theme-dark .qt-symbol-option .qt-symbol-option-name[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-symbol-option .qt-symbol-option-desc[data-v-0d547552]{color:#999}.theme-dark .qt-section .qt-label[data-v-0d547552]{color:#777}.theme-dark .qt-position-card[data-v-0d547552]{background:#1a1f2e}.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:first-child{color:#777}.theme-dark .qt-history-section .qt-section-header[data-v-0d547552],.theme-dark .qt-position-card .qt-pos-row span[data-v-0d547552]:last-child{color:#ccc}.theme-dark .qt-history-section .qt-history-count[data-v-0d547552]{color:#888}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-header:hover{opacity:.8}.theme-dark .qt-history-section[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark .qt-trade-item[data-v-0d547552]{border-bottom-color:#2a2a2a!important}.theme-dark .qt-trade-item .qt-trade-symbol[data-v-0d547552]{color:#e0e0e0}.theme-dark .qt-trade-item .qt-trade-amount[data-v-0d547552]{color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse{background:transparent!important;color:#ccc}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-header{color:#ccc!important}.theme-dark[data-v-0d547552] .ant-collapse .ant-collapse-content{background:transparent;color:#ccc}.theme-dark[data-v-0d547552] .ant-drawer-content{background:#141414}.theme-dark[data-v-0d547552] .ant-input-number,.theme-dark[data-v-0d547552] .ant-select-selection{background:#1a1f2e;border-color:#303030;color:#e0e0e0}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper{background:#1a1f2e;border-color:#303030;color:#ccc}.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff;color:#fff}.theme-dark[data-v-0d547552] .ant-slider-rail{background:#303030}.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}.polymarket-analysis-modal .input-section .input-actions[data-v-41dfa054]{margin-top:12px}.polymarket-analysis-modal .result-section .market-info[data-v-41dfa054]{margin-bottom:24px}.polymarket-analysis-modal .result-section .market-info h3[data-v-41dfa054]{margin-bottom:12px;font-size:18px;font-weight:600}.polymarket-analysis-modal .result-section .market-info .market-meta[data-v-41dfa054]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px;-ms-flex-wrap:wrap;flex-wrap:wrap}.polymarket-analysis-modal .result-section .market-info .market-meta .meta-item[data-v-41dfa054]{color:rgba(0,0,0,.65);font-size:14px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison[data-v-41dfa054]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:16px;margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item[data-v-41dfa054]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-label[data-v-41dfa054]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value[data-v-41dfa054]{font-size:24px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-41dfa054]{color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-positive[data-v-41dfa054]{color:#52c41a}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-negative[data-v-41dfa054]{color:#ff4d4f}.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.divergence-neutral[data-v-41dfa054]{color:rgba(0,0,0,.65)}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section[data-v-41dfa054]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card[data-v-41dfa054]{text-align:center;padding:16px;background:#f5f5f5;border-radius:4px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-label[data-v-41dfa054]{font-size:12px;color:rgba(0,0,0,.65);margin-bottom:8px}.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-41dfa054]{font-size:24px;font-weight:600;color:#1890ff}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section[data-v-41dfa054],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section[data-v-41dfa054]{margin:24px 0}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section h4[data-v-41dfa054],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section h4[data-v-41dfa054]{margin-bottom:12px;font-size:16px;font-weight:600}.polymarket-analysis-modal .result-section .analysis-result .key-factors-section .reasoning-text[data-v-41dfa054],.polymarket-analysis-modal .result-section .analysis-result .reasoning-section .reasoning-text[data-v-41dfa054]{line-height:1.8;color:rgba(0,0,0,.85);white-space:pre-wrap}.polymarket-analysis-modal .result-section .result-actions[data-v-41dfa054]{margin-top:24px;text-align:right}.polymarket-analysis-modal .loading-section[data-v-41dfa054]{text-align:center;padding:40px 0}.theme-dark .polymarket-analysis-modal .market-info h3[data-v-41dfa054]{color:hsla(0,0%,100%,.85)}.theme-dark .polymarket-analysis-modal .market-info .market-meta .meta-item[data-v-41dfa054]{color:hsla(0,0%,100%,.65)}.theme-dark .polymarket-analysis-modal .analysis-result .probability-comparison .prob-item[data-v-41dfa054]{background:hsla(0,0%,100%,.05)}.theme-dark .polymarket-analysis-modal .analysis-result .probability-comparison .prob-item .prob-label[data-v-41dfa054]{color:hsla(0,0%,100%,.65)}.theme-dark .polymarket-analysis-modal .analysis-result .recommendation-section .rec-card[data-v-41dfa054]{background:hsla(0,0%,100%,.05)}.theme-dark .polymarket-analysis-modal .analysis-result .recommendation-section .rec-card .rec-label[data-v-41dfa054]{color:hsla(0,0%,100%,.65)}.theme-dark .polymarket-analysis-modal .analysis-result .key-factors-section .reasoning-text[data-v-41dfa054],.theme-dark .polymarket-analysis-modal .analysis-result .key-factors-section h4[data-v-41dfa054],.theme-dark .polymarket-analysis-modal .analysis-result .reasoning-section .reasoning-text[data-v-41dfa054],.theme-dark .polymarket-analysis-modal .analysis-result .reasoning-section h4[data-v-41dfa054]{color:hsla(0,0%,100%,.85)}.ai-asset-analysis-page[data-v-20b827f5]{padding:16px;min-height:calc(100vh - 120px);background:#f0f2f5}.ai-asset-analysis-page .opp-section[data-v-20b827f5]{margin-bottom:12px}.ai-asset-analysis-page .opp-section .opp-header[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px;padding:0 4px}.ai-asset-analysis-page .opp-section .opp-header .opp-title[data-v-20b827f5]{font-size:14px;font-weight:600;color:#1a1a2e}.ai-asset-analysis-page .opp-section .opp-header .opp-header-right[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.ai-asset-analysis-page .opp-section .opp-header .opp-update-hint[data-v-20b827f5]{font-size:12px;color:#8c8c8c}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]{overflow:hidden;position:relative;border-radius:10px}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:after,.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:before{content:"";position:absolute;top:0;bottom:0;width:40px;z-index:2;pointer-events:none}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:before{left:0;background:-webkit-gradient(linear,left top,right top,from(#f0f2f5),to(transparent));background:linear-gradient(90deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-carousel-wrapper[data-v-20b827f5]:after{right:0;background:-webkit-gradient(linear,right top,left top,from(#f0f2f5),to(transparent));background:linear-gradient(270deg,#f0f2f5,transparent)}.ai-asset-analysis-page .opp-section .opp-track[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-animation:opp-scroll-left-20b827f5 60s linear infinite;animation:opp-scroll-left-20b827f5 60s linear infinite;width:-webkit-max-content;width:-moz-max-content;width:max-content;padding:4px 0}.ai-asset-analysis-page .opp-section .opp-track.paused[data-v-20b827f5]{-webkit-animation-play-state:paused;animation-play-state:paused}@-webkit-keyframes opp-scroll-left-20b827f5{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}@keyframes opp-scroll-left-20b827f5{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-50%);transform:translateX(-50%)}}.ai-asset-analysis-page .opp-section .opp-card[data-v-20b827f5]{width:190px;background:#fff;border-radius:10px;padding:12px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);cursor:pointer;-webkit-transition:all .2s;transition:all .2s;border-left:3px solid #d9d9d9;-ms-flex-negative:0;flex-shrink:0}.ai-asset-analysis-page .opp-section .opp-card.is-prediction-market[data-v-20b827f5]{width:280px;min-height:160px}.ai-asset-analysis-page .opp-section .opp-card.bullish[data-v-20b827f5]{border-left-color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card.bearish[data-v-20b827f5]{border-left-color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card.market-predictionmarket[data-v-20b827f5]{border-left-color:#13c2c2;background:linear-gradient(135deg,#fff,#f0f9ff)}.ai-asset-analysis-page .opp-section .opp-card[data-v-20b827f5]:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 4px 12px rgba(0,0,0,.1);box-shadow:0 4px 12px rgba(0,0,0,.1)}.ai-asset-analysis-page .opp-section .opp-card .opp-top[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:6px;gap:8px}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol[data-v-20b827f5]{font-weight:700;font-size:14px;color:#1a1a2e;-webkit-box-flex:1;-ms-flex:1;flex:1;word-break:break-word;line-height:1.4}.ai-asset-analysis-page .opp-section .opp-card .opp-symbol.prediction-title[data-v-20b827f5]{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.ai-asset-analysis-page .opp-section .opp-card .opp-market-tag[data-v-20b827f5]{font-size:11px;-ms-flex-negative:0;flex-shrink:0;margin-left:auto}.ai-asset-analysis-page .opp-section .opp-card .opp-price[data-v-20b827f5]{font-size:13px;color:#595959}.ai-asset-analysis-page .opp-section .opp-card .opp-change[data-v-20b827f5]{font-size:15px;font-weight:600}.ai-asset-analysis-page .opp-section .opp-card .opp-change.up[data-v-20b827f5]{color:#52c41a}.ai-asset-analysis-page .opp-section .opp-card .opp-change.down[data-v-20b827f5]{color:#ff4d4f}.ai-asset-analysis-page .opp-section .opp-card .opp-signal[data-v-20b827f5]{margin-top:4px}.ai-asset-analysis-page .opp-section .opp-card .opp-reason[data-v-20b827f5]{font-size:11px;color:#8c8c8c;margin-top:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-asset-analysis-page .opp-section .opp-card .opp-actions[data-v-20b827f5]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px;gap:6px}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-20b827f5]{font-size:12px;color:#1890ff;font-weight:500;cursor:pointer}.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-20b827f5]:hover{text-decoration:underline}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-20b827f5]{font-size:11px;color:#fff;background:linear-gradient(135deg,#1890ff,#722ed1);padding:2px 8px;border-radius:10px;font-weight:600;cursor:pointer;white-space:nowrap;-webkit-transition:all .2s;transition:all .2s}.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-20b827f5]:hover{-webkit-transform:scale(1.05);transform:scale(1.05);-webkit-box-shadow:0 2px 8px rgba(114,46,209,.3);box-shadow:0 2px 8px rgba(114,46,209,.3)}.ai-asset-analysis-page .qt-floating-btn[data-v-20b827f5]{position:fixed;right:24px;bottom:80px;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#722ed1);color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:24px;cursor:pointer;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4);z-index:1000;-webkit-transition:all .3s;transition:all .3s;-webkit-animation:qt-float-pulse-20b827f5 2s ease-in-out infinite;animation:qt-float-pulse-20b827f5 2s ease-in-out infinite}.ai-asset-analysis-page .qt-floating-btn[data-v-20b827f5]:hover{-webkit-transform:scale(1.1);transform:scale(1.1);-webkit-box-shadow:0 6px 24px rgba(114,46,209,.5);box-shadow:0 6px 24px rgba(114,46,209,.5)}@-webkit-keyframes qt-float-pulse-20b827f5{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}@keyframes qt-float-pulse-20b827f5{0%,to{-webkit-transform:translateY(0);transform:translateY(0)}50%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}}.ai-asset-analysis-page .workspace-card[data-v-20b827f5]{border-radius:12px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.06);box-shadow:0 1px 4px rgba(0,0,0,.06)}.ai-asset-analysis-page .workspace-card[data-v-20b827f5] .ant-card-body{padding:0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-bar{margin-bottom:0;padding:0 16px;border-bottom:1px solid #f0f0f0}.ai-asset-analysis-page .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab{font-size:15px;padding:14px 16px}.ai-asset-analysis-page .workspace-card .tab-body[data-v-20b827f5] .ai-analysis-container.embedded,.ai-asset-analysis-page .workspace-card .tab-body[data-v-20b827f5] .portfolio-container.embedded{border-radius:0;overflow:hidden}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content[data-v-20b827f5]{padding:40px 20px;text-align:center}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-20b827f5]{font-size:64px;color:#1890ff;margin-bottom:24px}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder h3[data-v-20b827f5]{font-size:20px;font-weight:600;margin-bottom:12px;color:rgba(0,0,0,.85)}.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder p[data-v-20b827f5]{font-size:14px;color:rgba(0,0,0,.65);margin-bottom:24px}.ai-asset-analysis-page.theme-dark[data-v-20b827f5]{background:#0d1117}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-title[data-v-20b827f5]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-header .opp-update-hint[data-v-20b827f5]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-20b827f5]:before{background:-webkit-gradient(linear,left top,right top,from(#0d1117),to(transparent));background:linear-gradient(90deg,#0d1117,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-carousel-wrapper[data-v-20b827f5]:after{background:-webkit-gradient(linear,right top,left top,from(#0d1117),to(transparent));background:linear-gradient(270deg,#0d1117,transparent)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-20b827f5]{background:#161b22;border-color:#30363d;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card.market-predictionmarket[data-v-20b827f5]{background:linear-gradient(135deg,#161b22,#0d1419);border-left-color:#13c2c2}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-symbol[data-v-20b827f5]{color:#e6edf3}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-price[data-v-20b827f5],.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-reason[data-v-20b827f5]{color:#8b949e}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-action[data-v-20b827f5]{color:#58a6ff}.ai-asset-analysis-page.theme-dark .opp-section .opp-card .opp-trade-btn[data-v-20b827f5]{background:linear-gradient(135deg,#58a6ff,#8957e5)}.ai-asset-analysis-page.theme-dark .opp-section .opp-card[data-v-20b827f5]:hover{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4);box-shadow:0 4px 12px rgba(0,0,0,.4)}.ai-asset-analysis-page.theme-dark .workspace-card[data-v-20b827f5]{background:#161b22;border-color:#30363d}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-bar{border-bottom-color:#30363d}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab{color:#8b949e}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab:hover{color:#c9d1d9}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-tab-active{color:#58a6ff}.ai-asset-analysis-page.theme-dark .workspace-card .workspace-tabs[data-v-20b827f5] .ant-tabs-ink-bar{background-color:#58a6ff}
\ No newline at end of file
diff --git a/frontend/dist/css/app.23a9a8f8.css b/frontend/dist/css/app.23a9a8f8.css
new file mode 100644
index 0000000..e0637d8
--- /dev/null
+++ b/frontend/dist/css/app.23a9a8f8.css
@@ -0,0 +1 @@
+.ant-pro-header-menu .anticon{margin-right:8px}.ant-pro-header-menu .ant-dropdown-menu-item{min-width:160px}.ant-pro-drop-down{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;padding:0 12px;vertical-align:top;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ant-pro-drop-down:hover{background:rgba(0,0,0,.04)}.ant-pro-drop-down>i{font-size:16px!important;-webkit-transform:none!important;transform:none!important}.ant-pro-drop-down>i svg{position:relative;top:-1px}@media (max-width:768px){.ant-pro-drop-down{padding:0 8px}}#userLayout.user-layout-wrapper[data-v-7ae30672]{height:100%}#userLayout.user-layout-wrapper.mobile .container .main[data-v-7ae30672]{max-width:368px;width:98%}#userLayout.user-layout-wrapper .container[data-v-7ae30672]{width:100%;min-height:100%;background:#f0f2f5 url(/img/background.ed05d5bd.svg) no-repeat 50%;background-size:100%;position:relative}#userLayout.user-layout-wrapper .container .fx-layer[data-v-7ae30672]{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}#userLayout.user-layout-wrapper .container .fx-layer .fx-gradient[data-v-7ae30672]{position:absolute;inset:-20% -20% -20% -20%;background:radial-gradient(1200px 600px at 10% 10%,rgba(78,161,255,.18),transparent 60%),radial-gradient(900px 500px at 90% 20%,rgba(127,92,255,.18),transparent 60%),radial-gradient(800px 500px at 30% 90%,rgba(0,210,170,.14),transparent 60%);-webkit-filter:blur(20px);filter:blur(20px);-webkit-animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;-webkit-transform:translateZ(0);transform:translateZ(0)}#userLayout.user-layout-wrapper .container .fx-layer .fx-grid[data-v-7ae30672]{position:absolute;inset:0;background-image:linear-gradient(hsla(0,0%,100%,.06) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.06) 1px,transparent 0);background-size:44px 44px,44px 44px;background-position:0 0,0 0;mix-blend-mode:overlay;-webkit-animation:gridDrift-7ae30672 40s linear infinite;animation:gridDrift-7ae30672 40s linear infinite}#userLayout.user-layout-wrapper .container .user-layout-lang[data-v-7ae30672]{width:100%;height:40px;line-height:44px;text-align:right}#userLayout.user-layout-wrapper .container .user-layout-lang .select-lang-trigger[data-v-7ae30672]{cursor:pointer;padding:12px;margin-right:24px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:18px;vertical-align:middle}#userLayout.user-layout-wrapper .container .user-layout-content[data-v-7ae30672]{padding:32px 0 24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:calc(100vh - 40px);position:relative;z-index:1}#userLayout.user-layout-wrapper .container .user-layout-content .top[data-v-7ae30672]{text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .top .header[data-v-7ae30672]{height:56px;line-height:56px}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .badge[data-v-7ae30672]{position:absolute;display:inline-block;line-height:1;vertical-align:middle;margin-left:-12px;margin-top:-10px;opacity:.8}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:342px;max-width:42vw;height:auto;vertical-align:middle;margin-right:0;border-style:none}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .title[data-v-7ae30672]{font-size:33px;color:rgba(0,0,0,.85);font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;position:relative;top:2px}#userLayout.user-layout-wrapper .container .user-layout-content .top .desc[data-v-7ae30672]{font-size:14px;color:rgba(0,0,0,.45);margin-top:12px;margin-bottom:40px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{min-width:320px;width:480px;margin:0 auto}#userLayout.user-layout-wrapper .container .user-layout-content .main-content[data-v-7ae30672]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer[data-v-7ae30672]{width:100%;padding:0 16px;margin-top:auto;margin-bottom:16px;text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links[data-v-7ae30672]{margin-bottom:8px;font-size:14px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]{color:rgba(0,0,0,.45);-webkit-transition:all .3s;transition:all .3s}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]:not(:last-child){margin-right:40px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .copyright[data-v-7ae30672]{color:rgba(0,0,0,.45);font-size:14px}#userLayout.user-layout-wrapper .container a[data-v-7ae30672]{text-decoration:none}@media (max-width:576px){#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:208px;max-width:70vw;margin-top:8px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{width:92vw}}@-webkit-keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@-webkit-keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}@keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}.ant-pro-drop-down .action{margin-right:8px}.ant-pro-drop-down .ant-dropdown-menu-item{min-width:160px}.ant-layout.dark .ant-dropdown-menu,.ant-layout.realdark .ant-dropdown-menu,.ant-pro-layout.dark .ant-dropdown-menu,.ant-pro-layout.realdark .ant-dropdown-menu,body.dark .ant-dropdown-menu,body.realdark .ant-dropdown-menu{background-color:#1f1f1f;border:1px solid #303030;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3);box-shadow:0 4px 12px rgba(0,0,0,.3)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,body.dark .ant-dropdown-menu .ant-dropdown-menu-item,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background-color:#262626;color:#1890ff}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background-color:#303030}.notice-icon-wrapper[data-v-7e99442e]{display:inline-block;vertical-align:top}.header-notice[data-v-7e99442e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;cursor:pointer;padding:0 12px;vertical-align:top}.header-notice[data-v-7e99442e]:hover{background:rgba(0,0,0,.04)}.header-notice span[data-v-7e99442e]{vertical-align:initial}@media (max-width:768px){.header-notice[data-v-7e99442e]{padding:0 8px}}.notice-header[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0}.notice-header .notice-title[data-v-7e99442e]{font-weight:500;font-size:14px}.notice-header .notice-action[data-v-7e99442e]{font-size:12px;color:#1890ff;cursor:pointer}.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}.notice-list[data-v-7e99442e]{max-height:400px;overflow-y:auto}.notice-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 16px;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.notice-item[data-v-7e99442e]:hover{background:#f5f5f5}.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}.notice-item .notice-item-icon[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#f0f0f0;border-radius:50%;margin-right:12px;font-size:16px}.notice-item .notice-item-content[data-v-7e99442e]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.notice-item .notice-item-content .notice-item-title[data-v-7e99442e]{font-weight:500;font-size:13px;color:rgba(0,0,0,.85);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-item .notice-item-content .notice-item-desc[data-v-7e99442e]{font-size:12px;color:rgba(0,0,0,.45);line-height:1.5;margin-bottom:4px}.notice-item .notice-item-content .notice-item-time[data-v-7e99442e]{font-size:11px;color:rgba(0,0,0,.25)}.notice-empty[data-v-7e99442e]{padding:48px 0}.notice-footer[data-v-7e99442e]{text-align:center;padding:12px;border-top:1px solid #f0f0f0}.notice-footer a[data-v-7e99442e]{color:#1890ff;cursor:pointer}.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}.notice-detail .notice-detail-meta[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-meta .notice-detail-type[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.notice-detail .notice-detail-meta .notice-detail-type .type-label[data-v-7e99442e]{font-size:14px;color:rgba(0,0,0,.65)}.notice-detail .notice-detail-meta .notice-detail-time[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:13px;color:rgba(0,0,0,.45)}.notice-detail .notice-detail-content .message-body[data-v-7e99442e]{font-size:14px;line-height:1.8;color:rgba(0,0,0,.85);max-height:300px;overflow-y:auto;padding:8px 0}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{margin:12px 0 8px;font-weight:600}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e]{font-size:18px}.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e]{font-size:16px}.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{font-size:14px}.notice-detail .notice-detail-content .message-body li[data-v-7e99442e]{margin-left:20px;list-style:disc}.notice-detail .notice-detail-content .message-body strong[data-v-7e99442e]{font-weight:600}.notice-detail .notice-detail-content.html-report .message-body[data-v-7e99442e]{max-height:70vh;padding:0;margin:-16px -24px;overflow-y:auto}.notice-detail .notice-detail-extra .extra-title[data-v-7e99442e]{font-weight:500;font-size:14px;margin-bottom:12px;color:rgba(0,0,0,.85)}.notice-detail .notice-detail-extra .extra-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:8px;font-size:13px}.notice-detail .notice-detail-extra .extra-item .label[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;color:rgba(0,0,0,.45);margin-right:8px}.notice-detail .notice-detail-extra .extra-item .value[data-v-7e99442e]{color:rgba(0,0,0,.85);word-break:break-word}.notice-detail .notice-detail-extra .extra-item.decision[data-v-7e99442e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-extra .extra-item.decision .confidence[data-v-7e99442e]{margin-left:8px;color:rgba(0,0,0,.45);font-size:12px}.notice-detail .notice-detail-actions[data-v-7e99442e]{margin-top:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.header-notice-wrapper{top:50px!important}.header-notice-wrapper .ant-popover-inner-content{padding:0}.notice-detail-modal .ant-modal-header{border-bottom:1px solid #f0f0f0}.notice-detail-modal .ant-modal-body{padding:16px 24px}.notice-detail-modal.html-report-modal .ant-modal-body{padding:0}.ant-layout.dark .header-notice-wrapper .ant-popover-inner,.ant-layout.realdark .header-notice-wrapper .ant-popover-inner,body.dark .header-notice-wrapper .ant-popover-inner,body.realdark .header-notice-wrapper .ant-popover-inner{background:#1f1f1f}.ant-layout.dark .header-notice-wrapper .ant-popover-arrow,.ant-layout.realdark .header-notice-wrapper .ant-popover-arrow,body.dark .header-notice-wrapper .ant-popover-arrow,body.realdark .header-notice-wrapper .ant-popover-arrow{border-color:#1f1f1f}.ant-layout.dark .header-notice-wrapper .notice-header,.ant-layout.realdark .header-notice-wrapper .notice-header,body.dark .header-notice-wrapper .notice-header,body.realdark .header-notice-wrapper .notice-header{border-color:#303030}.ant-layout.dark .header-notice-wrapper .notice-header .notice-title,.ant-layout.realdark .header-notice-wrapper .notice-header .notice-title,body.dark .header-notice-wrapper .notice-header .notice-title,body.realdark .header-notice-wrapper .notice-header .notice-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item:hover,.ant-layout.realdark .header-notice-wrapper .notice-item:hover,body.dark .header-notice-wrapper .notice-item:hover,body.realdark .header-notice-wrapper .notice-item:hover{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item.unread,.ant-layout.realdark .header-notice-wrapper .notice-item.unread,body.dark .header-notice-wrapper .notice-item.unread,body.realdark .header-notice-wrapper .notice-item.unread{background:rgba(24,144,255,.15)}.ant-layout.dark .header-notice-wrapper .notice-item.unread:hover,.ant-layout.realdark .header-notice-wrapper .notice-item.unread:hover,body.dark .header-notice-wrapper .notice-item.unread:hover,body.realdark .header-notice-wrapper .notice-item.unread:hover{background:rgba(24,144,255,.25)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-icon,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-icon,body.dark .header-notice-wrapper .notice-item .notice-item-icon,body.realdark .header-notice-wrapper .notice-item .notice-item-icon{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc{color:hsla(0,0%,100%,.45)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time{color:hsla(0,0%,100%,.25)}.ant-layout.dark .header-notice-wrapper .notice-footer,.ant-layout.realdark .header-notice-wrapper .notice-footer,body.dark .header-notice-wrapper .notice-footer,body.realdark .header-notice-wrapper .notice-footer{border-color:#303030}.ant-layout.dark .header-notice-wrapper .ant-empty-description,.ant-layout.realdark .header-notice-wrapper .ant-empty-description,body.dark .header-notice-wrapper .ant-empty-description,body.realdark .header-notice-wrapper .ant-empty-description{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-modal-content,.ant-layout.realdark .notice-detail-modal .ant-modal-content,body.dark .notice-detail-modal .ant-modal-content,body.realdark .notice-detail-modal .ant-modal-content{background:#1f1f1f}.ant-layout.dark .notice-detail-modal .ant-modal-header,.ant-layout.realdark .notice-detail-modal .ant-modal-header,body.dark .notice-detail-modal .ant-modal-header,body.realdark .notice-detail-modal .ant-modal-header{background:#1f1f1f;border-color:#303030}.ant-layout.dark .notice-detail-modal .ant-modal-header .ant-modal-title,.ant-layout.realdark .notice-detail-modal .ant-modal-header .ant-modal-title,body.dark .notice-detail-modal .ant-modal-header .ant-modal-title,body.realdark .notice-detail-modal .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .ant-modal-close-x,.ant-layout.realdark .notice-detail-modal .ant-modal-close-x,body.dark .notice-detail-modal .ant-modal-close-x,body.realdark .notice-detail-modal .ant-modal-close-x{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-divider,.ant-layout.realdark .notice-detail-modal .ant-divider,body.dark .notice-detail-modal .ant-divider,body.realdark .notice-detail-modal .ant-divider{border-color:#303030}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label{color:hsla(0,0%,100%,.65)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence{color:hsla(0,0%,100%,.45)}.ant-pro-global-header-index-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.ant-pro-global-header-index-right .ant-pro-global-header-index-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;padding:0 12px;color:rgba(0,0,0,.65);-webkit-transition:all .3s;transition:all .3s;cursor:pointer;vertical-align:top}.ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff;background:rgba(0,0,0,.04)}@media (max-width:768px){.ant-pro-global-header-index-right .ant-pro-account-avatar,.ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-global-header-index-right .ant-pro-global-header-index-action{padding:0 8px}}.ant-layout.dark .ant-pro-global-header-index-right,.ant-layout.dark .ant-pro-global-header-index-right *,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-layout.realdark .ant-pro-global-header-index-right,.ant-layout.realdark .ant-pro-global-header-index-right *,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.dark .ant-pro-global-header-index-right,.ant-pro-layout.dark .ant-pro-global-header-index-right *,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.realdark .ant-pro-global-header-index-right,.ant-pro-layout.realdark .ant-pro-global-header-index-right *,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.dark .ant-pro-global-header-index-right,body.dark .ant-pro-global-header-index-right *,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.realdark .ant-pro-global-header-index-right,body.realdark .ant-pro-global-header-index-right *,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}.setting-drawer-index-item[data-v-e773bc98]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-e773bc98]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}[data-v-940007f2] .ant-drawer-handle,[data-v-940007f2] .setting-drawer-index-handle{display:none!important}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-940007f2]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-940007f2]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-940007f2]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-940007f2]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-940007f2]{font-size:14px}:global .ant-layout .ant-layout-footer,:global .ant-layout-footer,:global .ant-pro-layout .ant-layout-footer,:global footer.ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important;min-height:0!important;visibility:hidden!important;overflow:hidden!important}:global .ant-layout.dark .ant-layout-header,:global .ant-layout.realdark .ant-layout-header,:global .ant-pro-layout.dark .ant-layout-header,:global .ant-pro-layout.realdark .ant-layout-header,:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05),0 1px 4px rgba(0,0,0,.2)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header *,:global .ant-layout.realdark .ant-layout-header *,:global .ant-pro-layout.dark .ant-layout-header *,:global .ant-pro-layout.realdark .ant-layout-header *,:global body.dark .ant-layout-header *,:global body.realdark .ant-layout-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon,:global .ant-layout.realdark .ant-layout-header .anticon,:global .ant-pro-layout.dark .ant-layout-header .anticon,:global .ant-pro-layout.realdark .ant-layout-header .anticon,:global body.dark .ant-layout-header .anticon,:global body.realdark .ant-layout-header .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon:hover,:global .ant-layout.realdark .ant-layout-header .anticon:hover,:global .ant-pro-layout.dark .ant-layout-header .anticon:hover,:global .ant-pro-layout.realdark .ant-layout-header .anticon:hover,:global body.dark .ant-layout-header .anticon:hover,:global body.realdark .ant-layout-header .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-layout.dark .ant-layout-header a,:global .ant-layout.realdark .ant-layout-header a,:global .ant-pro-layout.dark .ant-layout-header a,:global .ant-pro-layout.realdark .ant-layout-header a,:global body.dark .ant-layout-header a,:global body.realdark .ant-layout-header a{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header a:hover,:global .ant-layout.realdark .ant-layout-header a:hover,:global .ant-pro-layout.dark .ant-layout-header a:hover,:global .ant-pro-layout.realdark .ant-layout-header a:hover,:global body.dark .ant-layout-header a:hover,:global body.realdark .ant-layout-header a:hover{color:#1890ff!important}:global .ant-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global body.dark .ant-layout-header .ant-tooltip-open .anticon,:global body.realdark .ant-layout-header .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-header,:global .ant-pro-layout.light .ant-layout-header,:global body.light .ant-layout-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-layout-content,:global .ant-layout.realdark .ant-layout-content,:global .ant-pro-layout.dark .ant-layout-content,:global .ant-pro-layout.realdark .ant-layout-content,:global body.dark .ant-layout-content,:global body.realdark .ant-layout-content{background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-content,:global .ant-pro-layout.light .ant-layout-content,:global body.light .ant-layout-content{background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-pro-global-header,:global .ant-layout.realdark .ant-pro-global-header,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.dark .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-pro-global-header,:global body.dark .ant-layout-header .ant-pro-global-header,:global body.dark .ant-pro-global-header,:global body.realdark .ant-layout-header .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header *,:global .ant-layout.realdark .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-pro-global-header *,:global body.dark .ant-layout-header .ant-pro-global-header *,:global body.dark .ant-pro-global-header *,:global body.realdark .ant-layout-header .ant-pro-global-header *,:global body.realdark .ant-pro-global-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo h1{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo img{opacity:.9}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-pro-global-header-content .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar span{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger,:global .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,:global .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,:global .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}:global a{color:hsla(0,0%,100%,.85)!important}:global a:hover{color:#1890ff!important}:global .anticon{color:hsla(0,0%,100%,.85)!important}:global .anticon:hover{color:#1890ff!important}:global .ant-layout.light .ant-pro-global-header,:global .ant-pro-layout.light .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.light .ant-pro-global-header,:global body.light .ant-layout-header .ant-pro-global-header,:global body.light .ant-pro-global-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout),:global(.ant-pro-layout).realdark :global(.ant-layout){background-color:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header){background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header){background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header) *,:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header) *{color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-content),:global(.ant-pro-layout).realdark :global(.ant-layout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-pro-basicLayout-content),:global(.ant-pro-layout).realdark :global(.ant-pro-basicLayout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider),:global(.ant-pro-layout).realdark :global(.ant-layout-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).dark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-layout-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider) :global(.ant-layout-sider-children),:global(.ant-pro-layout).realdark :global(.ant-pro-sider-menu-sider) :global(.ant-layout-sider-children){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).dark :global(.ant-menu-dark),:global(.ant-pro-layout).dark :global(.ant-menu.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-inline.ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark),:global(.ant-pro-layout).realdark :global(.ant-menu.ant-menu-dark){background:#0a0a0a!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-sub),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-sub){background:#111!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item-selected),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item-selected){background:rgba(24,144,255,.25)!important}:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-submenu-title:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item:hover),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-submenu-title:hover){background:hsla(0,0%,100%,.06)!important}:global(.ant-pro-layout).dark :global(.ant-layout-sider-trigger),:global(.ant-pro-layout).realdark :global(.ant-layout-sider-trigger){background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)}:global(.ant-pro-layout).light :global(.ant-layout){background-color:#f0f2f5!important}:global(.ant-pro-layout).light :global(.ant-layout-header){background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-layout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-pro-basicLayout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}.ant-pro-global-header-index-right{margin-right:8px}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action{color:#030303}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action:hover{background:#1890ff}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar span,.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down:hover{color:#1890ff;background:hsla(0,0%,100%,.08)}.ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{margin:20px 0;margin-right:8px;color:#1890ff;vertical-align:top;background:rgb(255 255 3%)}.ant-pro-global-header-index-right .menu .anticon{margin-right:8px}.ant-pro-global-header-index-right .menu .ant-dropdown-menu-item{min-width:100px}:global .ant-pro-layout.dark .ant-dropdown-menu,:global .ant-pro-layout.realdark .ant-dropdown-menu{background:#1c1c1c!important;border:1px solid #2a2a2a!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.4)!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background:#252525!important;color:#1890ff!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background:#2a2a2a!important}:global body.dark .ant-layout-sider,:global body.dark .ant-layout-sider-dark,:global body.dark .ant-pro-sider-menu-sider,:global body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,:global body.realdark .ant-layout-sider,:global body.realdark .ant-layout-sider-dark,:global body.realdark .ant-pro-sider-menu-sider,:global body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark{background:#0a0a0a!important}:global body.dark .ant-layout-sider-children,:global body.realdark .ant-layout-sider-children{background:#0a0a0a!important}:global body.dark .ant-menu-dark,:global body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark,:global body.dark ul.ant-menu.ant-menu-dark.ant-menu-root,:global body.realdark .ant-menu-dark,:global body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark,:global body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root{background:#0a0a0a!important}:global body.dark .ant-menu-dark .ant-menu-sub,:global body.dark .ant-menu.ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu-dark .ant-menu-sub,:global body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}:global body.dark .ant-menu-dark .ant-menu-item-selected,:global body.realdark .ant-menu-dark .ant-menu-item-selected{background:rgba(24,144,255,.25)!important}:global body.dark .ant-pro-sider-menu-logo,:global body.realdark .ant-pro-sider-menu-logo{background:#0a0a0a!important}:global body.dark .ant-layout-sider-trigger,:global body.realdark .ant-layout-sider-trigger{background:#111!important;border-top:1px solid #1c1c1c;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}:global body.dark .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}@media (max-width:768px){:global .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-global-header-logo,:global .ant-pro-layout .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}.ant-pro-sider-menu-sider.light .ant-menu-light{height:60vh!important}.basic-layout-wrapper .ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important}.basic-layout-wrapper{position:relative}.basic-layout-wrapper .custom-menu-footer{position:fixed;bottom:0;left:0;z-index:100;width:256px;background:#111;border-top:1px solid #1c1c1c;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);max-width:256px;display:block;opacity:1}.basic-layout-wrapper .custom-menu-footer.collapsed{width:80px;max-width:80px}@media (max-width:768px){.basic-layout-wrapper .custom-menu-footer{z-index:1001}.basic-layout-wrapper .custom-menu-footer:not(.drawer-open){display:none!important;opacity:0}.basic-layout-wrapper .custom-menu-footer.drawer-animating{opacity:0;-webkit-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.basic-layout-wrapper .custom-menu-footer.drawer-open:not(.drawer-animating){opacity:1;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s;transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s}}.basic-layout-wrapper .custom-menu-footer .menu-footer-content{padding:12px 16px;font-size:11px;color:inherit;max-height:none;overflow:visible;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar{width:4px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section{margin-bottom:12px;text-align:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section:last-child{margin-bottom:0}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-title{font-size:11px;font-weight:500;margin-bottom:6px;opacity:.8;color:inherit}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:4px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:10px;opacity:.7}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{cursor:pointer;color:inherit;text-decoration:underline;-webkit-transition:opacity .2s;transition:opacity .2s}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a:hover{opacity:1}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links .separator{opacity:.5;margin:0 2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;margin-top:6px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon{width:15px;height:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;cursor:pointer;opacity:.7;-webkit-transition:all .2s;transition:all .2s;background:hsla(0,0%,100%,.05);text-decoration:none;overflow:hidden}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon:hover{opacity:1;background:hsla(0,0%,100%,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-svg{width:15x;height:15px;color:currentColor}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-logo{width:15px;height:15px;-o-object-fit:contain;object-fit:contain}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-text{font-size:10px;font-weight:700}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.copyright{margin-top:12px;padding-top:12px;border-top:1px solid #2a2a2a;opacity:.6;font-size:10px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.version{margin-top:4px;font-size:9px;opacity:.4;text-align:center;letter-spacing:1px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed{text-align:center;padding:16px;font-size:12px;opacity:.6;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed:hover{opacity:1}.basic-layout-wrapper ::v-deep .ant-pro-layout .ant-pro-sider-collapsed~.custom-menu-footer,.basic-layout-wrapper ::v-deep .ant-pro-layout.ant-pro-sider-collapsed~.custom-menu-footer{width:80px}.basic-layout-wrapper .ant-layout-sider-children{padding-bottom:calc(var(--menu-footer-height, 220px) + 12px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar{width:6px}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children,body.dark .basic-layout-wrapper .ant-layout-sider-children,body.realdark .basic-layout-wrapper .ant-layout-sider-children{scrollbar-color:hsla(0,0%,100%,.25) transparent}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.25)}.basic-layout-wrapper .ant-pro-sider{height:100vh;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider,.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider .ant-menu,.basic-layout-wrapper .ant-pro-sider .ant-menu-root,.basic-layout-wrapper .ant-pro-sider .ant-pro-sider-menu{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;max-height:calc(100vh - var(--menu-footer-height, 220px) - 24px);overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header{background:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action,.basic-layout-wrapper.realdark .ant-pro-global-header .action{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .action:hover{background:hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-layout,.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-layout,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content{background-color:#141414!important}@media (max-width:768px){.ant-drawer.ant-drawer-open .ant-drawer-content-wrapper{overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-content,.ant-drawer.ant-drawer-open .ant-drawer-wrapper-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-body{overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:var(--footer-height,280px)!important;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent;min-height:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar{width:4px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-track{background:transparent}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}}.ant-pro-multi-tab{margin:-23px -24px 24px;background:#fff}.topmenu .ant-pro-multi-tab-wrapper{max-width:1200px;margin:0 auto}.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper{max-width:100%;margin:0 auto}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;color:rgba(0,0,0,.65);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-variant:tabular-nums;line-height:1.5;background-color:#fff;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.anticon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node=true],[ant-click-animating=true]{position:relative}html{--antd-wave-shadow-color:#1890ff}.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #1890ff;-webkit-box-shadow:0 0 0 0 var(--antd-wave-shadow-color);box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;content:"";pointer-events:none}@-webkit-keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@-webkit-keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@-webkit-keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@-webkit-keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}@keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@-webkit-keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@-webkit-keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@-webkit-keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@-webkit-keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@-webkit-keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}@keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse,.ant-motion-collapse-legacy-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:1031;width:100%;height:2px;background:#1890ff}#nprogress .peg{position:absolute;right:0;display:block;width:100px;height:100%;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);-webkit-box-shadow:0 0 10px #1890ff,0 0 5px #1890ff;box-shadow:0 0 10px #1890ff,0 0 5px #1890ff}#nprogress .spinner{position:fixed;top:15px;right:15px;z-index:1031;display:block}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#1890ff;border-left-color:#1890ff;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{position:relative;overflow:hidden}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#app,#root,body,html{height:100%}.colorWeak{-webkit-filter:invert(80%);filter:invert(80%)}.ant-layout.layout-basic{height:100vh;min-height:100vh}canvas{display:block}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}ol,ul{list-style:none}.table-alert{margin-bottom:16px}.table-operator{margin-bottom:18px}.table-operator button{margin-right:8px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0;margin-bottom:24px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{width:auto;padding-right:8px;line-height:32px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}@media (max-width:480px){.ant-table{width:100%;overflow-x:auto}.ant-table-tbody>tr>td,.ant-table-tbody>tr>th,.ant-table-thead>tr>td,.ant-table-thead>tr>th{white-space:pre}.ant-table-tbody>tr>td>span,.ant-table-tbody>tr>th>span,.ant-table-thead>tr>td>span,.ant-table-thead>tr>th>span{display:block}}#webpack-dev-server-client-overlay,#webpack-hot-middleware-client-overlay,.webpack-dev-server-client-overlay{display:none!important;pointer-events:none!important;visibility:hidden!important}@media (max-width:768px){.ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}body.dark .ant-layout-sider,body.dark .ant-layout-sider-children,body.dark .ant-layout-sider-dark,body.dark .ant-menu-dark,body.dark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.dark .ant-menu.ant-menu-dark,body.dark .ant-pro-sider-menu-logo,body.dark .ant-pro-sider-menu-sider,body.dark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.dark aside.ant-layout-sider.ant-layout-sider-dark,body.dark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline,body.realdark .ant-layout-sider,body.realdark .ant-layout-sider-children,body.realdark .ant-layout-sider-dark,body.realdark .ant-menu-dark,body.realdark .ant-menu-dark .ant-menu-inline.ant-menu-sub,body.realdark .ant-menu.ant-menu-dark,body.realdark .ant-pro-sider-menu-logo,body.realdark .ant-pro-sider-menu-sider,body.realdark .ant-pro-sider-menu-sider.ant-layout-sider-dark,body.realdark aside.ant-layout-sider.ant-layout-sider-dark,body.realdark ul.ant-menu.ant-menu-dark.ant-menu-root.ant-menu-inline{background:#0a0a0a!important}body.dark .ant-menu-dark .ant-menu-sub,body.dark .ant-menu.ant-menu-dark .ant-menu-sub,body.realdark .ant-menu-dark .ant-menu-sub,body.realdark .ant-menu.ant-menu-dark .ant-menu-sub{background:#111!important}body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-sider-trigger{border-top:1px solid #1c1c1c}body.dark .ant-layout-header,body.dark .ant-layout-sider-trigger,body.realdark .ant-layout-header,body.realdark .ant-layout-sider-trigger{background:#111!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout-header,body.realdark .ant-layout-header{border-bottom:1px solid #1c1c1c!important}body.dark .ant-pro-global-header,body.realdark .ant-pro-global-header{background:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05)!important}body.dark .ant-layout,body.realdark .ant-layout{background:#0a0a0a!important}body.dark .ant-layout-content,body.dark .ant-pro-basicLayout-content,body.realdark .ant-layout-content,body.realdark .ant-pro-basicLayout-content{background:#141414!important}body.dark .ant-card,body.realdark .ant-card{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-card .ant-card-head,body.realdark .ant-card .ant-card-head{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-card .ant-card-body,body.realdark .ant-card .ant-card-body{color:hsla(0,0%,100%,.85)}body.dark .ant-table,body.realdark .ant-table{background:#1c1c1c!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-thead>tr>th,body.realdark .ant-table .ant-table-thead>tr>th{background:#141414!important;border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-table .ant-table-tbody>tr>td,body.realdark .ant-table .ant-table-tbody>tr>td{border-bottom-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)}body.dark .ant-table .ant-table-tbody>tr:hover>td,body.realdark .ant-table .ant-table-tbody>tr:hover>td{background:#252525!important}body.dark .ant-table .ant-table-placeholder,body.realdark .ant-table .ant-table-placeholder{background:#1c1c1c!important;color:#666!important}body.dark .ant-pagination-item,body.realdark .ant-pagination-item{background:#1c1c1c!important;border-color:#2a2a2a!important}body.dark .ant-pagination-item a,body.realdark .ant-pagination-item a{color:hsla(0,0%,100%,.85)!important}body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{border-color:#1890ff!important}body.dark .ant-input,body.dark .ant-input-number,body.dark .ant-pagination-next .ant-pagination-item-link,body.dark .ant-pagination-prev .ant-pagination-item-link,body.dark .ant-select-selection,body.realdark .ant-input,body.realdark .ant-input-number,body.realdark .ant-pagination-next .ant-pagination-item-link,body.realdark .ant-pagination-prev .ant-pagination-item-link,body.realdark .ant-select-selection{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-input::-webkit-input-placeholder,body.realdark .ant-input::-webkit-input-placeholder{color:#555!important}body.dark .ant-input::-moz-placeholder,body.realdark .ant-input::-moz-placeholder{color:#555!important}body.dark .ant-input:-ms-input-placeholder,body.realdark .ant-input:-ms-input-placeholder{color:#555!important}body.dark .ant-input::-ms-input-placeholder,body.realdark .ant-input::-ms-input-placeholder{color:#555!important}body.dark .ant-input::placeholder,body.realdark .ant-input::placeholder{color:#555!important}body.dark .ant-form-item-label>label,body.realdark .ant-form-item-label>label{color:hsla(0,0%,100%,.85)!important}body.dark .ant-btn-default,body.realdark .ant-btn-default{background:#1c1c1c!important;border-color:#2a2a2a!important;color:hsla(0,0%,100%,.85)!important}body.dark .ant-btn-default:hover,body.realdark .ant-btn-default:hover{border-color:#1890ff!important;color:#1890ff!important}body.dark .ant-page-header,body.realdark .ant-page-header{background:transparent!important}body.dark .ant-breadcrumb-link,body.dark .ant-breadcrumb-separator,body.dark .ant-breadcrumb>span,body.realdark .ant-breadcrumb-link,body.realdark .ant-breadcrumb-separator,body.realdark .ant-breadcrumb>span{color:hsla(0,0%,100%,.45)!important}body.dark .ant-page-header-heading-title,body.realdark .ant-page-header-heading-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-tabs-bar,body.realdark .ant-tabs-bar{border-bottom-color:#2a2a2a!important}body.dark .ant-tabs-tab,body.realdark .ant-tabs-tab{color:#888!important}body.dark .ant-tabs-tab:hover,body.realdark .ant-tabs-tab:hover{color:#d4d4d4!important}body.dark .ant-tabs-tab-active,body.realdark .ant-tabs-tab-active{color:#1890ff!important}body.dark .ant-modal-content,body.realdark .ant-modal-content{background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-header,body.realdark .ant-modal-content .ant-modal-header{background:#1c1c1c!important;border-bottom-color:#2a2a2a!important}body.dark .ant-modal-content .ant-modal-body,body.dark .ant-modal-content .ant-modal-header .ant-modal-title,body.realdark .ant-modal-content .ant-modal-body,body.realdark .ant-modal-content .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)!important}body.dark .ant-modal-content .ant-modal-footer,body.realdark .ant-modal-content .ant-modal-footer{border-top-color:#2a2a2a!important;background:#1c1c1c!important}body.dark .ant-modal-content .ant-modal-close-x,body.realdark .ant-modal-content .ant-modal-close-x{color:#888!important}body.dark .ant-select-dropdown,body.realdark .ant-select-dropdown{background:#1c1c1c!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:#252525!important}body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1)!important;color:#1890ff!important}.basic-layout-wrapper.dark .ant-layout-header,.basic-layout-wrapper.realdark .ant-layout-header,body.dark .basic-layout-wrapper .ant-layout-header,body.realdark .basic-layout-wrapper .ant-layout-header{background:#111!important;background-color:#111!important;border-bottom:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header,body.dark .basic-layout-wrapper .ant-pro-global-header,body.realdark .basic-layout-wrapper .ant-pro-global-header{background:#111!important;background-color:#111!important;border-bottom:none!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important}.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.dark .ant-pro-page-header-wrap,.basic-layout-wrapper.dark .ant-pro-page-header-wrap-children-content,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap,.basic-layout-wrapper.realdark .ant-pro-page-header-wrap-children-content,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap,body.dark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap,body.realdark .basic-layout-wrapper .ant-pro-page-header-wrap-children-content{background:#141414!important;background-color:#141414!important}.basic-layout-wrapper.dark .custom-menu-footer,.basic-layout-wrapper.realdark .custom-menu-footer,body.dark .basic-layout-wrapper .custom-menu-footer,body.realdark .basic-layout-wrapper .custom-menu-footer{background:#111!important;background-color:#111!important;border-top:1px solid #1c1c1c!important;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.06)!important;color:hsla(0,0%,100%,.88)!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section{padding:4px 2px!important;margin-bottom:6px!important;border-radius:0!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important;opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .menu-footer-content .footer-section:hover,.basic-layout-wrapper.realdark .custom-menu-footer .menu-footer-content .footer-section:hover{background:transparent!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-title,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-title{color:hsla(0,0%,100%,.5)!important;opacity:1!important;text-transform:uppercase!important;letter-spacing:.5px!important;font-size:9px!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links{opacity:1!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section .section-links a,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section .section-links a{color:hsla(0,0%,100%,.68)!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.copyright,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.copyright{color:hsla(0,0%,100%,.45)!important;border-top-color:#1c1c1c!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.basic-layout-wrapper.dark .custom-menu-footer .footer-section.version,.basic-layout-wrapper.realdark .custom-menu-footer .footer-section.version{color:hsla(0,0%,100%,.35)!important}.basic-layout-wrapper.dark .custom-menu-footer .social-icon,.basic-layout-wrapper.realdark .custom-menu-footer .social-icon{background:hsla(0,0%,100%,.08)!important;color:hsla(0,0%,100%,.75)!important}.basic-layout-wrapper.light .custom-menu-footer{background:#fff!important;background-color:#fff!important;border-top-color:#e8e8e8!important;-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.85)!important}.basic-layout-wrapper.light .custom-menu-footer .footer-section .section-links{opacity:.75}body.dark .ant-modal-wrap [class*=billing],body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=checkout],body.dark .ant-modal-wrap [class*=payment],body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.dark .ant-modal-wrap [class*=recharge],body.dark .ant-modal-wrap [class*=usdt],body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.dark .ant-modal-wrap [class*=usdt] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=billing],body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=billing] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=checkout],body.realdark .ant-modal-wrap [class*=payment],body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=payment] .ant-steps-item-title,body.realdark .ant-modal-wrap [class*=recharge],body.realdark .ant-modal-wrap [class*=usdt],body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-description,body.realdark .ant-modal-wrap [class*=usdt] .ant-steps-item-title{color:#d4d4d4!important}body.dark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.dark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.dark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.dark .ant-modal-wrap [class*=usdt] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=billing] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=billing] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=payment] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=payment] .ant-statistic-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-descriptions-item-content,body.realdark .ant-modal-wrap [class*=usdt] .ant-statistic-content{color:#e5e5e5!important}
\ No newline at end of file
diff --git a/frontend/dist/css/app.ee3dda40.css b/frontend/dist/css/app.ee3dda40.css
deleted file mode 100644
index 88e14ac..0000000
--- a/frontend/dist/css/app.ee3dda40.css
+++ /dev/null
@@ -1 +0,0 @@
-.ant-pro-header-menu .anticon{margin-right:8px}.ant-pro-header-menu .ant-dropdown-menu-item{min-width:160px}.ant-pro-drop-down{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;padding:0 12px;vertical-align:top;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ant-pro-drop-down:hover{background:rgba(0,0,0,.04)}.ant-pro-drop-down>i{font-size:16px!important;-webkit-transform:none!important;transform:none!important}.ant-pro-drop-down>i svg{position:relative;top:-1px}@media (max-width:768px){.ant-pro-drop-down{padding:0 8px}}#userLayout.user-layout-wrapper[data-v-7ae30672]{height:100%}#userLayout.user-layout-wrapper.mobile .container .main[data-v-7ae30672]{max-width:368px;width:98%}#userLayout.user-layout-wrapper .container[data-v-7ae30672]{width:100%;min-height:100%;background:#f0f2f5 url(/img/background.ed05d5bd.svg) no-repeat 50%;background-size:100%;position:relative}#userLayout.user-layout-wrapper .container .fx-layer[data-v-7ae30672]{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none}#userLayout.user-layout-wrapper .container .fx-layer .fx-gradient[data-v-7ae30672]{position:absolute;inset:-20% -20% -20% -20%;background:radial-gradient(1200px 600px at 10% 10%,rgba(78,161,255,.18),transparent 60%),radial-gradient(900px 500px at 90% 20%,rgba(127,92,255,.18),transparent 60%),radial-gradient(800px 500px at 30% 90%,rgba(0,210,170,.14),transparent 60%);-webkit-filter:blur(20px);filter:blur(20px);-webkit-animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;animation:fxFloat-7ae30672 18s ease-in-out infinite alternate;-webkit-transform:translateZ(0);transform:translateZ(0)}#userLayout.user-layout-wrapper .container .fx-layer .fx-grid[data-v-7ae30672]{position:absolute;inset:0;background-image:linear-gradient(hsla(0,0%,100%,.06) 1px,transparent 0),linear-gradient(90deg,hsla(0,0%,100%,.06) 1px,transparent 0);background-size:44px 44px,44px 44px;background-position:0 0,0 0;mix-blend-mode:overlay;-webkit-animation:gridDrift-7ae30672 40s linear infinite;animation:gridDrift-7ae30672 40s linear infinite}#userLayout.user-layout-wrapper .container .user-layout-lang[data-v-7ae30672]{width:100%;height:40px;line-height:44px;text-align:right}#userLayout.user-layout-wrapper .container .user-layout-lang .select-lang-trigger[data-v-7ae30672]{cursor:pointer;padding:12px;margin-right:24px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:18px;vertical-align:middle}#userLayout.user-layout-wrapper .container .user-layout-content[data-v-7ae30672]{padding:32px 0 24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:calc(100vh - 40px);position:relative;z-index:1}#userLayout.user-layout-wrapper .container .user-layout-content .top[data-v-7ae30672]{text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .top .header[data-v-7ae30672]{height:56px;line-height:56px}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .badge[data-v-7ae30672]{position:absolute;display:inline-block;line-height:1;vertical-align:middle;margin-left:-12px;margin-top:-10px;opacity:.8}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:342px;max-width:42vw;height:auto;vertical-align:middle;margin-right:0;border-style:none}#userLayout.user-layout-wrapper .container .user-layout-content .top .header .title[data-v-7ae30672]{font-size:33px;color:rgba(0,0,0,.85);font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;font-weight:600;position:relative;top:2px}#userLayout.user-layout-wrapper .container .user-layout-content .top .desc[data-v-7ae30672]{font-size:14px;color:rgba(0,0,0,.45);margin-top:12px;margin-bottom:40px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{min-width:320px;width:480px;margin:0 auto}#userLayout.user-layout-wrapper .container .user-layout-content .main-content[data-v-7ae30672]{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer[data-v-7ae30672]{width:100%;padding:0 16px;margin-top:auto;margin-bottom:16px;text-align:center}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links[data-v-7ae30672]{margin-bottom:8px;font-size:14px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]{color:rgba(0,0,0,.45);-webkit-transition:all .3s;transition:all .3s}#userLayout.user-layout-wrapper .container .user-layout-content .footer .links a[data-v-7ae30672]:not(:last-child){margin-right:40px}#userLayout.user-layout-wrapper .container .user-layout-content .footer .copyright[data-v-7ae30672]{color:rgba(0,0,0,.45);font-size:14px}#userLayout.user-layout-wrapper .container a[data-v-7ae30672]{text-decoration:none}@media (max-width:576px){#userLayout.user-layout-wrapper .container .user-layout-content .top .header .logo[data-v-7ae30672]{width:208px;max-width:70vw;margin-top:8px}#userLayout.user-layout-wrapper .container .user-layout-content .main[data-v-7ae30672]{width:92vw}}@-webkit-keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@keyframes fxFloat-7ae30672{0%{-webkit-transform:translate3d(-2%,-1%,0) scale(1);transform:translate3d(-2%,-1%,0) scale(1)}50%{-webkit-transform:translate3d(1%,2%,0) scale(1.02);transform:translate3d(1%,2%,0) scale(1.02)}to{-webkit-transform:translate3d(3%,-2%,0) scale(1.04);transform:translate3d(3%,-2%,0) scale(1.04)}}@-webkit-keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}@keyframes gridDrift-7ae30672{0%{background-position:0 0,0 0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}50%{background-position:22px 22px,22px 22px}to{background-position:44px 44px,44px 44px;-webkit-transform:rotate(3.6deg);transform:rotate(3.6deg)}}.ant-pro-drop-down .action{margin-right:8px}.ant-pro-drop-down .ant-dropdown-menu-item{min-width:160px}.ant-layout.dark .ant-dropdown-menu,.ant-layout.realdark .ant-dropdown-menu,.ant-pro-layout.dark .ant-dropdown-menu,.ant-pro-layout.realdark .ant-dropdown-menu,body.dark .ant-dropdown-menu,body.realdark .ant-dropdown-menu{background-color:#1f1f1f;border:1px solid #303030;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3);box-shadow:0 4px 12px rgba(0,0,0,.3)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item,body.dark .ant-dropdown-menu .ant-dropdown-menu-item,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.dark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item.ant-dropdown-menu-item-selected,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background-color:#262626;color:#1890ff}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.dark .ant-dropdown-menu .ant-dropdown-menu-item .anticon,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item .anticon{color:hsla(0,0%,100%,.85)}.ant-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,.ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,body.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background-color:#303030}.notice-icon-wrapper[data-v-7e99442e]{display:inline-block;vertical-align:top}.header-notice[data-v-7e99442e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;line-height:64px;-webkit-transition:all .3s;transition:all .3s;cursor:pointer;padding:0 12px;vertical-align:top}.header-notice[data-v-7e99442e]:hover{background:rgba(0,0,0,.04)}.header-notice span[data-v-7e99442e]{vertical-align:initial}@media (max-width:768px){.header-notice[data-v-7e99442e]{padding:0 8px}}.notice-header[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 16px;border-bottom:1px solid #f0f0f0}.notice-header .notice-title[data-v-7e99442e]{font-weight:500;font-size:14px}.notice-header .notice-action[data-v-7e99442e]{font-size:12px;color:#1890ff;cursor:pointer}.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}.notice-list[data-v-7e99442e]{max-height:400px;overflow-y:auto}.notice-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 16px;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.notice-item[data-v-7e99442e]:hover{background:#f5f5f5}.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}.notice-item .notice-item-icon[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;width:32px;height:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:#f0f0f0;border-radius:50%;margin-right:12px;font-size:16px}.notice-item .notice-item-content[data-v-7e99442e]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.notice-item .notice-item-content .notice-item-title[data-v-7e99442e]{font-weight:500;font-size:13px;color:rgba(0,0,0,.85);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notice-item .notice-item-content .notice-item-desc[data-v-7e99442e]{font-size:12px;color:rgba(0,0,0,.45);line-height:1.5;margin-bottom:4px}.notice-item .notice-item-content .notice-item-time[data-v-7e99442e]{font-size:11px;color:rgba(0,0,0,.25)}.notice-empty[data-v-7e99442e]{padding:48px 0}.notice-footer[data-v-7e99442e]{text-align:center;padding:12px;border-top:1px solid #f0f0f0}.notice-footer a[data-v-7e99442e]{color:#1890ff;cursor:pointer}.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}.notice-detail .notice-detail-meta[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-meta .notice-detail-type[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.notice-detail .notice-detail-meta .notice-detail-type .type-label[data-v-7e99442e]{font-size:14px;color:rgba(0,0,0,.65)}.notice-detail .notice-detail-meta .notice-detail-time[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:6px;font-size:13px;color:rgba(0,0,0,.45)}.notice-detail .notice-detail-content .message-body[data-v-7e99442e]{font-size:14px;line-height:1.8;color:rgba(0,0,0,.85);max-height:300px;overflow-y:auto;padding:8px 0}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e],.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{margin:12px 0 8px;font-weight:600}.notice-detail .notice-detail-content .message-body h2[data-v-7e99442e]{font-size:18px}.notice-detail .notice-detail-content .message-body h3[data-v-7e99442e]{font-size:16px}.notice-detail .notice-detail-content .message-body h4[data-v-7e99442e]{font-size:14px}.notice-detail .notice-detail-content .message-body li[data-v-7e99442e]{margin-left:20px;list-style:disc}.notice-detail .notice-detail-content .message-body strong[data-v-7e99442e]{font-weight:600}.notice-detail .notice-detail-content.html-report .message-body[data-v-7e99442e]{max-height:70vh;padding:0;margin:-16px -24px;overflow-y:auto}.notice-detail .notice-detail-extra .extra-title[data-v-7e99442e]{font-weight:500;font-size:14px;margin-bottom:12px;color:rgba(0,0,0,.85)}.notice-detail .notice-detail-extra .extra-item[data-v-7e99442e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-bottom:8px;font-size:13px}.notice-detail .notice-detail-extra .extra-item .label[data-v-7e99442e]{-ms-flex-negative:0;flex-shrink:0;color:rgba(0,0,0,.45);margin-right:8px}.notice-detail .notice-detail-extra .extra-item .value[data-v-7e99442e]{color:rgba(0,0,0,.85);word-break:break-word}.notice-detail .notice-detail-extra .extra-item.decision[data-v-7e99442e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.notice-detail .notice-detail-extra .extra-item.decision .confidence[data-v-7e99442e]{margin-left:8px;color:rgba(0,0,0,.45);font-size:12px}.notice-detail .notice-detail-actions[data-v-7e99442e]{margin-top:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;gap:12px}.header-notice-wrapper{top:50px!important}.header-notice-wrapper .ant-popover-inner-content{padding:0}.notice-detail-modal .ant-modal-header{border-bottom:1px solid #f0f0f0}.notice-detail-modal .ant-modal-body{padding:16px 24px}.notice-detail-modal.html-report-modal .ant-modal-body{padding:0}.ant-layout.dark .header-notice-wrapper .ant-popover-inner,.ant-layout.realdark .header-notice-wrapper .ant-popover-inner,body.dark .header-notice-wrapper .ant-popover-inner,body.realdark .header-notice-wrapper .ant-popover-inner{background:#1f1f1f}.ant-layout.dark .header-notice-wrapper .ant-popover-arrow,.ant-layout.realdark .header-notice-wrapper .ant-popover-arrow,body.dark .header-notice-wrapper .ant-popover-arrow,body.realdark .header-notice-wrapper .ant-popover-arrow{border-color:#1f1f1f}.ant-layout.dark .header-notice-wrapper .notice-header,.ant-layout.realdark .header-notice-wrapper .notice-header,body.dark .header-notice-wrapper .notice-header,body.realdark .header-notice-wrapper .notice-header{border-color:#303030}.ant-layout.dark .header-notice-wrapper .notice-header .notice-title,.ant-layout.realdark .header-notice-wrapper .notice-header .notice-title,body.dark .header-notice-wrapper .notice-header .notice-title,body.realdark .header-notice-wrapper .notice-header .notice-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item:hover,.ant-layout.realdark .header-notice-wrapper .notice-item:hover,body.dark .header-notice-wrapper .notice-item:hover,body.realdark .header-notice-wrapper .notice-item:hover{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item.unread,.ant-layout.realdark .header-notice-wrapper .notice-item.unread,body.dark .header-notice-wrapper .notice-item.unread,body.realdark .header-notice-wrapper .notice-item.unread{background:rgba(24,144,255,.15)}.ant-layout.dark .header-notice-wrapper .notice-item.unread:hover,.ant-layout.realdark .header-notice-wrapper .notice-item.unread:hover,body.dark .header-notice-wrapper .notice-item.unread:hover,body.realdark .header-notice-wrapper .notice-item.unread:hover{background:rgba(24,144,255,.25)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-icon,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-icon,body.dark .header-notice-wrapper .notice-item .notice-item-icon,body.realdark .header-notice-wrapper .notice-item .notice-item-icon{background:#303030}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-desc{color:hsla(0,0%,100%,.45)}.ant-layout.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,.ant-layout.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.dark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time,body.realdark .header-notice-wrapper .notice-item .notice-item-content .notice-item-time{color:hsla(0,0%,100%,.25)}.ant-layout.dark .header-notice-wrapper .notice-footer,.ant-layout.realdark .header-notice-wrapper .notice-footer,body.dark .header-notice-wrapper .notice-footer,body.realdark .header-notice-wrapper .notice-footer{border-color:#303030}.ant-layout.dark .header-notice-wrapper .ant-empty-description,.ant-layout.realdark .header-notice-wrapper .ant-empty-description,body.dark .header-notice-wrapper .ant-empty-description,body.realdark .header-notice-wrapper .ant-empty-description{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-modal-content,.ant-layout.realdark .notice-detail-modal .ant-modal-content,body.dark .notice-detail-modal .ant-modal-content,body.realdark .notice-detail-modal .ant-modal-content{background:#1f1f1f}.ant-layout.dark .notice-detail-modal .ant-modal-header,.ant-layout.realdark .notice-detail-modal .ant-modal-header,body.dark .notice-detail-modal .ant-modal-header,body.realdark .notice-detail-modal .ant-modal-header{background:#1f1f1f;border-color:#303030}.ant-layout.dark .notice-detail-modal .ant-modal-header .ant-modal-title,.ant-layout.realdark .notice-detail-modal .ant-modal-header .ant-modal-title,body.dark .notice-detail-modal .ant-modal-header .ant-modal-title,body.realdark .notice-detail-modal .ant-modal-header .ant-modal-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .ant-modal-close-x,.ant-layout.realdark .notice-detail-modal .ant-modal-close-x,body.dark .notice-detail-modal .ant-modal-close-x,body.realdark .notice-detail-modal .ant-modal-close-x{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .ant-divider,.ant-layout.realdark .notice-detail-modal .ant-divider,body.dark .notice-detail-modal .ant-divider,body.realdark .notice-detail-modal .ant-divider{border-color:#303030}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-type .type-label{color:hsla(0,0%,100%,.65)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.dark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time,body.realdark .notice-detail-modal .notice-detail .notice-detail-meta .notice-detail-time{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.dark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title,body.realdark .notice-detail-modal .notice-detail .notice-detail-content .message-body,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-title{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .label{color:hsla(0,0%,100%,.45)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .value{color:hsla(0,0%,100%,.85)}.ant-layout.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,.ant-layout.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.dark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence,body.realdark .notice-detail-modal .notice-detail .notice-detail-extra .extra-item .confidence{color:hsla(0,0%,100%,.45)}.ant-pro-global-header-index-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.ant-pro-global-header-index-right .ant-pro-global-header-index-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:64px;padding:0 12px;color:rgba(0,0,0,.65);-webkit-transition:all .3s;transition:all .3s;cursor:pointer;vertical-align:top}.ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff;background:rgba(0,0,0,.04)}@media (max-width:768px){.ant-pro-global-header-index-right .ant-pro-account-avatar,.ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-global-header-index-right .ant-pro-global-header-index-action{padding:0 8px}}.ant-layout.dark .ant-pro-global-header-index-right,.ant-layout.dark .ant-pro-global-header-index-right *,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-layout.realdark .ant-pro-global-header-index-right,.ant-layout.realdark .ant-pro-global-header-index-right *,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.dark .ant-pro-global-header-index-right,.ant-pro-layout.dark .ant-pro-global-header-index-right *,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,.ant-pro-layout.realdark .ant-pro-global-header-index-right,.ant-pro-layout.realdark .ant-pro-global-header-index-right *,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.dark .ant-pro-global-header-index-right,body.dark .ant-pro-global-header-index-right *,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action,body.realdark .ant-pro-global-header-index-right,body.realdark .ant-pro-global-header-index-right *,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.dark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.dark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar,body.realdark .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down:hover,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}.ant-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,.ant-pro-layout.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.dark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.dark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon,body.realdark .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,body.realdark .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}.setting-drawer-index-item[data-v-e773bc98]{margin-bottom:24px}.setting-drawer-index-item .setting-drawer-index-title[data-v-e773bc98]{font-size:14px;color:rgba(0,0,0,.85);line-height:22px;margin-bottom:12px}[data-v-940007f2] .ant-drawer-handle,[data-v-940007f2] .setting-drawer-index-handle{display:none!important}.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-940007f2]{display:-webkit-box;display:-ms-flexbox;display:flex}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-940007f2]{margin-right:16px;position:relative;border-radius:4px;cursor:pointer}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-940007f2]{width:48px}.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{position:absolute;top:0;right:0;width:100%;padding-top:15px;padding-left:24px;height:100%;color:#1890ff;font-size:14px;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-940007f2]{width:20px;height:20px;border-radius:2px;float:left;cursor:pointer;margin-right:8px;padding-left:0;padding-right:0;text-align:center;color:#fff;font-weight:700}.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-940007f2]{font-size:14px}:global .ant-layout .ant-layout-footer,:global .ant-layout-footer,:global .ant-pro-layout .ant-layout-footer,:global footer.ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important;min-height:0!important;visibility:hidden!important;overflow:hidden!important}:global .ant-layout.dark .ant-layout-header,:global .ant-layout.realdark .ant-layout-header,:global .ant-pro-layout.dark .ant-layout-header,:global .ant-pro-layout.realdark .ant-layout-header,:global body.dark .ant-layout-header,:global body.realdark .ant-layout-header{background:#001529!important;border-bottom:1px solid #1f1f1f!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header *,:global .ant-layout.realdark .ant-layout-header *,:global .ant-pro-layout.dark .ant-layout-header *,:global .ant-pro-layout.realdark .ant-layout-header *,:global body.dark .ant-layout-header *,:global body.realdark .ant-layout-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon,:global .ant-layout.realdark .ant-layout-header .anticon,:global .ant-pro-layout.dark .ant-layout-header .anticon,:global .ant-pro-layout.realdark .ant-layout-header .anticon,:global body.dark .ant-layout-header .anticon,:global body.realdark .ant-layout-header .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header .anticon:hover,:global .ant-layout.realdark .ant-layout-header .anticon:hover,:global .ant-pro-layout.dark .ant-layout-header .anticon:hover,:global .ant-pro-layout.realdark .ant-layout-header .anticon:hover,:global body.dark .ant-layout-header .anticon:hover,:global body.realdark .ant-layout-header .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-layout.dark .ant-layout-header a,:global .ant-layout.realdark .ant-layout-header a,:global .ant-pro-layout.dark .ant-layout-header a,:global .ant-pro-layout.realdark .ant-layout-header a,:global body.dark .ant-layout-header a,:global body.realdark .ant-layout-header a{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-layout-header a:hover,:global .ant-layout.realdark .ant-layout-header a:hover,:global .ant-pro-layout.dark .ant-layout-header a:hover,:global .ant-pro-layout.realdark .ant-layout-header a:hover,:global body.dark .ant-layout-header a:hover,:global body.realdark .ant-layout-header a:hover{color:#1890ff!important}:global .ant-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.dark .ant-layout-header .ant-tooltip-open .anticon,:global .ant-pro-layout.realdark .ant-layout-header .ant-tooltip-open .anticon,:global body.dark .ant-layout-header .ant-tooltip-open .anticon,:global body.realdark .ant-layout-header .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-header,:global .ant-pro-layout.light .ant-layout-header,:global body.light .ant-layout-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-layout-content,:global .ant-layout.realdark .ant-layout-content,:global .ant-pro-layout.dark .ant-layout-content,:global .ant-pro-layout.realdark .ant-layout-content,:global body.dark .ant-layout-content,:global body.realdark .ant-layout-content{background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.light .ant-layout-content,:global .ant-pro-layout.light .ant-layout-content,:global body.light .ant-layout-content{background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global .ant-layout.dark .ant-pro-global-header,:global .ant-layout.realdark .ant-pro-global-header,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.dark .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.realdark .ant-pro-global-header,:global body.dark .ant-layout-header .ant-pro-global-header,:global body.dark .ant-pro-global-header,:global body.realdark .ant-layout-header .ant-pro-global-header,:global body.realdark .ant-pro-global-header{background:#001529!important;border-bottom:1px solid #1f1f1f!important;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08)!important;box-shadow:0 1px 4px rgba(0,21,41,.08)!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header *,:global .ant-layout.realdark .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.dark .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header *,:global .ant-pro-layout.realdark .ant-pro-global-header *,:global body.dark .ant-layout-header .ant-pro-global-header *,:global body.dark .ant-pro-global-header *,:global body.realdark .ant-layout-header .ant-pro-global-header *,:global body.realdark .ant-pro-global-header *{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo h1,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo h1{color:hsla(0,0%,100%,.85)!important}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo img,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo img{opacity:.9}:global .ant-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global .ant-pro-layout.realdark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.dark .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo *,:global body.realdark .ant-pro-global-header .ant-pro-global-header-logo *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-content .anticon:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important;border-radius:4px}:global .ant-pro-global-header-content .ant-tooltip-open .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right{background:transparent!important;color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right *{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action .anticon{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar span{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger,:global .ant-pro-global-header-index-right .ant-pro-drop-down{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,:global .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important;background:hsla(0,0%,100%,.08)!important}:global .ant-pro-global-header-index-right .ant-dropdown-trigger .anticon,:global .ant-pro-global-header-index-right .ant-pro-drop-down .anticon{color:hsla(0,0%,100%,.85)!important}:global a{color:hsla(0,0%,100%,.85)!important}:global a:hover{color:#1890ff!important}:global .anticon{color:hsla(0,0%,100%,.85)!important}:global .anticon:hover{color:#1890ff!important}:global .ant-layout.light .ant-pro-global-header,:global .ant-pro-layout.light .ant-layout-header .ant-pro-global-header,:global .ant-pro-layout.light .ant-pro-global-header,:global body.light .ant-layout-header .ant-pro-global-header,:global body.light .ant-pro-global-header{background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout),:global(.ant-pro-layout).realdark :global(.ant-layout){background-color:#001529!important}:global(.ant-pro-layout).dark :global(.ant-layout-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header){background:#001529!important;border-bottom:1px solid #1f1f1f!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header),:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header){background:#001529!important;border-bottom:none!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-header) :global(.ant-pro-global-header) *,:global(.ant-pro-layout).realdark :global(.ant-layout-header) :global(.ant-pro-global-header) *{color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-layout-content),:global(.ant-pro-layout).realdark :global(.ant-layout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).dark :global(.ant-pro-basicLayout-content),:global(.ant-pro-layout).realdark :global(.ant-pro-basicLayout-content){background:#141414!important;color:hsla(0,0%,100%,.85)!important}:global(.ant-pro-layout).light :global(.ant-layout){background-color:#f0f2f5!important}:global(.ant-pro-layout).light :global(.ant-layout-header){background:#fff!important;border-bottom:1px solid #e8e8e8!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-layout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}:global(.ant-pro-layout).light :global(.ant-pro-basicLayout-content){background:#f0f2f5!important;color:rgba(0,0,0,.85)!important}.ant-pro-global-header-index-right{margin-right:8px}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action{color:#030303}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action:hover{background:#1890ff}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar .antd-pro-global-header-index-avatar{background:hsla(0,0%,100%,.25)!important}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-account-avatar span,.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down{color:hsla(0,0%,100%,.85)}.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down:hover{color:#1890ff;background:hsla(0,0%,100%,.08)}.ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{margin:20px 0;margin-right:8px;color:#1890ff;vertical-align:top;background:rgb(255 255 3%)}.ant-pro-global-header-index-right .menu .anticon{margin-right:8px}.ant-pro-global-header-index-right .menu .ant-dropdown-menu-item{min-width:100px}:global .ant-pro-layout.dark .ant-dropdown-menu,:global .ant-pro-layout.realdark .ant-dropdown-menu{background:#1f1f1f!important;border:1px solid #303030!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3)!important;box-shadow:0 4px 12px rgba(0,0,0,.3)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item{color:hsla(0,0%,100%,.85)!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{background:#262626!important;color:#1890ff!important}:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item-divider,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item-divider{background:#303030!important}@media (max-width:768px){:global .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global .ant-pro-global-header-logo,:global .ant-pro-layout .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo,:global body .ant-layout-header .ant-pro-global-header .ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}.ant-pro-sider-menu-sider.light .ant-menu-light{height:60vh!important}.basic-layout-wrapper .ant-layout-footer{display:none!important;height:0!important;padding:0!important;margin:0!important;border:none!important}.basic-layout-wrapper{position:relative}.basic-layout-wrapper .custom-menu-footer{position:fixed;bottom:0;left:0;z-index:100;width:256px;background:#001529;border-top:1px solid hsla(0,0%,100%,.1);-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86);max-width:256px;display:block;opacity:1}.basic-layout-wrapper .custom-menu-footer.collapsed{width:80px;max-width:80px}@media (max-width:768px){.basic-layout-wrapper .custom-menu-footer{z-index:1001}.basic-layout-wrapper .custom-menu-footer:not(.drawer-open){display:none!important;opacity:0}.basic-layout-wrapper .custom-menu-footer.drawer-animating{opacity:0;-webkit-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.basic-layout-wrapper .custom-menu-footer.drawer-open:not(.drawer-animating){opacity:1;-webkit-transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s;transition:left .3s cubic-bezier(.78,.14,.15,.86),width .3s cubic-bezier(.78,.14,.15,.86),max-width .3s cubic-bezier(.78,.14,.15,.86),opacity .3s cubic-bezier(.78,.14,.15,.86) .1s}}.ant-pro-layout.light .basic-layout-wrapper .custom-menu-footer,body.light .basic-layout-wrapper .custom-menu-footer{background:#fff;border-top-color:#e8e8e8;color:rgba(0,0,0,.85)}.ant-pro-layout.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a,body.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{color:rgba(0,0,0,.65)}.ant-pro-layout.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon,body.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon{background:rgba(0,0,0,.05);color:rgba(0,0,0,.65)}.ant-pro-layout.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon:hover,body.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon:hover{background:rgba(0,0,0,.1);color:rgba(0,0,0,.85)}.ant-pro-layout.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon .social-icon-svg,body.light .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon .social-icon-svg{color:currentColor}.ant-pro-layout.dark .basic-layout-wrapper .custom-menu-footer,.ant-pro-layout.realdark .basic-layout-wrapper .custom-menu-footer,body.dark .basic-layout-wrapper .custom-menu-footer,body.realdark .basic-layout-wrapper .custom-menu-footer{background:#001529;border-top-color:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.65)}.ant-pro-layout.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a,.ant-pro-layout.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a,body.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a,body.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{color:hsla(0,0%,100%,.65)}.ant-pro-layout.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon,.ant-pro-layout.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon,body.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon,body.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon{background:hsla(0,0%,100%,.05);color:hsla(0,0%,100%,.65)}.ant-pro-layout.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon:hover,.ant-pro-layout.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon:hover,body.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon:hover,body.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.85)}.ant-pro-layout.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon .social-icon-svg,.ant-pro-layout.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon .social-icon-svg,body.dark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon .social-icon-svg,body.realdark .basic-layout-wrapper .custom-menu-footer .menu-footer-content .social-icon .social-icon-svg{color:currentColor}.basic-layout-wrapper .custom-menu-footer .menu-footer-content{padding:12px 16px;font-size:11px;color:inherit;max-height:30vh;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar{width:4px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .custom-menu-footer .menu-footer-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section{margin-bottom:12px;text-align:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section:last-child{margin-bottom:0}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-title{font-size:11px;font-weight:500;margin-bottom:6px;opacity:.8;color:inherit}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:4px;-ms-flex-wrap:wrap;flex-wrap:wrap;font-size:10px;opacity:.7}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a{cursor:pointer;color:inherit;text-decoration:underline;-webkit-transition:opacity .2s;transition:opacity .2s}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links a:hover{opacity:1}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .section-links .separator{opacity:.5;margin:0 2px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:8px;margin-top:6px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon{width:15px;height:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:4px;cursor:pointer;opacity:.7;-webkit-transition:all .2s;transition:all .2s;background:hsla(0,0%,100%,.05);text-decoration:none;overflow:hidden}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon:hover{opacity:1;background:hsla(0,0%,100%,.1);-webkit-transform:translateY(-2px);transform:translateY(-2px)}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-svg{width:15x;height:15px;color:currentColor}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-logo{width:15px;height:15px;-o-object-fit:contain;object-fit:contain}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section .social-icons .social-icon .social-icon-text{font-size:10px;font-weight:700}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.copyright{margin-top:12px;padding-top:12px;border-top:1px solid hsla(0,0%,100%,.1);opacity:.6;font-size:10px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content .footer-section.version{margin-top:4px;font-size:9px;opacity:.4;text-align:center;letter-spacing:1px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed{text-align:center;padding:16px;font-size:12px;opacity:.6;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed .anticon{font-size:16px}.basic-layout-wrapper .custom-menu-footer .menu-footer-content-collapsed:hover{opacity:1}.basic-layout-wrapper ::v-deep .ant-pro-layout .ant-pro-sider-collapsed~.custom-menu-footer,.basic-layout-wrapper ::v-deep .ant-pro-layout.ant-pro-sider-collapsed~.custom-menu-footer{width:80px}.basic-layout-wrapper .ant-layout-sider-children{padding-bottom:calc(var(--menu-footer-height, 220px) + 12px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar{width:6px}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-track{background:transparent}.basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children,body.dark .basic-layout-wrapper .ant-layout-sider-children,body.realdark .basic-layout-wrapper .ant-layout-sider-children{scrollbar-color:hsla(0,0%,100%,.25) transparent}.ant-pro-layout.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,.ant-pro-layout.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.dark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb,body.realdark .basic-layout-wrapper .ant-layout-sider-children::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.25)}.basic-layout-wrapper .ant-pro-sider{height:100vh;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider,.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.basic-layout-wrapper .ant-pro-sider .ant-layout-sider-children{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;-ms-flex-direction:column;flex-direction:column}.basic-layout-wrapper .ant-pro-sider .ant-menu,.basic-layout-wrapper .ant-pro-sider .ant-menu-root,.basic-layout-wrapper .ant-pro-sider .ant-pro-sider-menu{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;max-height:calc(100vh - var(--menu-footer-height, 220px) - 24px);overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch}.basic-layout-wrapper.dark .ant-pro-global-header,.basic-layout-wrapper.realdark .ant-pro-global-header{background:#001529!important;color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .ant-pro-global-header-trigger:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .ant-pro-global-header-trigger:hover{background:hsla(0,0%,100%,.03)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action,.basic-layout-wrapper.realdark .ant-pro-global-header .action{color:hsla(0,0%,100%,.85)!important}.basic-layout-wrapper.dark .ant-pro-global-header .action:hover,.basic-layout-wrapper.realdark .ant-pro-global-header .action:hover{background:hsla(0,0%,100%,.03)!important}.basic-layout-wrapper.dark .ant-layout,.basic-layout-wrapper.dark .ant-pro-basicLayout-content,.basic-layout-wrapper.realdark .ant-layout,.basic-layout-wrapper.realdark .ant-pro-basicLayout-content{background-color:#141414!important}@media (max-width:768px){.ant-drawer.ant-drawer-open .ant-drawer-content-wrapper{overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-content,.ant-drawer.ant-drawer-open .ant-drawer-wrapper-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;overflow:visible}.ant-drawer.ant-drawer-open .ant-drawer-body{overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:var(--footer-height,280px)!important;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.2) transparent;min-height:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar{width:4px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-track{background:transparent}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.ant-drawer.ant-drawer-open .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}}.ant-pro-multi-tab{margin:-23px -24px 24px;background:#fff}.topmenu .ant-pro-multi-tab-wrapper{max-width:1200px;margin:0 auto}.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper{max-width:100%;margin:0 auto}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;color:rgba(0,0,0,.65);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-variant:tabular-nums;line-height:1.5;background-color:#fff;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum"}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;text-decoration:none;background-color:transparent;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none;outline:0}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{color:#fff;background:#1890ff}::selection{color:#fff;background:#1890ff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}.anticon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon[tabindex]{cursor:pointer}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(-100%);transform:translateX(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveRightIn{0%{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform:translateY(0);transform:translateY(0);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node=true],[ant-click-animating=true]{position:relative}html{--antd-wave-shadow-color:#1890ff}.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:inherit;-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #1890ff;-webkit-box-shadow:0 0 0 0 var(--antd-wave-shadow-color);box-shadow:0 0 0 0 var(--antd-wave-shadow-color);opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;content:"";pointer-events:none}@-webkit-keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@keyframes waveEffect{to{-webkit-box-shadow:0 0 0 #1890ff;box-shadow:0 0 0 #1890ff;-webkit-box-shadow:0 0 0 6px var(--antd-wave-shadow-color);box-shadow:0 0 0 6px var(--antd-wave-shadow-color)}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideUpIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideUpOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@keyframes antSlideDownIn{0%{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}to{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}}@-webkit-keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@keyframes antSlideDownOut{0%{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:1}to{-webkit-transform:scaleY(.8);transform:scaleY(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%;opacity:0}}@-webkit-keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@keyframes antSlideLeftIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}}@-webkit-keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@keyframes antSlideLeftOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:0 0;transform-origin:0 0;opacity:0}}@-webkit-keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@keyframes antSlideRightIn{0%{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}to{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}}@-webkit-keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}@keyframes antSlideRightOut{0%{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:1}to{-webkit-transform:scaleX(.8);transform:scaleX(.8);-webkit-transform-origin:100% 0;transform-origin:100% 0;opacity:0}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomIn{0%{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.2);transform:scale(.2);opacity:0}}@-webkit-keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes antZoomBigIn{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(.8);transform:scale(.8);opacity:0}}@-webkit-keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@keyframes antZoomUpIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@keyframes antZoomUpOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 0;transform-origin:50% 0}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 0;transform-origin:50% 0;opacity:0}}@-webkit-keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@keyframes antZoomLeftIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@keyframes antZoomLeftOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:0 50%;transform-origin:0 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0}}@-webkit-keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@keyframes antZoomRightIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@keyframes antZoomRightOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;opacity:0}}@-webkit-keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@keyframes antZoomDownIn{0%{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}to{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}@keyframes antZoomDownOut{0%{-webkit-transform:scale(1);transform:scale(1);-webkit-transform-origin:50% 100%;transform-origin:50% 100%}to{-webkit-transform:scale(.8);transform:scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;opacity:0}}.ant-motion-collapse-legacy{overflow:hidden}.ant-motion-collapse,.ant-motion-collapse-legacy-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}.ant-motion-collapse{overflow:hidden}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:1031;width:100%;height:2px;background:#1890ff}#nprogress .peg{position:absolute;right:0;display:block;width:100px;height:100%;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);-webkit-box-shadow:0 0 10px #1890ff,0 0 5px #1890ff;box-shadow:0 0 10px #1890ff,0 0 5px #1890ff}#nprogress .spinner{position:fixed;top:15px;right:15px;z-index:1031;display:block}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#1890ff;border-left-color:#1890ff;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{position:relative;overflow:hidden}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}#app,#root,body,html{height:100%}.colorWeak{-webkit-filter:invert(80%);filter:invert(80%)}.ant-layout.layout-basic{height:100vh;min-height:100vh}canvas{display:block}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}ol,ul{list-style:none}.table-alert{margin-bottom:16px}.table-operator{margin-bottom:18px}.table-operator button{margin-right:8px}.table-page-search-wrapper .ant-form-inline .ant-form-item{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:0;margin-bottom:24px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:inline-block;vertical-align:middle}.table-page-search-wrapper .ant-form-inline .ant-form-item>.ant-form-item-label{width:auto;padding-right:8px;line-height:32px}.table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control{height:32px;line-height:32px}.table-page-search-wrapper .table-page-search-submitButtons{display:block;margin-bottom:24px;white-space:nowrap}@media (max-width:480px){.ant-table{width:100%;overflow-x:auto}.ant-table-tbody>tr>td,.ant-table-tbody>tr>th,.ant-table-thead>tr>td,.ant-table-thead>tr>th{white-space:pre}.ant-table-tbody>tr>td>span,.ant-table-tbody>tr>th>span,.ant-table-thead>tr>td>span,.ant-table-thead>tr>th>span{display:block}}#webpack-dev-server-client-overlay,#webpack-hot-middleware-client-overlay,.webpack-dev-server-client-overlay{display:none!important;pointer-events:none!important;visibility:hidden!important}@media (max-width:768px){.ant-pro-global-header-logo{padding:0!important;padding-left:0!important;padding-right:0!important;padding-top:0!important;padding-bottom:0!important}}
\ No newline at end of file
diff --git a/frontend/dist/css/theme-colors-32dabe8f.css b/frontend/dist/css/theme-colors-e1bf67d0.css
similarity index 78%
rename from frontend/dist/css/theme-colors-32dabe8f.css
rename to frontend/dist/css/theme-colors-e1bf67d0.css
index 4e0096a..4fd89cf 100644
--- a/frontend/dist/css/theme-colors-32dabe8f.css
+++ b/frontend/dist/css/theme-colors-e1bf67d0.css
@@ -19,10 +19,12 @@
:global .ant-pro-global-header-index-right .ant-dropdown-trigger:hover,:global .ant-pro-global-header-index-right .ant-pro-drop-down:hover{color:#1890ff!important}
:global a:hover{color:#1890ff!important}
:global .anticon:hover{color:#1890ff!important}
+:global(.ant-pro-layout).dark :global(.ant-menu-dark .ant-menu-item-selected),:global(.ant-pro-layout).realdark :global(.ant-menu-dark .ant-menu-item-selected){background:rgba(24,144,255,.25)!important}
.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-global-header-index-action:hover{background:#1890ff}
.ant-pro-global-header-index-right.ant-pro-global-header-index-dark .ant-pro-drop-down:hover{color:#1890ff}
.ant-pro-global-header-index-right .ant-pro-account-avatar .antd-pro-global-header-index-avatar{color:#1890ff}
:global .ant-pro-layout.dark .ant-dropdown-menu .ant-dropdown-menu-item:hover,:global .ant-pro-layout.realdark .ant-dropdown-menu .ant-dropdown-menu-item:hover{color:#1890ff!important}
+:global body.dark .ant-menu-dark .ant-menu-item-selected,:global body.realdark .ant-menu-dark .ant-menu-item-selected{background:rgba(24,144,255,.25)!important}
a{color:#1890ff}
a:hover{color:#40a9ff}
a:active{color:#096dd9}
@@ -33,44 +35,76 @@ html{--antd-wave-shadow-color:#1890ff}
#nprogress .bar{background:#1890ff}
#nprogress .peg{-webkit-box-shadow:0 0 10px #1890ff,0 0 5px #1890ff;box-shadow:0 0 10px #1890ff,0 0 5px #1890ff}
#nprogress .spinner-icon{border-top-color:#1890ff;border-left-color:#1890ff}
-.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-693144f6]{color:#1890ff}
-.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-693144f6]{color:#1890ff}
-.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-693144f6]{color:#1890ff}
-.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-693144f6]{background:#e6f7ff;color:#1890ff}
-.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-693144f6]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}
-.fast-analysis-report .result-container .decision-card[data-v-693144f6]{border-left:6px solid #1890ff}
-.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-693144f6]{background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2)}
-.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-693144f6]{color:#1890ff}
-.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-693144f6]{border-top:3px solid #1890ff}
-.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-693144f6]{color:#1890ff}
-.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-693144f6]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}
-.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-693144f6]{border-left:4px solid #1890ff}
-.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-693144f6]{border-left-color:#1890ff}
-.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-693144f6]{color:#1890ff}
-.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-693144f6]:before{color:#1890ff}
-.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-693144f6]{color:#1890ff}
-.fast-analysis-report.theme-dark .decision-card[data-v-693144f6]{border-left-color:#1890ff}
-.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-693144f6]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35)}
-.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-693144f6]{color:#69c0ff}
-.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-693144f6]{border-left-color:#1890ff}
-.fast-analysis-report.theme-dark .score-item.overall[data-v-693144f6]{background:linear-gradient(135deg,rgba(24,144,255,.1),#2a2e39);border-color:#1890ff}
-.left-panel .heatmap-box .box-header[data-v-41eda137] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
-.left-panel .calendar-box .box-header .box-title .anticon[data-v-41eda137]{color:var(--primary-color,#1890ff)}
-.right-panel .analysis-toolbar .analyze-button[data-v-41eda137]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
-.right-panel .analysis-main .analysis-placeholder .placeholder-content .placeholder-icon[data-v-41eda137]{color:var(--primary-color,#1890ff)}
-.watchlist-panel .watchlist-list .watchlist-item.active[data-v-41eda137]{background:#e6f7ff;border:1px solid #91d5ff}
-.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .watchlist-item.active[data-v-41eda137]{background:rgba(24,144,255,.1);border-color:#1890ff}
-.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-41eda137],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-41eda137]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.1)}
-.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-41eda137],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-41eda137]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.1)}
+body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{border-color:#1890ff!important}
+body.dark .ant-btn-default:hover,body.realdark .ant-btn-default:hover{border-color:#1890ff!important;color:#1890ff!important}
+body.dark .ant-tabs-tab-active,body.realdark .ant-tabs-tab-active{color:#1890ff!important}
+body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.realdark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1)!important;color:#1890ff!important}
+.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-75da11ec]{color:#1890ff}
+.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-75da11ec]{color:#1890ff}
+.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-75da11ec]{color:#1890ff}
+.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-75da11ec]{background:#e6f7ff;color:#1890ff}
+.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-75da11ec]{background:#1890ff;-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.2);box-shadow:0 0 0 3px rgba(24,144,255,.2)}
+.fast-analysis-report .result-container .decision-card[data-v-75da11ec]{border-left:6px solid #1890ff}
+.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.06);border:1px solid rgba(24,144,255,.2)}
+.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#1890ff}
+.fast-analysis-report .result-container .price-info-row .price-card.current[data-v-75da11ec]{border-top:3px solid #1890ff}
+.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-75da11ec]{color:#1890ff}
+.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-75da11ec]{background:linear-gradient(135deg,#e6f7ff,#fff);border:1px solid #91d5ff}
+.fast-analysis-report .result-container .detailed-analysis .analysis-card[data-v-75da11ec]{border-left:4px solid #1890ff}
+.fast-analysis-report .result-container .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}
+.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.technical .anticon[data-v-75da11ec]{color:#1890ff}
+.fast-analysis-report .result-container .analysis-details .detail-section .detail-list li[data-v-75da11ec]:before{color:#1890ff}
+.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-75da11ec]{color:#1890ff}
+.fast-analysis-report.theme-dark .decision-card[data-v-75da11ec]{border-left-color:#1890ff}
+.fast-analysis-report.theme-dark .decision-card .consensus-strip[data-v-75da11ec]{background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.35)}
+.fast-analysis-report.theme-dark .decision-card .consensus-strip .consensus-strip-title[data-v-75da11ec]{color:#69c0ff}
+.fast-analysis-report.theme-dark .detailed-analysis .analysis-card.technical[data-v-75da11ec]{border-left-color:#1890ff}
+.fast-analysis-report.theme-dark .detail-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .feedback-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .indicators-section .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .price-card .indicators-methodology .anticon[data-v-75da11ec],.fast-analysis-report.theme-dark .score-item .indicators-methodology .anticon[data-v-75da11ec]{color:#69c0ff}
+.left-panel .heatmap-box .box-header[data-v-5cbe52d9] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
+.left-panel .calendar-box .box-header .box-title .anticon[data-v-5cbe52d9]{color:var(--primary-color,#1890ff)}
+.right-panel .analysis-toolbar .analyze-button[data-v-5cbe52d9]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
+.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-5cbe52d9]{background:rgba(24,144,255,.08);border-color:#1890ff}
+.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.1)}
+.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,rgba(24,144,255,.06)));background:linear-gradient(90deg,transparent,rgba(24,144,255,.06) 30%)}
+.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-5cbe52d9]{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.2)}
+.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-5cbe52d9]:hover{border-color:#1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.12);box-shadow:0 4px 16px rgba(24,144,255,.12)}
+.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(114,46,209,.08))}
+.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.35);box-shadow:0 4px 14px rgba(24,144,255,.35)}
+.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
+.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-5cbe52d9]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
+.ai-analysis-container.theme-dark .panel-header-icon[data-v-5cbe52d9]:hover{color:#1890ff;background:rgba(24,144,255,.08)}
+.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-5cbe52d9],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
+.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-tab-active{color:#1890ff!important}
+.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-tabs-ink-bar{background-color:#1890ff}
+.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
+.ai-analysis-container.theme-dark[data-v-5cbe52d9] .ant-alert{background:rgba(24,144,255,.06)}
+.hero-bg-circle.c1[data-v-5cbe52d9]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
+.hero-bg-grid[data-v-5cbe52d9]{background-image:linear-gradient(rgba(24,144,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(24,144,255,.03) 1px,transparent 0)}
+.hero-badge[data-v-5cbe52d9]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
+.hstat[data-v-5cbe52d9]:hover{border-color:var(--primary-color,#1890ff);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.1);box-shadow:0 4px 16px rgba(24,144,255,.1)}
+.hstat-icon[data-v-5cbe52d9]{background:linear-gradient(135deg,rgba(24,144,255,.1),rgba(114,46,209,.08));color:var(--primary-color,#1890ff)}
+.hero-cta .ant-btn-primary[data-v-5cbe52d9]{-webkit-box-shadow:0 4px 14px rgba(24,144,255,.3);box-shadow:0 4px 14px rgba(24,144,255,.3)}
+.panel-header-icon[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
+.wl-card.active[data-v-5cbe52d9]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border-color:#91d5ff}
+.wl-card.active .wl-card-hover-actions[data-v-5cbe52d9]{background:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(30%,#e6f7ff));background:linear-gradient(90deg,transparent,#e6f7ff 30%)}
+.wl-hover-btn[data-v-5cbe52d9]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
+.qd-dark-modal .ant-modal-footer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
+.qd-dark-modal .ant-tabs-tab-active{color:#1890ff!important}
+.qd-dark-modal .ant-tag-blue{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}
+.qd-dark-modal .ant-alert{background:rgba(24,144,255,.06)}
+.qd-dark-modal .ant-alert-info .ant-alert-icon{color:#1890ff}
+.qd-dark-modal .batch-symbols-preview .ant-tag{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3);color:#1890ff}
+.qd-dark-drawer .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
+.qd-dark-modal .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.colorWeak .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.1);color:#1890ff}
.qt-header .qt-header-left .qt-icon[data-v-0d547552]{color:#1890ff}
.theme-dark[data-v-0d547552] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.theme-dark[data-v-0d547552] .ant-slider-track{background:#1890ff}
-.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-41dfa054]{color:#1890ff}
-.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-41dfa054]{color:#1890ff}
-.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-20b827f5]{color:#1890ff}
-.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-20b827f5]{background:linear-gradient(135deg,#1890ff,#722ed1)}
-.ai-asset-analysis-page .qt-floating-btn[data-v-20b827f5]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4)}
-.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-20b827f5]{color:#1890ff}
+.polymarket-analysis-modal .result-section .analysis-result .probability-comparison .prob-item .prob-value.ai-prob[data-v-67e891d2]{color:#1890ff}
+.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{color:#1890ff}
+.ai-asset-analysis-page .opp-section .opp-card .opp-action[data-v-443699fa]{color:#1890ff}
+.ai-asset-analysis-page .opp-section .opp-card .opp-trade-btn[data-v-443699fa]{background:linear-gradient(135deg,#1890ff,#722ed1)}
+.ai-asset-analysis-page .qt-floating-btn[data-v-443699fa]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4)}
+.ai-asset-analysis-page .workspace-card .tab-body .polymarket-tab-content .polymarket-placeholder .placeholder-icon[data-v-443699fa]{color:#1890ff}
.code-section .section-header .section-title[data-v-4fea1865]:before{background:#1890ff}
.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link{color:#1890ff}
.code-section .section-header .section-actions[data-v-4fea1865] .ant-btn-link:hover{color:#40a9ff}
@@ -81,47 +115,47 @@ html{--antd-wave-shadow-color:#1890ff}
.editor-footer[data-v-4fea1865] .ant-btn:not(.ant-btn-primary):hover{border-color:#40a9ff;color:#40a9ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary{-webkit-box-shadow:0 2px 4px rgba(24,144,255,.3);box-shadow:0 2px 4px rgba(24,144,255,.3)}
.editor-footer[data-v-4fea1865] .ant-btn.ant-btn-primary:hover{-webkit-box-shadow:0 4px 12px rgba(24,144,255,.4);box-shadow:0 4px 12px rgba(24,144,255,.4)}
-.drawing-tool-btn[data-v-5f0b12e1]:hover{color:#1890ff}
-.drawing-tool-btn.active[data-v-5f0b12e1]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}
-.indicator-btn[data-v-5f0b12e1]:hover{color:#1890ff;border-color:#1890ff}
-.indicator-btn.active[data-v-5f0b12e1]{color:#1890ff;border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}
+.drawing-tool-btn[data-v-58f93984]:hover{color:#1890ff}
+.drawing-tool-btn.active[data-v-58f93984]{background:#e6f7ff;color:#1890ff;border:1px solid #1890ff}
+.indicator-btn[data-v-58f93984]:hover{color:#1890ff;border-color:#1890ff}
+.indicator-btn.active[data-v-58f93984]{color:#1890ff;border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.1);box-shadow:0 0 0 2px rgba(24,144,255,.1)}
.section-title .anticon[data-v-473e449c]{color:#1890ff}
.loading-overlay .bar[data-v-473e449c]{background:-webkit-gradient(linear,left top,left bottom,from(#1890ff),to(#52c41a));background:linear-gradient(180deg,#1890ff,#52c41a)}
.loading-overlay .loading-text[data-v-473e449c]{color:#1890ff}
-.symbol-select[data-v-b17e86c2] .ant-select-selection:hover{border-color:#1890ff}
-.symbol-select[data-v-b17e86c2] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
-.timeframe-item[data-v-b17e86c2]:hover{color:#1890ff}
-.timeframe-item.active[data-v-b17e86c2]{color:#1890ff}
-.panel-header .realtime-toggle-btn[data-v-b17e86c2]:hover,.panel-header .theme-toggle-btn[data-v-b17e86c2]:hover{color:#1890ff}
-.panel-header .realtime-toggle-btn.active[data-v-b17e86c2],.panel-header .theme-toggle-btn.active[data-v-b17e86c2]{color:#1890ff;background:#e6f7ff}
-.indicator-card[data-v-b17e86c2]:hover{border-color:#1890ff}
-.indicator-card.active[data-v-b17e86c2]{background:#e6f7ff;border-color:#1890ff}
-.indicator-card.active .card-name[data-v-b17e86c2]{color:#1890ff}
-.card-action[data-v-b17e86c2]:hover{color:#1890ff}
-.action-icon.edit-icon[data-v-b17e86c2]{color:#1890ff}
-.action-icon.edit-icon[data-v-b17e86c2]:hover{color:#40a9ff}
-.action-icon[data-v-b17e86c2]:hover{color:#1890ff}
-.action-icon.publish-icon[data-v-b17e86c2]{color:#1890ff}
-.action-icon.publish-icon[data-v-b17e86c2]:hover{color:#40a9ff}
-.action-icon.expiry-icon[data-v-b17e86c2]{color:#1890ff}
+.symbol-select[data-v-211c2fea] .ant-select-selection:hover{border-color:#1890ff}
+.symbol-select[data-v-211c2fea] .ant-select-focused .ant-select-selection{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
+.timeframe-item[data-v-211c2fea]:hover{color:#1890ff}
+.timeframe-item.active[data-v-211c2fea]{color:#1890ff}
+.panel-header .realtime-toggle-btn[data-v-211c2fea]:hover,.panel-header .theme-toggle-btn[data-v-211c2fea]:hover{color:#1890ff}
+.panel-header .realtime-toggle-btn.active[data-v-211c2fea],.panel-header .theme-toggle-btn.active[data-v-211c2fea]{color:#1890ff;background:#e6f7ff}
+.indicator-card[data-v-211c2fea]:hover{border-color:#1890ff}
+.indicator-card.active[data-v-211c2fea]{background:#e6f7ff;border-color:#1890ff}
+.indicator-card.active .card-name[data-v-211c2fea]{color:#1890ff}
+.card-action[data-v-211c2fea]:hover{color:#1890ff}
+.action-icon.edit-icon[data-v-211c2fea]{color:#1890ff}
+.action-icon.edit-icon[data-v-211c2fea]:hover{color:#40a9ff}
+.action-icon[data-v-211c2fea]:hover{color:#1890ff}
+.action-icon.publish-icon[data-v-211c2fea]{color:#1890ff}
+.action-icon.publish-icon[data-v-211c2fea]:hover{color:#40a9ff}
+.action-icon.expiry-icon[data-v-211c2fea]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
-.qt-header-btn[data-v-b17e86c2]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
-.qt-header-btn[data-v-b17e86c2]:focus,.qt-header-btn[data-v-b17e86c2]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45)}
-.qt-floating-btn[data-v-b17e86c2]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4)}
-.qt-floating-btn[data-v-b17e86c2]:hover{-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-b17e86c2] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-b17e86c2]:hover,body.dark,body.realdark{border-color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-b17e86c2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-b17e86c2],body.dark,body.realdark{color:#1890ff}
-.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-b17e86c2]:hover,body.dark,body.realdark{color:#40a9ff}
+.qt-header-btn[data-v-211c2fea]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
+.qt-header-btn[data-v-211c2fea]:focus,.qt-header-btn[data-v-211c2fea]:hover{background:linear-gradient(135deg,#40a9ff,#9254de);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.45);box-shadow:0 4px 12px rgba(24,144,255,.45)}
+.qt-floating-btn[data-v-211c2fea]{background:linear-gradient(135deg,#1890ff,#722ed1);-webkit-box-shadow:0 4px 16px rgba(24,144,255,.4);box-shadow:0 4px 16px rgba(24,144,255,.4)}
+.qt-floating-btn[data-v-211c2fea]:hover{-webkit-box-shadow:0 6px 24px rgba(24,144,255,.55);box-shadow:0 6px 24px rgba(24,144,255,.55)}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-selection:hover,body.dark,body.realdark{border-color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .symbol-select[data-v-211c2fea] .ant-select-focused .ant-select-selection,body.dark,body.realdark{border-color:#1890ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.3);box-shadow:0 0 0 2px rgba(24,144,255,.3)}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .timeframe-group .timeframe-item.active[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn.active[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .section-label .buy-indicator-btn[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-211c2fea]:hover,body.dark,body.realdark{border-color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card.active .card-name[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-211c2fea],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.edit-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-211c2fea],body.dark,body.realdark{color:#1890ff}
+.ant-layout.dark,.ant-layout.realdark,.ant-pro-layout.dark,.ant-pro-layout.realdark,.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon.publish-icon[data-v-211c2fea]:hover,body.dark,body.realdark{color:#40a9ff}
.comment-list .comment-form .form-header .edit-label[data-v-4973cae6]{color:#1890ff}
.comment-list .comments .comment-item.is-mine[data-v-4973cae6]{background:rgba(24,144,255,.02)}
[data-theme=dark] .comment-list .comments .comment-item.is-mine[data-v-4973cae6]{background:rgba(24,144,255,.05)}
@@ -185,32 +219,32 @@ body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .
.theme-dark .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.1)}
.theme-dark .alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(114,46,209,.1))}
.theme-dark .alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#40a9ff}
-.user-manage-page .page-header .page-title .anticon[data-v-49c4f239]{color:#1890ff}
-.user-manage-page .address-text[data-v-49c4f239],.user-manage-page .hash-text[data-v-49c4f239]{color:#1890ff}
-.user-manage-page.theme-dark .manage-tabs[data-v-49c4f239] .ant-tabs-tab-active{color:#1890ff}
-.user-manage-page .current-credits-info .value[data-v-49c4f239],.user-manage-page .current-vip-info .value[data-v-49c4f239]{color:#1890ff}
-.profile-page .page-header .page-title .anticon[data-v-86a53e9c]{color:#1890ff}
-.profile-page .profile-card .profile-info .info-item .anticon[data-v-86a53e9c]{color:#1890ff}
-.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-tabs-tab-active{color:#1890ff}
-.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-86a53e9c] .ant-input:hover{border-color:#1890ff}
-.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-86a53e9c] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
-.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
-.profile-page.theme-dark[data-v-86a53e9c] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
-.profile-page.theme-dark[data-v-86a53e9c] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
-.billing-page .plan-card.highlight[data-v-0cdd5f9c]{border:1px solid rgba(24,144,255,.35)}
+.user-manage-page .page-header .page-title .anticon[data-v-f0405968]{color:#1890ff}
+.user-manage-page .address-text[data-v-f0405968],.user-manage-page .hash-text[data-v-f0405968]{color:#1890ff}
+.user-manage-page.theme-dark .manage-tabs[data-v-f0405968] .ant-tabs-tab-active{color:#1890ff}
+.user-manage-page .current-credits-info .value[data-v-f0405968],.user-manage-page .current-vip-info .value[data-v-f0405968]{color:#1890ff}
+.profile-page .page-header .page-title .anticon[data-v-6dceb76a]{color:#1890ff}
+.profile-page .profile-card .profile-info .info-item .anticon[data-v-6dceb76a]{color:#1890ff}
+.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-tabs-tab-active{color:#1890ff}
+.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-6dceb76a] .ant-input:hover{border-color:#1890ff}
+.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-6dceb76a] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
+.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
+.profile-page.theme-dark[data-v-6dceb76a] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
+.profile-page.theme-dark[data-v-6dceb76a] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
+.billing-page .plan-card.highlight[data-v-714c882a]{border:1px solid rgba(24,144,255,.35)}
.usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,.usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.08);color:#1890ff}
-.theme-dark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,.theme-dark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.15);color:#40a9ff}
-.settings-page .settings-header .page-title .anticon[data-v-20857e25]{color:#1890ff}
-.settings-page .openrouter-balance-card .ant-card[data-v-20857e25]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
-.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-20857e25]{color:#1890ff}
-.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
-.settings-page .settings-collapse[data-v-20857e25] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
-.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
-.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
-.settings-page .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15)}
-.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
-.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}
-.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-20857e25] .ant-select-selection:hover{border-color:#1890ff}
+body.dark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.dark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .addr-box .copy-btn:hover,body.realdark .usdt-checkout .checkout-body .info-section .amt-box .copy-btn:hover{background:rgba(24,144,255,.15);color:#40a9ff}
+.settings-page .settings-header .page-title .anticon[data-v-f144964c]{color:#1890ff}
+.settings-page .openrouter-balance-card .ant-card[data-v-f144964c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
+.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-f144964c]{color:#1890ff}
+.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
+.settings-page .settings-collapse[data-v-f144964c] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
+.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
+.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
+.settings-page .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.15)}
+.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
+.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-form-item-label .form-label-with-tooltip .api-link:hover{background:rgba(24,144,255,.25)}
+.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-f144964c] .ant-select-selection:hover{border-color:#1890ff}
.turnstile-container .turnstile-error a[data-v-20437450]{color:#1890ff}
.main .login-method-switch a[data-v-de9678f6]:hover{color:#1890ff}
.main .login-method-switch a.active[data-v-de9678f6]{color:#1890ff;border-bottom-color:#1890ff}
diff --git a/frontend/dist/index.html b/frontend/dist/index.html
index d03a9f5..cca8f9b 100644
--- a/frontend/dist/index.html
+++ b/frontend/dist/index.html
@@ -421,4 +421,4 @@
.brand-text {
font-size: 20px;
}
- }