Signed-off-by: Dinger <quantdinger@gmail.com>
This commit is contained in:
Dinger
2026-04-06 01:39:25 +08:00
parent 15c901364b
commit 3ca291a346
214 changed files with 2771 additions and 8535 deletions
+21 -7
View File
@@ -29,7 +29,7 @@
<p>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square&logo=apache" alt="License"></a>
<img src="https://img.shields.io/badge/Version-2.2.3-orange?style=flat-square" alt="Version">
<img src="https://img.shields.io/badge/Version-3.0.1-orange?style=flat-square" alt="Version">
<img src="https://img.shields.io/badge/Python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python">
<img src="https://img.shields.io/badge/Docker-One%20Click-2496ED?style=flat-square&logo=docker&logoColor=white" alt="Docker">
<img src="https://img.shields.io/badge/Vibe%20Coding-Ready-FF6B6B?style=flat-square&logo=sparkles&logoColor=white" alt="Vibe Coding">
@@ -53,6 +53,7 @@
- [🎯 Why QuantDinger?](#-why-quantdinger)
- [📸 Visual Tour](#-visual-tour--watch-video-demo)
- [✨ Key Features](#-key-features)
- [🔗 QuantDinger exchange signup (referral)](#quantdinger-exchange-signup-referral)
- [🔌 Supported Exchanges & Brokers](#-supported-exchanges--brokers)
- [🏗️ Architecture & Configuration](#-architecture--configuration)
- [📚 Documentation Index](#-documentation-index)
@@ -394,6 +395,23 @@ flowchart TB
---
## 🔗 QuantDinger exchange signup (referral)
These are **QuantDinger** partner / invite links. Registering through them may qualify you for trading fee rebates (for example up to about **20%** commission rebate — subject to each exchanges rules and campaigns).
| Exchange | Invite / signup link |
|----------|----------------------|
| Binance | [Register](https://www.bsmkweb.cc/register?ref=QUANTDINGER) |
| Bitget | [Register](https://partner.hdmune.cn/bg/7r4xz8kd) |
| Bybit | [Register](https://partner.bybit.com/b/DINGER) |
| OKX | [Register](https://www.xqmnobxky.com/join/QUANTDINGER) |
| Gate.io | [Register](https://www.gateport.company/share/DINGER) |
| HTX | [Register](https://www.htx.com/invite/zh-cn/1f?invite_code=dinger) |
The same links are available in the web app under **Profile → Open account** (after sign-in).
---
## 🔌 Supported Exchanges & Brokers
### Cryptocurrency (Direct API Trading)
@@ -418,13 +436,9 @@ flowchart TB
| **Forex** | MetaTrader 5 (MT5), OANDA | ✅ Via MT5 |
| **Futures** | Exchange APIs | ⚡ Data + Notify |
### Exchange Rebate Links
### Exchange rebate links
If you are opening a new exchange account, use a rebate link from the start. Many traders actively look for fee-rebate links anyway, and these links give you a straightforward 20% trading fee discount at no extra cost.
- **OKX**: [Open account with 20% fee rebate](https://www.promooboost.com/join/QUANTDINGER)
- **Bitget**: [Open account with 20% fee rebate](https://partner.bitget.com/bg/dinger)
- **Bitget (backup link)**: [Alternate 20% fee rebate signup link](https://partner.hdmune.cn/bg/7r4xz8kd)
See the dedicated section: [QuantDinger exchange signup (referral)](#quantdinger-exchange-signup-referral).
---
+68 -143
View File
@@ -265,44 +265,27 @@ def run_backtest():
'message': '使用标准K线回测'
}
# Persist backtest run for AI optimization / history
run_id = None
try:
with get_db_connection() as db:
cur = db.cursor()
cur.execute(
"""
INSERT INTO qd_backtest_runs
(user_id, indicator_id, market, symbol, timeframe, start_date, end_date,
initial_capital, commission, slippage, leverage, trade_direction,
strategy_config, status, error_message, result_json, created_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())
""",
(
user_id,
int(indicator_id) if indicator_id is not None else None,
market,
symbol,
timeframe,
start_date_str,
end_date_str,
initial_capital,
commission,
slippage,
leverage,
trade_direction,
json.dumps(strategy_config or {}, ensure_ascii=False),
'success',
'',
json.dumps(result or {}, ensure_ascii=False)
)
)
run_id = cur.lastrowid
db.commit()
cur.close()
except Exception:
# Do not break the main backtest response if persistence fails.
logger.warning("Failed to persist backtest run", exc_info=True)
run_id = backtest_service.persist_run(
user_id=user_id,
indicator_id=int(indicator_id) if indicator_id is not None else None,
run_type='indicator',
market=market,
symbol=symbol,
timeframe=timeframe,
start_date_str=start_date_str,
end_date_str=end_date_str,
initial_capital=initial_capital,
commission=commission,
slippage=slippage,
leverage=leverage,
trade_direction=trade_direction,
strategy_config=strategy_config,
config_snapshot={'indicatorId': int(indicator_id) if indicator_id is not None else None},
status='success',
error_message='',
result=result,
code=indicator_code,
)
return jsonify({
'code': 1,
@@ -323,42 +306,31 @@ def run_backtest():
except Exception as e:
logger.error(f"Backtest failed: {str(e)}")
logger.error(traceback.format_exc())
# Best-effort persist failed run (if we have enough context)
try:
data = data if isinstance(data, dict) else {}
user_id = g.user_id
indicator_id = data.get('indicatorId')
with get_db_connection() as db:
cur = db.cursor()
cur.execute(
"""
INSERT INTO qd_backtest_runs
(user_id, indicator_id, market, symbol, timeframe, start_date, end_date,
initial_capital, commission, slippage, leverage, trade_direction,
strategy_config, status, error_message, result_json, created_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())
""",
(
user_id,
int(indicator_id) if indicator_id is not None else None,
str(data.get('market', '') or ''),
str(data.get('symbol', '') or ''),
str(data.get('timeframe', '') or ''),
str(data.get('startDate', '') or ''),
str(data.get('endDate', '') or ''),
float(data.get('initialCapital', 0) or 0),
float(data.get('commission', 0) or 0),
float(data.get('slippage', 0) or 0),
int(data.get('leverage', 1) or 1),
str(data.get('tradeDirection', 'long') or 'long'),
json.dumps(data.get('strategyConfig') or {}, ensure_ascii=False),
'failed',
str(e),
''
)
)
db.commit()
cur.close()
backtest_service.persist_run(
user_id=user_id,
indicator_id=int(indicator_id) if indicator_id is not None else None,
run_type='indicator',
market=str(data.get('market', '') or ''),
symbol=str(data.get('symbol', '') or ''),
timeframe=str(data.get('timeframe', '') or ''),
start_date_str=str(data.get('startDate', '') or ''),
end_date_str=str(data.get('endDate', '') or ''),
initial_capital=float(data.get('initialCapital', 0) or 0),
commission=float(data.get('commission', 0) or 0),
slippage=float(data.get('slippage', 0) or 0),
leverage=int(data.get('leverage', 1) or 1),
trade_direction=str(data.get('tradeDirection', 'long') or 'long'),
strategy_config=data.get('strategyConfig') or {},
config_snapshot={'indicatorId': int(indicator_id) if indicator_id is not None else None},
status='failed',
error_message=str(e),
result=None,
code=str(data.get('indicatorCode', '') or ''),
)
except Exception:
pass
return jsonify({
@@ -391,53 +363,22 @@ def get_backtest_history():
offset = max(0, offset)
indicator_id = request.args.get('indicatorId')
strategy_id = request.args.get('strategyId')
run_type = (request.args.get('runType') or '').strip()
symbol = (request.args.get('symbol') or '').strip()
market = (request.args.get('market') or '').strip()
timeframe = (request.args.get('timeframe') or '').strip()
where = ["user_id = ?"]
params = [user_id]
if indicator_id is not None and str(indicator_id).strip() != "":
try:
where.append("indicator_id = ?")
params.append(int(indicator_id))
except Exception:
pass
if symbol:
where.append("symbol = ?")
params.append(symbol)
if market:
where.append("market = ?")
params.append(market)
if timeframe:
where.append("timeframe = ?")
params.append(timeframe)
where_sql = " AND ".join(where)
with get_db_connection() as db:
cur = db.cursor()
cur.execute(
f"""
SELECT id, user_id, indicator_id, market, symbol, timeframe,
start_date, end_date, initial_capital, commission, slippage,
leverage, trade_direction, strategy_config, status, error_message,
created_at
FROM qd_backtest_runs
WHERE {where_sql}
ORDER BY id DESC
LIMIT ? OFFSET ?
""",
(*params, limit, offset)
)
rows = cur.fetchall() or []
cur.close()
# Parse strategy_config JSON best-effort
for r in rows:
try:
r['strategy_config'] = json.loads(r.get('strategy_config') or '{}')
except Exception:
pass
rows = backtest_service.list_runs(
user_id=user_id,
limit=limit,
offset=offset,
indicator_id=int(indicator_id) if indicator_id is not None and str(indicator_id).strip() != "" else None,
strategy_id=int(strategy_id) if strategy_id is not None and str(strategy_id).strip() != "" else None,
run_type=run_type or None,
symbol=symbol,
market=market,
timeframe=timeframe,
)
return jsonify({'code': 1, 'msg': 'OK', 'data': rows})
except Exception as e:
@@ -461,35 +402,10 @@ def get_backtest_run():
if not run_id:
return jsonify({'code': 0, 'msg': 'runId is required', 'data': None}), 400
with get_db_connection() as db:
cur = db.cursor()
cur.execute(
"""
SELECT id, user_id, indicator_id, market, symbol, timeframe,
start_date, end_date, initial_capital, commission, slippage,
leverage, trade_direction, strategy_config, status, error_message,
result_json, created_at
FROM qd_backtest_runs
WHERE id = ? AND user_id = ?
""",
(run_id, user_id),
)
row = cur.fetchone()
cur.close()
row = backtest_service.get_run(user_id=user_id, run_id=run_id)
if not row:
return jsonify({'code': 0, 'msg': 'run not found', 'data': None}), 404
try:
row['strategy_config'] = json.loads(row.get('strategy_config') or '{}')
except Exception:
pass
try:
row['result'] = json.loads(row.get('result_json') or '{}')
except Exception:
row['result'] = {}
row.pop('result_json', None)
return jsonify({'code': 1, 'msg': 'OK', 'data': row})
except Exception as e:
logger.error(f"get_backtest_run failed: {e}")
@@ -724,6 +640,7 @@ def ai_analyze_backtest_runs():
try:
data = request.get_json() or {}
user_id = g.user_id
backtest_service.ensure_storage_schema()
lang = _normalize_lang(data.get('lang'))
run_ids = data.get('runIds') or []
if not isinstance(run_ids, list) or not run_ids:
@@ -740,9 +657,9 @@ def ai_analyze_backtest_runs():
cur = db.cursor()
cur.execute(
f"""
SELECT id, user_id, indicator_id, market, symbol, timeframe,
SELECT id, user_id, indicator_id, strategy_id, strategy_name, run_type, market, symbol, timeframe,
start_date, end_date, initial_capital, commission, slippage,
leverage, trade_direction, strategy_config, status, error_message,
leverage, trade_direction, strategy_config, config_snapshot, status, error_message,
result_json, created_at
FROM qd_backtest_runs
WHERE user_id = ? AND id IN ({placeholders})
@@ -759,6 +676,10 @@ def ai_analyze_backtest_runs():
r['strategy_config'] = json.loads(r.get('strategy_config') or '{}')
except Exception:
r['strategy_config'] = {}
try:
r['config_snapshot'] = json.loads(r.get('config_snapshot') or '{}')
except Exception:
r['config_snapshot'] = {}
try:
r['result'] = json.loads(r.get('result_json') or '{}')
except Exception:
@@ -806,6 +727,9 @@ def ai_analyze_backtest_runs():
"selectedRuns": [
{
"id": r.get("id"),
"strategy_id": r.get("strategy_id"),
"strategy_name": r.get("strategy_name"),
"run_type": r.get("run_type"),
"market": r.get("market"),
"symbol": r.get("symbol"),
"timeframe": r.get("timeframe"),
@@ -814,6 +738,7 @@ def ai_analyze_backtest_runs():
"leverage": r.get("leverage"),
"trade_direction": r.get("trade_direction"),
"strategy_config": r.get("strategy_config") or {},
"config_snapshot": r.get("config_snapshot") or {},
"result": r.get("result") or {},
"status": r.get("status"),
}
@@ -833,7 +758,7 @@ def ai_analyze_backtest_runs():
{"role": "user", "content": json.dumps(user_payload, ensure_ascii=False)},
],
},
timeout=120,
timeout=30,
)
try:
resp.raise_for_status()
+16 -3
View File
@@ -40,7 +40,7 @@ def list_credentials():
cur = db.cursor()
cur.execute(
"""
SELECT id, user_id, name, exchange_id, api_key_hint, created_at, updated_at
SELECT id, user_id, name, exchange_id, api_key_hint, encrypted_config, created_at, updated_at
FROM qd_exchange_credentials
WHERE user_id = %s
ORDER BY id DESC
@@ -50,7 +50,20 @@ def list_credentials():
rows = cur.fetchall() or []
cur.close()
return jsonify({'code': 1, 'msg': 'success', 'data': {'items': rows}})
items = []
for row in rows:
item = dict(row or {})
item['enable_demo_trading'] = False
try:
plain = decrypt_credential_blob(item.get('encrypted_config'))
cfg = json.loads(plain) if plain else {}
item['enable_demo_trading'] = bool(cfg.get('enable_demo_trading') or cfg.get('enableDemoTrading'))
except Exception:
item['enable_demo_trading'] = False
item.pop('encrypted_config', None)
items.append(item)
return jsonify({'code': 1, 'msg': 'success', 'data': {'items': items}})
except Exception as e:
logger.error(f"list_credentials failed: {str(e)}")
logger.error(traceback.format_exc())
@@ -59,7 +72,7 @@ def list_credentials():
CRYPTO_EXCHANGES = [
'binance', 'okx', 'bitget', 'bybit', 'coinbaseexchange',
'kraken', 'kucoin', 'gate', 'bitfinex', 'deepcoin'
'kraken', 'kucoin', 'gate', 'bitfinex', 'deepcoin', 'htx'
]
+46 -8
View File
@@ -65,9 +65,17 @@ def _convert_usdt_to_base_qty(client, symbol: str, usdt_amount: float, market_ty
logger.info(f"Using limit price {limit_price} for USDT conversion")
else:
# Try to get current market price from exchange
if hasattr(client, "get_ticker"):
try:
ticker = client.get_ticker(symbol=symbol)
if isinstance(ticker, dict):
current_price = float(ticker.get("last") or ticker.get("lastPx") or ticker.get("close") or ticker.get("price") or 0)
except Exception:
current_price = 0.0
# OKX
from app.services.live_trading.okx import OkxClient
if isinstance(client, OkxClient):
if current_price <= 0 and isinstance(client, OkxClient):
try:
from app.services.live_trading.symbols import to_okx_spot_inst_id, to_okx_swap_inst_id
inst_id = to_okx_spot_inst_id(symbol) if market_type == "spot" else to_okx_swap_inst_id(symbol)
@@ -88,7 +96,7 @@ def _convert_usdt_to_base_qty(client, symbol: str, usdt_amount: float, market_ty
# Binance - try to get price from public API
from app.services.live_trading.binance import BinanceFuturesClient
from app.services.live_trading.binance_spot import BinanceSpotClient
if isinstance(client, (BinanceFuturesClient, BinanceSpotClient)):
if current_price <= 0 and isinstance(client, (BinanceFuturesClient, BinanceSpotClient)):
try:
# Binance public ticker endpoint
base_url = getattr(client, "base_url", "")
@@ -284,10 +292,10 @@ def place_order():
market_type = "spot" if leverage == 1 else "swap"
if market_type in ("futures", "future", "perp", "perpetual"):
market_type = "swap"
# Override: if leverage > 1, force swap; if leverage = 1, force spot
# Override only when user did not explicitly choose market_type.
if leverage > 1:
market_type = "swap"
elif leverage == 1:
elif leverage == 1 and not str(body.get("market_type") or "").strip():
market_type = "spot"
# ---- build exchange client ----
@@ -485,6 +493,8 @@ def _limit_order_kwargs(client, symbol, amount, price, side, market_type, client
from app.services.live_trading.binance import BinanceFuturesClient
from app.services.live_trading.binance_spot import BinanceSpotClient
from app.services.live_trading.okx import OkxClient
from app.services.live_trading.bybit import BybitClient
from app.services.live_trading.deepcoin import DeepcoinClient
if isinstance(client, (BinanceFuturesClient, BinanceSpotClient)):
return {"quantity": amount, "price": price, "client_order_id": client_order_id}
@@ -497,6 +507,8 @@ def _limit_order_kwargs(client, symbol, amount, price, side, market_type, client
pos_side = "long" if side.lower() == "buy" else "short"
kwargs["pos_side"] = pos_side
return kwargs
if isinstance(client, (BybitClient, DeepcoinClient)):
return {"qty": amount, "price": price, "client_order_id": client_order_id}
# Generic fallback
return {"size": amount, "price": price, "client_order_id": client_order_id}
@@ -592,6 +604,26 @@ def _parse_balance(raw: Any, exchange_id: str, market_type: str) -> Dict[str, An
result["available"] = float(c.get("availableToWithdraw") or c.get("walletBalance") or 0)
result["total"] = float(c.get("walletBalance") or 0)
return result
# HTX spot
if isinstance(data, dict) and isinstance(data.get("list"), list):
for item in data.get("list") or []:
if str(item.get("currency") or "").upper() == "USDT" and str(item.get("type") or "").lower() in ("trade", "available", ""):
avail = float(item.get("balance") or 0)
result["available"] = avail
total = 0.0
for item in data.get("list") or []:
if str(item.get("currency") or "").upper() == "USDT":
total += float(item.get("balance") or 0)
if total > 0 or result["available"] > 0:
result["total"] = total or result["available"]
return result
# HTX swap
if isinstance(data, list) and data and isinstance(data[0], dict):
first = data[0]
if "margin_available" in first or "margin_balance" in first or "withdraw_available" in first:
result["available"] = float(first.get("margin_available") or first.get("withdraw_available") or 0)
result["total"] = float(first.get("margin_balance") or first.get("margin_static") or 0)
return result
# Fallback: try to find any USDT-like values
if isinstance(raw, dict):
for k, v in raw.items():
@@ -679,7 +711,7 @@ def _parse_positions(raw: Any) -> list:
# SWAP: posAmt, pos
# SPOT: bal (balance), availBal (available balance)
size = float(item.get("posAmt") or item.get("pos") or item.get("size") or item.get("contracts") or
item.get("bal") or item.get("availBal") or 0)
item.get("bal") or item.get("availBal") or item.get("volume") or 0)
if abs(size) < 1e-10:
continue
@@ -693,15 +725,21 @@ def _parse_positions(raw: Any) -> list:
pos_side = str(item.get("posSide", "")).strip().lower()
if pos_side in ("long", "short"):
side = pos_side
elif item.get("direction"):
dir_side = str(item.get("direction") or "").strip().lower()
if dir_side in ("buy", "long"):
side = "long"
elif dir_side in ("sell", "short"):
side = "short"
result.append({
"symbol": item.get("symbol") or item.get("instId") or "",
"side": side,
"size": abs(size),
"entry_price": float(item.get("entryPrice") or item.get("avgCost") or item.get("avgPx") or item.get("avgPx") or 0),
"unrealized_pnl": float(item.get("unRealizedProfit") or item.get("upl") or item.get("unrealisedPnl") or item.get("pnl") or 0),
"entry_price": float(item.get("entryPrice") or item.get("avgCost") or item.get("avgPx") or item.get("cost_open") or 0),
"unrealized_pnl": float(item.get("unRealizedProfit") or item.get("upl") or item.get("unrealisedPnl") or item.get("profit_unreal") or item.get("pnl") or 0),
"leverage": float(item.get("leverage") or item.get("lever") or 1),
"mark_price": float(item.get("markPrice") or item.get("markPx") or item.get("last") or 0),
"mark_price": float(item.get("markPrice") or item.get("markPx") or item.get("last_price") or item.get("last") or 0),
})
except Exception as e:
logger.warning(f"_parse_positions error: {e}")
+179 -3
View File
@@ -2,12 +2,15 @@
Trading Strategy API Routes
"""
from flask import Blueprint, request, jsonify, g
from datetime import datetime
import json
import traceback
import time
from app.services.strategy import StrategyService
from app.services.strategy_compiler import StrategyCompiler
from app.services.backtest import BacktestService
from app.services.strategy_snapshot import StrategySnapshotResolver
from app import get_trading_executor
from app.utils.logger import get_logger
from app.utils.db import get_db_connection
@@ -21,6 +24,7 @@ strategy_bp = Blueprint('strategy', __name__)
# Local mode: avoid heavy initialization during module import.
# Instantiate services lazily on first use to keep startup clean.
_strategy_service = None
_backtest_service = None
def get_strategy_service() -> StrategyService:
global _strategy_service
@@ -29,6 +33,13 @@ def get_strategy_service() -> StrategyService:
return _strategy_service
def get_backtest_service() -> BacktestService:
global _backtest_service
if _backtest_service is None:
_backtest_service = BacktestService()
return _backtest_service
@strategy_bp.route('/strategies', methods=['GET'])
@login_required
def list_strategies():
@@ -63,6 +74,168 @@ def get_strategy_detail():
return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500
@strategy_bp.route('/strategies/backtest', methods=['POST'])
@login_required
def run_strategy_backtest():
try:
payload = request.get_json() or {}
user_id = g.user_id
strategy_id = int(payload.get('strategyId') or 0)
if not strategy_id:
return jsonify({'code': 0, 'msg': 'strategyId is required', 'data': None}), 400
start_date_str = str(payload.get('startDate') or '').strip()
end_date_str = str(payload.get('endDate') or '').strip()
if not start_date_str or not end_date_str:
return jsonify({'code': 0, 'msg': 'startDate and endDate are required', 'data': None}), 400
strategy = get_strategy_service().get_strategy(strategy_id, user_id=user_id)
if not strategy:
return jsonify({'code': 0, 'msg': 'Strategy not found', 'data': None}), 404
resolver = StrategySnapshotResolver(user_id=user_id)
snapshot = resolver.resolve(strategy, payload.get('overrideConfig') or {})
snapshot['user_id'] = user_id
start_date = datetime.strptime(start_date_str, '%Y-%m-%d')
end_date = datetime.strptime(end_date_str, '%Y-%m-%d').replace(hour=23, minute=59, second=59)
days_diff = (end_date - start_date).days
timeframe = snapshot.get('timeframe') or '1D'
if timeframe == '1m':
max_days = 30
max_range_text = '1 month'
elif timeframe == '5m':
max_days = 180
max_range_text = '6 months'
elif timeframe in ['15m', '30m']:
max_days = 365
max_range_text = '1 year'
else:
max_days = 1095
max_range_text = '3 years'
if days_diff > max_days:
return jsonify({
'code': 0,
'msg': f'Backtest range exceeds limit: timeframe {timeframe} supports up to {max_range_text} ({max_days} days), but you selected {days_diff} days',
'data': None
}), 400
svc = get_backtest_service()
result = svc.run_strategy_snapshot(snapshot, start_date=start_date, end_date=end_date)
run_id = svc.persist_run(
user_id=user_id,
indicator_id=snapshot.get('indicator_id'),
strategy_id=snapshot.get('strategy_id'),
strategy_name=snapshot.get('strategy_name') or '',
run_type=snapshot.get('run_type') or 'strategy_indicator',
market=snapshot.get('market') or '',
symbol=snapshot.get('symbol') or '',
timeframe=snapshot.get('timeframe') or '',
start_date_str=start_date_str,
end_date_str=end_date_str,
initial_capital=float(snapshot.get('initial_capital') or 0),
commission=float(snapshot.get('commission') or 0),
slippage=float(snapshot.get('slippage') or 0),
leverage=int(snapshot.get('leverage') or 1),
trade_direction=str(snapshot.get('trade_direction') or 'long'),
strategy_config=snapshot.get('strategy_config') or {},
config_snapshot=snapshot.get('config_snapshot') or {},
status='success',
error_message='',
result=result,
code=snapshot.get('code') or '',
)
return jsonify({'code': 1, 'msg': 'success', 'data': {'runId': run_id, 'result': result}})
except ValueError as e:
return jsonify({'code': 0, 'msg': str(e), 'data': None}), 400
except Exception as e:
logger.error(f"run_strategy_backtest failed: {str(e)}")
logger.error(traceback.format_exc())
try:
payload = payload if isinstance(payload, dict) else {}
strategy_id = int(payload.get('strategyId') or 0)
strategy = get_strategy_service().get_strategy(strategy_id, user_id=g.user_id) if strategy_id else None
if strategy:
resolver = StrategySnapshotResolver(user_id=g.user_id)
snapshot = resolver.resolve(strategy, payload.get('overrideConfig') or {})
snapshot['user_id'] = g.user_id
get_backtest_service().persist_run(
user_id=g.user_id,
indicator_id=snapshot.get('indicator_id'),
strategy_id=snapshot.get('strategy_id'),
strategy_name=snapshot.get('strategy_name') or '',
run_type=snapshot.get('run_type') or 'strategy_indicator',
market=snapshot.get('market') or '',
symbol=snapshot.get('symbol') or '',
timeframe=snapshot.get('timeframe') or '',
start_date_str=str(payload.get('startDate') or ''),
end_date_str=str(payload.get('endDate') or ''),
initial_capital=float(snapshot.get('initial_capital') or 0),
commission=float(snapshot.get('commission') or 0),
slippage=float(snapshot.get('slippage') or 0),
leverage=int(snapshot.get('leverage') or 1),
trade_direction=str(snapshot.get('trade_direction') or 'long'),
strategy_config=snapshot.get('strategy_config') or {},
config_snapshot=snapshot.get('config_snapshot') or {},
status='failed',
error_message=str(e),
result=None,
code=snapshot.get('code') or '',
)
except Exception:
pass
return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500
@strategy_bp.route('/strategies/backtest/history', methods=['GET'])
@login_required
def get_strategy_backtest_history():
try:
user_id = g.user_id
strategy_id = int(request.args.get('strategyId') or request.args.get('id') or 0)
if not strategy_id:
return jsonify({'code': 0, 'msg': 'strategyId is required', 'data': None}), 400
limit = max(1, min(int(request.args.get('limit') or 50), 200))
offset = max(0, int(request.args.get('offset') or 0))
symbol = (request.args.get('symbol') or '').strip()
market = (request.args.get('market') or '').strip()
timeframe = (request.args.get('timeframe') or '').strip()
rows = get_backtest_service().list_runs(
user_id=user_id,
strategy_id=strategy_id,
limit=limit,
offset=offset,
symbol=symbol,
market=market,
timeframe=timeframe,
)
rows = [r for r in rows if str(r.get('run_type') or '').startswith('strategy_')]
return jsonify({'code': 1, 'msg': 'success', 'data': rows})
except Exception as e:
logger.error(f"get_strategy_backtest_history failed: {str(e)}")
logger.error(traceback.format_exc())
return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500
@strategy_bp.route('/strategies/backtest/get', methods=['GET'])
@login_required
def get_strategy_backtest_run():
try:
user_id = g.user_id
run_id = int(request.args.get('runId') or 0)
if not run_id:
return jsonify({'code': 0, 'msg': 'runId is required', 'data': None}), 400
row = get_backtest_service().get_run(user_id=user_id, run_id=run_id)
if not row or not str(row.get('run_type') or '').startswith('strategy_'):
return jsonify({'code': 0, 'msg': 'run not found', 'data': None}), 404
return jsonify({'code': 1, 'msg': 'success', 'data': row})
except Exception as e:
logger.error(f"get_strategy_backtest_run failed: {str(e)}")
logger.error(traceback.format_exc())
return jsonify({'code': 0, 'msg': str(e), 'data': None}), 500
@strategy_bp.route('/strategies/create', methods=['POST'])
@login_required
def create_strategy():
@@ -695,7 +868,7 @@ def test_connection():
return jsonify({'code': 0, 'msg': 'Please provide API key and secret key', 'data': None})
# Pass the resolved config (with actual keys) to the service
result = get_strategy_service().test_exchange_connection(resolved)
result = get_strategy_service().test_exchange_connection(resolved, user_id=user_id)
if result['success']:
return jsonify({'code': 1, 'msg': result.get('message') or 'Connection successful', 'data': result.get('data')})
@@ -1079,9 +1252,12 @@ def ai_generate_strategy():
Generate Python strategy code that follows this framework:
- def on_init(ctx): Initialize strategy parameters using ctx.param(name, default)
- def on_bar(ctx, bar): Core logic called on each K-line bar
- bar has: open, high, low, close, volume, timestamp
- bar supports both bar.close and bar['close'] access, and has: open, high, low, close, volume, timestamp
- ctx.buy(price, amount), ctx.sell(price, amount), ctx.close_position()
- ctx.position (current position), ctx.balance, ctx.equity
- ctx.position supports both numeric checks and dict-style fields:
- if not ctx.position / if ctx.position > 0 / if ctx.position < 0
- ctx.position['side'], ctx.position['size'], ctx.position['entry_price']
- ctx.balance, ctx.equity
- ctx.bars(n) to get last N bars, ctx.log(message) to log
- def on_order_filled(ctx, order): Optional callback when order fills
- def on_stop(ctx): Optional cleanup when strategy stops
+44 -1
View File
@@ -873,16 +873,48 @@ def get_system_strategies():
page: int (default 1)
page_size: int (default 20, max 100)
status: str (optional, filter by status: running/stopped/all)
execution_mode: str (optional, live/signal — omit or all for any)
search: str (optional, search by strategy name/symbol/username)
sort_by: str (optional, whitelist; default status+updated_at)
sort_order: str (optional, asc or desc; default desc when sort_by set)
"""
try:
page = request.args.get('page', 1, type=int)
page_size = request.args.get('page_size', 20, type=int)
status_filter = request.args.get('status', '', type=str).strip().lower()
execution_filter = request.args.get('execution_mode', '', type=str).strip().lower()
search = request.args.get('search', '', type=str).strip()
sort_by = request.args.get('sort_by', '', type=str).strip().lower()
sort_order = request.args.get('sort_order', 'desc', type=str).strip().lower()
if sort_order not in ('asc', 'desc'):
sort_order = 'desc'
page_size = min(100, max(1, page_size))
offset = (page - 1) * page_size
sort_sql_map = {
'id': 's.id',
'updated_at': 's.updated_at',
'created_at': 's.created_at',
'initial_capital': 's.initial_capital',
'strategy_name': 's.strategy_name',
'symbol': 's.symbol',
'status': 's.status',
'execution_mode': 's.execution_mode',
'leverage': 's.leverage',
}
sort_expr_map = {
'total_pnl': (
"(COALESCE((SELECT SUM(unrealized_pnl) FROM qd_strategy_positions p WHERE p.strategy_id = s.id), 0)"
" + COALESCE((SELECT SUM(profit) FROM qd_strategy_trades t WHERE t.strategy_id = s.id), 0))"
),
'trade_count': '(SELECT COUNT(*) FROM qd_strategy_trades t WHERE t.strategy_id = s.id)',
'position_count': '(SELECT COUNT(*) FROM qd_strategy_positions p WHERE p.strategy_id = s.id)',
'total_equity': (
'COALESCE((SELECT SUM(equity) FROM qd_strategy_positions p WHERE p.strategy_id = s.id), 0)'
),
}
direction = 'ASC' if sort_order == 'asc' else 'DESC'
with get_db_connection() as db:
cur = db.cursor()
@@ -894,6 +926,10 @@ def get_system_strategies():
conditions.append("s.status = ?")
params.append(status_filter)
if execution_filter in ('live', 'signal'):
conditions.append("s.execution_mode = ?")
params.append(execution_filter)
if search:
conditions.append(
"(s.strategy_name ILIKE ? OR s.symbol ILIKE ? OR u.username ILIKE ? OR u.nickname ILIKE ?)"
@@ -905,6 +941,13 @@ def get_system_strategies():
if conditions:
where_clause = "WHERE " + " AND ".join(conditions)
if sort_by in sort_sql_map:
order_clause = f"ORDER BY {sort_sql_map[sort_by]} {direction}, s.id DESC"
elif sort_by in sort_expr_map:
order_clause = f"ORDER BY {sort_expr_map[sort_by]} {direction}, s.id DESC"
else:
order_clause = "ORDER BY s.status DESC, s.updated_at DESC, s.id DESC"
# Get total count
count_sql = f"""
SELECT COUNT(*) as cnt
@@ -941,7 +984,7 @@ def get_system_strategies():
FROM qd_strategies_trading s
LEFT JOIN qd_users u ON u.id = s.user_id
{where_clause}
ORDER BY s.status DESC, s.updated_at DESC
{order_clause}
LIMIT ? OFFSET ?
"""
cur.execute(query_sql, tuple(params) + (page_size, offset))
File diff suppressed because it is too large Load Diff
@@ -19,13 +19,14 @@ from app.services.live_trading.symbols import to_binance_futures_symbol
class BinanceFuturesClient(BaseRestClient):
def __init__(self, *, api_key: str, secret_key: str, base_url: str = None, enable_demo_trading: bool = False, timeout_sec: float = 15.0):
def __init__(self, *, api_key: str, secret_key: str, base_url: str = None, enable_demo_trading: bool = False, timeout_sec: float = 15.0, broker_id: str = ""):
if not base_url:
base_url = "https://demo-fapi.binance.com" if enable_demo_trading else "https://fapi.binance.com"
super().__init__(base_url=base_url, timeout_sec=timeout_sec)
self.api_key = (api_key or "").strip()
self.secret_key = (secret_key or "").strip()
self.broker_id = (broker_id or "").strip()
if not self.api_key or not self.secret_key:
raise LiveTradingError("Missing Binance api_key/secret_key")
@@ -162,6 +163,21 @@ class BinanceFuturesClient(BaseRestClient):
def _signed_headers(self) -> Dict[str, str]:
return {"X-MBX-APIKEY": self.api_key}
def _format_client_order_id(self, client_order_id: Optional[str]) -> str:
raw = str(client_order_id or "").strip()
broker_id = str(self.broker_id or "").strip()
if not raw:
return ""
if not broker_id:
return raw[:36]
prefix = f"x-{broker_id}"
if raw.startswith(prefix):
return raw[:36]
suffix_budget = max(0, 36 - len(prefix))
if suffix_budget <= 0:
return prefix[:36]
return f"{prefix}{raw[:suffix_budget]}"
def _signed_request(self, method: str, path: str, *, params: Dict[str, Any]) -> Dict[str, Any]:
p = dict(params or {})
# Use server-accepted timestamp in ms.
@@ -649,8 +665,9 @@ class BinanceFuturesClient(BaseRestClient):
}
if reduce_only:
params["reduceOnly"] = "true"
if client_order_id:
params["newClientOrderId"] = str(client_order_id)
client_order_id_norm = self._format_client_order_id(client_order_id)
if client_order_id_norm:
params["newClientOrderId"] = client_order_id_norm
# Hedge mode requires explicit positionSide (LONG/SHORT). One-way mode should not use LONG/SHORT.
dual_side = self.get_dual_side_position()
@@ -787,8 +804,9 @@ class BinanceFuturesClient(BaseRestClient):
}
if reduce_only:
params["reduceOnly"] = "true"
if client_order_id:
params["newClientOrderId"] = str(client_order_id)
client_order_id_norm = self._format_client_order_id(client_order_id)
if client_order_id_norm:
params["newClientOrderId"] = client_order_id_norm
dual_side = self.get_dual_side_position()
pos_norm = self._normalize_position_side(position_side)
@@ -16,13 +16,14 @@ from app.services.live_trading.symbols import to_binance_futures_symbol
class BinanceSpotClient(BaseRestClient):
def __init__(self, *, api_key: str, secret_key: str, base_url: str = None, enable_demo_trading: bool = False, timeout_sec: float = 15.0):
def __init__(self, *, api_key: str, secret_key: str, base_url: str = None, enable_demo_trading: bool = False, timeout_sec: float = 15.0, broker_id: str = ""):
if not base_url:
base_url = "https://demo-api.binance.com" if enable_demo_trading else "https://api.binance.com"
super().__init__(base_url=base_url, timeout_sec=timeout_sec)
self.api_key = (api_key or "").strip()
self.secret_key = (secret_key or "").strip()
self.broker_id = (broker_id or "").strip()
if not self.api_key or not self.secret_key:
raise LiveTradingError("Missing Binance api_key/secret_key")
@@ -157,6 +158,21 @@ class BinanceSpotClient(BaseRestClient):
def _signed_headers(self) -> Dict[str, str]:
return {"X-MBX-APIKEY": self.api_key}
def _format_client_order_id(self, client_order_id: Optional[str]) -> str:
raw = str(client_order_id or "").strip()
broker_id = str(self.broker_id or "").strip()
if not raw:
return ""
if not broker_id:
return raw[:36]
prefix = f"x-{broker_id}"
if raw.startswith(prefix):
return raw[:36]
suffix_budget = max(0, 36 - len(prefix))
if suffix_budget <= 0:
return prefix[:36]
return f"{prefix}{raw[:suffix_budget]}"
def _signed_request(self, method: str, path: str, *, params: Dict[str, Any]) -> Dict[str, Any]:
p = dict(params or {})
p["timestamp"] = int(time.time() * 1000)
@@ -382,8 +398,9 @@ class BinanceSpotClient(BaseRestClient):
"quantity": self._dec_str(q_dec, strict_precision=qty_precision),
"price": self._dec_str(px_dec),
}
if client_order_id:
params["newClientOrderId"] = str(client_order_id)
client_order_id_norm = self._format_client_order_id(client_order_id)
if client_order_id_norm:
params["newClientOrderId"] = client_order_id_norm
try:
raw = self._signed_request("POST", "/api/v3/order", params=params)
except LiveTradingError as e:
@@ -423,8 +440,9 @@ class BinanceSpotClient(BaseRestClient):
"type": "MARKET",
"quantity": self._dec_str(q_dec, strict_precision=qty_precision),
}
if client_order_id:
params["newClientOrderId"] = str(client_order_id)
client_order_id_norm = self._format_client_order_id(client_order_id)
if client_order_id_norm:
params["newClientOrderId"] = client_order_id_norm
try:
raw = self._signed_request("POST", "/api/v3/order", params=params)
except LiveTradingError as e:
@@ -40,12 +40,14 @@ class BitgetMixClient(BaseRestClient):
base_url: str = "https://api.bitget.com",
timeout_sec: float = 15.0,
channel_api_code: str = "qvz9x",
simulated_trading: bool = False,
):
super().__init__(base_url=base_url, timeout_sec=timeout_sec)
self.api_key = (api_key or "").strip()
self.secret_key = (secret_key or "").strip()
self.passphrase = (passphrase or "").strip()
self.channel_api_code = (channel_api_code or "").strip()
self.simulated_trading = bool(simulated_trading)
if not self.api_key or not self.secret_key or not self.passphrase:
raise LiveTradingError("Missing Bitget api_key/secret_key/passphrase")
@@ -193,6 +195,8 @@ class BitgetMixClient(BaseRestClient):
"ACCESS-PASSPHRASE": self.passphrase,
"Content-Type": "application/json",
}
if self.simulated_trading:
headers["PAPTRADING"] = "1"
clean_path = str(request_path or "").split("?", 1)[0]
if self.channel_api_code and clean_path in self._CHANNEL_API_CODE_ORDER_PATHS:
headers["X-CHANNEL-API-CODE"] = self.channel_api_code
@@ -41,12 +41,14 @@ class BitgetSpotClient(BaseRestClient):
base_url: str = "https://api.bitget.com",
timeout_sec: float = 15.0,
channel_api_code: str = "qvz9x",
simulated_trading: bool = False,
):
super().__init__(base_url=base_url, timeout_sec=timeout_sec)
self.api_key = (api_key or "").strip()
self.secret_key = (secret_key or "").strip()
self.passphrase = (passphrase or "").strip()
self.channel_api_code = (channel_api_code or "").strip()
self.simulated_trading = bool(simulated_trading)
if not self.api_key or not self.secret_key or not self.passphrase:
raise LiveTradingError("Missing Bitget api_key/secret_key/passphrase")
@@ -167,6 +169,8 @@ class BitgetSpotClient(BaseRestClient):
"ACCESS-PASSPHRASE": self.passphrase,
"Content-Type": "application/json",
}
if self.simulated_trading:
h["PAPTRADING"] = "1"
clean_path = str(request_path or "").split("?", 1)[0]
if self.channel_api_code and clean_path in self._CHANNEL_API_CODE_ORDER_PATHS:
h["X-CHANNEL-API-CODE"] = self.channel_api_code
@@ -474,4 +478,14 @@ class BitgetSpotClient(BaseRestClient):
"""
return self._signed_request("GET", "/api/v2/spot/account/assets")
def get_ticker(self, *, symbol: str) -> Dict[str, Any]:
sym = to_bitget_um_symbol(symbol)
raw = self._public_request("GET", "/api/v2/spot/market/tickers", params={"symbol": sym})
data = raw.get("data") if isinstance(raw, dict) else None
if isinstance(data, list) and data and isinstance(data[0], dict):
return data[0]
if isinstance(data, dict):
return data
return {}
@@ -33,12 +33,15 @@ class BybitClient(BaseRestClient):
timeout_sec: float = 15.0,
category: str = "linear", # "linear" (USDT perpetual) or "spot"
recv_window_ms: int = 5000,
broker_referer: str = "",
hedge_mode: bool = False,
):
super().__init__(base_url=base_url, timeout_sec=timeout_sec)
self.api_key = (api_key or "").strip()
self.secret_key = (secret_key or "").strip()
self.category = (category or "linear").strip().lower()
self.broker_referer = self._DEFAULT_BROKER_REFERER
self.broker_referer = (broker_referer or self._DEFAULT_BROKER_REFERER).strip()
self.hedge_mode = bool(hedge_mode)
if self.category not in ("linear", "spot"):
self.category = "linear"
try:
@@ -158,8 +161,9 @@ class BybitClient(BaseRestClient):
def _sign(self, prehash: str) -> str:
return hmac.new(self.secret_key.encode("utf-8"), prehash.encode("utf-8"), hashlib.sha256).hexdigest()
@staticmethod
def _resolve_position_idx(pos_side: str) -> Optional[int]:
def _resolve_position_idx(self, pos_side: str) -> Optional[int]:
if not self.hedge_mode:
return None
ps = str(pos_side or "").strip().lower()
if ps == "long":
return 1
@@ -2,7 +2,7 @@
Translate a strategy signal into a direct-exchange order call.
Supports:
- Crypto exchanges: Binance, OKX, Bitget, Bybit, Coinbase, Kraken, KuCoin, Gate, Bitfinex, Deepcoin
- Crypto exchanges: Binance, OKX, Bitget, Bybit, Coinbase, Kraken, KuCoin, Gate, Bitfinex, Deepcoin, HTX
- Traditional brokers: Interactive Brokers (IBKR) for US stocks
- Forex brokers: MetaTrader 5 (MT5)
"""
@@ -29,6 +29,9 @@ from app.services.live_trading.bitfinex import BitfinexClient, BitfinexDerivativ
# Lazy import Deepcoin
DeepcoinClient = None
# Lazy import HTX
HtxClient = None
# Lazy import IBKR
IBKRClient = None
@@ -98,6 +101,26 @@ def _signal_to_sides(signal_type: str) -> Tuple[str, str, bool]:
raise LiveTradingError(f"Unsupported signal_type: {signal_type}")
def _quote_amount_from_base_qty(client: BaseRestClient, *, symbol: str, base_qty: float) -> float:
if float(base_qty or 0.0) <= 0:
return 0.0
if not hasattr(client, "get_ticker"):
return float(base_qty or 0.0)
try:
ticker = client.get_ticker(symbol=symbol)
except Exception:
return float(base_qty or 0.0)
if not isinstance(ticker, dict):
return float(base_qty or 0.0)
try:
price = float(ticker.get("last") or ticker.get("lastPr") or ticker.get("lastPrice") or ticker.get("price") or 0.0)
except Exception:
price = 0.0
if price <= 0:
return float(base_qty or 0.0)
return float(base_qty or 0.0) * price
def place_order_from_signal(
client: BaseRestClient,
*,
@@ -171,11 +194,13 @@ def place_order_from_signal(
client_order_id=client_order_id,
)
if isinstance(client, BitgetSpotClient):
# For spot market BUY, Bitget may expect quote size; we pass base size here and let caller override if needed.
spot_size = qty
if side == "buy":
spot_size = _quote_amount_from_base_qty(client, symbol=symbol, base_qty=qty)
return client.place_market_order(
symbol=symbol,
side=side,
size=qty,
size=spot_size,
client_order_id=client_order_id,
)
if isinstance(client, BybitClient):
@@ -192,12 +217,19 @@ def place_order_from_signal(
if isinstance(client, KrakenClient):
return client.place_market_order(symbol=symbol, side=side, size=qty, client_order_id=client_order_id)
if isinstance(client, KucoinSpotClient):
# KuCoin market BUY often requires quote funds; this simplified path does not convert.
return client.place_market_order(symbol=symbol, side=side, size=qty, client_order_id=client_order_id, quote_size=False)
quote_size = False
kucoin_size = qty
if side == "buy":
kucoin_size = _quote_amount_from_base_qty(client, symbol=symbol, base_qty=qty)
quote_size = kucoin_size > 0 and kucoin_size != qty
return client.place_market_order(symbol=symbol, side=side, size=kucoin_size, client_order_id=client_order_id, quote_size=quote_size)
if isinstance(client, KucoinFuturesClient):
return client.place_market_order(symbol=symbol, side=side, size=qty, reduce_only=reduce_only, client_order_id=client_order_id)
if isinstance(client, GateSpotClient):
return client.place_market_order(symbol=symbol, side=side, size=qty, client_order_id=client_order_id)
gate_size = qty
if side == "buy":
gate_size = _quote_amount_from_base_qty(client, symbol=symbol, base_qty=qty)
return client.place_market_order(symbol=symbol, side=side, size=gate_size, client_order_id=client_order_id)
if isinstance(client, GateUsdtFuturesClient):
return client.place_market_order(symbol=symbol, side=side, size=qty, reduce_only=reduce_only, client_order_id=client_order_id)
if isinstance(client, BitfinexClient):
@@ -226,6 +258,24 @@ def place_order_from_signal(
client_order_id=client_order_id,
)
global HtxClient
if HtxClient is None:
try:
from app.services.live_trading.htx import HtxClient as _HtxClient
HtxClient = _HtxClient
except ImportError:
pass
if HtxClient is not None and isinstance(client, HtxClient):
return client.place_market_order(
symbol=symbol,
side=side,
qty=qty,
reduce_only=reduce_only,
pos_side=pos_side,
client_order_id=client_order_id,
)
# Check for IBKR client (lazy import to avoid circular dependency)
global IBKRClient
if IBKRClient is None:
@@ -2,7 +2,7 @@
Factory for direct exchange clients.
Supports:
- Crypto exchanges: Binance, OKX, Bitget, Bybit, Coinbase, Kraken, KuCoin, Gate, Bitfinex
- Crypto exchanges: Binance, OKX, Bitget, Bybit, Coinbase, Kraken, KuCoin, Gate, Bitfinex, Deepcoin, HTX
- Traditional brokers: Interactive Brokers (IBKR) for US stocks
- Forex brokers: MetaTrader 5 (MT5)
"""
@@ -25,6 +25,7 @@ from app.services.live_trading.kucoin import KucoinSpotClient, KucoinFuturesClie
from app.services.live_trading.gate import GateSpotClient, GateUsdtFuturesClient
from app.services.live_trading.bitfinex import BitfinexClient, BitfinexDerivativesClient
from app.services.live_trading.deepcoin import DeepcoinClient
from app.services.live_trading.htx import HtxClient
# Lazy import IBKR to avoid ImportError if ib_insync not installed
IBKRClient = None
@@ -68,14 +69,16 @@ def create_client(exchange_config: Dict[str, Any], *, market_type: str = "swap")
is_demo = _demo_enabled(exchange_config)
if exchange_id == "binance":
spot_broker_id = _get(exchange_config, "spot_broker_id", "spotBrokerId", "broker_id", "brokerId") or "A2NAPZAC"
futures_broker_id = _get(exchange_config, "futures_broker_id", "futuresBrokerId", "broker_id", "brokerId") or "HBpUbQjT"
if mt == "spot":
default_url = "https://demo-api.binance.com" if is_demo else "https://api.binance.com"
base_url = _get(exchange_config, "base_url", "baseUrl") or default_url
return BinanceSpotClient(api_key=api_key, secret_key=secret_key, base_url=base_url, enable_demo_trading=is_demo)
return BinanceSpotClient(api_key=api_key, secret_key=secret_key, base_url=base_url, enable_demo_trading=is_demo, broker_id=spot_broker_id)
# Default to USDT-M futures
default_url = "https://demo-fapi.binance.com" if is_demo else "https://fapi.binance.com"
base_url = _get(exchange_config, "base_url", "baseUrl") or default_url
return BinanceFuturesClient(api_key=api_key, secret_key=secret_key, base_url=base_url, enable_demo_trading=is_demo)
return BinanceFuturesClient(api_key=api_key, secret_key=secret_key, base_url=base_url, enable_demo_trading=is_demo, broker_id=futures_broker_id)
if exchange_id == "okx":
base_url = _get(exchange_config, "base_url", "baseUrl") or "https://www.okx.com"
broker_code = "56fa80b0ce8cBCDE"
@@ -92,21 +95,48 @@ def create_client(exchange_config: Dict[str, Any], *, market_type: str = "swap")
base_url = _get(exchange_config, "base_url", "baseUrl") or "https://api.bitget.com"
if mt == "spot":
channel_api_code = _get(exchange_config, "channel_api_code", "channelApiCode") or "qvz9x"
return BitgetSpotClient(api_key=api_key, secret_key=secret_key, passphrase=passphrase, base_url=base_url, channel_api_code=channel_api_code)
return BitgetSpotClient(
api_key=api_key,
secret_key=secret_key,
passphrase=passphrase,
base_url=base_url,
channel_api_code=channel_api_code,
simulated_trading=is_demo,
)
channel_api_code = _get(exchange_config, "channel_api_code", "channelApiCode") or "qvz9x"
return BitgetMixClient(api_key=api_key, secret_key=secret_key, passphrase=passphrase, base_url=base_url, channel_api_code=channel_api_code)
return BitgetMixClient(
api_key=api_key,
secret_key=secret_key,
passphrase=passphrase,
base_url=base_url,
channel_api_code=channel_api_code,
simulated_trading=is_demo,
)
if exchange_id == "bybit":
default_bybit = "https://api-testnet.bybit.com" if is_demo else "https://api.bybit.com"
base_url = _get(exchange_config, "base_url", "baseUrl") or default_bybit
category = "spot" if mt == "spot" else "linear"
recv_window_ms = int(exchange_config.get("recv_window_ms") or exchange_config.get("recvWindow") or 5000)
broker_referer = _get(exchange_config, "bybit_referer", "broker_referer", "brokerReferer") or "Ri001020"
hedge_mode_raw = exchange_config.get("hedge_mode")
if hedge_mode_raw is None:
hedge_mode_raw = exchange_config.get("hedgeMode")
if hedge_mode_raw is None:
hedge_mode_raw = exchange_config.get("position_mode") or exchange_config.get("positionMode")
hedge_mode = False
if isinstance(hedge_mode_raw, bool):
hedge_mode = hedge_mode_raw
else:
hedge_mode = str(hedge_mode_raw or "").strip().lower() in ("true", "1", "yes", "hedge", "both_side")
return BybitClient(
api_key=api_key,
secret_key=secret_key,
base_url=base_url,
category=category,
recv_window_ms=recv_window_ms,
broker_referer=broker_referer,
hedge_mode=hedge_mode,
)
if exchange_id in ("coinbaseexchange", "coinbase_exchange"):
@@ -135,13 +165,14 @@ def create_client(exchange_config: Dict[str, Any], *, market_type: str = "swap")
return KucoinFuturesClient(api_key=api_key, secret_key=secret_key, passphrase=passphrase, base_url=fut_url)
if exchange_id == "gate":
gate_channel_id = _get(exchange_config, "gate_channel_id", "gateChannelId") or "dinger"
if mt == "spot":
default_gate = "https://api-testnet.gateio.ws" if is_demo else "https://api.gateio.ws"
base_url = _get(exchange_config, "base_url", "baseUrl") or default_gate
return GateSpotClient(api_key=api_key, secret_key=secret_key, base_url=base_url)
default_fut = "https://fx-api-testnet.gateio.ws" if is_demo else "https://api.gateio.ws"
return GateSpotClient(api_key=api_key, secret_key=secret_key, base_url=base_url, channel_id=gate_channel_id)
default_fut = "https://fx-api-testnet.gateio.ws" if is_demo else "https://fx-api.gateio.ws"
base_url = _get(exchange_config, "base_url", "baseUrl") or default_fut
return GateUsdtFuturesClient(api_key=api_key, secret_key=secret_key, base_url=base_url)
return GateUsdtFuturesClient(api_key=api_key, secret_key=secret_key, base_url=base_url, channel_id=gate_channel_id)
if exchange_id == "bitfinex":
# Same REST host; use keys from Bitfinex paper/sub-account where applicable.
@@ -151,6 +182,8 @@ def create_client(exchange_config: Dict[str, Any], *, market_type: str = "swap")
return BitfinexDerivativesClient(api_key=api_key, secret_key=secret_key, base_url=base_url)
if exchange_id == "deepcoin":
if is_demo and not (_get(exchange_config, "base_url", "baseUrl")):
raise LiveTradingError("Deepcoin demo/testnet is not configured in this project yet. Please disable demo mode or provide an explicit testnet base_url.")
base_url = _get(exchange_config, "base_url", "baseUrl") or "https://api.deepcoin.com"
return DeepcoinClient(
api_key=api_key,
@@ -160,6 +193,21 @@ def create_client(exchange_config: Dict[str, Any], *, market_type: str = "swap")
market_type=mt,
)
if exchange_id == "htx":
if is_demo and not (_get(exchange_config, "base_url", "baseUrl") or _get(exchange_config, "futures_base_url", "futuresBaseUrl")):
raise LiveTradingError("HTX demo/testnet is not configured in this project yet. Please disable demo mode or provide explicit testnet base_url/futures_base_url.")
spot_url = _get(exchange_config, "base_url", "baseUrl") or "https://api.huobi.pro"
futures_url = _get(exchange_config, "futures_base_url", "futuresBaseUrl") or "https://api.hbdm.com"
broker_id = _get(exchange_config, "broker_id", "brokerId") or "AA7b890547"
return HtxClient(
api_key=api_key,
secret_key=secret_key,
base_url=spot_url,
futures_base_url=futures_url,
market_type=mt,
broker_id=broker_id,
)
# Traditional brokers (IBKR for US stocks only)
if exchange_id == "ibkr":
# Note: Market category validation should be done at the caller level
@@ -25,10 +25,11 @@ from app.services.live_trading.symbols import to_gate_currency_pair
class _GateBase(BaseRestClient):
def __init__(self, *, api_key: str, secret_key: str, base_url: str = "https://api.gateio.ws", timeout_sec: float = 15.0):
def __init__(self, *, api_key: str, secret_key: str, base_url: str = "https://api.gateio.ws", timeout_sec: float = 15.0, channel_id: str = ""):
super().__init__(base_url=base_url, timeout_sec=timeout_sec)
self.api_key = (api_key or "").strip()
self.secret_key = (secret_key or "").strip()
self.channel_id = (channel_id or "").strip()
if not self.api_key or not self.secret_key:
raise LiveTradingError("Missing Gate api_key/secret_key")
@@ -37,7 +38,25 @@ class _GateBase(BaseRestClient):
return hmac.new(self.secret_key.encode("utf-8"), msg.encode("utf-8"), hashlib.sha512).hexdigest()
def _headers(self, ts: str, sign: str) -> Dict[str, str]:
return {"KEY": self.api_key, "Timestamp": ts, "SIGN": sign, "Content-Type": "application/json"}
headers = {"KEY": self.api_key, "Timestamp": ts, "SIGN": sign, "Content-Type": "application/json"}
if self.channel_id:
headers["X-Gate-Channel-Id"] = self.channel_id[:19]
return headers
def _format_text(self, client_order_id: Optional[str]) -> str:
raw = str(client_order_id or "").strip()
if not raw:
return ""
normalized = []
for ch in raw:
if ch.isalnum() or ch in ("-", "_", "."):
normalized.append(ch)
text = "".join(normalized).strip()
if not text:
return ""
if not text.startswith("t-"):
text = f"t-{text}"
return text[:28]
def _signed_request(self, method: str, path: str, *, params: Optional[Dict[str, Any]] = None, json_body: Optional[Dict[str, Any]] = None) -> Any:
m = str(method or "GET").upper()
@@ -87,8 +106,9 @@ class GateSpotClient(_GateBase):
"price": str(px),
"time_in_force": "gtc",
}
if client_order_id:
body["text"] = str(client_order_id)
text = self._format_text(client_order_id)
if text:
body["text"] = text
raw = self._signed_request("POST", "/api/v4/spot/orders", json_body=body)
oid = str(raw.get("id") or "") if isinstance(raw, dict) else ""
return LiveOrderResult(exchange_id="gate", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw if isinstance(raw, dict) else {"raw": raw})
@@ -106,8 +126,9 @@ class GateSpotClient(_GateBase):
"type": "market",
"amount": str(qty),
}
if client_order_id:
body["text"] = str(client_order_id)
text = self._format_text(client_order_id)
if text:
body["text"] = text
raw = self._signed_request("POST", "/api/v4/spot/orders", json_body=body)
oid = str(raw.get("id") or "") if isinstance(raw, dict) else ""
return LiveOrderResult(exchange_id="gate", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw if isinstance(raw, dict) else {"raw": raw})
@@ -162,8 +183,8 @@ class GateSpotClient(_GateBase):
class GateUsdtFuturesClient(_GateBase):
def __init__(self, *, api_key: str, secret_key: str, base_url: str = "https://api.gateio.ws", timeout_sec: float = 15.0):
super().__init__(api_key=api_key, secret_key=secret_key, base_url=base_url, timeout_sec=timeout_sec)
def __init__(self, *, api_key: str, secret_key: str, base_url: str = "https://api.gateio.ws", timeout_sec: float = 15.0, channel_id: str = ""):
super().__init__(api_key=api_key, secret_key=secret_key, base_url=base_url, timeout_sec=timeout_sec, channel_id=channel_id)
# Best-effort cache for contract metadata to convert base qty -> contracts.
self._contract_cache: Dict[str, Tuple[float, Dict[str, Any]]] = {}
self._contract_cache_ttl_sec = 300.0
@@ -263,8 +284,9 @@ class GateUsdtFuturesClient(_GateBase):
body: Dict[str, Any] = {"contract": contract, "size": signed_size, "price": "0", "tif": "ioc"}
if reduce_only:
body["reduce_only"] = True
if client_order_id:
body["text"] = str(client_order_id)
text = self._format_text(client_order_id)
if text:
body["text"] = text
raw = self._signed_request("POST", "/api/v4/futures/usdt/orders", json_body=body)
oid = str(raw.get("id") or "") if isinstance(raw, dict) else ""
return LiveOrderResult(exchange_id="gate", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw if isinstance(raw, dict) else {"raw": raw})
@@ -293,8 +315,9 @@ class GateUsdtFuturesClient(_GateBase):
body: Dict[str, Any] = {"contract": contract, "size": signed_size, "price": str(px), "tif": "gtc"}
if reduce_only:
body["reduce_only"] = True
if client_order_id:
body["text"] = str(client_order_id)
text = self._format_text(client_order_id)
if text:
body["text"] = text
raw = self._signed_request("POST", "/api/v4/futures/usdt/orders", json_body=body)
oid = str(raw.get("id") or "") if isinstance(raw, dict) else ""
return LiveOrderResult(exchange_id="gate", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw if isinstance(raw, dict) else {"raw": raw})
@@ -0,0 +1,529 @@
"""
HTX (Huobi) direct REST client for spot and USDT-margined perpetual swap.
References:
- Spot base URL: https://api.huobi.pro
- USDT swap base URL: https://api.hbdm.com
- Spot auth: query params with HmacSHA256 signature
- Swap auth: query params with HmacSHA256 signature, request body in JSON
"""
from __future__ import annotations
import base64
import hashlib
import hmac
from decimal import Decimal, ROUND_DOWN
from typing import Any, Dict, Optional, Tuple
from urllib.parse import urlencode, urlparse
import datetime
import time
from app.services.live_trading.base import BaseRestClient, LiveOrderResult, LiveTradingError
from app.services.live_trading.symbols import to_htx_contract_code, to_htx_spot_symbol
class HtxClient(BaseRestClient):
def __init__(
self,
*,
api_key: str,
secret_key: str,
base_url: str = "https://api.huobi.pro",
futures_base_url: str = "https://api.hbdm.com",
timeout_sec: float = 15.0,
market_type: str = "swap",
broker_id: str = "",
):
chosen_base = futures_base_url if str(market_type or "").strip().lower() == "swap" else base_url
super().__init__(base_url=chosen_base, timeout_sec=timeout_sec)
self.spot_base_url = (base_url or "https://api.huobi.pro").rstrip("/")
self.futures_base_url = (futures_base_url or "https://api.hbdm.com").rstrip("/")
self.api_key = (api_key or "").strip()
self.secret_key = (secret_key or "").strip()
self.market_type = (market_type or "swap").strip().lower()
self.broker_id = (broker_id or "").strip()
if self.market_type not in ("spot", "swap"):
self.market_type = "swap"
if not self.api_key or not self.secret_key:
raise LiveTradingError("Missing HTX api_key/secret_key")
self._spot_account_id: Optional[str] = None
self._contract_cache: Dict[str, Tuple[float, Dict[str, Any]]] = {}
self._contract_cache_ttl_sec = 300.0
self._lever_cache: Dict[str, int] = {}
def _format_spot_client_order_id(self, client_order_id: Optional[str]) -> str:
prefix = str(self.broker_id or "").strip()
raw = str(client_order_id or "").strip()
if not prefix and not raw:
return ""
if not raw:
raw = str(int(time.time() * 1000))
allowed = []
for ch in raw:
if ch.isalnum() or ch in ("_", "-"):
allowed.append(ch)
suffix = "".join(allowed).strip("-_")
if not suffix:
suffix = str(int(time.time() * 1000))
if prefix:
if suffix.startswith(prefix):
combined = suffix
else:
combined = f"{prefix}-{suffix}"
else:
combined = suffix
return combined[:64]
@staticmethod
def _utc_ts() -> str:
return datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")
@staticmethod
def _to_dec(x: Any) -> Decimal:
try:
return Decimal(str(x))
except Exception:
return Decimal("0")
@staticmethod
def _floor_to_int(value: Decimal) -> int:
try:
return int(value.to_integral_value(rounding=ROUND_DOWN))
except Exception:
return 0
def _sign_params(self, *, method: str, base_url: str, path: str, params: Dict[str, Any]) -> Dict[str, Any]:
signed = dict(params or {})
signed["AccessKeyId"] = self.api_key
signed["SignatureMethod"] = "HmacSHA256"
signed["SignatureVersion"] = "2"
signed["Timestamp"] = self._utc_ts()
encoded = urlencode(sorted((str(k), str(v)) for k, v in signed.items()))
host = urlparse(base_url).netloc
payload = "\n".join([str(method or "GET").upper(), host, path, encoded])
digest = hmac.new(self.secret_key.encode("utf-8"), payload.encode("utf-8"), hashlib.sha256).digest()
signed["Signature"] = base64.b64encode(digest).decode("utf-8")
return signed
def _spot_public_request(self, method: str, path: str, *, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
old_base = self.base_url
self.base_url = self.spot_base_url
try:
code, data, text = self._request(method, path, params=params)
finally:
self.base_url = old_base
if code >= 400:
raise LiveTradingError(f"HTX spot HTTP {code}: {text[:500]}")
if isinstance(data, dict) and str(data.get("status") or "").lower() == "error":
raise LiveTradingError(f"HTX spot error: {data}")
return data if isinstance(data, dict) else {"raw": data}
def _spot_private_request(self, method: str, path: str, *, params: Optional[Dict[str, Any]] = None, json_body: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
signed_params = self._sign_params(method=method, base_url=self.spot_base_url, path=path, params=params or {})
old_base = self.base_url
self.base_url = self.spot_base_url
try:
code, data, text = self._request(method, path, params=signed_params, json_body=json_body)
finally:
self.base_url = old_base
if code >= 400:
raise LiveTradingError(f"HTX spot HTTP {code}: {text[:500]}")
if isinstance(data, dict) and str(data.get("status") or "").lower() == "error":
raise LiveTradingError(f"HTX spot error: {data}")
return data if isinstance(data, dict) else {"raw": data}
def _swap_private_request(self, method: str, path: str, *, params: Optional[Dict[str, Any]] = None, json_body: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
signed_params = self._sign_params(method=method, base_url=self.futures_base_url, path=path, params=params or {})
old_base = self.base_url
self.base_url = self.futures_base_url
try:
code, data, text = self._request(method, path, params=signed_params, json_body=json_body)
finally:
self.base_url = old_base
if code >= 400:
raise LiveTradingError(f"HTX swap HTTP {code}: {text[:500]}")
if isinstance(data, dict) and str(data.get("status") or "").lower() == "error":
raise LiveTradingError(f"HTX swap error: {data}")
return data if isinstance(data, dict) else {"raw": data}
def _swap_public_request(self, method: str, path: str, *, params: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
old_base = self.base_url
self.base_url = self.futures_base_url
try:
code, data, text = self._request(method, path, params=params)
finally:
self.base_url = old_base
if code >= 400:
raise LiveTradingError(f"HTX swap HTTP {code}: {text[:500]}")
if isinstance(data, dict) and str(data.get("status") or "").lower() == "error":
raise LiveTradingError(f"HTX swap error: {data}")
return data if isinstance(data, dict) else {"raw": data}
def ping(self) -> bool:
try:
if self.market_type == "spot":
self._spot_public_request("GET", "/v1/common/timestamp")
else:
self._swap_public_request("GET", "/linear-swap-api/v1/swap_contract_info")
return True
except Exception:
return False
def _get_spot_account_id(self) -> str:
if self._spot_account_id:
return self._spot_account_id
raw = self._spot_private_request("GET", "/v1/account/accounts")
data = raw.get("data") or []
if isinstance(data, list):
for item in data:
if not isinstance(item, dict):
continue
if str(item.get("type") or "").lower() == "spot" and str(item.get("state") or "").lower() in ("working", ""):
self._spot_account_id = str(item.get("id") or "")
if self._spot_account_id:
return self._spot_account_id
for item in data:
if isinstance(item, dict) and item.get("id"):
self._spot_account_id = str(item.get("id"))
return self._spot_account_id
raise LiveTradingError("HTX spot account id not found")
def get_accounts(self) -> Any:
if self.market_type == "spot":
return self._spot_private_request("GET", "/v1/account/accounts")
return self.get_balance()
def get_balance(self) -> Any:
if self.market_type == "spot":
account_id = self._get_spot_account_id()
return self._spot_private_request("GET", f"/v1/account/accounts/{account_id}/balance")
raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_account_info", json_body={"margin_account": "USDT"})
data = raw.get("data")
if data:
return raw
return self._swap_private_request("POST", "/linear-swap-api/v1/swap_account_info", json_body={})
def get_positions(self, *, symbol: str = "") -> Any:
if self.market_type == "spot":
balance = self.get_balance()
items = (((balance.get("data") or {}).get("list")) if isinstance(balance, dict) else None) or []
base_asset = ""
if symbol:
base_asset = str(symbol).split("/", 1)[0].split(":", 1)[0].strip().upper()
rows = []
for item in items:
if not isinstance(item, dict):
continue
ccy = str(item.get("currency") or "").upper()
if not ccy or (base_asset and ccy != base_asset):
continue
bal = self._to_dec(item.get("balance") or "0")
if bal <= 0:
continue
rows.append({
"symbol": f"{ccy}/USDT",
"bal": float(bal),
"availBal": float(self._to_dec(item.get("balance") or "0")),
"cost_open": 0,
"profit_unreal": 0,
})
return {"data": rows}
body = {"contract_code": to_htx_contract_code(symbol)} if symbol else {}
raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_cross_position_info", json_body=body)
data = raw.get("data")
if data:
return raw
return self._swap_private_request("POST", "/linear-swap-api/v1/swap_position_info", json_body=body)
def get_ticker(self, *, symbol: str) -> Dict[str, Any]:
if self.market_type == "spot":
raw = self._spot_public_request("GET", "/market/detail/merged", params={"symbol": to_htx_spot_symbol(symbol)})
else:
raw = self._swap_public_request("GET", "/linear-swap-ex/market/detail/merged", params={"contract_code": to_htx_contract_code(symbol)})
tick = raw.get("tick") if isinstance(raw, dict) else {}
return tick if isinstance(tick, dict) else {}
def get_contract_info(self, *, symbol: str) -> Dict[str, Any]:
key = to_htx_contract_code(symbol)
cached = self._contract_cache.get(key)
now = time.time()
if cached:
ts, obj = cached
if obj and (now - float(ts or 0)) <= float(self._contract_cache_ttl_sec or 300):
return obj
raw = self._swap_public_request("GET", "/linear-swap-api/v1/swap_contract_info", params={"contract_code": key})
data = raw.get("data") or []
obj = data[0] if isinstance(data, list) and data and isinstance(data[0], dict) else {}
if obj:
self._contract_cache[key] = (now, obj)
return obj
def _base_to_contracts(self, *, symbol: str, qty: float) -> int:
req = self._to_dec(qty)
if req <= 0:
return 0
info = self.get_contract_info(symbol=symbol) or {}
contract_size = self._to_dec(info.get("contract_size") or info.get("contractSize") or "1")
if contract_size <= 0:
contract_size = Decimal("1")
contracts = req / contract_size
val = self._floor_to_int(contracts)
return val if val > 0 else 1
def set_leverage(self, *, symbol: str, leverage: float) -> bool:
if self.market_type == "spot":
return False
contract_code = to_htx_contract_code(symbol)
try:
lv = int(float(leverage or 1))
except Exception:
lv = 1
if lv < 1:
lv = 1
try:
self._swap_private_request(
"POST",
"/linear-swap-api/v1/swap_cross_switch_lever_rate",
json_body={"contract_code": contract_code, "lever_rate": lv, "margin_account": "USDT"},
)
self._lever_cache[contract_code] = lv
return True
except Exception:
try:
self._swap_private_request(
"POST",
"/linear-swap-api/v1/swap_switch_lever_rate",
json_body={"contract_code": contract_code, "lever_rate": lv},
)
self._lever_cache[contract_code] = lv
return True
except Exception:
return False
def place_market_order(
self,
*,
symbol: str,
side: str,
qty: float,
reduce_only: bool = False,
pos_side: str = "",
client_order_id: Optional[str] = None,
) -> LiveOrderResult:
if self.market_type == "spot":
account_id = self._get_spot_account_id()
sd = str(side or "").strip().lower()
if sd not in ("buy", "sell"):
raise LiveTradingError(f"Invalid side: {side}")
amount = float(qty or 0)
if amount <= 0:
raise LiveTradingError("Invalid qty")
order_type = f"{sd}-market"
if sd == "buy":
tick = self.get_ticker(symbol=symbol)
last = float(tick.get("close") or tick.get("price") or tick.get("lastPrice") or 0)
if last <= 0:
raise LiveTradingError("HTX spot market buy requires latest price for qty->value conversion")
amount = amount * last
body = {
"account-id": account_id,
"symbol": to_htx_spot_symbol(symbol),
"type": order_type,
"amount": f"{amount:.12f}".rstrip("0").rstrip("."),
"source": "spot-api",
}
formatted_client_order_id = self._format_spot_client_order_id(client_order_id)
if formatted_client_order_id:
body["client-order-id"] = formatted_client_order_id
raw = self._spot_private_request("POST", "/v1/order/orders/place", json_body=body)
data = raw.get("data")
oid = str(data or "")
return LiveOrderResult(exchange_id="htx", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw)
contract_code = to_htx_contract_code(symbol)
volume = self._base_to_contracts(symbol=symbol, qty=qty)
if volume <= 0:
raise LiveTradingError("Invalid HTX swap volume")
sd = str(side or "").strip().lower()
if sd not in ("buy", "sell"):
raise LiveTradingError(f"Invalid side: {side}")
offset = "close" if reduce_only else "open"
lever_rate = int(self._lever_cache.get(contract_code) or 5)
body = {
"contract_code": contract_code,
"volume": volume,
"direction": sd,
"offset": offset,
"lever_rate": lever_rate,
"order_price_type": "opponent",
}
if self.broker_id:
body["channel_code"] = self.broker_id
if client_order_id:
body["client_order_id"] = str(client_order_id)[:64]
raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_order", json_body=body)
data = raw.get("data") or {}
oid = str(data.get("order_id_str") or data.get("order_id") or "")
return LiveOrderResult(exchange_id="htx", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw)
def place_limit_order(
self,
*,
symbol: str,
side: str,
size: float,
price: float,
reduce_only: bool = False,
pos_side: str = "",
client_order_id: Optional[str] = None,
) -> LiveOrderResult:
px = float(price or 0)
qty = float(size or 0)
if px <= 0 or qty <= 0:
raise LiveTradingError("Invalid size/price")
sd = str(side or "").strip().lower()
if sd not in ("buy", "sell"):
raise LiveTradingError(f"Invalid side: {side}")
if self.market_type == "spot":
account_id = self._get_spot_account_id()
body = {
"account-id": account_id,
"symbol": to_htx_spot_symbol(symbol),
"type": f"{sd}-limit",
"amount": f"{qty:.12f}".rstrip("0").rstrip("."),
"price": f"{px:.12f}".rstrip("0").rstrip("."),
"source": "spot-api",
}
formatted_client_order_id = self._format_spot_client_order_id(client_order_id)
if formatted_client_order_id:
body["client-order-id"] = formatted_client_order_id
raw = self._spot_private_request("POST", "/v1/order/orders/place", json_body=body)
data = raw.get("data")
oid = str(data or "")
return LiveOrderResult(exchange_id="htx", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw)
contract_code = to_htx_contract_code(symbol)
volume = self._base_to_contracts(symbol=symbol, qty=qty)
lever_rate = int(self._lever_cache.get(contract_code) or 5)
body = {
"contract_code": contract_code,
"volume": volume,
"direction": sd,
"offset": "close" if reduce_only else "open",
"lever_rate": lever_rate,
"price": px,
"order_price_type": "limit",
}
if self.broker_id:
body["channel_code"] = self.broker_id
if client_order_id:
body["client_order_id"] = str(client_order_id)[:64]
raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_order", json_body=body)
data = raw.get("data") or {}
oid = str(data.get("order_id_str") or data.get("order_id") or "")
return LiveOrderResult(exchange_id="htx", exchange_order_id=oid, filled=0.0, avg_price=0.0, raw=raw)
def cancel_order(self, *, symbol: str, order_id: str = "", client_order_id: str = "") -> Dict[str, Any]:
if self.market_type == "spot":
if order_id:
return self._spot_private_request("POST", f"/v1/order/orders/{str(order_id)}/submitcancel")
if client_order_id:
return self._spot_private_request("POST", "/v1/order/orders/submitCancelClientOrder", json_body={"client-order-id": str(client_order_id)})
raise LiveTradingError("HTX cancel_order requires order_id or client_order_id")
body: Dict[str, Any] = {"contract_code": to_htx_contract_code(symbol)}
if order_id:
body["order_id"] = str(order_id)
elif client_order_id:
body["client_order_id"] = str(client_order_id)
else:
raise LiveTradingError("HTX cancel_order requires order_id or client_order_id")
return self._swap_private_request("POST", "/linear-swap-api/v1/swap_cancel", json_body=body)
def get_order(self, *, symbol: str, order_id: str = "", client_order_id: str = "") -> Dict[str, Any]:
if self.market_type == "spot":
if order_id:
raw = self._spot_private_request("GET", f"/v1/order/orders/{str(order_id)}")
data = raw.get("data") if isinstance(raw, dict) else {}
return data if isinstance(data, dict) else {}
if client_order_id:
raw = self._spot_private_request("GET", "/v1/order/orders/getClientOrder", params={"clientOrderId": str(client_order_id)})
data = raw.get("data") if isinstance(raw, dict) else {}
return data if isinstance(data, dict) else {}
raise LiveTradingError("HTX get_order requires order_id or client_order_id")
body: Dict[str, Any] = {"contract_code": to_htx_contract_code(symbol)}
if order_id:
body["order_id"] = str(order_id)
elif client_order_id:
body["client_order_id"] = str(client_order_id)
else:
raise LiveTradingError("HTX get_order requires order_id or client_order_id")
raw = self._swap_private_request("POST", "/linear-swap-api/v1/swap_order_info", json_body=body)
data = raw.get("data") or []
if isinstance(data, list) and data and isinstance(data[0], dict):
return data[0]
return {}
def wait_for_fill(
self,
*,
symbol: str,
order_id: str = "",
client_order_id: str = "",
max_wait_sec: float = 3.0,
poll_interval_sec: float = 0.5,
) -> Dict[str, Any]:
end_ts = time.time() + float(max_wait_sec or 0.0)
last: Dict[str, Any] = {}
while True:
try:
last = self.get_order(symbol=symbol, order_id=str(order_id or ""), client_order_id=str(client_order_id or "")) or {}
except Exception:
last = last or {}
filled = 0.0
avg_price = 0.0
fee = 0.0
fee_ccy = "USDT"
status = str(last.get("status") or last.get("state") or "")
try:
filled = float(
last.get("field-amount") or
last.get("filled_amount") or
last.get("trade_volume") or
last.get("trade_volume_avg") or
0.0
)
except Exception:
filled = 0.0
try:
avg_price = float(
last.get("field-cash-amount") or 0.0
)
if filled > 0 and avg_price > 0:
avg_price = avg_price / filled
else:
avg_price = float(last.get("field-avg-price") or last.get("trade_avg_price") or last.get("price") or 0.0)
except Exception:
avg_price = 0.0
try:
fee = abs(float(last.get("fee") or last.get("trade_fee") or 0.0))
except Exception:
fee = 0.0
fee_ccy = str(last.get("fee_asset") or last.get("fee_currency") or fee_ccy or "").strip() or "USDT"
if filled > 0 and avg_price > 0:
return {"filled": filled, "avg_price": avg_price, "fee": fee, "fee_ccy": fee_ccy, "status": status, "order": last}
if str(status).lower() in ("filled", "partial-filled", "submitted", "canceled", "cancelled", "6", "7"):
return {"filled": filled, "avg_price": avg_price, "fee": fee, "fee_ccy": fee_ccy, "status": status, "order": last}
if time.time() >= end_ts:
return {"filled": filled, "avg_price": avg_price, "fee": fee, "fee_ccy": fee_ccy, "status": status, "order": last}
time.sleep(float(poll_interval_sec or 0.5))
@@ -86,6 +86,11 @@ class KucoinSpotClient(BaseRestClient):
def get_accounts(self) -> Any:
return self._signed_request("GET", "/api/v1/accounts")
def get_ticker(self, *, symbol: str) -> Dict[str, Any]:
raw = self._public_request("GET", "/api/v1/market/orderbook/level1", params={"symbol": to_kucoin_symbol(symbol)})
data = raw.get("data") if isinstance(raw, dict) else None
return data if isinstance(data, dict) else {}
def place_limit_order(self, *, symbol: str, side: str, size: float, price: float, client_order_id: Optional[str] = None) -> LiveOrderResult:
sd = (side or "").strip().lower()
if sd not in ("buy", "sell"):
@@ -236,3 +236,28 @@ def to_deepcoin_swap_symbol(symbol: str) -> str:
return base_symbol
return f"{base_symbol}-SWAP"
def to_htx_spot_symbol(symbol: str) -> str:
"""
HTX spot symbol format: lowercase concatenated, e.g. btcusdt.
"""
base, quote = _split_base_quote(symbol)
if not base or not quote:
return str(symbol or "").replace("/", "").replace(":", "").lower()
return f"{base}{quote}".lower()
def to_htx_contract_code(symbol: str) -> str:
"""
HTX USDT-margined swap contract code: BASE-QUOTE, e.g. BTC-USDT.
"""
s = str(symbol or "").strip()
if not s:
return s
if "-" in s and "/" not in s:
return s.upper()
base, quote = _split_base_quote(symbol)
if not base or not quote:
return s.replace("/", "-").replace(":", "-").upper()
return f"{base}-{quote}"
@@ -34,6 +34,8 @@ from app.services.live_trading.kucoin import KucoinFuturesClient
from app.services.live_trading.gate import GateSpotClient, GateUsdtFuturesClient
from app.services.live_trading.bitfinex import BitfinexClient
from app.services.live_trading.bitfinex import BitfinexDerivativesClient
from app.services.live_trading.deepcoin import DeepcoinClient
from app.services.live_trading.htx import HtxClient
from app.services.live_trading.symbols import to_okx_swap_inst_id
from app.services.live_trading.symbols import to_gate_currency_pair
from app.utils.db import get_db_connection
@@ -1478,6 +1480,31 @@ class PendingOrderWorker:
price=limit_price,
client_order_id=limit_client_oid,
)
elif isinstance(client, DeepcoinClient):
res1 = client.place_limit_order(
symbol=str(symbol),
side=side,
qty=remaining,
price=limit_price,
reduce_only=reduce_only,
pos_side=pos_side,
client_order_id=limit_client_oid,
)
elif isinstance(client, HtxClient):
if market_type == "swap":
try:
client.set_leverage(symbol=str(symbol), leverage=leverage)
except Exception:
pass
res1 = client.place_limit_order(
symbol=str(symbol),
side=side,
size=remaining,
price=limit_price,
reduce_only=reduce_only,
pos_side=pos_side,
client_order_id=limit_client_oid,
)
else:
raise LiveTradingError(f"Unsupported client type: {type(client)}")
@@ -1563,6 +1590,16 @@ class PendingOrderWorker:
phases["limit_query"] = q
_apply_fill(float(q.get("filled") or 0.0), float(q.get("avg_price") or 0.0))
_apply_fee(float(q.get("fee") or 0.0), str(q.get("fee_ccy") or ""))
elif isinstance(client, DeepcoinClient):
q = client.wait_for_fill(symbol=str(symbol), order_id=limit_order_id, client_order_id=limit_client_oid, max_wait_sec=maker_wait_sec)
phases["limit_query"] = q
_apply_fill(float(q.get("filled") or 0.0), float(q.get("avg_price") or 0.0))
_apply_fee(float(q.get("fee") or 0.0), str(q.get("fee_ccy") or ""))
elif isinstance(client, HtxClient):
q = client.wait_for_fill(symbol=str(symbol), order_id=limit_order_id, client_order_id=limit_client_oid, max_wait_sec=maker_wait_sec)
phases["limit_query"] = q
_apply_fill(float(q.get("filled") or 0.0), float(q.get("avg_price") or 0.0))
_apply_fee(float(q.get("fee") or 0.0), str(q.get("fee_ccy") or ""))
remaining = max(0.0, float(amount or 0.0) - total_base)
@@ -1625,6 +1662,10 @@ class PendingOrderWorker:
phases["limit_cancel"] = client.cancel_order(order_id=limit_order_id, client_order_id=limit_client_oid)
elif isinstance(client, BitfinexDerivativesClient):
phases["limit_cancel"] = client.cancel_order(order_id=limit_order_id, client_order_id=limit_client_oid)
elif isinstance(client, DeepcoinClient):
phases["limit_cancel"] = client.cancel_order(symbol=str(symbol), order_id=limit_order_id, client_order_id=limit_client_oid)
elif isinstance(client, HtxClient):
phases["limit_cancel"] = client.cancel_order(symbol=str(symbol), order_id=limit_order_id, client_order_id=limit_client_oid)
except Exception:
pass
except LiveTradingError as e:
@@ -1776,10 +1817,13 @@ class PendingOrderWorker:
client_order_id=market_client_oid,
)
elif isinstance(client, GateSpotClient):
mkt_size = remaining
if side == "buy" and ref_price > 0:
mkt_size = remaining * ref_price
res2 = client.place_market_order(
symbol=str(symbol),
side=side,
size=remaining,
size=mkt_size,
client_order_id=market_client_oid,
)
elif isinstance(client, GateUsdtFuturesClient):
@@ -1803,6 +1847,34 @@ class PendingOrderWorker:
)
elif isinstance(client, BitfinexDerivativesClient):
res2 = client.place_market_order(symbol=str(symbol), side=side, size=remaining, client_order_id=market_client_oid)
elif isinstance(client, DeepcoinClient):
if market_type == "swap":
try:
client.set_leverage(symbol=str(symbol), leverage=leverage)
except Exception:
pass
res2 = client.place_market_order(
symbol=str(symbol),
side=side,
qty=remaining,
reduce_only=reduce_only,
pos_side=pos_side,
client_order_id=market_client_oid,
)
elif isinstance(client, HtxClient):
if market_type == "swap":
try:
client.set_leverage(symbol=str(symbol), leverage=leverage)
except Exception:
pass
res2 = client.place_market_order(
symbol=str(symbol),
side=side,
qty=remaining,
reduce_only=reduce_only,
pos_side=pos_side,
client_order_id=market_client_oid,
)
else:
raise LiveTradingError(f"Unsupported client type: {type(client)}")
@@ -1889,6 +1961,16 @@ class PendingOrderWorker:
phases["market_query"] = q2
_apply_fill(float(q2.get("filled") or 0.0), float(q2.get("avg_price") or 0.0))
_apply_fee(float(q2.get("fee") or 0.0), str(q2.get("fee_ccy") or ""))
elif isinstance(client, DeepcoinClient):
q2 = client.wait_for_fill(symbol=str(symbol), order_id=market_order_id, client_order_id=market_client_oid, max_wait_sec=3.0)
phases["market_query"] = q2
_apply_fill(float(q2.get("filled") or 0.0), float(q2.get("avg_price") or 0.0))
_apply_fee(float(q2.get("fee") or 0.0), str(q2.get("fee_ccy") or ""))
elif isinstance(client, HtxClient):
q2 = client.wait_for_fill(symbol=str(symbol), order_id=market_order_id, client_order_id=market_client_oid, max_wait_sec=3.0)
phases["market_query"] = q2
_apply_fill(float(q2.get("filled") or 0.0), float(q2.get("avg_price") or 0.0))
_apply_fee(float(q2.get("fee") or 0.0), str(q2.get("fee_ccy") or ""))
except LiveTradingError as e:
logger.warning(f"live market phase failed: pending_id={order_id}, strategy_id={strategy_id}, cfg={safe_cfg}, err={e}")
phases["market_error"] = str(e)
+146 -102
View File
@@ -257,7 +257,7 @@ class StrategyService:
logger.error(f"Failed to fetch symbols: {str(e)}")
return {'success': False, 'message': f'Failed to get trading pairs: {str(e)}', 'symbols': []}
def test_exchange_connection(self, exchange_config: Dict[str, Any]) -> Dict[str, Any]:
def test_exchange_connection(self, exchange_config: Dict[str, Any], user_id: int = 1) -> Dict[str, Any]:
"""
Test exchange connection via direct REST clients (no ccxt).
@@ -284,8 +284,9 @@ class StrategyService:
from app.services.live_trading.gate import GateSpotClient, GateUsdtFuturesClient
from app.services.live_trading.bitfinex import BitfinexClient, BitfinexDerivativesClient
from app.services.live_trading.deepcoin import DeepcoinClient
from app.services.live_trading.htx import HtxClient
resolved = resolve_exchange_config(exchange_config or {})
resolved = resolve_exchange_config(exchange_config or {}, user_id=user_id)
safe_cfg = safe_exchange_config_for_log(resolved)
exchange_id = (resolved.get("exchange_id") or "").strip().lower()
@@ -370,13 +371,6 @@ class StrategyService:
'data': {'exchange': safe_cfg}
}
# IMPORTANT:
# Test connection should respect configured market_type (spot vs swap).
# Otherwise Binance will default to futures endpoints (fapi) and spot-only keys will fail with -2015.
market_type = str(resolved.get("market_type") or resolved.get("defaultType") or "swap").strip().lower()
client = create_client(resolved, market_type=market_type)
client_kind = type(client).__name__
# Best-effort detect current egress IP (for Binance IP whitelist debugging).
egress_ip = ""
try:
@@ -385,113 +379,163 @@ class StrategyService:
except Exception:
egress_ip = ""
# 1) Public connectivity
ok_public = False
try:
ok_public = bool(getattr(client, "ping")())
except Exception:
ok_public = False
if not ok_public:
return {
'success': False,
'message': f'Public ping failed: {exchange_id}',
'data': {'exchange': safe_cfg, 'client': client_kind, 'market_type': market_type, 'egress_ip': egress_ip},
}
# 2) Private credential validation (best-effort)
priv_data = None
try:
def _validate_private(client, market_type: str):
if isinstance(client, BinanceFuturesClient):
priv_data = client.get_account()
elif isinstance(client, BinanceSpotClient):
priv_data = client.get_account()
elif isinstance(client, OkxClient):
priv_data = client.get_balance()
elif isinstance(client, BitgetMixClient):
return client.get_account()
if isinstance(client, BinanceSpotClient):
return client.get_account()
if isinstance(client, OkxClient):
return client.get_balance()
if isinstance(client, BitgetMixClient):
product_type = str(resolved.get("product_type") or resolved.get("productType") or "USDT-FUTURES")
priv_data = client.get_accounts(product_type=product_type)
elif isinstance(client, BitgetSpotClient):
priv_data = client.get_assets()
elif isinstance(client, BybitClient):
priv_data = client.get_wallet_balance()
elif isinstance(client, CoinbaseExchangeClient):
priv_data = client.get_accounts()
elif isinstance(client, KrakenClient):
priv_data = client.get_balance()
elif isinstance(client, KrakenFuturesClient):
priv_data = client.get_accounts()
elif isinstance(client, KucoinSpotClient):
priv_data = client.get_accounts()
elif isinstance(client, KucoinFuturesClient):
priv_data = client.get_accounts()
elif isinstance(client, GateSpotClient):
priv_data = client.get_accounts()
elif isinstance(client, GateUsdtFuturesClient):
priv_data = client.get_accounts()
elif isinstance(client, BitfinexClient):
priv_data = client.get_wallets()
elif isinstance(client, BitfinexDerivativesClient):
priv_data = client.get_wallets()
elif isinstance(client, DeepcoinClient):
priv_data = client.get_balance()
except Exception as e:
msg = str(e)
# Add actionable hints for the most common Binance auth error.
if exchange_id == "binance" and ("-2015" in msg or "Invalid API-key, IP, or permissions" in msg):
# Auto A/B test: try the other market_type once to pinpoint permission mismatch.
alt_market_type = "spot" if market_type != "spot" else "swap"
alt_client_kind = ""
alt_base_url = ""
alt_ok = False
try:
alt_client = create_client(resolved, market_type=alt_market_type)
alt_client_kind = type(alt_client).__name__
alt_base_url = getattr(alt_client, "base_url", "") or ""
if isinstance(alt_client, BinanceFuturesClient) or isinstance(alt_client, BinanceSpotClient):
_ = alt_client.get_account()
alt_ok = True
except Exception:
alt_ok = False
return client.get_accounts(product_type=product_type)
if isinstance(client, BitgetSpotClient):
return client.get_assets()
if isinstance(client, BybitClient):
return client.get_wallet_balance()
if isinstance(client, CoinbaseExchangeClient):
return client.get_accounts()
if isinstance(client, KrakenClient):
return client.get_balance()
if isinstance(client, KrakenFuturesClient):
return client.get_accounts()
if isinstance(client, KucoinSpotClient):
return client.get_accounts()
if isinstance(client, KucoinFuturesClient):
return client.get_accounts()
if isinstance(client, GateSpotClient):
return client.get_accounts()
if isinstance(client, GateUsdtFuturesClient):
return client.get_accounts()
if isinstance(client, BitfinexClient):
return client.get_wallets()
if isinstance(client, BitfinexDerivativesClient):
return client.get_wallets()
if isinstance(client, DeepcoinClient):
return client.get_balance()
if isinstance(client, HtxClient):
return client.get_balance()
return None
base_url = getattr(client, "base_url", "") or ""
hint = (
f"Binance auth failed (-2015). Verify: "
f"(1) IP whitelist includes this server egress IP={egress_ip or 'unknown'}, "
f"(2) API key permissions match market_type={market_type} "
f"(spot requires Spot permissions; swap requires Futures permissions), "
f"(3) you're using binance.com keys for base_url={base_url or 'unknown'}."
)
if alt_ok:
hint += (
f" Auto-check: your key works for market_type={alt_market_type} "
f"(client={alt_client_kind}, base_url={alt_base_url or 'unknown'}) "
f"but fails for market_type={market_type}. This is almost always a permissions/product mismatch."
def _probe_market_type(market_type: str):
try:
client = create_client(resolved, market_type=market_type)
except Exception as e:
return {
'success': False,
'message': f'Create client failed: {str(e)}',
'data': {
'exchange': safe_cfg,
'market_type': market_type,
'egress_ip': egress_ip,
},
}
client_kind = type(client).__name__
ok_public = False
try:
ok_public = bool(getattr(client, "ping")())
except Exception:
ok_public = False
if not ok_public:
return {
'success': False,
'message': f'Public ping failed: {exchange_id}',
'data': {
'exchange': safe_cfg,
'client': client_kind,
'market_type': market_type,
'egress_ip': egress_ip,
'base_url': getattr(client, "base_url", "") or "",
},
}
try:
priv_data = _validate_private(client, market_type)
except Exception as e:
msg = str(e)
if exchange_id == "binance" and ("-2015" in msg or "Invalid API-key, IP, or permissions" in msg):
alt_market_type = "spot" if market_type != "spot" else "swap"
alt_client_kind = ""
alt_base_url = ""
alt_ok = False
try:
alt_client = create_client(resolved, market_type=alt_market_type)
alt_client_kind = type(alt_client).__name__
alt_base_url = getattr(alt_client, "base_url", "") or ""
if isinstance(alt_client, (BinanceFuturesClient, BinanceSpotClient)):
_ = alt_client.get_account()
alt_ok = True
except Exception:
alt_ok = False
base_url = getattr(client, "base_url", "") or ""
is_demo = str(resolved.get("enable_demo_trading") or resolved.get("enableDemoTrading") or "").strip().lower() in ("true", "1", "yes")
hint = (
f"Binance auth failed (-2015). Verify: "
f"(1) IP whitelist includes this server egress IP={egress_ip or 'unknown'}, "
f"(2) API key permissions match market_type={market_type} "
f"(spot requires Spot permissions; swap requires Futures permissions), "
f"(3) you're using the correct key set for base_url={base_url or 'unknown'}."
)
msg = f"{msg} | {hint}"
if is_demo:
hint += " Demo mode is enabled, so you must use Binance demo/testnet API keys instead of mainnet keys."
else:
hint += " Mainnet mode is enabled, so you must use binance.com mainnet keys."
if alt_ok:
hint += (
f" Auto-check: your key works for market_type={alt_market_type} "
f"(client={alt_client_kind}, base_url={alt_base_url or 'unknown'}) "
f"but fails for market_type={market_type}. This is almost always a permissions/product mismatch."
)
msg = f"{msg} | {hint}"
return {
'success': False,
'message': f'Auth failed: {msg}',
'data': {
'exchange': safe_cfg,
'client': client_kind,
'market_type': market_type,
'egress_ip': egress_ip,
'base_url': getattr(client, "base_url", "") or "",
},
}
return {
'success': False,
'message': f'Auth failed: {msg}',
'success': True,
'message': 'Connection OK',
'data': {
'exchange': safe_cfg,
'client': client_kind,
'market_type': market_type,
'egress_ip': egress_ip,
'base_url': getattr(client, "base_url", "") or "",
'private': priv_data,
},
}
return {
'success': True,
'message': 'Connection OK',
'data': {
'exchange': safe_cfg,
'client': client_kind,
'market_type': market_type,
'egress_ip': egress_ip,
'base_url': getattr(client, "base_url", "") or "",
'private': priv_data,
},
}
raw_market_type = str(resolved.get("market_type") or resolved.get("defaultType") or "").strip().lower()
if raw_market_type in ("futures", "future", "perp", "perpetual"):
raw_market_type = "swap"
explicit_market_type = raw_market_type in ("spot", "swap")
if exchange_id in ("coinbaseexchange", "coinbase_exchange"):
market_candidates = ["spot"]
else:
market_candidates = [raw_market_type] if explicit_market_type else ["spot", "swap"]
last_failure = None
for market_type in market_candidates:
result = _probe_market_type(market_type)
if result.get('success'):
if not explicit_market_type and len(market_candidates) > 1:
result['message'] = f"Connection OK ({market_type})"
return result
last_failure = result
if last_failure and not explicit_market_type and len(market_candidates) > 1:
tried = "/".join(market_candidates)
last_failure['message'] = f"{last_failure.get('message')}. Tried market_type={tried}"
return last_failure or {'success': False, 'message': 'Connection failed', 'data': None}
except Exception as e:
logger.error(f"test_exchange_connection failed: {str(e)}")
return {'success': False, 'message': f'Connection failed: {str(e)}', 'data': None}
@@ -0,0 +1,204 @@
import json
from typing import Any, Dict, Optional
from app.utils.db import get_db_connection
class StrategySnapshotResolver:
"""Resolve stored strategy rows into backtest-ready snapshots."""
def __init__(self, user_id: int = 1):
self.user_id = int(user_id or 1)
def _safe_dict(self, value: Any) -> Dict[str, Any]:
if isinstance(value, dict):
return dict(value)
if isinstance(value, str) and value.strip():
try:
parsed = json.loads(value)
if isinstance(parsed, dict):
return parsed
except Exception:
pass
return {}
def _to_bool(self, value: Any) -> bool:
if isinstance(value, bool):
return value
if isinstance(value, str):
return value.strip().lower() in ("1", "true", "yes", "on")
return bool(value)
def _to_float(self, value: Any, default: float = 0.0) -> float:
try:
return float(value)
except Exception:
return float(default or 0.0)
def _to_int(self, value: Any, default: int = 0) -> int:
try:
return int(value)
except Exception:
return int(default or 0)
def _percent_to_ratio(self, value: Any, default: float = 0.0) -> float:
raw = self._to_float(value, default)
if raw <= 0:
return 0.0
if raw > 100:
raw = 100.0
return raw / 100.0
def _build_strategy_config(self, trading_config: Dict[str, Any]) -> Dict[str, Any]:
tc = trading_config or {}
signal_mode = str(tc.get("signal_mode") or "confirmed").strip().lower()
signal_timing = "next_bar_open"
if signal_mode in ("current_bar_close", "close", "same_bar_close"):
signal_timing = "same_bar_close"
return {
"risk": {
"stopLossPct": self._percent_to_ratio(tc.get("stop_loss_pct")),
"takeProfitPct": self._percent_to_ratio(tc.get("take_profit_pct")),
"trailing": {
"enabled": self._to_bool(tc.get("trailing_enabled") or tc.get("trailing_stop")),
"pct": self._percent_to_ratio(tc.get("trailing_stop_pct")),
"activationPct": self._percent_to_ratio(tc.get("trailing_activation_pct")),
},
},
"position": {
"entryPct": self._percent_to_ratio(tc.get("entry_pct") if tc.get("entry_pct") is not None else 100),
},
"scale": {
"trendAdd": {
"enabled": self._to_bool(tc.get("trend_add_enabled")),
"stepPct": self._percent_to_ratio(tc.get("trend_add_step_pct")),
"sizePct": self._percent_to_ratio(tc.get("trend_add_size_pct")),
"maxTimes": self._to_int(tc.get("trend_add_max_times")),
},
"dcaAdd": {
"enabled": self._to_bool(tc.get("dca_add_enabled")),
"stepPct": self._percent_to_ratio(tc.get("dca_add_step_pct")),
"sizePct": self._percent_to_ratio(tc.get("dca_add_size_pct")),
"maxTimes": self._to_int(tc.get("dca_add_max_times")),
},
"trendReduce": {
"enabled": self._to_bool(tc.get("trend_reduce_enabled")),
"stepPct": self._percent_to_ratio(tc.get("trend_reduce_step_pct")),
"sizePct": self._percent_to_ratio(tc.get("trend_reduce_size_pct")),
"maxTimes": self._to_int(tc.get("trend_reduce_max_times")),
},
"adverseReduce": {
"enabled": self._to_bool(tc.get("adverse_reduce_enabled")),
"stepPct": self._percent_to_ratio(tc.get("adverse_reduce_step_pct")),
"sizePct": self._percent_to_ratio(tc.get("adverse_reduce_size_pct")),
"maxTimes": self._to_int(tc.get("adverse_reduce_max_times")),
},
},
"execution": {
"signalTiming": signal_timing,
},
}
def _fetch_indicator_code(self, indicator_id: Optional[int]) -> str:
if not indicator_id:
return ""
try:
with get_db_connection() as db:
cur = db.cursor()
cur.execute("SELECT code FROM qd_indicator_codes WHERE id = ?", (int(indicator_id),))
row = cur.fetchone()
cur.close()
return (row or {}).get("code") or ""
except Exception:
return ""
def resolve(self, strategy: Dict[str, Any], override_config: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
if not strategy:
raise ValueError("strategy not found")
override = override_config or {}
indicator_config = self._safe_dict(strategy.get("indicator_config"))
trading_config = self._safe_dict(strategy.get("trading_config"))
cs_type = str(trading_config.get("cs_strategy_type") or trading_config.get("strategy_type") or "single").strip().lower()
if cs_type == "cross_sectional":
raise ValueError("Cross-sectional strategies are not supported in strategy backtest yet")
symbol = str(override.get("symbol") or trading_config.get("symbol") or strategy.get("symbol") or "").strip()
market = str(override.get("market") or strategy.get("market_category") or trading_config.get("market_category") or "Crypto").strip() or "Crypto"
if ":" in symbol and "market" not in override:
maybe_market, maybe_symbol = symbol.split(":", 1)
market = maybe_market or market
symbol = maybe_symbol or symbol
timeframe = str(override.get("timeframe") or trading_config.get("timeframe") or strategy.get("timeframe") or "1D").strip() or "1D"
initial_capital = self._to_float(override.get("initialCapital", trading_config.get("initial_capital", strategy.get("initial_capital", 10000))), 10000.0)
leverage = self._to_int(override.get("leverage", trading_config.get("leverage", strategy.get("leverage", 1))), 1)
commission = self._percent_to_ratio(override.get("commission", trading_config.get("commission", 0)))
slippage = self._percent_to_ratio(override.get("slippage", trading_config.get("slippage", 0)))
trade_direction = str(trading_config.get("trade_direction") or "long").strip().lower() or "long"
enable_mtf = self._to_bool(override.get("enableMtf", market.lower() == "crypto"))
strategy_type = str(strategy.get("strategy_type") or "IndicatorStrategy").strip() or "IndicatorStrategy"
strategy_mode = str(strategy.get("strategy_mode") or "signal").strip() or "signal"
is_script = strategy_type == "ScriptStrategy" or strategy_mode == "script"
indicator_id = indicator_config.get("indicator_id") or strategy.get("indicator_id")
indicator_name = indicator_config.get("indicator_name") or ""
code = (strategy.get("strategy_code") or "").strip() if is_script else (indicator_config.get("indicator_code") or "").strip()
if not code and indicator_id and not is_script:
code = self._fetch_indicator_code(indicator_id)
if not symbol:
raise ValueError("Strategy symbol is required for backtest")
if not code:
raise ValueError("Strategy code is empty and cannot be backtested")
strategy_config = self._build_strategy_config(trading_config)
snapshot = {
"strategy_id": strategy.get("id"),
"strategy_name": strategy.get("strategy_name") or f"Strategy #{strategy.get('id')}",
"strategy_type": strategy_type,
"strategy_mode": strategy_mode,
"run_type": "strategy_script" if is_script else "strategy_indicator",
"market": market,
"symbol": symbol,
"timeframe": timeframe,
"initial_capital": initial_capital,
"commission": commission,
"slippage": slippage,
"leverage": leverage,
"trade_direction": trade_direction,
"enable_mtf": enable_mtf,
"indicator_id": int(indicator_id) if str(indicator_id or "").isdigit() else None,
"indicator_name": indicator_name,
"indicator_params": trading_config.get("indicator_params") or {},
"code": code,
"strategy_config": strategy_config,
"config_snapshot": {
"strategyMeta": {
"strategyId": strategy.get("id"),
"strategyName": strategy.get("strategy_name"),
"strategyType": strategy_type,
"strategyMode": strategy_mode,
"runType": "strategy_script" if is_script else "strategy_indicator",
},
"marketConfig": {
"market": market,
"symbol": symbol,
"timeframe": timeframe,
},
"signalConfig": {
"indicatorId": int(indicator_id) if str(indicator_id or "").isdigit() else None,
"indicatorName": indicator_name,
"indicatorParams": trading_config.get("indicator_params") or {},
"scriptSource": "strategy_code" if is_script else "indicator_code",
},
"riskConfig": strategy_config.get("risk") or {},
"positionConfig": strategy_config.get("position") or {},
"scaleConfig": strategy_config.get("scale") or {},
"executionConfig": strategy_config.get("execution") or {},
},
}
return snapshot
@@ -2039,7 +2039,13 @@ class TradingExecutor:
return False
# 2. 计算下单数量
available_capital = self._get_available_capital(strategy_id, initial_capital)
available_capital = self._get_available_capital(
strategy_id,
initial_capital,
current_positions=current_positions,
current_price=current_price,
symbol=symbol,
)
amount = 0.0
@@ -2655,12 +2661,83 @@ class TradingExecutor:
def _place_stop_loss_order(self, *args, **kwargs):
pass
def _get_available_capital(self, strategy_id: int, initial_capital: float) -> float:
"""获取可用资金"""
return initial_capital
def _get_available_capital(
self,
strategy_id: int,
initial_capital: float,
current_positions: Optional[List[Dict[str, Any]]] = None,
current_price: Optional[float] = None,
symbol: str = "",
) -> float:
"""获取当前策略可用于仓位计算的净值口径资金。"""
return self._calculate_current_equity(
strategy_id,
initial_capital,
current_positions=current_positions,
current_price=current_price,
symbol=symbol,
)
def _calculate_current_equity(self, strategy_id: int, initial_capital: float) -> float:
return initial_capital
def _calculate_current_equity(
self,
strategy_id: int,
initial_capital: float,
current_positions: Optional[List[Dict[str, Any]]] = None,
current_price: Optional[float] = None,
symbol: str = "",
) -> float:
realized_pnl = 0.0
unrealized_pnl = 0.0
try:
with get_db_connection() as db:
cursor = db.cursor()
cursor.execute(
"""
SELECT COALESCE(SUM(COALESCE(profit, 0) - COALESCE(commission, 0)), 0) AS realized_pnl
FROM qd_strategy_trades
WHERE strategy_id = %s
""",
(strategy_id,)
)
row = cursor.fetchone() or {}
realized_pnl = float(row.get('realized_pnl') or 0.0)
cursor.close()
except Exception as e:
logger.warning(f"Failed to calculate realized pnl for strategy {strategy_id}: {e}")
positions = list(current_positions or [])
if not positions:
try:
positions = self._get_all_positions(strategy_id) or []
except Exception:
positions = []
normalized_symbol = (symbol or "").split(':')[0]
for pos in positions:
try:
side = str(pos.get('side') or '').strip().lower()
size = float(pos.get('size') or 0.0)
entry_price = float(pos.get('entry_price') or 0.0)
if size <= 0 or entry_price <= 0 or side not in ('long', 'short'):
continue
mark_price = pos.get('current_price')
pos_symbol = str(pos.get('symbol') or '')
if current_price and normalized_symbol and pos_symbol.split(':')[0] == normalized_symbol:
mark_price = current_price
mark_price = float(mark_price or 0.0)
if mark_price <= 0:
continue
if side == 'long':
unrealized_pnl += (mark_price - entry_price) * size
else:
unrealized_pnl += (entry_price - mark_price) * size
except Exception:
continue
equity = float(initial_capital or 0.0) + realized_pnl + unrealized_pnl
return max(0.0, equity)
def _record_trade(self, strategy_id: int, symbol: str, type: str, price: float, amount: float, value: float, profit: float = None, commission: float = None):
"""记录交易到数据库"""
+39
View File
@@ -432,6 +432,9 @@ CREATE TABLE IF NOT EXISTS qd_backtest_runs (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE,
indicator_id INTEGER,
strategy_id INTEGER,
strategy_name VARCHAR(255) DEFAULT '',
run_type VARCHAR(50) DEFAULT 'indicator',
market VARCHAR(50) NOT NULL DEFAULT '',
symbol VARCHAR(50) NOT NULL DEFAULT '',
timeframe VARCHAR(10) NOT NULL DEFAULT '',
@@ -443,6 +446,9 @@ CREATE TABLE IF NOT EXISTS qd_backtest_runs (
leverage INTEGER DEFAULT 1,
trade_direction VARCHAR(20) DEFAULT 'long',
strategy_config TEXT DEFAULT '',
config_snapshot TEXT DEFAULT '',
engine_version VARCHAR(50) DEFAULT '',
code_hash VARCHAR(128) DEFAULT '',
status VARCHAR(20) DEFAULT 'success',
error_message TEXT DEFAULT '',
result_json TEXT DEFAULT '',
@@ -451,6 +457,39 @@ CREATE TABLE IF NOT EXISTS qd_backtest_runs (
CREATE INDEX IF NOT EXISTS idx_backtest_runs_user_id ON qd_backtest_runs(user_id);
CREATE INDEX IF NOT EXISTS idx_backtest_runs_indicator_id ON qd_backtest_runs(indicator_id);
CREATE INDEX IF NOT EXISTS idx_backtest_runs_strategy_id ON qd_backtest_runs(strategy_id);
CREATE INDEX IF NOT EXISTS idx_backtest_runs_run_type ON qd_backtest_runs(run_type);
CREATE TABLE IF NOT EXISTS qd_backtest_trades (
id SERIAL PRIMARY KEY,
run_id INTEGER NOT NULL,
user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE,
strategy_id INTEGER,
trade_index INTEGER DEFAULT 0,
trade_time VARCHAR(64) DEFAULT '',
trade_type VARCHAR(64) DEFAULT '',
side VARCHAR(32) DEFAULT '',
price DOUBLE PRECISION DEFAULT 0,
amount DOUBLE PRECISION DEFAULT 0,
profit DOUBLE PRECISION DEFAULT 0,
balance DOUBLE PRECISION DEFAULT 0,
reason VARCHAR(64) DEFAULT '',
payload_json TEXT DEFAULT '',
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_backtest_trades_run_id ON qd_backtest_trades(run_id);
CREATE TABLE IF NOT EXISTS qd_backtest_equity_points (
id SERIAL PRIMARY KEY,
run_id INTEGER NOT NULL,
point_index INTEGER DEFAULT 0,
point_time VARCHAR(64) DEFAULT '',
point_value DOUBLE PRECISION DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_backtest_equity_points_run_id ON qd_backtest_equity_points(run_id);
-- =============================================================================
-- 13. Exchange Credentials
+89
View File
@@ -4,6 +4,95 @@ This document records version updates, new features, bug fixes, and database mig
---
## V3.0.1 (2026-04-05) — Frontend / docs
- **前端版本**`QuantDinger-Vue-src/package.json`、页脚展示与 `frontend/VERSION` 统一为 **3.0.1**
- **文档**:根目录 `README.md``docs/README_CN.md` 补充 QuantDinger 专属交易所邀请注册链接表(与个人中心「开户」一致),版本徽章更新为 3.0.1。
- **回测中心**:暗黑主题下图标与「添加标的」等弹窗样式对齐(`a-icon`、图表标题区、Modal 挂载层)。
---
## V2.2.4 (2026-04-05)
### 🚀 New Features
- **真实策略回测主链路**: 新增基于 `strategyId` 的策略回测入口,支持已保存的 `IndicatorStrategy``ScriptStrategy`,不再只是“取指标再跑一次指标回测”。
- **策略快照解析层**: 后端新增统一策略快照解析逻辑,把 `indicator_config``trading_config``strategy_code` 解析为可回测的标准输入。
- **策略回测历史与详情**: 回测记录现在可区分 `indicator` / `strategy_indicator` / `strategy_script`,并支持策略回测历史、详情查看和 AI 修正建议链路。
- **交易助手联动回测中心**: 交易助手中的策略项新增回测跳转入口,可直接带 `strategy_id` 进入回测中心。
### 🐛 Bug Fixes
- Fixed the previous “策略回测” pseudo-flow that only reused `/api/indicator/backtest` and could not faithfully replay stored strategies.
- Fixed strategy backtest history semantics so records can be linked to concrete strategies instead of only relying on `indicator_id`.
- Fixed strategy backtest UI entry restoration in Backtest Center and wired the strategy selector/history drawer to real backend endpoints.
### 🎨 UI/UX Improvements
- Restored the `回测中心 -> 策略回测` tab with strategy summary cards and environment override controls.
- Unified strategy backtest history display with the existing run viewer and AI suggestion modal.
### 📋 Database Migration
**在已有 PostgreSQL 库上执行(新库若已通过更新后的 `migrations/init.sql` 初始化则无需再执行):**
```sql
-- ============================================================
-- QuantDinger V2.2.4 Database Migration
-- Strategy Backtest Persistence Upgrade
-- ============================================================
ALTER TABLE qd_backtest_runs ADD COLUMN IF NOT EXISTS strategy_id INTEGER;
ALTER TABLE qd_backtest_runs ADD COLUMN IF NOT EXISTS strategy_name VARCHAR(255) DEFAULT '';
ALTER TABLE qd_backtest_runs ADD COLUMN IF NOT EXISTS run_type VARCHAR(50) DEFAULT 'indicator';
ALTER TABLE qd_backtest_runs ADD COLUMN IF NOT EXISTS config_snapshot TEXT DEFAULT '';
ALTER TABLE qd_backtest_runs ADD COLUMN IF NOT EXISTS engine_version VARCHAR(50) DEFAULT '';
ALTER TABLE qd_backtest_runs ADD COLUMN IF NOT EXISTS code_hash VARCHAR(128) DEFAULT '';
CREATE INDEX IF NOT EXISTS idx_backtest_runs_strategy_id ON qd_backtest_runs(strategy_id);
CREATE INDEX IF NOT EXISTS idx_backtest_runs_run_type ON qd_backtest_runs(run_type);
CREATE TABLE IF NOT EXISTS qd_backtest_trades (
id SERIAL PRIMARY KEY,
run_id INTEGER NOT NULL,
user_id INTEGER NOT NULL DEFAULT 1 REFERENCES qd_users(id) ON DELETE CASCADE,
strategy_id INTEGER,
trade_index INTEGER DEFAULT 0,
trade_time VARCHAR(64) DEFAULT '',
trade_type VARCHAR(64) DEFAULT '',
side VARCHAR(32) DEFAULT '',
price DOUBLE PRECISION DEFAULT 0,
amount DOUBLE PRECISION DEFAULT 0,
profit DOUBLE PRECISION DEFAULT 0,
balance DOUBLE PRECISION DEFAULT 0,
reason VARCHAR(64) DEFAULT '',
payload_json TEXT DEFAULT '',
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_backtest_trades_run_id ON qd_backtest_trades(run_id);
CREATE TABLE IF NOT EXISTS qd_backtest_equity_points (
id SERIAL PRIMARY KEY,
run_id INTEGER NOT NULL,
point_index INTEGER DEFAULT 0,
point_time VARCHAR(64) DEFAULT '',
point_value DOUBLE PRECISION DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_backtest_equity_points_run_id ON qd_backtest_equity_points(run_id);
```
### 📝 Migration Notes
- All statements are idempotent and safe to run multiple times.
- Existing backtest data is preserved.
- Existing `indicator` backtest records remain compatible; new strategy backtests will write `run_type`, `strategy_id`, `strategy_name`, `config_snapshot`, `engine_version`, and `code_hash`.
- `qd_backtest_trades` and `qd_backtest_equity_points` are introduced for future strategy-level analytics and debugging.
---
## V2.2.3 (2026-03-24)
### 🚀 New Features
+20 -6
View File
@@ -27,7 +27,7 @@
<p>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square&logo=apache" alt="License"></a>
<img src="https://img.shields.io/badge/Version-2.2.3-orange?style=flat-square" alt="Version">
<img src="https://img.shields.io/badge/Version-3.0.1-orange?style=flat-square" alt="Version">
<img src="https://img.shields.io/badge/Python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python">
<img src="https://img.shields.io/badge/Docker-一键部署-2496ED?style=flat-square&logo=docker&logoColor=white" alt="Docker">
<img src="https://img.shields.io/badge/Vibe%20Coding-就绪-FF6B6B?style=flat-square&logo=sparkles&logoColor=white" alt="Vibe Coding">
@@ -51,6 +51,7 @@
- [🎯 为什么选择QuantDinger](#-为什么选择quantdinger)
- [📸 视觉导览](#-视觉导览--观看视频演示)
- [✨ 核心功能](#-核心功能)
- [🔗 QuantDinger 交易所注册邀请链接](#quantdinger-交易所注册邀请链接)
- [🔌 支持的交易所和经纪商](#-支持的交易所和经纪商)
- [🏗️ 架构与配置](#-架构与配置)
- [📚 文档索引](#-文档索引)
@@ -386,6 +387,23 @@ flowchart TB
---
## 🔗 QuantDinger 交易所注册邀请链接
以下为 **QuantDinger** 合作邀请注册链接。通过链接开户可能享受交易手续费返佣(例如最高约 **20%** 返佣,具体以各交易所规则与活动为准)。
| 交易所 | 邀请 / 注册链接 |
|--------|-----------------|
| Binance | [注册开户](https://www.bsmkweb.cc/register?ref=QUANTDINGER) |
| Bitget | [注册开户](https://partner.hdmune.cn/bg/7r4xz8kd) |
| Bybit | [注册开户](https://partner.bybit.com/b/DINGER) |
| OKX | [注册开户](https://www.xqmnobxky.com/join/QUANTDINGER) |
| Gate.io | [注册开户](https://www.gateport.company/share/DINGER) |
| HTX | [注册开户](https://www.htx.com/invite/zh-cn/1f?invite_code=dinger) |
网页端登录后,亦可在 **个人中心 → 选择交易所开户** 使用相同链接。
---
## 🔌 支持的交易所和经纪商
### 加密货币(直接API交易)
@@ -412,11 +430,7 @@ flowchart TB
### 交易所返佣入口
如果你本来就准备开通交易所账户,建议直接走返佣链接。很多交易用户本来就会主动找“手续费减免/返佣链接”,而下面这些链接都可以直接享受 20% 手续费减免,不增加任何额外成本
- **OKX**[开户即享 20% 手续费减免](https://www.promooboost.com/join/QUANTDINGER)
- **Bitget**[开户即享 20% 手续费减免](https://partner.bitget.com/bg/dinger)
- **Bitget(备用链接)**[备用 20% 手续费减免注册链接](https://partner.hdmune.cn/bg/7r4xz8kd)
完整列表见上文:[QuantDinger 交易所注册邀请链接](#quantdinger-交易所注册邀请链接)
---
+1 -1
View File
@@ -1 +1 @@
3.0.4+build-20260324-2
3.0.1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-465
View File
@@ -1,465 +0,0 @@
.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{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}
.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}
.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}
.notice-footer a[data-v-7e99442e]{color:#1890ff}
.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}
.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-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff}
.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}
.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}
.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{color:#1890ff}
: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}
: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-pro-global-header-content .anticon:hover{color:#1890ff!important}
:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!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}
: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}
::-moz-selection{background:#1890ff}
::selection{background:#1890ff}
html{--antd-wave-shadow-color:#1890ff}
.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #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}
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-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}
.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}
.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)}
.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}
.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}
.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)}
.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
.hero-bg-grid[data-v-22f26594]{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-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
.hstat[data-v-22f26594]: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-22f26594]{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-22f26594]{-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-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}
.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.wl-card.active .wl-card-hover-actions[data-v-22f26594]{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-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}
.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 .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-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-67e891d2]{color:#1890ff}
.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{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}
.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-cursor{border-left:2px solid #1890ff}
.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}
.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-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-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-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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-13cac835]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-13cac835]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-13cac835]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-13cac835]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-13cac835]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-13cac835]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-13cac835]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-13cac835]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-13cac835]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-13cac835]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-13cac835]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-13cac835]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-13cac835]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-13cac835] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-13cac835] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-13cac835]{color:#1890ff}
.creation-mode-toggle[data-v-13cac835]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-13cac835]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-13cac835]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-13cac835]{color:#1890ff}
.ip-whitelist-tip[data-v-13cac835]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-13cac835]{color:#1890ff}
.summary-card .card-icon.sync.syncing[data-v-398d904c]{color:#1890ff}
.monitor-card .monitor-body .scope-selected[data-v-398d904c]{color:#1890ff;border-bottom:1px dashed #1890ff}
.alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff)}
.alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#1890ff}
.position-checkbox-group .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.05)}
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .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}
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-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
.settings-page .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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}
.main .code-login-hint .anticon[data-v-de9678f6]{color:#1890ff}
.main .auth-links a[data-v-de9678f6]{color:#1890ff}
.main .legal-wrap .legal-toggle[data-v-de9678f6]{color:#1890ff}
.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#1890ff;background-color:#e6f7ff}
.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#e6f7ff}
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}
.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{background:#1890ff}
.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger){color:#40a9ff;border-color:#40a9ff}
.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger){color:#096dd9;border-color:#096dd9}
.ant-btn-primary{background-color:#1890ff;border-color:#1890ff}
.ant-btn-primary:focus,.ant-btn-primary:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-btn-primary.active,.ant-btn-primary:active{background-color:#096dd9;border-color:#096dd9}
.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}
.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}
.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#40a9ff}
.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-ghost.active,.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9}
.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-dashed.active,.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9}
.ant-btn-link{color:#1890ff}
.ant-btn-link:focus,.ant-btn-link:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-link.active,.ant-btn-link:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff}
.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-link{color:#1890ff}
.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#40a9ff}
.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#096dd9}
.ant-menu-submenu-selected{color:#1890ff}
.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}
.ant-menu-item>a:hover{color:#1890ff}
.ant-menu-item>.ant-badge>a:hover{color:#1890ff}
.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#1890ff}
.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#1890ff}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}
.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#1890ff));background:linear-gradient(90deg,#1890ff,#1890ff)}
.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a{color:#1890ff}
.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover{color:#1890ff;border-bottom:2px solid #1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover{color:#1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a{color:#1890ff}
.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after{border-right:3px solid #1890ff}
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}
.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}
.ant-pro-basicLayout .trigger:hover{color:#1890ff}
.ant-pro-sider-menu-sider.light .ant-pro-sider-menu-logo h1{color:#1890ff}
.ant-page-header-back-button{color:#1890ff}
.ant-page-header-back-button:focus,.ant-page-header-back-button:hover{color:#40a9ff}
.ant-page-header-back-button:active{color:#096dd9}
.ant-breadcrumb a:hover{color:#40a9ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled{color:#1890ff}
.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#1890ff;border-color:#1890ff}
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs-ink-bar{background-color:#1890ff}
.ant-tabs-nav .ant-tabs-tab:hover{color:#40a9ff}
.ant-tabs-nav .ant-tabs-tab:active{color:#096dd9}
.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff}
.ant-pro-global-header .dark .action.opened,.ant-pro-global-header .dark .action:hover{background:#1890ff}
.ant-list-item-meta-title>a:hover{color:#1890ff}
.ant-spin{color:#1890ff}
.ant-spin-dot-item{background-color:#1890ff}
.ant-pagination-item:focus,.ant-pagination-item:hover{border-color:#1890ff}
.ant-pagination-item:focus a,.ant-pagination-item:hover a{color:#1890ff}
.ant-pagination-item-active{border-color:#1890ff}
.ant-pagination-item-active a{color:#1890ff}
.ant-pagination-item-active:focus,.ant-pagination-item-active:hover{border-color:#40a9ff}
.ant-pagination-item-active:focus a,.ant-pagination-item-active:hover a{color:#40a9ff}
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}
.ant-pagination-next:hover a,.ant-pagination-prev:hover a{border-color:#40a9ff}
.ant-pagination-next:focus .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link,.ant-pagination-prev:focus .ant-pagination-item-link,.ant-pagination-prev:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}
.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff}
.ant-pagination-options-quick-jumper input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}
.ant-select-selection:hover{border-color:#40a9ff}
.ant-select-focused .ant-select-selection,.ant-select-selection:active,.ant-select-selection:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-open .ant-select-selection{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon{color:#1890ff}
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#1890ff}
.ant-switch:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-switch-checked{background-color:#1890ff}
.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}
.ant-alert-info .ant-alert-icon{color:#1890ff}
.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon .action{color:#1890ff}
.ant-pro-setting-drawer-handle{background:#1890ff}
.anticon.ant-notification-notice-icon-info{color:#1890ff}
.ant-select-auto-complete.ant-select .ant-input:focus,.ant-select-auto-complete.ant-select .ant-input:hover{border-color:#40a9ff}
.ant-input:focus,.ant-input:hover{border-color:#40a9ff}
.ant-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-group-addon .ant-select-focused .ant-select-selection,.ant-input-group-addon .ant-select-open .ant-select-selection{color:#1890ff}
.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-result-info .ant-result-icon>.anticon{color:#1890ff}
.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}
.ant-progress-bg,.ant-progress-success-bg{background-color:#1890ff}
.ant-upload.ant-upload-select-picture-card:hover{border-color:#1890ff}
.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled){border-color:#096dd9}
.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#40a9ff}
.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon{color:#40a9ff}
.ant-upload-list-item:hover .ant-upload-list-item-info{background-color:#e6f7ff}
.ant-time-picker-panel-select li:focus{color:#1890ff}
.ant-time-picker-panel-select li:hover{background:#e6f7ff}
.ant-time-picker-input:focus,.ant-time-picker-input:hover{border-color:#40a9ff}
.ant-time-picker-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-header a:hover{color:#40a9ff}
.ant-calendar-date:hover{background:#e6f7ff}
.ant-calendar-date:active{background:#40a9ff}
:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date{color:#1890ff;border-color:#1890ff}
.ant-calendar-selected-day .ant-calendar-date{background:#bae7ff}
.ant-calendar .ant-calendar-ok-btn{background-color:#1890ff;border-color:#1890ff}
.ant-calendar .ant-calendar-ok-btn:focus,.ant-calendar .ant-calendar-ok-btn:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-calendar .ant-calendar-ok-btn.active,.ant-calendar .ant-calendar-ok-btn:active{background-color:#096dd9;border-color:#096dd9}
.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date{color:#1890ff;background:#bae7ff;border-color:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date{background:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover{background:#1890ff}
.ant-calendar-range .ant-calendar-input:hover,.ant-calendar-range .ant-calendar-time-picker-input:hover{border-color:#40a9ff}
.ant-calendar-range .ant-calendar-input:focus,.ant-calendar-range .ant-calendar-time-picker-input:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-range .ant-calendar-in-range-cell:before{background:#e6f7ff}
.ant-calendar-time-picker-select li:hover{background:#e6f7ff}
.ant-calendar-time-picker-select li:focus{color:#1890ff}
.ant-calendar-month-panel-header a:hover{color:#40a9ff}
.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover{background:#1890ff}
.ant-calendar-month-panel-month:hover{background:#e6f7ff}
.ant-calendar-year-panel-header a:hover{color:#40a9ff}
.ant-calendar-year-panel-year:hover{background:#e6f7ff}
.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover{background:#1890ff}
.ant-calendar-decade-panel-header a:hover{color:#40a9ff}
.ant-calendar-decade-panel-decade:hover{background:#e6f7ff}
.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade,.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover{background:#1890ff}
.ant-calendar-week-number .ant-calendar-body tr:hover{background:#e6f7ff}
.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week{background:#bae7ff}
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}
.ant-tag-checkable-checked{background-color:#1890ff}
.ant-tag-checkable:active{background-color:#096dd9}
.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}
.ant-tag-blue-inverse{background:#1890ff;border-color:#1890ff}
.ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{background:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title{color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}
.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-navigation .ant-steps-item:before{background-color:#1890ff}
.ant-badge-status-processing{background-color:#1890ff}
.ant-badge-status-processing:after{border:1px solid #1890ff}
.ant-badge-status-blue{background:#1890ff}
.ant-table-thead>tr>th .ant-table-filter-selected.anticon{color:#1890ff}
.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on,.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on{color:#1890ff}
.ant-table-tbody>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td{background:#e6f7ff}
.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after{color:#1890ff;text-shadow:0 0 2px #bae7ff}
.ant-table-filter-dropdown-link{color:#1890ff}
.ant-table-filter-dropdown-link:hover{color:#40a9ff}
.ant-table-filter-dropdown-link:active{color:#096dd9}
.ant-table-row-expand-icon{color:#1890ff}
.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover{color:#40a9ff}
.ant-table-row-expand-icon:active{color:#096dd9}
.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#1890ff}
.ant-radio-input:focus+.ant-radio-inner{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-checked:after{border:1px solid #1890ff}
.ant-radio-inner:after{background-color:#1890ff}
.ant-radio-checked .ant-radio-inner{border-color:#1890ff}
.ant-radio-button-wrapper:hover{color:#1890ff}
.ant-radio-button-wrapper:focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#1890ff;border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:#1890ff;border-color:#1890ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{background:#40a9ff;border-color:#40a9ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{background:#096dd9;border-color:#096dd9}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1890ff}
.ant-checkbox-checked:after{border:1px solid #1890ff}
.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}
.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#1890ff}
.has-error .ant-transfer-list-search:not([disabled]):hover{border-color:#40a9ff}
.has-error .ant-transfer-list-search:not([disabled]):focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.is-validating.has-feedback .ant-form-item-children-icon{color:#1890ff}
.ant-card-actions>li>span:hover{color:#1890ff}
.ant-card-actions>li>span a:not(.ant-btn):hover,.ant-card-actions>li>span>.anticon:hover{color:#1890ff}
.ant-input-number:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#40a9ff}
.ant-input-number-focused,.ant-input-number:hover{border-color:#40a9ff}
.ant-input-number-focused{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
-503
View File
@@ -1,503 +0,0 @@
.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{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}
.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}
.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}
.notice-footer a[data-v-7e99442e]{color:#1890ff}
.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}
.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-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff}
.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}
.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}
.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{color:#1890ff}
: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}
: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-pro-global-header-content .anticon:hover{color:#1890ff!important}
:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!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}
: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}
::-moz-selection{background:#1890ff}
::selection{background:#1890ff}
html{--antd-wave-shadow-color:#1890ff}
.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #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}
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}
.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-67e891d2]{color:#1890ff}
.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{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}
.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-cursor{border-left:2px solid #1890ff}
.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}
.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-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)}
.symbol-select[data-v-95a351b2] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-95a351b2] .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-95a351b2]:hover{color:#1890ff}
.timeframe-item.active[data-v-95a351b2]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-95a351b2]:hover,.panel-header .theme-toggle-btn[data-v-95a351b2]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-95a351b2],.panel-header .theme-toggle-btn.active[data-v-95a351b2]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-95a351b2]:hover{border-color:#1890ff}
.indicator-card.active[data-v-95a351b2]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-95a351b2]{color:#1890ff}
.card-action[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-95a351b2]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
.qt-header-btn[data-v-95a351b2]{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-95a351b2]:focus,.qt-header-btn[data-v-95a351b2]: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-95a351b2]{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-95a351b2]: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-95a351b2] .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-95a351b2] .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-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-95a351b2]: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-95a351b2],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-95a351b2]: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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-95a351b2]: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-95a351b2]: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-95a351b2],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-95a351b2]: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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.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}
.page-header .header-content .page-title .title-icon[data-v-9ec1bad6]{-webkit-text-fill-color:#1890ff}
.theme-dark .page-header .page-title .title-icon[data-v-9ec1bad6]{-webkit-text-fill-color:#40a9ff}
.theme-dark .main-tabs[data-v-9ec1bad6] .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .main-tabs[data-v-9ec1bad6] .ant-tabs-ink-bar{background:#1890ff}
.theme-dark[data-v-9ec1bad6] .ant-select .ant-select-selection:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.mode-card[data-v-2344f311]: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)}
.mode-card.selected[data-v-2344f311]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-2344f311]:after{color:#1890ff}
.card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.template-tag[data-v-2344f311]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.theme-dark .mode-card.selected[data-v-2344f311]:after{color:#40a9ff}
.theme-dark .card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]{border-color:rgba(24,144,255,.4);color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .template-tag[data-v-2344f311]:hover{color:#40a9ff}
.template-item[data-v-767abf73]:hover{border-color:#1890ff}
.ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#1890ff}
.ai-panel .ai-status[data-v-767abf73]{color:#1890ff}
.docs-panel .docs-content[data-v-767abf73] h5{color:#1890ff}
.theme-dark .side-tabs[data-v-767abf73] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#40a9ff}
.theme-dark .ai-panel[data-v-767abf73] textarea.ant-input:focus{border-color:#1890ff}
.theme-dark .ai-panel .ai-status[data-v-767abf73]{color:#40a9ff}
.theme-dark .docs-panel .docs-content[data-v-767abf73] h5{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-70b18ab4]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-70b18ab4]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-70b18ab4]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-70b18ab4]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-70b18ab4]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-70b18ab4]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-70b18ab4]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-70b18ab4]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-70b18ab4]{color:#1890ff}
.creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-70b18ab4]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-70b18ab4]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-70b18ab4]{color:#1890ff}
.ip-whitelist-tip[data-v-70b18ab4]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-70b18ab4]{color:#1890ff}
body.dark .ant-modal-wrap .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
body.dark .ant-modal-wrap .ant-steps .ant-steps-item-finish .ant-steps-item-icon,body.dark .ant-modal-wrap .ant-steps .ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number:focus,body.dark .ant-modal-wrap .ant-input-number:hover,body.dark .ant-modal-wrap .ant-input:focus,body.dark .ant-modal-wrap .ant-input:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-select .ant-select-selection:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
body.dark .ant-modal-wrap .ant-switch.ant-switch-checked{background:#1890ff}
body.dark .ant-modal-wrap .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}
body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}
.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}
.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}
.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)}
.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}
.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}
.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)}
.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
.hero-bg-grid[data-v-22f26594]{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-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
.hstat[data-v-22f26594]: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-22f26594]{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-22f26594]{-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-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}
.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.wl-card.active .wl-card-hover-actions[data-v-22f26594]{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-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}
.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 .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-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}
.summary-card .card-icon.sync.syncing[data-v-398d904c]{color:#1890ff}
.monitor-card .monitor-body .scope-selected[data-v-398d904c]{color:#1890ff;border-bottom:1px dashed #1890ff}
.alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff)}
.alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#1890ff}
.position-checkbox-group .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.05)}
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .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}
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-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
.settings-page .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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}
.main .code-login-hint .anticon[data-v-de9678f6]{color:#1890ff}
.main .auth-links a[data-v-de9678f6]{color:#1890ff}
.main .legal-wrap .legal-toggle[data-v-de9678f6]{color:#1890ff}
.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#1890ff;background-color:#e6f7ff}
.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#e6f7ff}
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}
.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{background:#1890ff}
.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger){color:#40a9ff;border-color:#40a9ff}
.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger){color:#096dd9;border-color:#096dd9}
.ant-btn-primary{background-color:#1890ff;border-color:#1890ff}
.ant-btn-primary:focus,.ant-btn-primary:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-btn-primary.active,.ant-btn-primary:active{background-color:#096dd9;border-color:#096dd9}
.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}
.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}
.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#40a9ff}
.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-ghost.active,.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9}
.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-dashed.active,.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9}
.ant-btn-link{color:#1890ff}
.ant-btn-link:focus,.ant-btn-link:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-link.active,.ant-btn-link:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff}
.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-link{color:#1890ff}
.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#40a9ff}
.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#096dd9}
.ant-menu-submenu-selected{color:#1890ff}
.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}
.ant-menu-item>a:hover{color:#1890ff}
.ant-menu-item>.ant-badge>a:hover{color:#1890ff}
.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#1890ff}
.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#1890ff}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}
.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#1890ff));background:linear-gradient(90deg,#1890ff,#1890ff)}
.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a{color:#1890ff}
.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover{color:#1890ff;border-bottom:2px solid #1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover{color:#1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a{color:#1890ff}
.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after{border-right:3px solid #1890ff}
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}
.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}
.ant-pro-basicLayout .trigger:hover{color:#1890ff}
.ant-pro-sider-menu-sider.light .ant-pro-sider-menu-logo h1{color:#1890ff}
.ant-page-header-back-button{color:#1890ff}
.ant-page-header-back-button:focus,.ant-page-header-back-button:hover{color:#40a9ff}
.ant-page-header-back-button:active{color:#096dd9}
.ant-breadcrumb a:hover{color:#40a9ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled{color:#1890ff}
.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#1890ff;border-color:#1890ff}
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs-ink-bar{background-color:#1890ff}
.ant-tabs-nav .ant-tabs-tab:hover{color:#40a9ff}
.ant-tabs-nav .ant-tabs-tab:active{color:#096dd9}
.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff}
.ant-pro-global-header .dark .action.opened,.ant-pro-global-header .dark .action:hover{background:#1890ff}
.ant-list-item-meta-title>a:hover{color:#1890ff}
.ant-spin{color:#1890ff}
.ant-spin-dot-item{background-color:#1890ff}
.ant-pagination-item:focus,.ant-pagination-item:hover{border-color:#1890ff}
.ant-pagination-item:focus a,.ant-pagination-item:hover a{color:#1890ff}
.ant-pagination-item-active{border-color:#1890ff}
.ant-pagination-item-active a{color:#1890ff}
.ant-pagination-item-active:focus,.ant-pagination-item-active:hover{border-color:#40a9ff}
.ant-pagination-item-active:focus a,.ant-pagination-item-active:hover a{color:#40a9ff}
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}
.ant-pagination-next:hover a,.ant-pagination-prev:hover a{border-color:#40a9ff}
.ant-pagination-next:focus .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link,.ant-pagination-prev:focus .ant-pagination-item-link,.ant-pagination-prev:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}
.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff}
.ant-pagination-options-quick-jumper input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}
.ant-select-selection:hover{border-color:#40a9ff}
.ant-select-focused .ant-select-selection,.ant-select-selection:active,.ant-select-selection:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-open .ant-select-selection{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon{color:#1890ff}
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#1890ff}
.ant-switch:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-switch-checked{background-color:#1890ff}
.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}
.ant-alert-info .ant-alert-icon{color:#1890ff}
.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon .action{color:#1890ff}
.ant-pro-setting-drawer-handle{background:#1890ff}
.anticon.ant-notification-notice-icon-info{color:#1890ff}
.ant-select-auto-complete.ant-select .ant-input:focus,.ant-select-auto-complete.ant-select .ant-input:hover{border-color:#40a9ff}
.ant-input:focus,.ant-input:hover{border-color:#40a9ff}
.ant-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-group-addon .ant-select-focused .ant-select-selection,.ant-input-group-addon .ant-select-open .ant-select-selection{color:#1890ff}
.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-result-info .ant-result-icon>.anticon{color:#1890ff}
.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}
.ant-progress-bg,.ant-progress-success-bg{background-color:#1890ff}
.ant-upload.ant-upload-select-picture-card:hover{border-color:#1890ff}
.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled){border-color:#096dd9}
.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#40a9ff}
.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon{color:#40a9ff}
.ant-upload-list-item:hover .ant-upload-list-item-info{background-color:#e6f7ff}
.ant-time-picker-panel-select li:focus{color:#1890ff}
.ant-time-picker-panel-select li:hover{background:#e6f7ff}
.ant-time-picker-input:focus,.ant-time-picker-input:hover{border-color:#40a9ff}
.ant-time-picker-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-header a:hover{color:#40a9ff}
.ant-calendar-date:hover{background:#e6f7ff}
.ant-calendar-date:active{background:#40a9ff}
:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date{color:#1890ff;border-color:#1890ff}
.ant-calendar-selected-day .ant-calendar-date{background:#bae7ff}
.ant-calendar .ant-calendar-ok-btn{background-color:#1890ff;border-color:#1890ff}
.ant-calendar .ant-calendar-ok-btn:focus,.ant-calendar .ant-calendar-ok-btn:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-calendar .ant-calendar-ok-btn.active,.ant-calendar .ant-calendar-ok-btn:active{background-color:#096dd9;border-color:#096dd9}
.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date{color:#1890ff;background:#bae7ff;border-color:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date{background:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover{background:#1890ff}
.ant-calendar-range .ant-calendar-input:hover,.ant-calendar-range .ant-calendar-time-picker-input:hover{border-color:#40a9ff}
.ant-calendar-range .ant-calendar-input:focus,.ant-calendar-range .ant-calendar-time-picker-input:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-range .ant-calendar-in-range-cell:before{background:#e6f7ff}
.ant-calendar-time-picker-select li:hover{background:#e6f7ff}
.ant-calendar-time-picker-select li:focus{color:#1890ff}
.ant-calendar-month-panel-header a:hover{color:#40a9ff}
.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover{background:#1890ff}
.ant-calendar-month-panel-month:hover{background:#e6f7ff}
.ant-calendar-year-panel-header a:hover{color:#40a9ff}
.ant-calendar-year-panel-year:hover{background:#e6f7ff}
.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover{background:#1890ff}
.ant-calendar-decade-panel-header a:hover{color:#40a9ff}
.ant-calendar-decade-panel-decade:hover{background:#e6f7ff}
.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade,.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover{background:#1890ff}
.ant-calendar-week-number .ant-calendar-body tr:hover{background:#e6f7ff}
.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week{background:#bae7ff}
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}
.ant-tag-checkable-checked{background-color:#1890ff}
.ant-tag-checkable:active{background-color:#096dd9}
.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}
.ant-tag-blue-inverse{background:#1890ff;border-color:#1890ff}
.ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{background:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title{color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}
.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-navigation .ant-steps-item:before{background-color:#1890ff}
.ant-badge-status-processing{background-color:#1890ff}
.ant-badge-status-processing:after{border:1px solid #1890ff}
.ant-badge-status-blue{background:#1890ff}
.ant-table-thead>tr>th .ant-table-filter-selected.anticon{color:#1890ff}
.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on,.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on{color:#1890ff}
.ant-table-tbody>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td{background:#e6f7ff}
.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after{color:#1890ff;text-shadow:0 0 2px #bae7ff}
.ant-table-filter-dropdown-link{color:#1890ff}
.ant-table-filter-dropdown-link:hover{color:#40a9ff}
.ant-table-filter-dropdown-link:active{color:#096dd9}
.ant-table-row-expand-icon{color:#1890ff}
.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover{color:#40a9ff}
.ant-table-row-expand-icon:active{color:#096dd9}
.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#1890ff}
.ant-radio-input:focus+.ant-radio-inner{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-checked:after{border:1px solid #1890ff}
.ant-radio-inner:after{background-color:#1890ff}
.ant-radio-checked .ant-radio-inner{border-color:#1890ff}
.ant-radio-button-wrapper:hover{color:#1890ff}
.ant-radio-button-wrapper:focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#1890ff;border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:#1890ff;border-color:#1890ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{background:#40a9ff;border-color:#40a9ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{background:#096dd9;border-color:#096dd9}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1890ff}
.ant-checkbox-checked:after{border:1px solid #1890ff}
.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}
.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#1890ff}
.has-error .ant-transfer-list-search:not([disabled]):hover{border-color:#40a9ff}
.has-error .ant-transfer-list-search:not([disabled]):focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.is-validating.has-feedback .ant-form-item-children-icon{color:#1890ff}
.ant-card-actions>li>span:hover{color:#1890ff}
.ant-card-actions>li>span a:not(.ant-btn):hover,.ant-card-actions>li>span>.anticon:hover{color:#1890ff}
.ant-input-number:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#40a9ff}
.ant-input-number-focused,.ant-input-number:hover{border-color:#40a9ff}
.ant-input-number-focused{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
-474
View File
@@ -1,474 +0,0 @@
.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{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}
.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}
.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}
.notice-footer a[data-v-7e99442e]{color:#1890ff}
.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}
.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-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff}
.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}
.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}
.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{color:#1890ff}
: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}
: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-pro-global-header-content .anticon:hover{color:#1890ff!important}
:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!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}
: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}
::-moz-selection{background:#1890ff}
::selection{background:#1890ff}
html{--antd-wave-shadow-color:#1890ff}
.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #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}
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-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}
.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}
.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)}
.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}
.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}
.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)}
.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
.hero-bg-grid[data-v-22f26594]{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-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
.hstat[data-v-22f26594]: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-22f26594]{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-22f26594]{-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-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}
.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.wl-card.active .wl-card-hover-actions[data-v-22f26594]{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-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}
.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 .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-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-67e891d2]{color:#1890ff}
.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{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}
.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-cursor{border-left:2px solid #1890ff}
.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}
.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-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-0bec23f2] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-0bec23f2] .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-0bec23f2]:hover{color:#1890ff}
.timeframe-item.active[data-v-0bec23f2]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-0bec23f2]:hover,.panel-header .theme-toggle-btn[data-v-0bec23f2]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-0bec23f2],.panel-header .theme-toggle-btn.active[data-v-0bec23f2]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-0bec23f2]:hover{border-color:#1890ff}
.indicator-card.active[data-v-0bec23f2]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-0bec23f2]{color:#1890ff}
.card-action[data-v-0bec23f2]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-0bec23f2]{color:#1890ff}
.action-icon.edit-icon[data-v-0bec23f2]:hover{color:#40a9ff}
.action-icon[data-v-0bec23f2]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-0bec23f2]{color:#1890ff}
.action-icon.publish-icon[data-v-0bec23f2]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-0bec23f2]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
.qt-header-btn[data-v-0bec23f2]{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-0bec23f2]:focus,.qt-header-btn[data-v-0bec23f2]: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-0bec23f2]{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-0bec23f2]: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-0bec23f2] .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-0bec23f2] .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-0bec23f2]: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-0bec23f2],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-0bec23f2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-0bec23f2]: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-0bec23f2],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-0bec23f2]: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-0bec23f2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-0bec23f2]: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-0bec23f2],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-0bec23f2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-0bec23f2]: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-0bec23f2]: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-0bec23f2],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-0bec23f2]: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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.mode-card[data-v-7955c969]: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)}
.mode-card.selected[data-v-7955c969]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-7955c969]:after{color:#1890ff}
.card-icon.signal-icon[data-v-7955c969]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.template-tag[data-v-7955c969]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.template-item[data-v-24971532]:hover{border-color:#1890ff}
.ai-panel .ai-panel-title .anticon[data-v-24971532]{color:#1890ff}
.ai-panel .ai-status[data-v-24971532]{color:#1890ff}
.docs-panel .docs-content[data-v-24971532] h5{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7dc93e70]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-7dc93e70]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-7dc93e70]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-7dc93e70]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-7dc93e70]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-7dc93e70]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-7dc93e70]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-7dc93e70]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-7dc93e70]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-7dc93e70]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-7dc93e70]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-7dc93e70]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-7dc93e70]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7dc93e70] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-7dc93e70] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-7dc93e70]{color:#1890ff}
.creation-mode-toggle[data-v-7dc93e70]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-7dc93e70]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-7dc93e70]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-7dc93e70]{color:#1890ff}
.ip-whitelist-tip[data-v-7dc93e70]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-7dc93e70]{color:#1890ff}
.summary-card .card-icon.sync.syncing[data-v-398d904c]{color:#1890ff}
.monitor-card .monitor-body .scope-selected[data-v-398d904c]{color:#1890ff;border-bottom:1px dashed #1890ff}
.alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff)}
.alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#1890ff}
.position-checkbox-group .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.05)}
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .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}
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-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
.settings-page .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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}
.main .code-login-hint .anticon[data-v-de9678f6]{color:#1890ff}
.main .auth-links a[data-v-de9678f6]{color:#1890ff}
.main .legal-wrap .legal-toggle[data-v-de9678f6]{color:#1890ff}
.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#1890ff;background-color:#e6f7ff}
.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#e6f7ff}
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}
.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{background:#1890ff}
.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger){color:#40a9ff;border-color:#40a9ff}
.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger){color:#096dd9;border-color:#096dd9}
.ant-btn-primary{background-color:#1890ff;border-color:#1890ff}
.ant-btn-primary:focus,.ant-btn-primary:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-btn-primary.active,.ant-btn-primary:active{background-color:#096dd9;border-color:#096dd9}
.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}
.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}
.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#40a9ff}
.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-ghost.active,.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9}
.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-dashed.active,.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9}
.ant-btn-link{color:#1890ff}
.ant-btn-link:focus,.ant-btn-link:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-link.active,.ant-btn-link:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff}
.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-link{color:#1890ff}
.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#40a9ff}
.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#096dd9}
.ant-menu-submenu-selected{color:#1890ff}
.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}
.ant-menu-item>a:hover{color:#1890ff}
.ant-menu-item>.ant-badge>a:hover{color:#1890ff}
.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#1890ff}
.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#1890ff}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}
.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#1890ff));background:linear-gradient(90deg,#1890ff,#1890ff)}
.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a{color:#1890ff}
.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover{color:#1890ff;border-bottom:2px solid #1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover{color:#1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a{color:#1890ff}
.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after{border-right:3px solid #1890ff}
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}
.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}
.ant-pro-basicLayout .trigger:hover{color:#1890ff}
.ant-pro-sider-menu-sider.light .ant-pro-sider-menu-logo h1{color:#1890ff}
.ant-page-header-back-button{color:#1890ff}
.ant-page-header-back-button:focus,.ant-page-header-back-button:hover{color:#40a9ff}
.ant-page-header-back-button:active{color:#096dd9}
.ant-breadcrumb a:hover{color:#40a9ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled{color:#1890ff}
.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#1890ff;border-color:#1890ff}
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs-ink-bar{background-color:#1890ff}
.ant-tabs-nav .ant-tabs-tab:hover{color:#40a9ff}
.ant-tabs-nav .ant-tabs-tab:active{color:#096dd9}
.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff}
.ant-pro-global-header .dark .action.opened,.ant-pro-global-header .dark .action:hover{background:#1890ff}
.ant-list-item-meta-title>a:hover{color:#1890ff}
.ant-spin{color:#1890ff}
.ant-spin-dot-item{background-color:#1890ff}
.ant-pagination-item:focus,.ant-pagination-item:hover{border-color:#1890ff}
.ant-pagination-item:focus a,.ant-pagination-item:hover a{color:#1890ff}
.ant-pagination-item-active{border-color:#1890ff}
.ant-pagination-item-active a{color:#1890ff}
.ant-pagination-item-active:focus,.ant-pagination-item-active:hover{border-color:#40a9ff}
.ant-pagination-item-active:focus a,.ant-pagination-item-active:hover a{color:#40a9ff}
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}
.ant-pagination-next:hover a,.ant-pagination-prev:hover a{border-color:#40a9ff}
.ant-pagination-next:focus .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link,.ant-pagination-prev:focus .ant-pagination-item-link,.ant-pagination-prev:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}
.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff}
.ant-pagination-options-quick-jumper input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}
.ant-select-selection:hover{border-color:#40a9ff}
.ant-select-focused .ant-select-selection,.ant-select-selection:active,.ant-select-selection:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-open .ant-select-selection{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon{color:#1890ff}
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#1890ff}
.ant-switch:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-switch-checked{background-color:#1890ff}
.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}
.ant-alert-info .ant-alert-icon{color:#1890ff}
.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon .action{color:#1890ff}
.ant-pro-setting-drawer-handle{background:#1890ff}
.anticon.ant-notification-notice-icon-info{color:#1890ff}
.ant-select-auto-complete.ant-select .ant-input:focus,.ant-select-auto-complete.ant-select .ant-input:hover{border-color:#40a9ff}
.ant-input:focus,.ant-input:hover{border-color:#40a9ff}
.ant-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-group-addon .ant-select-focused .ant-select-selection,.ant-input-group-addon .ant-select-open .ant-select-selection{color:#1890ff}
.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-result-info .ant-result-icon>.anticon{color:#1890ff}
.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}
.ant-progress-bg,.ant-progress-success-bg{background-color:#1890ff}
.ant-upload.ant-upload-select-picture-card:hover{border-color:#1890ff}
.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled){border-color:#096dd9}
.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#40a9ff}
.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon{color:#40a9ff}
.ant-upload-list-item:hover .ant-upload-list-item-info{background-color:#e6f7ff}
.ant-time-picker-panel-select li:focus{color:#1890ff}
.ant-time-picker-panel-select li:hover{background:#e6f7ff}
.ant-time-picker-input:focus,.ant-time-picker-input:hover{border-color:#40a9ff}
.ant-time-picker-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-header a:hover{color:#40a9ff}
.ant-calendar-date:hover{background:#e6f7ff}
.ant-calendar-date:active{background:#40a9ff}
:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date{color:#1890ff;border-color:#1890ff}
.ant-calendar-selected-day .ant-calendar-date{background:#bae7ff}
.ant-calendar .ant-calendar-ok-btn{background-color:#1890ff;border-color:#1890ff}
.ant-calendar .ant-calendar-ok-btn:focus,.ant-calendar .ant-calendar-ok-btn:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-calendar .ant-calendar-ok-btn.active,.ant-calendar .ant-calendar-ok-btn:active{background-color:#096dd9;border-color:#096dd9}
.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date{color:#1890ff;background:#bae7ff;border-color:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date{background:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover{background:#1890ff}
.ant-calendar-range .ant-calendar-input:hover,.ant-calendar-range .ant-calendar-time-picker-input:hover{border-color:#40a9ff}
.ant-calendar-range .ant-calendar-input:focus,.ant-calendar-range .ant-calendar-time-picker-input:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-range .ant-calendar-in-range-cell:before{background:#e6f7ff}
.ant-calendar-time-picker-select li:hover{background:#e6f7ff}
.ant-calendar-time-picker-select li:focus{color:#1890ff}
.ant-calendar-month-panel-header a:hover{color:#40a9ff}
.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover{background:#1890ff}
.ant-calendar-month-panel-month:hover{background:#e6f7ff}
.ant-calendar-year-panel-header a:hover{color:#40a9ff}
.ant-calendar-year-panel-year:hover{background:#e6f7ff}
.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover{background:#1890ff}
.ant-calendar-decade-panel-header a:hover{color:#40a9ff}
.ant-calendar-decade-panel-decade:hover{background:#e6f7ff}
.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade,.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover{background:#1890ff}
.ant-calendar-week-number .ant-calendar-body tr:hover{background:#e6f7ff}
.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week{background:#bae7ff}
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}
.ant-tag-checkable-checked{background-color:#1890ff}
.ant-tag-checkable:active{background-color:#096dd9}
.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}
.ant-tag-blue-inverse{background:#1890ff;border-color:#1890ff}
.ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{background:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title{color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}
.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-navigation .ant-steps-item:before{background-color:#1890ff}
.ant-badge-status-processing{background-color:#1890ff}
.ant-badge-status-processing:after{border:1px solid #1890ff}
.ant-badge-status-blue{background:#1890ff}
.ant-table-thead>tr>th .ant-table-filter-selected.anticon{color:#1890ff}
.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on,.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on{color:#1890ff}
.ant-table-tbody>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td{background:#e6f7ff}
.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after{color:#1890ff;text-shadow:0 0 2px #bae7ff}
.ant-table-filter-dropdown-link{color:#1890ff}
.ant-table-filter-dropdown-link:hover{color:#40a9ff}
.ant-table-filter-dropdown-link:active{color:#096dd9}
.ant-table-row-expand-icon{color:#1890ff}
.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover{color:#40a9ff}
.ant-table-row-expand-icon:active{color:#096dd9}
.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#1890ff}
.ant-radio-input:focus+.ant-radio-inner{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-checked:after{border:1px solid #1890ff}
.ant-radio-inner:after{background-color:#1890ff}
.ant-radio-checked .ant-radio-inner{border-color:#1890ff}
.ant-radio-button-wrapper:hover{color:#1890ff}
.ant-radio-button-wrapper:focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#1890ff;border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:#1890ff;border-color:#1890ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{background:#40a9ff;border-color:#40a9ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{background:#096dd9;border-color:#096dd9}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1890ff}
.ant-checkbox-checked:after{border:1px solid #1890ff}
.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}
.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#1890ff}
.has-error .ant-transfer-list-search:not([disabled]):hover{border-color:#40a9ff}
.has-error .ant-transfer-list-search:not([disabled]):focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.is-validating.has-feedback .ant-form-item-children-icon{color:#1890ff}
.ant-card-actions>li>span:hover{color:#1890ff}
.ant-card-actions>li>span a:not(.ant-btn):hover,.ant-card-actions>li>span>.anticon:hover{color:#1890ff}
.ant-input-number:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#40a9ff}
.ant-input-number-focused,.ant-input-number:hover{border-color:#40a9ff}
.ant-input-number-focused{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
@@ -39,9 +39,9 @@ body.dark .ant-pagination-item-active,body.realdark .ant-pagination-item-active{
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}
.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}
.qt-header .qt-header-left .qt-icon[data-v-989be352]{color:#1890ff}
.theme-dark[data-v-989be352] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.theme-dark[data-v-989be352] .ant-slider-track{background:#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}
.code-section .section-header .section-title[data-v-4fea1865]:before{background:#1890ff}
@@ -58,55 +58,53 @@ body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected,body.real
.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)}
.symbol-select[data-v-95a351b2] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-95a351b2] .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-95a351b2]:hover{color:#1890ff}
.timeframe-item.active[data-v-95a351b2]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-95a351b2]:hover,.panel-header .theme-toggle-btn[data-v-95a351b2]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-95a351b2],.panel-header .theme-toggle-btn.active[data-v-95a351b2]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-95a351b2]:hover{border-color:#1890ff}
.indicator-card.active[data-v-95a351b2]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-95a351b2]{color:#1890ff}
.card-action[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-95a351b2]{color:#1890ff}
.symbol-select[data-v-6bd239a6] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-6bd239a6] .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-6bd239a6]:hover{color:#1890ff}
.timeframe-item.active[data-v-6bd239a6]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-6bd239a6]:hover,.panel-header .theme-toggle-btn[data-v-6bd239a6]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-6bd239a6],.panel-header .theme-toggle-btn.active[data-v-6bd239a6]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-6bd239a6]:hover{border-color:#1890ff}
.indicator-card.active[data-v-6bd239a6]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-6bd239a6]{color:#1890ff}
.card-action[data-v-6bd239a6]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-6bd239a6]{color:#1890ff}
.action-icon.edit-icon[data-v-6bd239a6]:hover{color:#40a9ff}
.action-icon[data-v-6bd239a6]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-6bd239a6]{color:#1890ff}
.action-icon.publish-icon[data-v-6bd239a6]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-6bd239a6]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
.qt-header-btn[data-v-95a351b2]{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-95a351b2]:focus,.qt-header-btn[data-v-95a351b2]: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-95a351b2]{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-95a351b2]: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-95a351b2] .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-95a351b2] .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-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-95a351b2]: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-95a351b2],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-95a351b2]: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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-95a351b2]: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-95a351b2]: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-95a351b2],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-95a351b2]: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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.page-header .page-title .title-icon[data-v-224372fa]{-webkit-text-fill-color:#1890ff}
.empty-result .empty-icon[data-v-224372fa]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);color:#1890ff}
.loading-pulse .pulse-ring[data-v-224372fa]{border:3px solid #1890ff}
.loading-pulse .pulse-icon[data-v-224372fa]{color:#1890ff}
.running-dots .dot[data-v-224372fa]{background:#1890ff}
.add-item-active[data-v-224372fa]{background:#e6f7ff!important}
.theme-dark .page-header .page-title .title-icon[data-v-224372fa]{-webkit-text-fill-color:#40a9ff}
.qt-header-btn[data-v-6bd239a6]{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-6bd239a6]:focus,.qt-header-btn[data-v-6bd239a6]: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-6bd239a6]{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-6bd239a6]: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-6bd239a6] .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-6bd239a6] .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-6bd239a6]: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-6bd239a6],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-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-6bd239a6]: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-6bd239a6],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-6bd239a6]: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-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-6bd239a6]: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-6bd239a6],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-6bd239a6],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-6bd239a6]: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-6bd239a6]: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-6bd239a6],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-6bd239a6]:hover,body.dark,body.realdark{color:#40a9ff}
.ai-markdown-content[data-v-2a402d06] h3{border-left:3px solid #1890ff}
.ai-markdown-content[data-v-2a402d06] blockquote{border-left:4px solid #91d5ff}
.page-header .page-title .title-icon[data-v-6853ba40]{-webkit-text-fill-color:#1890ff}
[data-v-6853ba40] .empty-result .empty-icon{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);color:#1890ff}
[data-v-6853ba40] .running-spinner .spinner-fill{border-top-color:#1890ff}
[data-v-6853ba40] .running-elapsed{color:#1890ff}
[data-v-6853ba40] .running-steps .step-item.active{background:#e6f7ff;border-color:#91d5ff}
[data-v-6853ba40] .running-steps .step-item.active .step-icon{color:#1890ff}
[data-v-6853ba40] .running-steps .step-item.active .step-label{color:#1890ff}
[data-v-6853ba40] .result-ai-markdown-content/deep/h3{border-left:3px solid #1890ff}
[data-v-6853ba40] .result-ai-markdown-content/deep/blockquote{border-left:3px solid #91d5ff}
.add-item-active[data-v-6853ba40]{background:#e6f7ff!important}
.theme-dark .page-header .page-title .title-icon[data-v-6853ba40]{color:#40a9ff!important}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
@@ -132,61 +130,90 @@ body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.mode-card[data-v-2344f311]: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)}
.mode-card.selected[data-v-2344f311]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-2344f311]:after{color:#1890ff}
.card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.template-tag[data-v-2344f311]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.theme-dark .mode-card.selected[data-v-2344f311]:after{color:#40a9ff}
.theme-dark .card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]{border-color:rgba(24,144,255,.4);color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .template-tag[data-v-2344f311]:hover{color:#40a9ff}
.template-item[data-v-767abf73]:hover{border-color:#1890ff}
.ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#1890ff}
.ai-panel .ai-status[data-v-767abf73]{color:#1890ff}
.docs-panel .docs-content[data-v-767abf73] h5{color:#1890ff}
.theme-dark .side-tabs[data-v-767abf73] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#40a9ff}
.theme-dark .ai-panel[data-v-767abf73] textarea.ant-input:focus{border-color:#1890ff}
.theme-dark .ai-panel .ai-status[data-v-767abf73]{color:#40a9ff}
.theme-dark .docs-panel .docs-content[data-v-767abf73] h5{color:#40a9ff}
.mode-card[data-v-1cfbbafc]: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)}
.mode-card.selected[data-v-1cfbbafc]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-1cfbbafc]:after{color:#1890ff}
.card-icon.signal-icon[data-v-1cfbbafc]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.card-body .card-badge[data-v-1cfbbafc]{background:rgba(24,144,255,.08);color:#1890ff}
.template-tag[data-v-1cfbbafc]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.theme-dark .mode-card.selected[data-v-1cfbbafc]:after{color:#40a9ff}
.theme-dark .card-icon.signal-icon[data-v-1cfbbafc]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}
.theme-dark .card-body .card-badge[data-v-1cfbbafc]{color:#69c0ff}
.theme-dark .card-btn[data-v-1cfbbafc]{border-color:rgba(24,144,255,.4);color:#40a9ff}
.theme-dark .card-btn[data-v-1cfbbafc]:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .template-tag[data-v-1cfbbafc]:hover{color:#40a9ff}
.code-editor-container[data-v-6c7c8660] .CodeMirror-cursor{border-left:2px solid #1890ff}
.template-item.active[data-v-6c7c8660],.template-item[data-v-6c7c8660]:hover{border-color:#1890ff}
.ai-status[data-v-6c7c8660]{color:#1890ff}
.docs-content[data-v-6c7c8660] h5{color:#1890ff}
.theme-dark .side-tabs[data-v-6c7c8660] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .ai-status[data-v-6c7c8660]{color:#40a9ff}
.theme-dark .docs-content[data-v-6c7c8660] h5{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-70b18ab4]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-70b18ab4]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-70b18ab4]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-70b18ab4]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-70b18ab4]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-70b18ab4]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-70b18ab4]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-70b18ab4]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-70b18ab4]{color:#1890ff}
.creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-70b18ab4]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-70b18ab4]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-70b18ab4]{color:#1890ff}
.ip-whitelist-tip[data-v-70b18ab4]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-70b18ab4]{color:#1890ff}
body.dark .ant-modal-wrap .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
body.dark .ant-modal-wrap .ant-steps .ant-steps-item-finish .ant-steps-item-icon,body.dark .ant-modal-wrap .ant-steps .ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number:focus,body.dark .ant-modal-wrap .ant-input-number:hover,body.dark .ant-modal-wrap .ant-input:focus,body.dark .ant-modal-wrap .ant-input:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-select .ant-select-selection:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
body.dark .ant-modal-wrap .ant-switch.ant-switch-checked{background:#1890ff}
body.dark .ant-modal-wrap .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}
.assistant-guide-bar[data-v-bbcac474]{border:1px solid rgba(24,144,255,.14);background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06))}
.assistant-guide-bar .assistant-guide-eyebrow[data-v-bbcac474]{background:rgba(24,144,255,.12)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-bbcac474]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-bbcac474]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-bbcac474]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-bbcac474]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-bbcac474]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-bbcac474]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-bbcac474]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-bbcac474]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-bbcac474]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-bbcac474]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-bbcac474]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-bbcac474]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-bbcac474]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-bbcac474] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-bbcac474] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.theme-dark .assistant-guide-bar .assistant-guide-eyebrow[data-v-bbcac474]{color:#69c0ff}
.ai-filter-title .anticon[data-v-bbcac474]{color:#1890ff}
.creation-mode-toggle[data-v-bbcac474]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.simple-mode-hero[data-v-bbcac474]{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(114,46,209,.06));border:1px solid rgba(24,144,255,.14)}
.simple-mode-kicker[data-v-bbcac474]{color:#1890ff}
.advanced-settings-shell[data-v-bbcac474],.selected-indicator-card[data-v-bbcac474],.simple-essentials-card[data-v-bbcac474]{border:1px solid rgba(24,144,255,.12)}
.execution-step-hero[data-v-bbcac474]{background:linear-gradient(135deg,rgba(82,196,26,.08),rgba(24,144,255,.08));border:1px solid rgba(24,144,255,.14)}
.execution-section-card[data-v-bbcac474]{border:1px solid rgba(24,144,255,.12)}
.execution-mode-card[data-v-bbcac474]{border:1px solid rgba(24,144,255,.12)}
.execution-mode-card[data-v-bbcac474]:hover{border-color:rgba(24,144,255,.35);-webkit-box-shadow:0 8px 24px rgba(24,144,255,.08);box-shadow:0 8px 24px rgba(24,144,255,.08)}
.execution-mode-card.active[data-v-bbcac474]{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.03));-webkit-box-shadow:0 10px 28px rgba(24,144,255,.12);box-shadow:0 10px 28px rgba(24,144,255,.12)}
.execution-mode-card.disabled[data-v-bbcac474]:hover{border-color:rgba(24,144,255,.12)}
.execution-mode-card-icon.signal[data-v-bbcac474]{color:#1890ff;background:rgba(24,144,255,.1)}
.execution-mode-card-check[data-v-bbcac474]{color:#1890ff}
.strategy-type-selector .strategy-type-card[data-v-bbcac474]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-bbcac474]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-bbcac474]{color:#1890ff}
.theme-dark .simple-mode-hero[data-v-bbcac474]{background:linear-gradient(135deg,rgba(24,144,255,.14),rgba(114,46,209,.12))}
.theme-dark .execution-step-hero[data-v-bbcac474]{background:linear-gradient(135deg,rgba(82,196,26,.14),rgba(24,144,255,.14))}
.theme-dark .execution-mode-card[data-v-bbcac474]:hover{-webkit-box-shadow:0 8px 24px rgba(24,144,255,.12);box-shadow:0 8px 24px rgba(24,144,255,.12)}
.theme-dark .execution-mode-card.active[data-v-bbcac474]{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(24,144,255,.08));border-color:#1890ff}
.theme-dark .simple-mode-kicker[data-v-bbcac474]{color:#69c0ff}
.ip-whitelist-tip[data-v-bbcac474]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-bbcac474]{color:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-finish .ant-steps-item-icon,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-steps .ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number:hover,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:focus,body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input:hover{border-color:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-select .ant-select-selection:hover{border-color:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .ant-switch.ant-switch-checked{background:#1890ff}
body.dark .strategy-form-modal.strategy-form-modal-dark .simple-mode-hero{background:linear-gradient(135deg,rgba(24,144,255,.16),rgba(114,46,209,.14))}
body.dark .strategy-form-modal.strategy-form-modal-dark .execution-step-hero{background:linear-gradient(135deg,rgba(82,196,26,.16),rgba(24,144,255,.14))}
body.dark .strategy-form-modal.strategy-form-modal-dark .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}
body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}
.comment-list .comment-form .form-header .edit-label[data-v-48b21f80]{color:#1890ff}
.comment-list .comments .comment-item.is-mine[data-v-48b21f80]{background:rgba(24,144,255,.02)}
.dark .comment-list .comments .comment-item.is-mine[data-v-48b21f80],[data-theme=dark] .comment-list .comments .comment-item.is-mine[data-v-48b21f80],body.dark .comment-list .comments .comment-item.is-mine[data-v-48b21f80]{background:rgba(24,144,255,.05)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
@@ -270,22 +297,25 @@ body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-colo
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-06c79ed5]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-06c79ed5]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-06c79ed5] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-06c79ed5] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-06c79ed5] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-06c79ed5] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-06c79ed5] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-06c79ed5] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-06c79ed5] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-06c79ed5] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-06c79ed5] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-06c79ed5] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-06c79ed5] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-06c79ed5] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-06c79ed5] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-06c79ed5] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-06c79ed5] .ant-btn.ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout{border:1px solid rgba(24,144,255,.18);background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.06)),to(rgba(82,196,26,.04)));background:linear-gradient(90deg,rgba(24,144,255,.06),rgba(82,196,26,.04))}
.profile-exchange-modal .exchange-account-form .exchange-api-doc-callout__icon{background:rgba(24,144,255,.12);color:#1890ff}
.profile-exchange-modal--dark .exchange-account-form .exchange-api-doc-callout{background:-webkit-gradient(linear,left top,right top,from(rgba(24,144,255,.12)),to(rgba(82,196,26,.08)));background:linear-gradient(90deg,rgba(24,144,255,.12),rgba(82,196,26,.08))}
.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}
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}
.user-manage-page .page-header .page-title .anticon[data-v-4e5dc5e0]{color:#1890ff}
.user-manage-page .address-text[data-v-4e5dc5e0],.user-manage-page .hash-text[data-v-4e5dc5e0]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-4e5dc5e0] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-4e5dc5e0],.user-manage-page .current-vip-info .value[data-v-4e5dc5e0]{color:#1890ff}
.settings-page .settings-header .page-title .anticon[data-v-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
-503
View File
@@ -1,503 +0,0 @@
.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{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}
.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}
.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}
.notice-footer a[data-v-7e99442e]{color:#1890ff}
.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}
.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-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff}
.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}
.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}
.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{color:#1890ff}
: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}
: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-pro-global-header-content .anticon:hover{color:#1890ff!important}
:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!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}
: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}
::-moz-selection{background:#1890ff}
::selection{background:#1890ff}
html{--antd-wave-shadow-color:#1890ff}
.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #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}
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-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}
.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}
.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)}
.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}
.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}
.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)}
.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
.hero-bg-grid[data-v-22f26594]{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-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
.hstat[data-v-22f26594]: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-22f26594]{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-22f26594]{-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-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}
.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.wl-card.active .wl-card-hover-actions[data-v-22f26594]{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-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}
.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 .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-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-67e891d2]{color:#1890ff}
.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{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}
.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-cursor{border-left:2px solid #1890ff}
.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}
.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-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)}
.symbol-select[data-v-95a351b2] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-95a351b2] .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-95a351b2]:hover{color:#1890ff}
.timeframe-item.active[data-v-95a351b2]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-95a351b2]:hover,.panel-header .theme-toggle-btn[data-v-95a351b2]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-95a351b2],.panel-header .theme-toggle-btn.active[data-v-95a351b2]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-95a351b2]:hover{border-color:#1890ff}
.indicator-card.active[data-v-95a351b2]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-95a351b2]{color:#1890ff}
.card-action[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-95a351b2]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
.qt-header-btn[data-v-95a351b2]{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-95a351b2]:focus,.qt-header-btn[data-v-95a351b2]: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-95a351b2]{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-95a351b2]: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-95a351b2] .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-95a351b2] .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-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-95a351b2]: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-95a351b2],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-95a351b2]: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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-95a351b2]: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-95a351b2]: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-95a351b2],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-95a351b2]: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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.mode-card[data-v-2344f311]: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)}
.mode-card.selected[data-v-2344f311]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-2344f311]:after{color:#1890ff}
.card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.template-tag[data-v-2344f311]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.theme-dark .mode-card.selected[data-v-2344f311]:after{color:#40a9ff}
.theme-dark .card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]{border-color:rgba(24,144,255,.4);color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .template-tag[data-v-2344f311]:hover{color:#40a9ff}
.template-item[data-v-767abf73]:hover{border-color:#1890ff}
.ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#1890ff}
.ai-panel .ai-status[data-v-767abf73]{color:#1890ff}
.docs-panel .docs-content[data-v-767abf73] h5{color:#1890ff}
.theme-dark .side-tabs[data-v-767abf73] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#40a9ff}
.theme-dark .ai-panel[data-v-767abf73] textarea.ant-input:focus{border-color:#1890ff}
.theme-dark .ai-panel .ai-status[data-v-767abf73]{color:#40a9ff}
.theme-dark .docs-panel .docs-content[data-v-767abf73] h5{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-69d6d8ef]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-69d6d8ef]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-69d6d8ef]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-69d6d8ef]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-69d6d8ef]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-69d6d8ef]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-69d6d8ef]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-69d6d8ef]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-69d6d8ef]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-69d6d8ef]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-69d6d8ef]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-69d6d8ef]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-69d6d8ef]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-69d6d8ef] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-69d6d8ef] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-69d6d8ef]{color:#1890ff}
.creation-mode-toggle[data-v-69d6d8ef]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-69d6d8ef]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-69d6d8ef]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-69d6d8ef]{color:#1890ff}
.ip-whitelist-tip[data-v-69d6d8ef]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-69d6d8ef]{color:#1890ff}
body.dark .ant-modal-wrap .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
body.dark .ant-modal-wrap .ant-steps .ant-steps-item-finish .ant-steps-item-icon,body.dark .ant-modal-wrap .ant-steps .ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number:focus,body.dark .ant-modal-wrap .ant-input-number:hover,body.dark .ant-modal-wrap .ant-input:focus,body.dark .ant-modal-wrap .ant-input:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-select .ant-select-selection:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
body.dark .ant-modal-wrap .ant-switch.ant-switch-checked{background:#1890ff}
body.dark .ant-modal-wrap .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}
body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}
.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}
.page-header .header-content .page-title .title-icon[data-v-9ec1bad6]{-webkit-text-fill-color:#1890ff}
.theme-dark .page-header .page-title .title-icon[data-v-9ec1bad6]{-webkit-text-fill-color:#40a9ff}
.theme-dark .main-tabs[data-v-9ec1bad6] .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .main-tabs[data-v-9ec1bad6] .ant-tabs-ink-bar{background:#1890ff}
.theme-dark[data-v-9ec1bad6] .ant-select .ant-select-selection:hover{border-color:#1890ff}
.summary-card .card-icon.sync.syncing[data-v-398d904c]{color:#1890ff}
.monitor-card .monitor-body .scope-selected[data-v-398d904c]{color:#1890ff;border-bottom:1px dashed #1890ff}
.alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff)}
.alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#1890ff}
.position-checkbox-group .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.05)}
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .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}
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-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
.settings-page .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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}
.main .code-login-hint .anticon[data-v-de9678f6]{color:#1890ff}
.main .auth-links a[data-v-de9678f6]{color:#1890ff}
.main .legal-wrap .legal-toggle[data-v-de9678f6]{color:#1890ff}
.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#1890ff;background-color:#e6f7ff}
.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#e6f7ff}
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}
.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{background:#1890ff}
.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger){color:#40a9ff;border-color:#40a9ff}
.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger){color:#096dd9;border-color:#096dd9}
.ant-btn-primary{background-color:#1890ff;border-color:#1890ff}
.ant-btn-primary:focus,.ant-btn-primary:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-btn-primary.active,.ant-btn-primary:active{background-color:#096dd9;border-color:#096dd9}
.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}
.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}
.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#40a9ff}
.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-ghost.active,.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9}
.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-dashed.active,.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9}
.ant-btn-link{color:#1890ff}
.ant-btn-link:focus,.ant-btn-link:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-link.active,.ant-btn-link:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff}
.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-link{color:#1890ff}
.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#40a9ff}
.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#096dd9}
.ant-menu-submenu-selected{color:#1890ff}
.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}
.ant-menu-item>a:hover{color:#1890ff}
.ant-menu-item>.ant-badge>a:hover{color:#1890ff}
.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#1890ff}
.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#1890ff}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}
.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#1890ff));background:linear-gradient(90deg,#1890ff,#1890ff)}
.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a{color:#1890ff}
.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover{color:#1890ff;border-bottom:2px solid #1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover{color:#1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a{color:#1890ff}
.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after{border-right:3px solid #1890ff}
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}
.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}
.ant-pro-basicLayout .trigger:hover{color:#1890ff}
.ant-pro-sider-menu-sider.light .ant-pro-sider-menu-logo h1{color:#1890ff}
.ant-page-header-back-button{color:#1890ff}
.ant-page-header-back-button:focus,.ant-page-header-back-button:hover{color:#40a9ff}
.ant-page-header-back-button:active{color:#096dd9}
.ant-breadcrumb a:hover{color:#40a9ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled{color:#1890ff}
.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#1890ff;border-color:#1890ff}
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs-ink-bar{background-color:#1890ff}
.ant-tabs-nav .ant-tabs-tab:hover{color:#40a9ff}
.ant-tabs-nav .ant-tabs-tab:active{color:#096dd9}
.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff}
.ant-pro-global-header .dark .action.opened,.ant-pro-global-header .dark .action:hover{background:#1890ff}
.ant-list-item-meta-title>a:hover{color:#1890ff}
.ant-spin{color:#1890ff}
.ant-spin-dot-item{background-color:#1890ff}
.ant-pagination-item:focus,.ant-pagination-item:hover{border-color:#1890ff}
.ant-pagination-item:focus a,.ant-pagination-item:hover a{color:#1890ff}
.ant-pagination-item-active{border-color:#1890ff}
.ant-pagination-item-active a{color:#1890ff}
.ant-pagination-item-active:focus,.ant-pagination-item-active:hover{border-color:#40a9ff}
.ant-pagination-item-active:focus a,.ant-pagination-item-active:hover a{color:#40a9ff}
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}
.ant-pagination-next:hover a,.ant-pagination-prev:hover a{border-color:#40a9ff}
.ant-pagination-next:focus .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link,.ant-pagination-prev:focus .ant-pagination-item-link,.ant-pagination-prev:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}
.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff}
.ant-pagination-options-quick-jumper input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}
.ant-select-selection:hover{border-color:#40a9ff}
.ant-select-focused .ant-select-selection,.ant-select-selection:active,.ant-select-selection:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-open .ant-select-selection{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon{color:#1890ff}
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#1890ff}
.ant-switch:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-switch-checked{background-color:#1890ff}
.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}
.ant-alert-info .ant-alert-icon{color:#1890ff}
.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon .action{color:#1890ff}
.ant-pro-setting-drawer-handle{background:#1890ff}
.anticon.ant-notification-notice-icon-info{color:#1890ff}
.ant-select-auto-complete.ant-select .ant-input:focus,.ant-select-auto-complete.ant-select .ant-input:hover{border-color:#40a9ff}
.ant-input:focus,.ant-input:hover{border-color:#40a9ff}
.ant-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-group-addon .ant-select-focused .ant-select-selection,.ant-input-group-addon .ant-select-open .ant-select-selection{color:#1890ff}
.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-result-info .ant-result-icon>.anticon{color:#1890ff}
.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}
.ant-progress-bg,.ant-progress-success-bg{background-color:#1890ff}
.ant-upload.ant-upload-select-picture-card:hover{border-color:#1890ff}
.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled){border-color:#096dd9}
.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#40a9ff}
.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon{color:#40a9ff}
.ant-upload-list-item:hover .ant-upload-list-item-info{background-color:#e6f7ff}
.ant-time-picker-panel-select li:focus{color:#1890ff}
.ant-time-picker-panel-select li:hover{background:#e6f7ff}
.ant-time-picker-input:focus,.ant-time-picker-input:hover{border-color:#40a9ff}
.ant-time-picker-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-header a:hover{color:#40a9ff}
.ant-calendar-date:hover{background:#e6f7ff}
.ant-calendar-date:active{background:#40a9ff}
:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date{color:#1890ff;border-color:#1890ff}
.ant-calendar-selected-day .ant-calendar-date{background:#bae7ff}
.ant-calendar .ant-calendar-ok-btn{background-color:#1890ff;border-color:#1890ff}
.ant-calendar .ant-calendar-ok-btn:focus,.ant-calendar .ant-calendar-ok-btn:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-calendar .ant-calendar-ok-btn.active,.ant-calendar .ant-calendar-ok-btn:active{background-color:#096dd9;border-color:#096dd9}
.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date{color:#1890ff;background:#bae7ff;border-color:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date{background:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover{background:#1890ff}
.ant-calendar-range .ant-calendar-input:hover,.ant-calendar-range .ant-calendar-time-picker-input:hover{border-color:#40a9ff}
.ant-calendar-range .ant-calendar-input:focus,.ant-calendar-range .ant-calendar-time-picker-input:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-range .ant-calendar-in-range-cell:before{background:#e6f7ff}
.ant-calendar-time-picker-select li:hover{background:#e6f7ff}
.ant-calendar-time-picker-select li:focus{color:#1890ff}
.ant-calendar-month-panel-header a:hover{color:#40a9ff}
.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover{background:#1890ff}
.ant-calendar-month-panel-month:hover{background:#e6f7ff}
.ant-calendar-year-panel-header a:hover{color:#40a9ff}
.ant-calendar-year-panel-year:hover{background:#e6f7ff}
.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover{background:#1890ff}
.ant-calendar-decade-panel-header a:hover{color:#40a9ff}
.ant-calendar-decade-panel-decade:hover{background:#e6f7ff}
.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade,.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover{background:#1890ff}
.ant-calendar-week-number .ant-calendar-body tr:hover{background:#e6f7ff}
.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week{background:#bae7ff}
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}
.ant-tag-checkable-checked{background-color:#1890ff}
.ant-tag-checkable:active{background-color:#096dd9}
.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}
.ant-tag-blue-inverse{background:#1890ff;border-color:#1890ff}
.ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{background:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title{color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}
.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-navigation .ant-steps-item:before{background-color:#1890ff}
.ant-badge-status-processing{background-color:#1890ff}
.ant-badge-status-processing:after{border:1px solid #1890ff}
.ant-badge-status-blue{background:#1890ff}
.ant-table-thead>tr>th .ant-table-filter-selected.anticon{color:#1890ff}
.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on,.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on{color:#1890ff}
.ant-table-tbody>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td{background:#e6f7ff}
.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after{color:#1890ff;text-shadow:0 0 2px #bae7ff}
.ant-table-filter-dropdown-link{color:#1890ff}
.ant-table-filter-dropdown-link:hover{color:#40a9ff}
.ant-table-filter-dropdown-link:active{color:#096dd9}
.ant-table-row-expand-icon{color:#1890ff}
.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover{color:#40a9ff}
.ant-table-row-expand-icon:active{color:#096dd9}
.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#1890ff}
.ant-radio-input:focus+.ant-radio-inner{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-checked:after{border:1px solid #1890ff}
.ant-radio-inner:after{background-color:#1890ff}
.ant-radio-checked .ant-radio-inner{border-color:#1890ff}
.ant-radio-button-wrapper:hover{color:#1890ff}
.ant-radio-button-wrapper:focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#1890ff;border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:#1890ff;border-color:#1890ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{background:#40a9ff;border-color:#40a9ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{background:#096dd9;border-color:#096dd9}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1890ff}
.ant-checkbox-checked:after{border:1px solid #1890ff}
.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}
.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#1890ff}
.has-error .ant-transfer-list-search:not([disabled]):hover{border-color:#40a9ff}
.has-error .ant-transfer-list-search:not([disabled]):focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.is-validating.has-feedback .ant-form-item-children-icon{color:#1890ff}
.ant-card-actions>li>span:hover{color:#1890ff}
.ant-card-actions>li>span a:not(.ant-btn):hover,.ant-card-actions>li>span>.anticon:hover{color:#1890ff}
.ant-input-number:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#40a9ff}
.ant-input-number-focused,.ant-input-number:hover{border-color:#40a9ff}
.ant-input-number-focused{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
-504
View File
@@ -1,504 +0,0 @@
.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{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}
.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}
.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}
.notice-footer a[data-v-7e99442e]{color:#1890ff}
.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}
.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-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff}
.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}
.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}
.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{color:#1890ff}
: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}
: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-pro-global-header-content .anticon:hover{color:#1890ff!important}
:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!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}
: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}
::-moz-selection{background:#1890ff}
::selection{background:#1890ff}
html{--antd-wave-shadow-color:#1890ff}
.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #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}
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}
.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-67e891d2]{color:#1890ff}
.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{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}
.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-cursor{border-left:2px solid #1890ff}
.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}
.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-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)}
.symbol-select[data-v-95a351b2] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-95a351b2] .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-95a351b2]:hover{color:#1890ff}
.timeframe-item.active[data-v-95a351b2]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-95a351b2]:hover,.panel-header .theme-toggle-btn[data-v-95a351b2]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-95a351b2],.panel-header .theme-toggle-btn.active[data-v-95a351b2]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-95a351b2]:hover{border-color:#1890ff}
.indicator-card.active[data-v-95a351b2]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-95a351b2]{color:#1890ff}
.card-action[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-95a351b2]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
.qt-header-btn[data-v-95a351b2]{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-95a351b2]:focus,.qt-header-btn[data-v-95a351b2]: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-95a351b2]{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-95a351b2]: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-95a351b2] .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-95a351b2] .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-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-95a351b2]: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-95a351b2],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-95a351b2]: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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-95a351b2]: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-95a351b2]: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-95a351b2],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-95a351b2]: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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.page-header .page-title .title-icon[data-v-24a3e98e]{-webkit-text-fill-color:#1890ff}
.running-overlay .running-text[data-v-24a3e98e]{color:#1890ff}
.chart-bars .bar[data-v-24a3e98e]{background:#1890ff}
.add-item-active[data-v-24a3e98e]{background:#e6f7ff!important}
.theme-dark .page-header .page-title .title-icon[data-v-24a3e98e]{-webkit-text-fill-color:#40a9ff}
.theme-dark .main-tabs[data-v-24a3e98e] .ant-tabs-ink-bar{background:#1890ff}
.theme-dark[data-v-24a3e98e] .ant-select .ant-select-selection:hover{border-color:#1890ff}
.theme-dark[data-v-24a3e98e] .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.theme-dark[data-v-24a3e98e] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.mode-card[data-v-2344f311]: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)}
.mode-card.selected[data-v-2344f311]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-2344f311]:after{color:#1890ff}
.card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.template-tag[data-v-2344f311]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.theme-dark .mode-card.selected[data-v-2344f311]:after{color:#40a9ff}
.theme-dark .card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]{border-color:rgba(24,144,255,.4);color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .template-tag[data-v-2344f311]:hover{color:#40a9ff}
.template-item[data-v-767abf73]:hover{border-color:#1890ff}
.ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#1890ff}
.ai-panel .ai-status[data-v-767abf73]{color:#1890ff}
.docs-panel .docs-content[data-v-767abf73] h5{color:#1890ff}
.theme-dark .side-tabs[data-v-767abf73] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#40a9ff}
.theme-dark .ai-panel[data-v-767abf73] textarea.ant-input:focus{border-color:#1890ff}
.theme-dark .ai-panel .ai-status[data-v-767abf73]{color:#40a9ff}
.theme-dark .docs-panel .docs-content[data-v-767abf73] h5{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-70b18ab4]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-70b18ab4]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-70b18ab4]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-70b18ab4]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-70b18ab4]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-70b18ab4]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-70b18ab4]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-70b18ab4]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-70b18ab4]{color:#1890ff}
.creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-70b18ab4]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-70b18ab4]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-70b18ab4]{color:#1890ff}
.ip-whitelist-tip[data-v-70b18ab4]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-70b18ab4]{color:#1890ff}
body.dark .ant-modal-wrap .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
body.dark .ant-modal-wrap .ant-steps .ant-steps-item-finish .ant-steps-item-icon,body.dark .ant-modal-wrap .ant-steps .ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number:focus,body.dark .ant-modal-wrap .ant-input-number:hover,body.dark .ant-modal-wrap .ant-input:focus,body.dark .ant-modal-wrap .ant-input:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-select .ant-select-selection:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
body.dark .ant-modal-wrap .ant-switch.ant-switch-checked{background:#1890ff}
body.dark .ant-modal-wrap .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}
body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}
.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}
.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}
.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)}
.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}
.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}
.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)}
.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
.hero-bg-grid[data-v-22f26594]{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-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
.hstat[data-v-22f26594]: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-22f26594]{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-22f26594]{-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-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}
.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.wl-card.active .wl-card-hover-actions[data-v-22f26594]{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-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}
.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 .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-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}
.summary-card .card-icon.sync.syncing[data-v-398d904c]{color:#1890ff}
.monitor-card .monitor-body .scope-selected[data-v-398d904c]{color:#1890ff;border-bottom:1px dashed #1890ff}
.alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff)}
.alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#1890ff}
.position-checkbox-group .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.05)}
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .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}
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-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
.settings-page .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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}
.main .code-login-hint .anticon[data-v-de9678f6]{color:#1890ff}
.main .auth-links a[data-v-de9678f6]{color:#1890ff}
.main .legal-wrap .legal-toggle[data-v-de9678f6]{color:#1890ff}
.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#1890ff;background-color:#e6f7ff}
.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#e6f7ff}
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}
.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{background:#1890ff}
.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger){color:#40a9ff;border-color:#40a9ff}
.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger){color:#096dd9;border-color:#096dd9}
.ant-btn-primary{background-color:#1890ff;border-color:#1890ff}
.ant-btn-primary:focus,.ant-btn-primary:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-btn-primary.active,.ant-btn-primary:active{background-color:#096dd9;border-color:#096dd9}
.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}
.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}
.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#40a9ff}
.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-ghost.active,.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9}
.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-dashed.active,.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9}
.ant-btn-link{color:#1890ff}
.ant-btn-link:focus,.ant-btn-link:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-link.active,.ant-btn-link:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff}
.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-link{color:#1890ff}
.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#40a9ff}
.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#096dd9}
.ant-menu-submenu-selected{color:#1890ff}
.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}
.ant-menu-item>a:hover{color:#1890ff}
.ant-menu-item>.ant-badge>a:hover{color:#1890ff}
.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#1890ff}
.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#1890ff}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}
.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#1890ff));background:linear-gradient(90deg,#1890ff,#1890ff)}
.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a{color:#1890ff}
.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover{color:#1890ff;border-bottom:2px solid #1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover{color:#1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a{color:#1890ff}
.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after{border-right:3px solid #1890ff}
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}
.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}
.ant-pro-basicLayout .trigger:hover{color:#1890ff}
.ant-pro-sider-menu-sider.light .ant-pro-sider-menu-logo h1{color:#1890ff}
.ant-page-header-back-button{color:#1890ff}
.ant-page-header-back-button:focus,.ant-page-header-back-button:hover{color:#40a9ff}
.ant-page-header-back-button:active{color:#096dd9}
.ant-breadcrumb a:hover{color:#40a9ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled{color:#1890ff}
.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#1890ff;border-color:#1890ff}
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs-ink-bar{background-color:#1890ff}
.ant-tabs-nav .ant-tabs-tab:hover{color:#40a9ff}
.ant-tabs-nav .ant-tabs-tab:active{color:#096dd9}
.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff}
.ant-pro-global-header .dark .action.opened,.ant-pro-global-header .dark .action:hover{background:#1890ff}
.ant-list-item-meta-title>a:hover{color:#1890ff}
.ant-spin{color:#1890ff}
.ant-spin-dot-item{background-color:#1890ff}
.ant-pagination-item:focus,.ant-pagination-item:hover{border-color:#1890ff}
.ant-pagination-item:focus a,.ant-pagination-item:hover a{color:#1890ff}
.ant-pagination-item-active{border-color:#1890ff}
.ant-pagination-item-active a{color:#1890ff}
.ant-pagination-item-active:focus,.ant-pagination-item-active:hover{border-color:#40a9ff}
.ant-pagination-item-active:focus a,.ant-pagination-item-active:hover a{color:#40a9ff}
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}
.ant-pagination-next:hover a,.ant-pagination-prev:hover a{border-color:#40a9ff}
.ant-pagination-next:focus .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link,.ant-pagination-prev:focus .ant-pagination-item-link,.ant-pagination-prev:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}
.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff}
.ant-pagination-options-quick-jumper input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}
.ant-select-selection:hover{border-color:#40a9ff}
.ant-select-focused .ant-select-selection,.ant-select-selection:active,.ant-select-selection:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-open .ant-select-selection{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon{color:#1890ff}
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#1890ff}
.ant-switch:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-switch-checked{background-color:#1890ff}
.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}
.ant-alert-info .ant-alert-icon{color:#1890ff}
.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon .action{color:#1890ff}
.ant-pro-setting-drawer-handle{background:#1890ff}
.anticon.ant-notification-notice-icon-info{color:#1890ff}
.ant-select-auto-complete.ant-select .ant-input:focus,.ant-select-auto-complete.ant-select .ant-input:hover{border-color:#40a9ff}
.ant-input:focus,.ant-input:hover{border-color:#40a9ff}
.ant-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-group-addon .ant-select-focused .ant-select-selection,.ant-input-group-addon .ant-select-open .ant-select-selection{color:#1890ff}
.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-result-info .ant-result-icon>.anticon{color:#1890ff}
.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}
.ant-progress-bg,.ant-progress-success-bg{background-color:#1890ff}
.ant-upload.ant-upload-select-picture-card:hover{border-color:#1890ff}
.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled){border-color:#096dd9}
.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#40a9ff}
.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon{color:#40a9ff}
.ant-upload-list-item:hover .ant-upload-list-item-info{background-color:#e6f7ff}
.ant-time-picker-panel-select li:focus{color:#1890ff}
.ant-time-picker-panel-select li:hover{background:#e6f7ff}
.ant-time-picker-input:focus,.ant-time-picker-input:hover{border-color:#40a9ff}
.ant-time-picker-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-header a:hover{color:#40a9ff}
.ant-calendar-date:hover{background:#e6f7ff}
.ant-calendar-date:active{background:#40a9ff}
:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date{color:#1890ff;border-color:#1890ff}
.ant-calendar-selected-day .ant-calendar-date{background:#bae7ff}
.ant-calendar .ant-calendar-ok-btn{background-color:#1890ff;border-color:#1890ff}
.ant-calendar .ant-calendar-ok-btn:focus,.ant-calendar .ant-calendar-ok-btn:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-calendar .ant-calendar-ok-btn.active,.ant-calendar .ant-calendar-ok-btn:active{background-color:#096dd9;border-color:#096dd9}
.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date{color:#1890ff;background:#bae7ff;border-color:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date{background:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover{background:#1890ff}
.ant-calendar-range .ant-calendar-input:hover,.ant-calendar-range .ant-calendar-time-picker-input:hover{border-color:#40a9ff}
.ant-calendar-range .ant-calendar-input:focus,.ant-calendar-range .ant-calendar-time-picker-input:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-range .ant-calendar-in-range-cell:before{background:#e6f7ff}
.ant-calendar-time-picker-select li:hover{background:#e6f7ff}
.ant-calendar-time-picker-select li:focus{color:#1890ff}
.ant-calendar-month-panel-header a:hover{color:#40a9ff}
.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover{background:#1890ff}
.ant-calendar-month-panel-month:hover{background:#e6f7ff}
.ant-calendar-year-panel-header a:hover{color:#40a9ff}
.ant-calendar-year-panel-year:hover{background:#e6f7ff}
.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover{background:#1890ff}
.ant-calendar-decade-panel-header a:hover{color:#40a9ff}
.ant-calendar-decade-panel-decade:hover{background:#e6f7ff}
.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade,.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover{background:#1890ff}
.ant-calendar-week-number .ant-calendar-body tr:hover{background:#e6f7ff}
.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week{background:#bae7ff}
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}
.ant-tag-checkable-checked{background-color:#1890ff}
.ant-tag-checkable:active{background-color:#096dd9}
.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}
.ant-tag-blue-inverse{background:#1890ff;border-color:#1890ff}
.ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{background:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title{color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}
.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-navigation .ant-steps-item:before{background-color:#1890ff}
.ant-badge-status-processing{background-color:#1890ff}
.ant-badge-status-processing:after{border:1px solid #1890ff}
.ant-badge-status-blue{background:#1890ff}
.ant-table-thead>tr>th .ant-table-filter-selected.anticon{color:#1890ff}
.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on,.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on{color:#1890ff}
.ant-table-tbody>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td{background:#e6f7ff}
.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after{color:#1890ff;text-shadow:0 0 2px #bae7ff}
.ant-table-filter-dropdown-link{color:#1890ff}
.ant-table-filter-dropdown-link:hover{color:#40a9ff}
.ant-table-filter-dropdown-link:active{color:#096dd9}
.ant-table-row-expand-icon{color:#1890ff}
.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover{color:#40a9ff}
.ant-table-row-expand-icon:active{color:#096dd9}
.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#1890ff}
.ant-radio-input:focus+.ant-radio-inner{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-checked:after{border:1px solid #1890ff}
.ant-radio-inner:after{background-color:#1890ff}
.ant-radio-checked .ant-radio-inner{border-color:#1890ff}
.ant-radio-button-wrapper:hover{color:#1890ff}
.ant-radio-button-wrapper:focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#1890ff;border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:#1890ff;border-color:#1890ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{background:#40a9ff;border-color:#40a9ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{background:#096dd9;border-color:#096dd9}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1890ff}
.ant-checkbox-checked:after{border:1px solid #1890ff}
.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}
.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#1890ff}
.has-error .ant-transfer-list-search:not([disabled]):hover{border-color:#40a9ff}
.has-error .ant-transfer-list-search:not([disabled]):focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.is-validating.has-feedback .ant-form-item-children-icon{color:#1890ff}
.ant-card-actions>li>span:hover{color:#1890ff}
.ant-card-actions>li>span a:not(.ant-btn):hover,.ant-card-actions>li>span>.anticon:hover{color:#1890ff}
.ant-input-number:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#40a9ff}
.ant-input-number-focused,.ant-input-number:hover{border-color:#40a9ff}
.ant-input-number-focused{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
-503
View File
@@ -1,503 +0,0 @@
.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{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}
.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}
.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}
.notice-footer a[data-v-7e99442e]{color:#1890ff}
.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}
.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-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff}
.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}
.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}
.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{color:#1890ff}
: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}
: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-pro-global-header-content .anticon:hover{color:#1890ff!important}
:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!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}
: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}
::-moz-selection{background:#1890ff}
::selection{background:#1890ff}
html{--antd-wave-shadow-color:#1890ff}
.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #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}
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}
.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-67e891d2]{color:#1890ff}
.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{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}
.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-cursor{border-left:2px solid #1890ff}
.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}
.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-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)}
.symbol-select[data-v-95a351b2] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-95a351b2] .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-95a351b2]:hover{color:#1890ff}
.timeframe-item.active[data-v-95a351b2]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-95a351b2]:hover,.panel-header .theme-toggle-btn[data-v-95a351b2]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-95a351b2],.panel-header .theme-toggle-btn.active[data-v-95a351b2]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-95a351b2]:hover{border-color:#1890ff}
.indicator-card.active[data-v-95a351b2]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-95a351b2]{color:#1890ff}
.card-action[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-95a351b2]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
.qt-header-btn[data-v-95a351b2]{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-95a351b2]:focus,.qt-header-btn[data-v-95a351b2]: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-95a351b2]{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-95a351b2]: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-95a351b2] .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-95a351b2] .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-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-95a351b2]: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-95a351b2],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-95a351b2]: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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-95a351b2]: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-95a351b2]: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-95a351b2],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-95a351b2]: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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.page-header .page-title .title-icon[data-v-b6096830]{-webkit-text-fill-color:#1890ff}
.running-overlay .running-text[data-v-b6096830]{color:#1890ff}
.chart-bars .bar[data-v-b6096830]{background:#1890ff}
.theme-dark .page-header .page-title .title-icon[data-v-b6096830]{-webkit-text-fill-color:#40a9ff}
.theme-dark .main-tabs[data-v-b6096830] .ant-tabs-ink-bar{background:#1890ff}
.theme-dark[data-v-b6096830] .ant-select .ant-select-selection:hover{border-color:#1890ff}
.theme-dark[data-v-b6096830] .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.theme-dark[data-v-b6096830] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.mode-card[data-v-2344f311]: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)}
.mode-card.selected[data-v-2344f311]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-2344f311]:after{color:#1890ff}
.card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.template-tag[data-v-2344f311]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.theme-dark .mode-card.selected[data-v-2344f311]:after{color:#40a9ff}
.theme-dark .card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]{border-color:rgba(24,144,255,.4);color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .template-tag[data-v-2344f311]:hover{color:#40a9ff}
.template-item[data-v-767abf73]:hover{border-color:#1890ff}
.ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#1890ff}
.ai-panel .ai-status[data-v-767abf73]{color:#1890ff}
.docs-panel .docs-content[data-v-767abf73] h5{color:#1890ff}
.theme-dark .side-tabs[data-v-767abf73] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#40a9ff}
.theme-dark .ai-panel[data-v-767abf73] textarea.ant-input:focus{border-color:#1890ff}
.theme-dark .ai-panel .ai-status[data-v-767abf73]{color:#40a9ff}
.theme-dark .docs-panel .docs-content[data-v-767abf73] h5{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-70b18ab4]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-70b18ab4]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-70b18ab4]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-70b18ab4]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-70b18ab4]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-70b18ab4]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-70b18ab4]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-70b18ab4]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-70b18ab4]{color:#1890ff}
.creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-70b18ab4]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-70b18ab4]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-70b18ab4]{color:#1890ff}
.ip-whitelist-tip[data-v-70b18ab4]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-70b18ab4]{color:#1890ff}
body.dark .ant-modal-wrap .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
body.dark .ant-modal-wrap .ant-steps .ant-steps-item-finish .ant-steps-item-icon,body.dark .ant-modal-wrap .ant-steps .ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number:focus,body.dark .ant-modal-wrap .ant-input-number:hover,body.dark .ant-modal-wrap .ant-input:focus,body.dark .ant-modal-wrap .ant-input:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-select .ant-select-selection:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
body.dark .ant-modal-wrap .ant-switch.ant-switch-checked{background:#1890ff}
body.dark .ant-modal-wrap .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}
body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}
.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}
.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}
.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)}
.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}
.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}
.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)}
.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
.hero-bg-grid[data-v-22f26594]{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-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
.hstat[data-v-22f26594]: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-22f26594]{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-22f26594]{-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-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}
.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.wl-card.active .wl-card-hover-actions[data-v-22f26594]{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-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}
.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 .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-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}
.summary-card .card-icon.sync.syncing[data-v-398d904c]{color:#1890ff}
.monitor-card .monitor-body .scope-selected[data-v-398d904c]{color:#1890ff;border-bottom:1px dashed #1890ff}
.alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff)}
.alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#1890ff}
.position-checkbox-group .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.05)}
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .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}
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-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
.settings-page .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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}
.main .code-login-hint .anticon[data-v-de9678f6]{color:#1890ff}
.main .auth-links a[data-v-de9678f6]{color:#1890ff}
.main .legal-wrap .legal-toggle[data-v-de9678f6]{color:#1890ff}
.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#1890ff;background-color:#e6f7ff}
.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#e6f7ff}
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}
.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{background:#1890ff}
.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger){color:#40a9ff;border-color:#40a9ff}
.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger){color:#096dd9;border-color:#096dd9}
.ant-btn-primary{background-color:#1890ff;border-color:#1890ff}
.ant-btn-primary:focus,.ant-btn-primary:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-btn-primary.active,.ant-btn-primary:active{background-color:#096dd9;border-color:#096dd9}
.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}
.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}
.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#40a9ff}
.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-ghost.active,.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9}
.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-dashed.active,.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9}
.ant-btn-link{color:#1890ff}
.ant-btn-link:focus,.ant-btn-link:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-link.active,.ant-btn-link:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff}
.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-link{color:#1890ff}
.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#40a9ff}
.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#096dd9}
.ant-menu-submenu-selected{color:#1890ff}
.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}
.ant-menu-item>a:hover{color:#1890ff}
.ant-menu-item>.ant-badge>a:hover{color:#1890ff}
.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#1890ff}
.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#1890ff}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}
.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#1890ff));background:linear-gradient(90deg,#1890ff,#1890ff)}
.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a{color:#1890ff}
.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover{color:#1890ff;border-bottom:2px solid #1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover{color:#1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a{color:#1890ff}
.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after{border-right:3px solid #1890ff}
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}
.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}
.ant-pro-basicLayout .trigger:hover{color:#1890ff}
.ant-pro-sider-menu-sider.light .ant-pro-sider-menu-logo h1{color:#1890ff}
.ant-page-header-back-button{color:#1890ff}
.ant-page-header-back-button:focus,.ant-page-header-back-button:hover{color:#40a9ff}
.ant-page-header-back-button:active{color:#096dd9}
.ant-breadcrumb a:hover{color:#40a9ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled{color:#1890ff}
.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#1890ff;border-color:#1890ff}
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs-ink-bar{background-color:#1890ff}
.ant-tabs-nav .ant-tabs-tab:hover{color:#40a9ff}
.ant-tabs-nav .ant-tabs-tab:active{color:#096dd9}
.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff}
.ant-pro-global-header .dark .action.opened,.ant-pro-global-header .dark .action:hover{background:#1890ff}
.ant-list-item-meta-title>a:hover{color:#1890ff}
.ant-spin{color:#1890ff}
.ant-spin-dot-item{background-color:#1890ff}
.ant-pagination-item:focus,.ant-pagination-item:hover{border-color:#1890ff}
.ant-pagination-item:focus a,.ant-pagination-item:hover a{color:#1890ff}
.ant-pagination-item-active{border-color:#1890ff}
.ant-pagination-item-active a{color:#1890ff}
.ant-pagination-item-active:focus,.ant-pagination-item-active:hover{border-color:#40a9ff}
.ant-pagination-item-active:focus a,.ant-pagination-item-active:hover a{color:#40a9ff}
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}
.ant-pagination-next:hover a,.ant-pagination-prev:hover a{border-color:#40a9ff}
.ant-pagination-next:focus .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link,.ant-pagination-prev:focus .ant-pagination-item-link,.ant-pagination-prev:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}
.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff}
.ant-pagination-options-quick-jumper input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}
.ant-select-selection:hover{border-color:#40a9ff}
.ant-select-focused .ant-select-selection,.ant-select-selection:active,.ant-select-selection:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-open .ant-select-selection{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon{color:#1890ff}
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#1890ff}
.ant-switch:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-switch-checked{background-color:#1890ff}
.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}
.ant-alert-info .ant-alert-icon{color:#1890ff}
.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon .action{color:#1890ff}
.ant-pro-setting-drawer-handle{background:#1890ff}
.anticon.ant-notification-notice-icon-info{color:#1890ff}
.ant-select-auto-complete.ant-select .ant-input:focus,.ant-select-auto-complete.ant-select .ant-input:hover{border-color:#40a9ff}
.ant-input:focus,.ant-input:hover{border-color:#40a9ff}
.ant-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-group-addon .ant-select-focused .ant-select-selection,.ant-input-group-addon .ant-select-open .ant-select-selection{color:#1890ff}
.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-result-info .ant-result-icon>.anticon{color:#1890ff}
.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}
.ant-progress-bg,.ant-progress-success-bg{background-color:#1890ff}
.ant-upload.ant-upload-select-picture-card:hover{border-color:#1890ff}
.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled){border-color:#096dd9}
.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#40a9ff}
.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon{color:#40a9ff}
.ant-upload-list-item:hover .ant-upload-list-item-info{background-color:#e6f7ff}
.ant-time-picker-panel-select li:focus{color:#1890ff}
.ant-time-picker-panel-select li:hover{background:#e6f7ff}
.ant-time-picker-input:focus,.ant-time-picker-input:hover{border-color:#40a9ff}
.ant-time-picker-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-header a:hover{color:#40a9ff}
.ant-calendar-date:hover{background:#e6f7ff}
.ant-calendar-date:active{background:#40a9ff}
:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date{color:#1890ff;border-color:#1890ff}
.ant-calendar-selected-day .ant-calendar-date{background:#bae7ff}
.ant-calendar .ant-calendar-ok-btn{background-color:#1890ff;border-color:#1890ff}
.ant-calendar .ant-calendar-ok-btn:focus,.ant-calendar .ant-calendar-ok-btn:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-calendar .ant-calendar-ok-btn.active,.ant-calendar .ant-calendar-ok-btn:active{background-color:#096dd9;border-color:#096dd9}
.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date{color:#1890ff;background:#bae7ff;border-color:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date{background:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover{background:#1890ff}
.ant-calendar-range .ant-calendar-input:hover,.ant-calendar-range .ant-calendar-time-picker-input:hover{border-color:#40a9ff}
.ant-calendar-range .ant-calendar-input:focus,.ant-calendar-range .ant-calendar-time-picker-input:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-range .ant-calendar-in-range-cell:before{background:#e6f7ff}
.ant-calendar-time-picker-select li:hover{background:#e6f7ff}
.ant-calendar-time-picker-select li:focus{color:#1890ff}
.ant-calendar-month-panel-header a:hover{color:#40a9ff}
.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover{background:#1890ff}
.ant-calendar-month-panel-month:hover{background:#e6f7ff}
.ant-calendar-year-panel-header a:hover{color:#40a9ff}
.ant-calendar-year-panel-year:hover{background:#e6f7ff}
.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover{background:#1890ff}
.ant-calendar-decade-panel-header a:hover{color:#40a9ff}
.ant-calendar-decade-panel-decade:hover{background:#e6f7ff}
.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade,.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover{background:#1890ff}
.ant-calendar-week-number .ant-calendar-body tr:hover{background:#e6f7ff}
.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week{background:#bae7ff}
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}
.ant-tag-checkable-checked{background-color:#1890ff}
.ant-tag-checkable:active{background-color:#096dd9}
.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}
.ant-tag-blue-inverse{background:#1890ff;border-color:#1890ff}
.ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{background:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title{color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}
.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-navigation .ant-steps-item:before{background-color:#1890ff}
.ant-badge-status-processing{background-color:#1890ff}
.ant-badge-status-processing:after{border:1px solid #1890ff}
.ant-badge-status-blue{background:#1890ff}
.ant-table-thead>tr>th .ant-table-filter-selected.anticon{color:#1890ff}
.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on,.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on{color:#1890ff}
.ant-table-tbody>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td{background:#e6f7ff}
.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after{color:#1890ff;text-shadow:0 0 2px #bae7ff}
.ant-table-filter-dropdown-link{color:#1890ff}
.ant-table-filter-dropdown-link:hover{color:#40a9ff}
.ant-table-filter-dropdown-link:active{color:#096dd9}
.ant-table-row-expand-icon{color:#1890ff}
.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover{color:#40a9ff}
.ant-table-row-expand-icon:active{color:#096dd9}
.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#1890ff}
.ant-radio-input:focus+.ant-radio-inner{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-checked:after{border:1px solid #1890ff}
.ant-radio-inner:after{background-color:#1890ff}
.ant-radio-checked .ant-radio-inner{border-color:#1890ff}
.ant-radio-button-wrapper:hover{color:#1890ff}
.ant-radio-button-wrapper:focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#1890ff;border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:#1890ff;border-color:#1890ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{background:#40a9ff;border-color:#40a9ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{background:#096dd9;border-color:#096dd9}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1890ff}
.ant-checkbox-checked:after{border:1px solid #1890ff}
.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}
.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#1890ff}
.has-error .ant-transfer-list-search:not([disabled]):hover{border-color:#40a9ff}
.has-error .ant-transfer-list-search:not([disabled]):focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.is-validating.has-feedback .ant-form-item-children-icon{color:#1890ff}
.ant-card-actions>li>span:hover{color:#1890ff}
.ant-card-actions>li>span a:not(.ant-btn):hover,.ant-card-actions>li>span>.anticon:hover{color:#1890ff}
.ant-input-number:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#40a9ff}
.ant-input-number-focused,.ant-input-number:hover{border-color:#40a9ff}
.ant-input-number-focused{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
-501
View File
@@ -1,501 +0,0 @@
.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{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]{color:#1890ff}
.notice-header .notice-action[data-v-7e99442e]:hover{color:#40a9ff}
.notice-item.unread[data-v-7e99442e]{background:#e6f7ff}
.notice-item.unread[data-v-7e99442e]:hover{background:#bae7ff}
.notice-footer a[data-v-7e99442e]{color:#1890ff}
.notice-footer a[data-v-7e99442e]:hover{color:#40a9ff}
.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-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff}
.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}
.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}
.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-940007f2]{color:#1890ff}
: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}
: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-pro-global-header-content .anticon:hover{color:#1890ff!important}
:global .ant-pro-global-header-index-right .ant-pro-global-header-index-action:hover{color:#1890ff!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}
: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}
::-moz-selection{background:#1890ff}
::selection{background:#1890ff}
html{--antd-wave-shadow-color:#1890ff}
.ant-click-animating-node,[ant-click-animating-without-extra-node=true]:after{-webkit-box-shadow:0 0 0 0 #1890ff;box-shadow:0 0 0 0 #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}
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}
.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-67e891d2]{color:#1890ff}
.polymarket-analysis-modal .result-section .analysis-result .recommendation-section .rec-card .rec-value[data-v-67e891d2]{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}
.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-cursor{border-left:2px solid #1890ff}
.code-editor-container[data-v-4fea1865] .CodeMirror-selected{background:#e6f7ff}
.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-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)}
.symbol-select[data-v-95a351b2] .ant-select-selection:hover{border-color:#1890ff}
.symbol-select[data-v-95a351b2] .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-95a351b2]:hover{color:#1890ff}
.timeframe-item.active[data-v-95a351b2]{color:#1890ff}
.panel-header .realtime-toggle-btn[data-v-95a351b2]:hover,.panel-header .theme-toggle-btn[data-v-95a351b2]:hover{color:#1890ff}
.panel-header .realtime-toggle-btn.active[data-v-95a351b2],.panel-header .theme-toggle-btn.active[data-v-95a351b2]{color:#1890ff;background:#e6f7ff}
.indicator-card[data-v-95a351b2]:hover{border-color:#1890ff}
.indicator-card.active[data-v-95a351b2]{background:#e6f7ff;border-color:#1890ff}
.indicator-card.active .card-name[data-v-95a351b2]{color:#1890ff}
.card-action[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.edit-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon[data-v-95a351b2]:hover{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]{color:#1890ff}
.action-icon.publish-icon[data-v-95a351b2]:hover{color:#40a9ff}
.action-icon.expiry-icon[data-v-95a351b2]{color:#1890ff}
.dark-dropdown .ant-select-dropdown-menu-item-active{background-color:#e6f7ff;color:#1890ff}
.qt-header-btn[data-v-95a351b2]{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-95a351b2]:focus,.qt-header-btn[data-v-95a351b2]: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-95a351b2]{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-95a351b2]: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-95a351b2] .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-95a351b2] .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-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .panel-header .realtime-toggle-btn[data-v-95a351b2]: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-95a351b2],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-95a351b2]: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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card[data-v-95a351b2]: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-95a351b2],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-95a351b2],.chart-container.theme-dark .chart-right .indicators-panel .indicator-card .action-icon[data-v-95a351b2]: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-95a351b2]: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-95a351b2],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-95a351b2]: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)}
.indicator-community-container .market-header .header-left .page-title .anticon[data-v-f59e48f0]{color:#1890ff}
.indicator-community-container.theme-dark .admin-tabs[data-v-f59e48f0] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-btn-link{color:#40a9ff}
.indicator-community-container.theme-dark[data-v-f59e48f0] .ant-modal-content .ant-list-item-meta-title a{color:#40a9ff}
.page-header .page-title .title-icon[data-v-1e69d7a8]{-webkit-text-fill-color:#1890ff}
.empty-result .empty-icon[data-v-1e69d7a8]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);color:#1890ff}
.running-overlay .running-text[data-v-1e69d7a8]{color:#1890ff}
.chart-bars .bar[data-v-1e69d7a8]{background:#1890ff}
.add-item-active[data-v-1e69d7a8]{background:#e6f7ff!important}
.theme-dark .page-header .page-title .title-icon[data-v-1e69d7a8]{-webkit-text-fill-color:#40a9ff}
.trading-records[data-v-a5bdef7e] .ant-tag[color=blue]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#1890ff;border:1px solid rgba(24,144,255,.3)}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item:hover a{color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-item.ant-pagination-item-active{background:linear-gradient(135deg,#1890ff,#40a9ff);border-color:#1890ff}
.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-next .ant-pagination-item-link:hover,.trading-records[data-v-a5bdef7e] .ant-pagination .ant-pagination-prev .ant-pagination-item-link:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-item-active,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v-8a68b65a] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover,body.dark .trading-records[data-v] .ant-pagination-item:hover,body.realdark .trading-records[data-v] .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item:hover a,body.dark .trading-records[data-v] .ant-pagination-item:hover a,body.realdark .trading-records[data-v] .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-item-active,body.dark .trading-records[data-v] .ant-pagination-item-active,body.realdark .trading-records[data-v] .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records[data-v] .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover{border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item:hover a,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item:hover a{color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-item-active,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-item-active{background:#1890ff!important;border-color:#1890ff!important}
.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,.theme-dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.dark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records * ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-next:hover .ant-pagination-item-link,body.realdark .trading-records ::v-deep .ant-pagination .ant-pagination-prev:hover .ant-pagination-item-link{border-color:#1890ff!important;color:#1890ff!important}
.mode-card[data-v-2344f311]: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)}
.mode-card.selected[data-v-2344f311]{border-color:#1890ff;background:rgba(24,144,255,.02)}
.mode-card.selected[data-v-2344f311]:after{color:#1890ff}
.card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,#e6f7ff,#bae7ff);color:#1890ff}
.template-tag[data-v-2344f311]:hover{color:#1890ff;border-color:#1890ff;background:#e6f7ff}
.theme-dark .mode-card.selected[data-v-2344f311]:after{color:#40a9ff}
.theme-dark .card-icon.signal-icon[data-v-2344f311]{background:linear-gradient(135deg,rgba(24,144,255,.15),rgba(24,144,255,.08));color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]{border-color:rgba(24,144,255,.4);color:#40a9ff}
.theme-dark .card-btn[data-v-2344f311]:hover{border-color:#1890ff;color:#1890ff}
.theme-dark .template-tag[data-v-2344f311]:hover{color:#40a9ff}
.template-item[data-v-767abf73]:hover{border-color:#1890ff}
.ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#1890ff}
.ai-panel .ai-status[data-v-767abf73]{color:#1890ff}
.docs-panel .docs-content[data-v-767abf73] h5{color:#1890ff}
.theme-dark .side-tabs[data-v-767abf73] .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.theme-dark .ai-panel .ai-panel-title .anticon[data-v-767abf73]{color:#40a9ff}
.theme-dark .ai-panel[data-v-767abf73] textarea.ant-input:focus{border-color:#1890ff}
.theme-dark .ai-panel .ai-status[data-v-767abf73]{color:#40a9ff}
.theme-dark .docs-panel .docs-content[data-v-767abf73] h5{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper:hover{color:#40a9ff}
.theme-dark .logs-toolbar[data-v-129fed65] .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]{background:linear-gradient(135deg,#1890ff,#40a9ff);-webkit-box-shadow:0 4px 12px rgba(24,144,255,.35);box-shadow:0 4px 12px rgba(24,144,255,.35)}
.trading-assistant .strategy-list-col .strategy-list-card .card-title .ant-btn-primary[data-v-70b18ab4]:hover{-webkit-box-shadow:0 6px 16px rgba(24,144,255,.45);box-shadow:0 6px 16px rgba(24,144,255,.45)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-header .group-header-left .group-icon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item[data-v-70b18ab4]:hover{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-grouped-list .strategy-group .strategy-group-content .strategy-list-item.active[data-v-70b18ab4]{border-left-color:#1890ff}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item[data-v-70b18ab4]:hover{border-color:rgba(24,144,255,.2);-webkit-box-shadow:0 2px 12px rgba(24,144,255,.1);box-shadow:0 2px 12px rgba(24,144,255,.1)}
.trading-assistant .strategy-list-col .strategy-list-card .strategy-list-item.active[data-v-70b18ab4]{border-color:#1890ff;border-left:4px solid #1890ff;-webkit-box-shadow:0 4px 16px rgba(24,144,255,.15);box-shadow:0 4px 16px rgba(24,144,255,.15)}
.trading-assistant .strategy-detail-col .empty-detail[data-v-70b18ab4]:hover{border-color:#1890ff;background:linear-gradient(135deg,rgba(24,144,255,.02),rgba(24,144,255,.05))}
.trading-assistant .strategy-detail-col .strategy-detail-panel .strategy-header-card .strategy-header .header-left .strategy-tags .tag-item .anticon[data-v-70b18ab4]{color:#1890ff}
.trading-assistant.theme-dark .creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item[data-v-70b18ab4]:hover{background:linear-gradient(135deg,rgba(24,144,255,.08),rgba(24,144,255,.04));border-color:rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-list-col .strategy-list-item.active[data-v-70b18ab4]{background:linear-gradient(135deg,rgba(24,144,255,.12),rgba(24,144,255,.06));border-color:#1890ff;-webkit-box-shadow:0 4px 20px rgba(24,144,255,.2);box-shadow:0 4px 20px rgba(24,144,255,.2)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-header-card .strategy-tags .tag-item[data-v-70b18ab4]:hover{background:rgba(24,144,255,.1);border-color:rgba(24,144,255,.3)}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:#1890ff}
.trading-assistant.theme-dark .strategy-detail-col .strategy-content-card[data-v-70b18ab4] .ant-tabs .ant-tabs-nav .ant-tabs-ink-bar{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#40a9ff));background:linear-gradient(90deg,#1890ff,#40a9ff)}
.ai-filter-title .anticon[data-v-70b18ab4]{color:#1890ff}
.creation-mode-toggle[data-v-70b18ab4]{background:rgba(24,144,255,.04);border:1px solid rgba(24,144,255,.12)}
.strategy-type-selector .strategy-type-card[data-v-70b18ab4]:hover{border-color:#1890ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.2);box-shadow:0 2px 8px rgba(24,144,255,.2)}
.strategy-type-selector .strategy-type-card.selected[data-v-70b18ab4]{border-color:#1890ff;background-color:#e6f7ff;-webkit-box-shadow:0 2px 8px rgba(24,144,255,.3);box-shadow:0 2px 8px rgba(24,144,255,.3)}
.strategy-type-selector .strategy-type-card .strategy-type-content .strategy-type-icon[data-v-70b18ab4]{color:#1890ff}
.ip-whitelist-tip[data-v-70b18ab4]{background-color:#e6f7ff;border:1px solid #91d5ff;color:#1890ff}
.ip-whitelist-tip .anticon[data-v-70b18ab4]{color:#1890ff}
body.dark .ant-modal-wrap .ant-modal-content .creation-mode-toggle{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2)}
body.dark .ant-modal-wrap .ant-steps .ant-steps-item-finish .ant-steps-item-icon,body.dark .ant-modal-wrap .ant-steps .ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number:focus,body.dark .ant-modal-wrap .ant-input-number:hover,body.dark .ant-modal-wrap .ant-input:focus,body.dark .ant-modal-wrap .ant-input:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-input-number-handler-wrap .ant-input-number-handler:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-select .ant-select-selection:hover{border-color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper:hover{color:#1890ff}
body.dark .ant-modal-wrap .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{background:#1890ff;border-color:#1890ff}
body.dark .ant-modal-wrap .ant-switch.ant-switch-checked{background:#1890ff}
body.dark .ant-modal-wrap .ip-whitelist-tip{background:rgba(24,144,255,.08);border-color:rgba(24,144,255,.2);color:#40a9ff}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-active,body.dark .ant-select-dropdown .ant-select-dropdown-menu-item:hover{background:rgba(24,144,255,.1)}
body.dark .ant-select-dropdown .ant-select-dropdown-menu-item-selected{background:rgba(24,144,255,.15);color:#1890ff}
body.dark .ant-modal-wrap .ant-alert{background:rgba(24,144,255,.06);border-color:rgba(24,144,255,.2)}
.fast-analysis-report .loading-container .loading-content-pro .loading-header .loading-icon-pro[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report .result-container .decision-card[data-v-03feb1fa]:after{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 3%,transparent)}
.fast-analysis-report .result-container .scores-row .score-item.overall .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card.fundamental[data-v-03feb1fa]:before{background:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .detailed-analysis .analysis-card .analysis-card-header.fundamental .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .loading-icon-pro[data-v-03feb1fa],.fast-analysis-report.theme-dark .loading-container .loading-content-pro .progress-wrapper .progress-text[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .current-step[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .loading-container .loading-content-pro .steps-list .step-item.active .step-dot[data-v-03feb1fa]{background:var(--primary-color,#1890ff);-webkit-box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color,#1890ff) 15%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 5%,transparent)}
.fast-analysis-report.theme-dark .result-container .decision-card .consensus-strip .consensus-strip-title[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .price-info-row .price-card.entry .price-label[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .trend-outlook-card .trend-outlook-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item .score-header .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .scores-row .score-item.overall[data-v-03feb1fa]{background:color-mix(in srgb,var(--primary-color,#1890ff) 4%,transparent)}
.fast-analysis-report.theme-dark .result-container .indicators-section .section-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-methodology .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .indicators-section .indicators-pro-wrap .indicators-pro-title .anticon[data-v-03feb1fa]{color:var(--primary-color,#1890ff)}
.fast-analysis-report.theme-dark .result-container .feedback-section .ant-btn[data-v-03feb1fa]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 30%,transparent);color:var(--primary-color,#1890ff)}
.left-panel .calendar-box .box-header .box-title .anticon[data-v-22f26594]{color:var(--primary-color,#1890ff)}
.right-panel .analysis-toolbar .analyze-button[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 8%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card-hover-actions .wl-hover-btn[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .watchlist-panel .watchlist-list .wl-card.active .wl-card-hover-actions[data-v-22f26594]{background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--primary-color,#1890ff) 6%,transparent) 30%)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-badge[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);-webkit-box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);box-shadow:0 4px 16px color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent)}
.ai-analysis-container.theme-dark .placeholder-hero .hstat-icon[data-v-22f26594]{background:color-mix(in srgb,var(--primary-color,#1890ff) 12%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .placeholder-hero .hero-cta .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent);box-shadow:0 4px 14px color-mix(in srgb,var(--primary-color,#1890ff) 35%,transparent)}
.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-legacy .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark .right-panel .analysis-toolbar .history-button[data-v-22f26594]:hover{border-color:color-mix(in srgb,var(--primary-color,#1890ff) 45%,transparent);color:var(--primary-color,#1890ff)}
.ai-analysis-container.theme-dark .hero-cta .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark .panel-header-icon[data-v-22f26594]:hover{color:var(--primary-color,#1890ff);background:color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.ai-analysis-container.theme-dark .batch-bar .ant-btn[data-v-22f26594]:not(.ant-btn-primary):hover{border-color:var(--primary-color,#1890ff)!important;color:var(--primary-color,#1890ff)!important}
.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip.active[data-v-22f26594],.ai-analysis-container.theme-dark .watchlist-bar-compat .stock-chip[data-v-22f26594]:hover{border-color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-tab-active{color:#1890ff!important}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-tabs-ink-bar{background-color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-btn-default:hover{border-color:#1890ff;color:#1890ff}
.ai-analysis-container.theme-dark[data-v-22f26594] .ant-alert{background:rgba(24,144,255,.06)}
.hero-bg-circle.c1[data-v-22f26594]{background:radial-gradient(circle,rgba(24,144,255,.1) 0,transparent 70%)}
.hero-bg-grid[data-v-22f26594]{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-22f26594]{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08);border:1px solid rgba(24,144,255,.2)}
.hstat[data-v-22f26594]: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-22f26594]{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-22f26594]{-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-22f26594]:hover{color:var(--primary-color,#1890ff);background:rgba(24,144,255,.08)}
.batch-bar .ant-btn-primary[data-v-22f26594]{-webkit-box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent);box-shadow:0 1px 2px color-mix(in srgb,var(--primary-color,#1890ff) 20%,transparent)}
.wl-card.active[data-v-22f26594]{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color,#1890ff) 6%,#fff) 0,color-mix(in srgb,var(--primary-color,#1890ff) 4%,#fff) 100%);border-color:color-mix(in srgb,var(--primary-color,#1890ff) 28%,transparent);-webkit-box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent);box-shadow:0 1px 4px color-mix(in srgb,var(--primary-color,#1890ff) 10%,transparent)}
.wl-card.active .wl-card-hover-actions[data-v-22f26594]{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-22f26594]:hover{color:var(--primary-color,#1890ff);background:#e6f7ff}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.task-item-actions .ant-btn.ant-btn-primary[data-v-22f26594]:hover{-webkit-box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent);box-shadow:0 2px 6px color-mix(in srgb,var(--primary-color,#1890ff) 25%,transparent)}
.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 .task-item-actions .ant-btn.ant-btn-primary{background:var(--primary-color,#1890ff);border-color:var(--primary-color,#1890ff)}
.qd-dark-drawer .task-item-actions .ant-btn.ant-btn-default:hover{border-color:var(--primary-color,#1890ff);color:var(--primary-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}
.summary-card .card-icon.sync.syncing[data-v-398d904c]{color:#1890ff}
.monitor-card .monitor-body .scope-selected[data-v-398d904c]{color:#1890ff;border-bottom:1px dashed #1890ff}
.alert-symbol-info .current-price-info[data-v-398d904c]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff)}
.alert-symbol-info .current-price-info .price[data-v-398d904c]{color:#1890ff}
.position-checkbox-group .position-checkbox-item[data-v-398d904c]:hover{background:rgba(24,144,255,.05)}
.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-0b8bb4d8]{color:#1890ff}
.user-manage-page .address-text[data-v-0b8bb4d8],.user-manage-page .hash-text[data-v-0b8bb4d8]{color:#1890ff}
.user-manage-page.theme-dark .manage-tabs[data-v-0b8bb4d8] .ant-tabs-tab-active{color:#1890ff}
.user-manage-page .current-credits-info .value[data-v-0b8bb4d8],.user-manage-page .current-vip-info .value[data-v-0b8bb4d8]{color:#1890ff}
.profile-page .page-header .page-title .anticon[data-v-082fd138]{color:#1890ff}
.profile-page .profile-card .profile-info .info-item .anticon[data-v-082fd138]{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-tabs-tab-active{color:#1890ff}
.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input-password:hover,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:focus,.profile-page.theme-dark .edit-card[data-v-082fd138] .ant-input:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-table-wrapper .ant-tag-blue{background:rgba(24,144,255,.25);border-color:#1890ff;color:#69c0ff}
.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .notification-settings-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .password-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-checkbox-checked .ant-checkbox-inner,.profile-page.theme-dark .profile-form[data-v-082fd138] .ant-radio-checked .ant-radio-inner{background-color:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item:hover{border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .ant-pagination .ant-pagination-item-active{background:#1890ff;border-color:#1890ff}
.profile-page.theme-dark[data-v-082fd138] .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}
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-15e1ba02]{color:#1890ff}
.settings-page .openrouter-balance-card .ant-card[data-v-15e1ba02]{background:linear-gradient(135deg,#e6f7ff,#f0f5ff);border:1px solid #91d5ff}
.settings-page .openrouter-balance-card .balance-header .balance-title[data-v-15e1ba02]{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .ant-collapse-arrow{color:#1890ff}
.settings-page .settings-collapse[data-v-15e1ba02] .ant-collapse-item .ant-collapse-header .panel-header .panel-icon-left{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .help-icon:hover{color:#1890ff}
.settings-page .settings-form[data-v-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{color:#1890ff;background:rgba(24,144,255,.08)}
.settings-page .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-form-item-label .form-label-with-tooltip .api-link{background:rgba(24,144,255,.15)}
.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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-15e1ba02] .ant-input-number:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-number:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input-password:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-input:hover,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .ant-select-selection:focus,.settings-page.theme-dark .settings-form[data-v-15e1ba02] .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}
.main .code-login-hint .anticon[data-v-de9678f6]{color:#1890ff}
.main .auth-links a[data-v-de9678f6]{color:#1890ff}
.main .legal-wrap .legal-toggle[data-v-de9678f6]{color:#1890ff}
.ant-dropdown-menu-item-selected,.ant-dropdown-menu-item-selected>a,.ant-dropdown-menu-submenu-title-selected,.ant-dropdown-menu-submenu-title-selected>a{color:#1890ff;background-color:#e6f7ff}
.ant-dropdown-menu-item:hover,.ant-dropdown-menu-submenu-title:hover{background-color:#e6f7ff}
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title{color:#1890ff}
.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected>a{background:#1890ff}
.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger){color:#40a9ff;border-color:#40a9ff}
.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger){color:#096dd9;border-color:#096dd9}
.ant-btn-primary{background-color:#1890ff;border-color:#1890ff}
.ant-btn-primary:focus,.ant-btn-primary:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-btn-primary.active,.ant-btn-primary:active{background-color:#096dd9;border-color:#096dd9}
.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#40a9ff;border-left-color:#40a9ff}
.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#40a9ff}
.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#40a9ff}
.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-ghost.active,.ant-btn-ghost:active{color:#096dd9;border-color:#096dd9}
.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-dashed.active,.ant-btn-dashed:active{color:#096dd9;border-color:#096dd9}
.ant-btn-link{color:#1890ff}
.ant-btn-link:focus,.ant-btn-link:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-link.active,.ant-btn-link:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-primary{color:#1890ff;border-color:#1890ff}
.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#40a9ff;border-color:#40a9ff}
.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#096dd9;border-color:#096dd9}
.ant-btn-background-ghost.ant-btn-link{color:#1890ff}
.ant-btn-background-ghost.ant-btn-link:focus,.ant-btn-background-ghost.ant-btn-link:hover{color:#40a9ff}
.ant-btn-background-ghost.ant-btn-link.active,.ant-btn-background-ghost.ant-btn-link:active{color:#096dd9}
.ant-menu-submenu-selected{color:#1890ff}
.ant-menu-item:active,.ant-menu-submenu-title:active{background:#e6f7ff}
.ant-menu-item>a:hover{color:#1890ff}
.ant-menu-item>.ant-badge>a:hover{color:#1890ff}
.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#1890ff}
.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#1890ff}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#e6f7ff}
.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#1890ff),to(#1890ff));background:linear-gradient(90deg,#1890ff,#1890ff)}
.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a,.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a{color:#1890ff}
.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover{color:#1890ff;border-bottom:2px solid #1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover{color:#1890ff}
.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a{color:#1890ff}
.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after{border-right:3px solid #1890ff}
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#1890ff}
.ant-modal-confirm-info .ant-modal-confirm-body>.anticon{color:#1890ff}
.ant-pro-basicLayout .trigger:hover{color:#1890ff}
.ant-pro-sider-menu-sider.light .ant-pro-sider-menu-logo h1{color:#1890ff}
.ant-page-header-back-button{color:#1890ff}
.ant-page-header-back-button:focus,.ant-page-header-back-button:hover{color:#40a9ff}
.ant-page-header-back-button:active{color:#096dd9}
.ant-breadcrumb a:hover{color:#40a9ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled{color:#1890ff}
.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#1890ff;border-color:#1890ff}
.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#1890ff}
.ant-tabs-ink-bar{background-color:#1890ff}
.ant-tabs-nav .ant-tabs-tab:hover{color:#40a9ff}
.ant-tabs-nav .ant-tabs-tab:active{color:#096dd9}
.ant-tabs-nav .ant-tabs-tab-active{color:#1890ff}
.ant-pro-global-header .dark .action.opened,.ant-pro-global-header .dark .action:hover{background:#1890ff}
.ant-list-item-meta-title>a:hover{color:#1890ff}
.ant-spin{color:#1890ff}
.ant-spin-dot-item{background-color:#1890ff}
.ant-pagination-item:focus,.ant-pagination-item:hover{border-color:#1890ff}
.ant-pagination-item:focus a,.ant-pagination-item:hover a{color:#1890ff}
.ant-pagination-item-active{border-color:#1890ff}
.ant-pagination-item-active a{color:#1890ff}
.ant-pagination-item-active:focus,.ant-pagination-item-active:hover{border-color:#40a9ff}
.ant-pagination-item-active:focus a,.ant-pagination-item-active:hover a{color:#40a9ff}
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon,.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon{color:#1890ff}
.ant-pagination-next:hover a,.ant-pagination-prev:hover a{border-color:#40a9ff}
.ant-pagination-next:focus .ant-pagination-item-link,.ant-pagination-next:hover .ant-pagination-item-link,.ant-pagination-prev:focus .ant-pagination-item-link,.ant-pagination-prev:hover .ant-pagination-item-link{color:#1890ff;border-color:#1890ff}
.ant-pagination-options-quick-jumper input:focus,.ant-pagination-options-quick-jumper input:hover{border-color:#40a9ff}
.ant-pagination-options-quick-jumper input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-pagination-simple .ant-pagination-simple-pager input:hover{border-color:#1890ff}
.ant-select-selection:hover{border-color:#40a9ff}
.ant-select-focused .ant-select-selection,.ant-select-selection:active,.ant-select-selection:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-open .ant-select-selection{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled){background-color:#e6f7ff}
.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon{color:#1890ff}
.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon{color:#1890ff}
.ant-switch:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-switch-checked{background-color:#1890ff}
.ant-alert-info{background-color:#e6f7ff;border:1px solid #91d5ff}
.ant-alert-info .ant-alert-icon{color:#1890ff}
.ant-message-info .anticon,.ant-message-loading .anticon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon{color:#1890ff}
.ant-pro-setting-drawer-block-checbox-selectIcon .action{color:#1890ff}
.ant-pro-setting-drawer-handle{background:#1890ff}
.anticon.ant-notification-notice-icon-info{color:#1890ff}
.ant-select-auto-complete.ant-select .ant-input:focus,.ant-select-auto-complete.ant-select .ant-input:hover{border-color:#40a9ff}
.ant-input:focus,.ant-input:hover{border-color:#40a9ff}
.ant-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-group-addon .ant-select-focused .ant-select-selection,.ant-input-group-addon .ant-select-open .ant-select-selection{color:#1890ff}
.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-result-info .ant-result-icon>.anticon{color:#1890ff}
.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path{stroke:#1890ff}
.ant-progress-bg,.ant-progress-success-bg{background-color:#1890ff}
.ant-upload.ant-upload-select-picture-card:hover{border-color:#1890ff}
.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled){border-color:#096dd9}
.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover{border-color:#40a9ff}
.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon{color:#40a9ff}
.ant-upload-list-item:hover .ant-upload-list-item-info{background-color:#e6f7ff}
.ant-time-picker-panel-select li:focus{color:#1890ff}
.ant-time-picker-panel-select li:hover{background:#e6f7ff}
.ant-time-picker-input:focus,.ant-time-picker-input:hover{border-color:#40a9ff}
.ant-time-picker-input:focus{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff}
.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled){border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-header a:hover{color:#40a9ff}
.ant-calendar-date:hover{background:#e6f7ff}
.ant-calendar-date:active{background:#40a9ff}
:not(.ant-calendar-selected-date):not(.ant-calendar-selected-day).ant-calendar-today .ant-calendar-date{color:#1890ff;border-color:#1890ff}
.ant-calendar-selected-day .ant-calendar-date{background:#bae7ff}
.ant-calendar .ant-calendar-ok-btn{background-color:#1890ff;border-color:#1890ff}
.ant-calendar .ant-calendar-ok-btn:focus,.ant-calendar .ant-calendar-ok-btn:hover{background-color:#40a9ff;border-color:#40a9ff}
.ant-calendar .ant-calendar-ok-btn.active,.ant-calendar .ant-calendar-ok-btn:active{background-color:#096dd9;border-color:#096dd9}
.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date{color:#1890ff;background:#bae7ff;border-color:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date{background:#1890ff}
.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover,.ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover{background:#1890ff}
.ant-calendar-range .ant-calendar-input:hover,.ant-calendar-range .ant-calendar-time-picker-input:hover{border-color:#40a9ff}
.ant-calendar-range .ant-calendar-input:focus,.ant-calendar-range .ant-calendar-time-picker-input:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-calendar-range .ant-calendar-in-range-cell:before{background:#e6f7ff}
.ant-calendar-time-picker-select li:hover{background:#e6f7ff}
.ant-calendar-time-picker-select li:focus{color:#1890ff}
.ant-calendar-month-panel-header a:hover{color:#40a9ff}
.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month,.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover{background:#1890ff}
.ant-calendar-month-panel-month:hover{background:#e6f7ff}
.ant-calendar-year-panel-header a:hover{color:#40a9ff}
.ant-calendar-year-panel-year:hover{background:#e6f7ff}
.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year,.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover{background:#1890ff}
.ant-calendar-decade-panel-header a:hover{color:#40a9ff}
.ant-calendar-decade-panel-decade:hover{background:#e6f7ff}
.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade,.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover{background:#1890ff}
.ant-calendar-week-number .ant-calendar-body tr:hover{background:#e6f7ff}
.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week{background:#bae7ff}
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover{color:#1890ff}
.ant-tag-checkable-checked{background-color:#1890ff}
.ant-tag-checkable:active{background-color:#096dd9}
.ant-tag-blue{color:#1890ff;background:#e6f7ff;border-color:#91d5ff}
.ant-tag-blue-inverse{background:#1890ff;border-color:#1890ff}
.ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{border-color:#1890ff}
:not(.ant-steps-item-process).ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
:not(.ant-steps-item-custom).ant-steps-item-process .ant-steps-item-icon{background:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon{border-color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-item-finish .ant-steps-item-icon>.ant-steps-icon .ant-steps-icon-dot{background:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-content>.ant-steps-item-title:after{background-color:#1890ff}
.ant-steps-item-finish>.ant-steps-item-container>.ant-steps-item-tail:after{background-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-description,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle,.ant-steps .ant-steps-item:not(.ant-steps-item-active)>.ant-steps-item-container[role=button]:hover .ant-steps-item-title{color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon{border-color:#1890ff}
.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process)>.ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon{color:#1890ff}
.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon{color:#1890ff}
.ant-steps-navigation .ant-steps-item:before{background-color:#1890ff}
.ant-badge-status-processing{background-color:#1890ff}
.ant-badge-status-processing:after{border:1px solid #1890ff}
.ant-badge-status-blue{background:#1890ff}
.ant-table-thead>tr>th .ant-table-filter-selected.anticon{color:#1890ff}
.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on,.ant-table-thead>tr>th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on{color:#1890ff}
.ant-table-tbody>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td,.ant-table-thead>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td{background:#e6f7ff}
.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after{color:#1890ff;text-shadow:0 0 2px #bae7ff}
.ant-table-filter-dropdown-link{color:#1890ff}
.ant-table-filter-dropdown-link:hover{color:#40a9ff}
.ant-table-filter-dropdown-link:active{color:#096dd9}
.ant-table-row-expand-icon{color:#1890ff}
.ant-table-row-expand-icon:focus,.ant-table-row-expand-icon:hover{color:#40a9ff}
.ant-table-row-expand-icon:active{color:#096dd9}
.ant-radio-input:focus+.ant-radio-inner,.ant-radio-wrapper:hover .ant-radio,.ant-radio:hover .ant-radio-inner{border-color:#1890ff}
.ant-radio-input:focus+.ant-radio-inner{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-checked:after{border:1px solid #1890ff}
.ant-radio-inner:after{background-color:#1890ff}
.ant-radio-checked .ant-radio-inner{border-color:#1890ff}
.ant-radio-button-wrapper:hover{color:#1890ff}
.ant-radio-button-wrapper:focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){color:#1890ff;border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before{background-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child{border-color:#1890ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{color:#40a9ff;border-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before{background-color:#40a9ff}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{color:#096dd9;border-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before{background-color:#096dd9}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled){background:#1890ff;border-color:#1890ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover{background:#40a9ff;border-color:#40a9ff}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active{background:#096dd9;border-color:#096dd9}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within{-webkit-box-shadow:0 0 0 3px rgba(24,144,255,.08);box-shadow:0 0 0 3px rgba(24,144,255,.08)}
.ant-checkbox-input:focus+.ant-checkbox-inner,.ant-checkbox-wrapper:hover .ant-checkbox-inner,.ant-checkbox:hover .ant-checkbox-inner{border-color:#1890ff}
.ant-checkbox-checked:after{border:1px solid #1890ff}
.ant-checkbox-checked .ant-checkbox-inner{background-color:#1890ff;border-color:#1890ff}
.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#1890ff}
.has-error .ant-transfer-list-search:not([disabled]):hover{border-color:#40a9ff}
.has-error .ant-transfer-list-search:not([disabled]):focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.is-validating.has-feedback .ant-form-item-children-icon{color:#1890ff}
.ant-card-actions>li>span:hover{color:#1890ff}
.ant-card-actions>li>span a:not(.ant-btn):hover,.ant-card-actions>li>span>.anticon:hover{color:#1890ff}
.ant-input-number:focus{border-color:#40a9ff;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.ant-input-number-handler:hover .ant-input-number-handler-down-inner,.ant-input-number-handler:hover .ant-input-number-handler-up-inner{color:#40a9ff}
.ant-input-number-focused,.ant-input-number:hover{border-color:#40a9ff}
.ant-input-number-focused{-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}
+1 -1
View File
@@ -421,4 +421,4 @@
.brand-text {
font-size: 20px;
}
}</style><script defer="defer" src="/js/chunk-vendors.eba0ce83.js" type="module"></script><script defer="defer" src="/js/app.122b293c.js" type="module"></script><link href="/css/chunk-vendors.b8cb9e53.css" rel="stylesheet"><link href="/css/app.9dca4aef.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.54d4147a.js" nomodule></script><script defer="defer" src="/js/app-legacy.9e088294.js" nomodule></script></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div class="first-loading-wrp"><h2>Landing</h2><div class="loading-wrp"><div class="pixel-cat-container"><div class="ground"></div><div class="pixel-cat"><div class="cat-head"><div class="cat-ear-left"></div><div class="cat-ear-right"></div><div class="cat-eye-left"></div><div class="cat-eye-right"></div><div class="cat-nose"></div><div class="cat-whiskers"></div></div><div class="cat-body"></div><div class="cat-leg-front-left"></div><div class="cat-leg-front-right"></div><div class="cat-leg-back-left"></div><div class="cat-leg-back-right"></div><div class="cat-tail"></div></div></div></div><div class="brand-text">QuantDinger</div></div></div></body></html>
}</style><script defer="defer" src="/js/chunk-vendors.ebabb02b.js" type="module"></script><script defer="defer" src="/js/app.5b7d4d9e.js" type="module"></script><link href="/css/chunk-vendors.b8cb9e53.css" rel="stylesheet"><link href="/css/app.9dca4aef.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors-legacy.f624f594.js" nomodule></script><script defer="defer" src="/js/app-legacy.5c46ff8f.js" nomodule></script></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div class="first-loading-wrp"><h2>Landing</h2><div class="loading-wrp"><div class="pixel-cat-container"><div class="ground"></div><div class="pixel-cat"><div class="cat-head"><div class="cat-ear-left"></div><div class="cat-ear-right"></div><div class="cat-eye-left"></div><div class="cat-eye-right"></div><div class="cat-nose"></div><div class="cat-whiskers"></div></div><div class="cat-body"></div><div class="cat-leg-front-left"></div><div class="cat-leg-front-right"></div><div class="cat-leg-back-left"></div><div class="cat-leg-back-right"></div><div class="cat-tail"></div></div></div></div><div class="brand-text">QuantDinger</div></div></div></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-16
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More