// ==UserScript== // @name HSGuru-Chinese-Plus // @namespace https://www.hsguru.com/ // @version 2.1.0 // @author QuanQuan // @description 将HSGuru网站的部分英文替换为中文,并提供界面美化及功能优化。 // @match https://www.hsguru.com/* // @connect api2.iyingdi.com // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // ==/UserScript== (function () { 'use strict'; const CATEGORIES = { STYLE: "界面美化", TRANSLATION: "翻译功能", ENHANCEMENT: "增强功能" }; const FEATURES = { UI: { enabled: true, handler: null, name: "基础样式美化", category: "STYLE", description: "优化网站的基础背景、导航栏及卡牌样式。" }, FILTER_STYLE: { enabled: true, handler: null, name: "筛选器美化", category: "STYLE", description: "美化筛选器外观,使其更加现代且易于使用。" }, RUNE: { enabled: true, handler: null, name: "死亡骑士符文美化", category: "STYLE", description: "为死亡骑士职业的卡牌添加精美的符文颜色标识。" }, MANA: { enabled: true, handler: null, name: "法力水晶美化", category: "STYLE", description: "将法力水晶数值替换为更具质感的图形化图标。" }, TITLE_STYLE: { enabled: true, handler: null, name: "页面主标题样式美化", category: "STYLE", description: "优化主标题的字体大小、颜色及排版样式。" }, SUB_STYLE: { enabled: true, handler: null, name: "页面副标题样式美化", category: "STYLE", description: "为副标题添加更美观的样式修饰。" }, TABLE_STYLE: { enabled: true, handler: null, name: "表格样式美化", category: "STYLE", description: "优化表格的行高、背景色及边框,提升阅读体验。" }, BASIC: { enabled: true, handler: null, name: "基础UI翻译", category: "TRANSLATION", description: "翻译页面中基础的导航项、按钮及通知文字。" }, FILTER: { enabled: true, handler: null, name: "筛选器翻译", category: "TRANSLATION", description: "对卡组列表中的格式、排名、职业等筛选条件进行中文翻译。" }, SEARCH: { enabled: true, handler: null, name: "搜索框翻译", category: "TRANSLATION", description: "为卡牌数据库的搜索框提供中文翻译支持。" }, DECK: { enabled: true, handler: null, name: "卡组名称翻译", category: "TRANSLATION", description: "对卡组详情页的卡组名称进行规则化翻译。" }, CARD: { enabled: true, handler: null, name: "卡牌名称翻译", category: "TRANSLATION", description: "将卡牌数据库及卡组中的英文卡名替换为官方中文名称。" }, TAG: { enabled: true, handler: null, name: "卡组局数标签翻译", category: "TRANSLATION", description: "在卡组列表上翻译局数、胜率等标签文字。" }, TITLE: { enabled: true, handler: null, name: "页面主标题翻译", category: "TRANSLATION", description: '翻译各个页面的主标题,如"Decks"、"Meta"等。' }, SUB: { enabled: true, handler: null, name: "页面副标题翻译", category: "TRANSLATION", description: "翻译页面中的副标题及相关辅助说明文字。" }, TABLE: { enabled: true, handler: null, name: "表格翻译", category: "TRANSLATION", description: "翻译数据表格中的表头、统计项及内容文字。" }, AD: { enabled: true, handler: null, name: "广告移除", category: "ENHANCEMENT", description: "自动隐藏页面中影响阅读的各种广告位。" }, CARD_LINK: { enabled: true, handler: null, name: "移除卡牌超链接", category: "ENHANCEMENT", description: "移除卡组列表中可能干扰操作的卡牌名称超链接。" }, CLIPBOARD: { enabled: true, handler: null, name: "卡组复制按钮增强", category: "ENHANCEMENT", description: "增强卡组代码复制功能,提供更友好的交互提示。" }, SCROLL_TOP: { enabled: true, handler: null, name: "返回顶部按钮", category: "ENHANCEMENT", description: "在页面右下角添加一个悬浮按钮,点击可快速返回页面顶部。" } }; const SELECTORS = { DECK_TITLE: "h2.deck-title > span > a", DECK_LINK: "a.deck-title", BASIC_DECK_TITLE: "a.basic-black-text.deck-title", CARD_NAME: "div.card-name.deck-text", NAV_BASE: "#burger-toggle > div.navbar-start" }; const DEFAULT_CLASS_ACCENT = "#9a8768"; const DEFAULT_CLASS_BG = "rgba(154, 135, 104, 0.10)"; const CLASS_ACCENT_COLORS = { deathknight: "#c51e35", demonhunter: "#5aa832", druid: "#c67a2d", hunter: "#5a9f44", mage: "#36b9d4", paladin: "#d8c936", priest: "#b8ad98", rogue: "#d3b63b", shaman: "#1581cf", warlock: "#a931c7", warrior: "#bf8a55" }; const CLASS_BG_COLORS = { deathknight: "rgba(197, 30, 53, 0.13)", demonhunter: "rgba(90, 168, 50, 0.13)", druid: "rgba(198, 122, 45, 0.13)", hunter: "rgba(90, 159, 68, 0.13)", mage: "rgba(54, 185, 212, 0.13)", paladin: "rgba(216, 201, 54, 0.13)", priest: "rgba(184, 173, 152, 0.13)", rogue: "rgba(211, 182, 59, 0.13)", shaman: "rgba(21, 129, 207, 0.13)", warlock: "rgba(169, 49, 199, 0.13)", warrior: "rgba(191, 138, 85, 0.13)" }; const BASE_URL = "https://www.hsguru.com/"; const ROUTES = { DECKS: "/decks", DECKS_QUERY: "/decks?", DECK_BUILDER: "/deckbuilder", CARD_STATS: "/card-stats", CARD_STATS_QUERY: "/card-stats?", CARD_STATS_BY_ARCHETYPE: "/card-stats?archetype=", ARCHETYPE: "/archetype/", REPLAYS_QUERY: "/replays?", REPLAYS_WITH_URL: "/replays?has_replay_url=true", REPLAYS_BY_ARCHETYPE: "/replays?archetype=", DECK_DETAIL: "/deck/", LEADERBOARD_PLAYER_STATS: "/leaderboard/player-stats" }; const DATASET = { CLIPBOARD_TEXT: "data-clipboard-text", BALLOON_POS: "data-balloon-pos" }; const UI_TEXT = { COPY_SUCCESS_LABEL: "卡组代码已复制", NO_RANK: "暂无排名", LOW_SAMPLE: "样本不足", SEPARATOR: "/" }; const CLASSES = { DECK_CARD_SHELL: "hsguru-deck-card-shell", DECK_SUMMARY: "hsguru-deck-summary", DECK_SUMMARY_ROW: "hsguru-deck-summary-row", DECK_SUMMARY_TITLE: "hsguru-deck-summary-title", HIDDEN_DECK_CODE: "hsguru-hidden-deck-code", DECK_ICON_BUTTON: "hsguru-deck-icon-button", DECK_DUST_BAR: "hsguru-deck-dust-bar", STREAMER_FILTERS: "hsguru-streamer-filters", LEADERBOARD_FILTERS: "hsguru-leaderboard-filters", LEADERBOARD_NAV_BUTTON: "hsguru-leaderboard-nav-button", LEADERBOARD_SEARCH_FORM: "hsguru-leaderboard-search-form", LEADERBOARD_SEARCH_INPUT: "hsguru-leaderboard-search-input", LEADERBOARD_INLINE_INPUT: "hsguru-leaderboard-inline-input", LEADERBOARD_INLINE_FORM: "hsguru-leaderboard-inline-form", LEADERBOARD_INLINE_FIELD: "hsguru-leaderboard-inline-field", META_TABLE: "hsguru-meta-table", META_ARCHETYPE_CELL: "hsguru-meta-archetype-cell", STREAMER_DECKS_TABLE: "hsguru-streamer-decks-table", STREAMER_DECK_CELL: "hsguru-streamer-deck-cell", STREAMER_EMPTY_RANK: "hsguru-streamer-empty-rank", MATCHUPS_WRAPPER: "hsguru-matchups-wrapper", MATCHUPS_TABLE: "hsguru-matchups-table", MATCHUPS_ACTION: "hsguru-matchups-action", MATCHUPS_ACTION_WINRATE: "hsguru-matchups-action-winrate", MATCHUPS_ACTION_FILL: "hsguru-matchups-action-fill", MATCHUPS_ACTION_RESET: "hsguru-matchups-action-reset", MATCHUPS_ACTION_USAGE: "hsguru-matchups-action-usage", MATCHUPS_ACTION_ARCHETYPE: "hsguru-matchups-action-archetype", MATCHUPS_META_HEADER: "hsguru-matchups-meta-header", MATCHUPS_META_SEPARATOR: "hsguru-matchups-meta-separator", MATCHUPS_CORNER_CELL: "hsguru-matchups-corner-cell", MATCHUPS_DECK_HEADER: "hsguru-matchups-deck-header", MATCHUPS_STICKY_COL: "hsguru-matchups-sticky-col", MATCHUPS_WINRATE_CELL: "hsguru-matchups-winrate-cell", MATCHUPS_STICKY_COL_2: "hsguru-matchups-sticky-col-2", MATCHUPS_ARCHETYPE_CELL: "hsguru-matchups-archetype-cell", MATCHUPS_DECK_CELL: "hsguru-matchups-deck-cell", MATCHUPS_HEAT_CELL: "hsguru-matchups-heat-cell", MATCHUPS_LOW_SAMPLE: "hsguru-matchups-low-sample" }; const API = { CARD_TRANSLATION: "https://api2.iyingdi.com/hearthstone/card/search/vertical", FIRESTONE: "https://www.firestoneapp.com/", BLIZZARD: "hearthstone.blizzard.com" }; const staticPrefix = { "Splendiferous Whizbang": "酷炫的威兹班", "No Minion": "无随从", "End of Turnadin": "回合结束骑", "Tick Tock": "提克和托克", Harold: "兆示", Control: "控制", Egglock: "蛋术", Merithra: "麦琳瑟拉", Egg: "蛋", Broxigar: "布洛克加斯", Kingslayer: "弑君者", Discolock: "弃牌术", CtA: "战斗号角", Seedlock: "任务术", Lynessa: "莱妮莎", Boar: "猪猪", Plague: "瘟疫", Gladiator: "角斗", Rafaamlock: "拉法姆术", "No Hand": "无牌", Burn: "火焰", Beast: "野兽", Mech: "机械", Dragon: "龙", Elemental: "元素", Demon: "恶魔", Draenei: "德莱尼", Pirate: "海盗", Murloc: "鱼人", Undead: "亡灵", Protoss: "星灵", Terran: "人族", Zerg: "异虫", Unholy: "邪恶", Blood: "鲜血", Frost: "冰", Arcane: "奥术", Shadow: "暗影", Fel: "邪能", Taunt: "嘲讽", Deathrattle: "亡语", Weapon: "武器", Secret: "奥秘", Location: "地标", Spell: "法术", Starship: "星舰", Enrage: "激怒", Copy: "复制", Odd: "奇数", Even: "偶数", Questline: "任务", Quest: "任务", Discover: "发现", Outcast: "流放", Aura: "光环", Combo: "连击", Imbue: "灌注", Libram: "圣契", Corpse: "残骸", Handbuff: "污手", HL: "宇宙", Highlander: "宇宙", XL: "40", STD: "标准", Other: "其他", Aggro: "快攻", Armor: "叠甲", Bounce: "减费", Defense: "防御", Damage: "伤害", Pain: "自伤", Cycle: "过牌", Fatigue: "疲劳", Mill: "洗牌", Thief: "偷窃", Miracle: "奇迹", Deckless: "无牌", Token: "衍生物", Topdeck: "顶牌", Endseer: "爆牌" }; const classSuffix = { Warlock: "术", Druid: "德", Priest: "牧", Rogue: "贼", Mage: "法", Hunter: "猎", Paladin: "骑", Shaman: "萨", Warrior: "战", DH: "瞎", DK: "死骑" }; const STORAGE_PREFIX = { CONFIG: "hsguru_config", CUSTOM_DECK: "hsguru_custom_deck_names", CUSTOM_CARD: "hsguru_custom_card_names", CARD_TRANSLATION: "hsguru_card_", CARD_IMAGE: "hsguru_card_image_", CACHE_MIGRATED: "hsguru_cache_migrated", DATA_MIGRATED: "hsguru_data_migrated" }; const MAX_CONCURRENT_REQUESTS = 2; const REQUEST_DELAY = 500; const BUTTON_TITLES = { Winrate: "按胜率排序", "Seed Weights": "按当前使用率填充权重", "Reset Weights": "重置自定义权重", Popularity: "按使用率排序", Archetype: "按卡组职业排序" }; const storageKey = { config() { return STORAGE_PREFIX.CONFIG; }, customDeck() { return STORAGE_PREFIX.CUSTOM_DECK; }, customCard() { return STORAGE_PREFIX.CUSTOM_CARD; }, cardTranslation(cardName) { return `${STORAGE_PREFIX.CARD_TRANSLATION}${cardName}`; }, cardImage(cardName) { return `${STORAGE_PREFIX.CARD_IMAGE}${cardName}`; }, cacheMigrated() { return STORAGE_PREFIX.CACHE_MIGRATED; }, dataMigrated() { return STORAGE_PREFIX.DATA_MIGRATED; } }; const StorageManager = { gm: { get(key, defaultValue = null) { try { const value = GM_getValue(key, defaultValue); return value; } catch (e) { console.warn(`[HSGuru] GM_getValue 失败: ${key}`, e); return defaultValue; } }, set(key, value) { try { GM_setValue(key, value); } catch (e) { console.error(`[HSGuru] GM_setValue 失败: ${key}`, e); } }, remove(key) { try { GM_setValue(key, void 0); } catch (e) { console.error(`[HSGuru] GM_setValue 删除失败: ${key}`, e); } } }, local: { get(key, defaultValue = null) { try { const value = localStorage.getItem(key); return value !== null ? JSON.parse(value) : defaultValue; } catch (e) { console.warn(`[HSGuru] localStorage 读取失败: ${key}`, e); return defaultValue; } }, set(key, value) { try { localStorage.setItem(key, JSON.stringify(value)); } catch (e) { console.error(`[HSGuru] localStorage 写入失败: ${key}`, e); } }, remove(key) { try { localStorage.removeItem(key); } catch (e) { console.error(`[HSGuru] localStorage 删除失败: ${key}`, e); } } } }; function getCardCacheKey(cardName) { return storageKey.cardTranslation(cardName); } function migrateLegacyCardCache() { const migrated = localStorage.getItem(storageKey.cacheMigrated()); if (migrated) return; console.log("[HSGuru] 开始迁移旧版卡牌缓存..."); let migratedCount = 0; for (let i = localStorage.length - 1; i >= 0; i--) { const key = localStorage.key(i); if (!key) continue; if (key.startsWith("hsguru_")) continue; if (/^[a-zA-Z0-9\s'.,!?&\-]+$/.test(key)) { const value = localStorage.getItem(key); if (value && typeof value === "string" && value.length > 0) { localStorage.setItem(getCardCacheKey(key), value); localStorage.removeItem(key); migratedCount++; } } } localStorage.setItem(storageKey.cacheMigrated(), "true"); console.log(`[HSGuru] 卡牌缓存迁移完成,共迁移 ${migratedCount} 条`); } function migrateLegacyData() { const migrated = StorageManager.gm.get(storageKey.dataMigrated()); if (migrated) return; console.log("[HSGuru] 开始迁移旧版数据到 GM 存储..."); let migratedCount = 0; const oldConfig = localStorage.getItem(storageKey.config()); if (oldConfig) { try { StorageManager.gm.set(storageKey.config(), JSON.parse(oldConfig)); localStorage.removeItem(storageKey.config()); migratedCount++; } catch (e) { console.error("[HSGuru] 配置迁移失败", e); } } const oldDeckNames = localStorage.getItem(storageKey.customDeck()); if (oldDeckNames) { try { StorageManager.gm.set(storageKey.customDeck(), JSON.parse(oldDeckNames)); localStorage.removeItem(storageKey.customDeck()); migratedCount++; } catch (e) { console.error("[HSGuru] 卡组翻译迁移失败", e); } } const oldCardNames = localStorage.getItem(storageKey.customCard()); if (oldCardNames) { try { StorageManager.gm.set(storageKey.customCard(), JSON.parse(oldCardNames)); localStorage.removeItem(storageKey.customCard()); migratedCount++; } catch (e) { console.error("[HSGuru] 卡牌翻译迁移失败", e); } } StorageManager.gm.set(storageKey.dataMigrated(), true); console.log(`[HSGuru] GM 存储迁移完成,共迁移 ${migratedCount} 项数据`); } const queryCache = { cache: new WeakMap(), maxSize: 1e3, rootCacheSizes: new Map(), lastAccessTime: new Map(), getOrCreate(selector, root = document) { if (!this.cache.has(root)) { this.cache.set(root, new Map()); this.rootCacheSizes.set(root, 0); } const rootCache = this.cache.get(root); const size = this.rootCacheSizes.get(root); if (!rootCache.has(selector)) { if (size >= this.maxSize) { let oldestTime = Date.now(); let oldestSelector = null; for (const [key, time] of this.lastAccessTime.entries()) { if (time < oldestTime) { oldestTime = time; oldestSelector = key; } } if (oldestSelector) { rootCache.delete(oldestSelector); this.lastAccessTime.delete(oldestSelector); this.rootCacheSizes.set(root, size - 1); } } rootCache.set(selector, Array.from(root.querySelectorAll(selector))); this.rootCacheSizes.set(root, size + 1); } this.lastAccessTime.set(selector, Date.now()); return rootCache.get(selector); }, clear() { this.cache = new WeakMap(); this.rootCacheSizes = new Map(); this.lastAccessTime = new Map(); }, remove(selector, root = document) { if (this.cache.has(root)) { const rootCache = this.cache.get(root); rootCache?.delete(selector); } } }; const uiStyles = ` :root { --hsguru-font-sans: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; --hsguru-font-serif: Georgia, "Times New Roman", serif; } body { background-color: #e8d3a6 !important; font-family: var(--hsguru-font-sans) !important; line-height: 1.6 !important; } body, button, input, select, textarea { font-family: var(--hsguru-font-sans) !important; } h1, h2, h3, h4, h5, h6, .title, .subtitle.is-1, .subtitle.is-2, .subtitle.is-3, .deck-title, .basic-black-text.deck-title, .hsguru-feature-name, .hsguru-modal-title, .hsguru-sidebar-title { font-family: var(--hsguru-font-serif) !important; font-weight: 500 !important; } #main-navbar { backdrop-filter: blur(20px) !important; background-color: rgba(60, 42, 41, .8) !important; } .card { border: 2px solid #585049 !important; outline: 3px solid #342e2a !important; background-color: #3e3630 !important; margin: 0 auto !important; } .card:hover { border: 2px solid #70aff7 !important; outline: 3px solid #c7ffff !important; box-shadow: inset 0 0 20px rgba(78, 185, 230, 0.8), inset 0 0 35px rgba(0, 149, 255, 0.6) !important; } .clip-btn-value.hsguru-copy-success, .hsguru-deck-icon-button.hsguru-copy-success { color: #1d8f55 !important; transform: scale(1.08); transition: transform 0.18s ease, color 0.18s ease; } .hsguru-copy-toast { position: fixed; top: 78px; right: 24px; z-index: 10001; padding: 10px 14px; border: 1px solid rgba(57, 44, 30, 0.55); border-radius: 10px; background: rgba(34, 25, 17, 0.92); box-shadow: rgba(0, 0, 0, 0.24) 0 8px 24px; color: #f5ead0; font-size: 13px; font-weight: 700; opacity: 0; pointer-events: none; transform: translateY(-8px); transition: opacity 0.18s ease, transform 0.18s ease; } .hsguru-copy-toast.is-visible { opacity: 1; transform: translateY(0); } .has-text-right.card-number.deck-text.decklist-card-background.is-unselectable { color:#f4d442 !important; font-weight: bold !important; } .footer { background-color: #170e09 !important; } `; const filterStyles = ` .filters-container { position: sticky !important; top: 0 !important; z-index: 20 !important; display: flex !important; align-items: flex-start !important; gap: 10px !important; flex-wrap: wrap !important; width: 100% !important; max-width: 100% !important; box-sizing: border-box !important; background: url(data:image/webp;base64,UklGRoQQAABXRUJQVlA4WAoAAAAQAAAA/wkAdgAAQUxQSH4AAAABd6AgAAhEN//fuhER8cxqkb23nWFgCNm2kK+QQgoppJBCCimkkEIKKaSQQjRnZiP6n4P//Oc///nPf/7zn//85z//+c9//vOf//znP//5z3/+85///Oc///nPf/7zn0d//r78vfl78nfn78rfmb8jf3v+tvyt+VvyN+dvyh9WUDgg4A8AAJCvAJ0BKgAKdwA+kT6dSaWmpiIpvVjY0BIJZW7c/733a3rDZ+g7vBHs+rlnBnikLvF//PoSFyLPv906epz1nYn+DCHr/Hr0a9u8fDWl/Sx/8OG0W8iPR/2X/kXNGTvwsqshcbOILbCrolZZTEIDJEZXeJquyNv3Ch6xmEPxG54/83R+4UPQ/RcgYQ9Y5G/iQ8MhYlZM+yNpsifURKeQJEZXeJquyJ9yujR0DJEZXeJquyNv3Ch6xyN/xAZIjK7xNNjmuR+oGSIyu8TVdkbfuFD1jkb/iAtKADx/iAyRGV3iarsjbvOsonjEmd4mq7I2/cKHrHI3/EBkiMrvE1XZG37hQ9Y5G/4gMkRld4mq7I2/cKHrHI3/EBkiMrvE1XZG37hQ9Y6qlpCNE/Sn1iia2VSkpYSz9KfL55Lru/Vps7lCfpT5gRM/ybnJdn53x1RBi74zyenCiABchL0Lvfi7ohLnLHcYOK0Y7ITfztSaocYxdeGjmUqaSTWyK0jPM7Y/QG5CFQ6bIqEwSenpk6xW9AKpJFYGJ+Z3DjPMkYGyxLJAiaAVSkZ5kkFEruHy79vnxIKXq1IhhUnpnbmQ7+4X5gbwT0Hrm8bFSX0krt7BgLny9mgTX0feMDE/J5JRBNOOVoII8j9auZSycUPBIrBLRqp8wImgEVkeeZ3DjWi5UPUN9WkqvhdSjD1pJIcpXf8sHhfPi4LXpwPKG/dJuPMOpXoI0xxN94Vm+pNV+Vkk9VPl88l2HylBOVmoO79BGor4unwFdytCmTBLRqydbgyfRaz1fH/t/OjgnvVZ0WxnRbijJaz0AtQJUfH/zlRjXwWRfQJSiSHQ0E5SZVeQ9Od6xKlDBWT377tzZ3B8IWn7NGS+XoPSzYbdgJ5oxF+h0EUdPfAFoMEXX7/Mw8jVIxrGrmDQd7vGypKLWkA8qHMVd2tRuOJGacN9GR1I18oyWsTJe0lnRON5Eq8caFTnAsD2f3/s4HJlaZYmcVa4a5eDiPV+eHIyT5aHv05Ml2NmW3b39FTaLOosYrPQjtImxVwDCxS4Xmt4FZeif9gkdCVKkxkOJnkGHcTL3zCcL/+fJaBXWWG5EgdNCkH6TBP6MGS/b15IN5KaA16424oxsQWZb6vYhhku4Vjc3Btz2B6VZEm7sUFSTJYMH2TKWNUaieP1kE8fUobgoFAIVUFmjJdjXvN0bAeW+I90NmemW5Bkh0bAHRcI4TSWiKeCudZcFmePX/wUDUEezkgTff4qSd63HMUxuj84zGf671cw7nOKWpRvbU1PFIoB3CbqTKElBkdiOE0ntSnhHvUmv4Hf3r5B4DU3HZJBsfP3Cfx8kWVUIR63kIWNHPbKLCrpJ2Ly32zW5vJX5foxbxY0LBc1mJXUEsImW5b6iSPlZfmodMakQIi9O4oDMGAPj3gnuRM7DWYDwlrXWJlBlvq4dOfYdzs4YCrlJNGY9sriObveaROEn0qLDoGLheX9eg/XUM+AQTBWJr5lXlQ/1NuPC4GaQrzSdY2KtYn5O5f3Jm3wDAnrQ7+NRa5SxiPRWwgb/h9Ra5SwzPQ8prQ8M9RbGSxiao8jR+HtAyQ5SwzPQ8jb7WoescDYSZqLXKWGZ6HkbfuAb1SwbCTNznf97Qkhtm8jb7Woeqq2Sxiarsjb7WDV0cjYSaGLXKWMTVHfKPaxIMFC2MrvE1R3yj2sGrktQhhmeh3y67+q50O+UfcKHrHI2EmakiMljE1XXyj2sGrksGwk0SQTCNxqRTelxywMRS5J5sdCPSCQi6uzkpck82Oha1nMEmSh4WVIbjUim9Lknmx0LWs5VLafsvccqliMVmilyTzY6FrWcqllSG41IplMG3VzfmDbuApgKYRCESEWrhht1iouiuOQSEWpQAD++EG2zKoD8vgqxl+wX/GmsAhzV1yEL/yYvw6+kqxR/O3hbPglbpOlaKLJzTDPAkWAKcGRE6MyDPTNRue3NrsYShiv1gViKxMWw7e8O/lRETtq8QToWxJgWfnFpRvXknIxzBRPcaED6x4wy+o5mHvSrT095UulWzRC4gxNyrGZ8FFAo0ZtyBfX1waUH+RU61Gz89n5v9R//WpAh67OfRwPvPBQMboCeYcMqbHfExELBO2cqKwUgC0C1qVf6J0/f/5abBDQTwcaQ7AWPHhEYWq1et8/DIdzAx7NJvrPXE2lbq+yLkFX8tsCfWVc0lNAAJ9cXHSAdNaM0MhgETmCcd6V4Fgoqz7iGtGrw6yNUpSzpLhY/IEplGkUy+wMqkHaZ1bESBKdOHH4Kfq8EWwt366mk3/yFV6xEFP777jBOQ3AlKuGugk+J8Omx7jmGQEI9M50d+s8AOMUWxM/kTsJZ5nl4joBUqo+oy9LNDAnRXoXL+yl6sduRMS3+E+UOBPri59Y9V+w71uWadx47/1vuGu8KNUmpahy4JKNHhXgWCTkYk56tTrO+mRiGFfW8Z7u4pf6EfjAoxfEcPyqQeVP/QQKGxn8ufeQ0qIiC+GdVuU72WE4kLDlFGjTUbyx68WDCqs+RU96PV8+2Wdprj9uQe8vS+ew6mkGKIboAnbOU0QA/nysduoMx1JYNRSYvnkIy4I0KVt4AIfrMNi+8lWBPgE+sd/2Ke7P63VRZ64m0rdX375UJwkxdYQMyOnij+EXN7aCNvtO4j0QBNYZRpoC6PODCjvS0R/IB9hPdvQxYvrRSivDp1pWaNZqQISBjurVovBsQDjOgX4yRmVSHwtVGQbQN+eAOooYhoHE4Op9Ce/T/Wq4eZPVwUzwYOGZrxJYwH5LvlCg04DlSOAXQbvYxoQh0ZvPQb31c+Qct67BjoNXgtsfLCubU6nZQyFw4GxpJEQ253PEf6r/o8l7CIaPfGrqIIjSSoQWFuaN8902YlJOqzKX4TznkkkAiKmpdD2KjV4dQLpT9TQgUlQb0wAZgcSLObcHekq0Pxj5FujHPox775d5xU97eq87gMQ0McaLwzJo/PSuyW85INGordp8dvSkjNZymUTSZzPlFRvIs00qz9LXQuQAi3aKdIXdlyijB79DSqRlx7dD3FivIXChduwFWWw+nsu3EDBKoWZjq31QIpgd3bRXX97Usgro8QD3Bh4kuBG3p2QCroyD9zU1+itca3tRekxa8JlR88Iz6JRXQKVDqvDpPF2NyQQx8bsg6MBe9+/Vu576EjVTM1GRXRSWI095bCW6gz2f9V/e8Yhlhisy+MXM4c7GOaZsIwcO26NI6eaLkw21w41b3BA9jsxww2IzpOIXrZEUL1H6YQ7WH09kRR6cbNzYn996pgj/RcaGI/uGDnRk7P+QAnBx6IZ6thtSAiE96aIcVHzbpTGXrdCerauNdPc3tdcJrhA+esmFAHUKNYKVsxIBoILkITEbRXh1DPK92Y9rQNsUPr9Kz4/t3tqD3ZzHvTN+Mz7vBo3UwEouroZ63ywiGqJpdoRG+xEmut0sOjsUmAgurQh+sFMntS8H++EVaH2j7CtA4ThpHA3Hjt61GL9q7NW/CFHU4I0Fl6MZbgJK22gACqxcL6sftScf/a1gZrUW80xZcUqb6UasqH3fqXKRIt8AD+dDwSCfAVEJua5xptxXS81EuvEBQJjSvxzaCBqO7KhGPibsIkxStDX1/UMqMEMWWBKX/5CoIX0D/QDoV9L0mHVWHAlDd/oSxoht3//yEI9i77leRE/uFB63xAAOfNl8kc7WFPrmg8K2Dg2pHGBD1kd46KaAnYiZADIsXIQWAE6H9UYk32syvVT/RYbZWyTb+EKM0YCbA7ei9D5RfU/8VYTeQk0Mvm3QNH2vTcCAUNlV0OiCEpjcCVjgoGaMm2E0nizDz7QZebmGI24Fk9hb0dYMxLBKnPfbgZM/pfeqwkQUM6axQalwr2U+UBCTBrbIx8+ED3T8Qqq7+GiUnneCKi/MBGMezgj2NZTkl4Pgry1FeSaTjB9bKjJuCpnuIQWpKk4HFVlqLfYnHhEps9iqJQNOa2Tyu8p1uVyb+OPjkvIdGPnFbDhC0pixHq939XztTrZlGthxp77YSh2VvBoF6KxdRNLAK6vbHlJnmEhngUBYdky9+pk86JOe2hEusMcmyObAa+T2U17gg2gmONux8ScnEGuTCjYn0WSHZF0Cey2Ow3jpeWU/hWejzCnOdApxPRn8vyD5f1cW1XRQc1e3/koNTwz+3BPLskgb2jgydlwWYPSNf/TdAFCvjbqVd8BCKGNTwzpxQxiwGCHaOTTAgJfpSGqGKc0rf3QrCY/WiGnVCH01zcNUtBiqSpS/IQkjXL18cxasGuOrYO0FbUmYWgoLlxXS+5Dath6h724vMaw9Kv+BqMz7jb6rDsXQUOkiE3vya9v7Kjuv5GjQRnFKzPI3ufzfRatjx+l+v1NIY5JQn5rju7hUIK10jI8PjJBFPN3/fFavcTQoOQMlBAo5hGoH8xL+JqysvefP9MbBmo9KXcDVfQiGahDhPWWcuP1tPGmLbyQ6EEogB3DUJTaN3uShgEjzcxKtnI5aAajhlOV8qoZw7b0o6GECHBS7eJuSNJXpOzo7KlrmTfaRRvWlfuAB9gsxcgsXW5lqOsll7j2fyBqULwM8gyk5tVMXjZpo/zremptZXiiIgvGeLiqliEINE41nn4s/V7FtISr0kcz+p/3xjqlaSYRK3O3XJAq+ZzX3h7Qz4tg7/qU2yUH4Dxi4j8IYmws+dVsmv39P6/5T6x5RDQ6Q5+sIOyw5TDYdn/hzLSkGTlenPMi5Zj2uNatl9HY1j0WiuuAprLqWHcx01E0iq6dMFAvo5BMyQi8gHKezv14lbcu/ugD6ulpZ5iRpNYou/4FP/MfcpLy6hoJVEgF+3aE3u23cGnsQbcCG8j8kQxgr+Ivt+GbCDGb6qlT6z+QlxCjeIJquNJwihpN3sO0PhrLFG75+LBZaNZKmIktzxWriH1vEdYlNF055wXrN3/8MHWGhYq/V2qP/RVn4yqf8PU12UwElwnQPOH5tk2E4g2BvGUFcEwGMhrKhPpYUQh6dD59Zw9SDCAcunu1FLbJon0h5OGaeBmfXZRAjxcHYzJ2O5NWG5C6mhP6WwwjIg4L6ALsneI0tQpwlZFkCmN8nPNa5GUoiNkkDRWYTXvrFxeijY0qG6oq+1+8ie/T+9Oh8+e/7EytvRTNNJFIy1MVQ5vFiYc/PttekSRqUuxEeFnCF9dZ3zg8rbxWQsG0KXvSAPWDnO0gVAnH0YHeiRhkXWuKQB7lb4GYZyWutCZRBMANNTW45fugqHz/ysc41b+Qd8+0Kr+WoUwAAFVfZD/rvUxwci9KhVoFZ7Lhwhb1S85ToK5lhDy+KX7m85hibEiFPRsEZ4PGIEm8eMDiOhTDzOSskIAAAAB0wAAAAACX4AHNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8YAAAAAAA) center top / 100% 100% no-repeat; min-height: 119px; padding: 35px 24px 18px clamp(24px, 7vw, 100px); overflow: visible; } .filters-container > span, .filters-container > .dropdown, .filters-container > .button, .filters-container > button.button, .filters-container > a.button, .filters-container > form { flex: 0 0 auto; max-width: 100%; } .filters-container.hsguru-streamer-filters { float: none !important; clear: both !important; height: auto !important; min-height: 119px !important; padding-left: 24px !important; } .filters-container.hsguru-streamer-filters > .button, .filters-container.hsguru-streamer-filters > a.button { height: 40px !important; min-width: 40px !important; border-radius: 20px !important; background-color: #c4b18a !important; border: 1px solid #6d5d40 !important; outline: 3px solid #c5a058 !important; color: #614326 !important; margin-right: 0 !important; } .filters-container.hsguru-streamer-filters .dropdown { margin-right: 0; } .filters-container.hsguru-streamer-filters .input { background: #f4ead1; border: 1px solid #6d5d40; color: #2f2416; border-radius: 6px; margin: 6px; width: calc(100% - 12px); } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-nav-button { display: inline-flex; align-items: center; justify-content: center; height: 40px; min-width: 40px; border-radius: 20px; background-color: #c4b18a; border: 1px solid #6d5d40; outline: 3px solid #c5a058; color: #614326; margin-right: 0; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-nav-button .icon { margin: 0; } .filters-container.hsguru-leaderboard-filters { align-items: center; flex-wrap: wrap; justify-content: flex-start; gap: 12px; } form.filters-container.hsguru-leaderboard-filters { margin: 0; border: 0; box-shadow: none; outline: none; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-search-form { display: inline-flex; align-items: flex-start; align-self: flex-start; margin: 0; min-width: 220px; max-width: 320px; width: auto; padding: 0; background: none; min-height: 0; box-shadow: none; outline: none; border: 0; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form { display: inline-flex; align-items: flex-start; align-self: flex-start; flex-wrap: wrap; justify-content: flex-start; gap: 12px; margin: 0; padding: 0; background: none; min-height: 0; box-shadow: none; outline: none; border: 0; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field { float: none !important; display: flex; align-items: center; margin: 0 !important; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > .hsguru-leaderboard-inline-input, .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > input.input, .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > input[type='number'], .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > input[type='search'], .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > select { width: 140px !important; min-width: 140px; margin: 0; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-search-form .hsguru-leaderboard-search-input { width: 100%; min-width: 220px; height: 40px; background: #f4ead1; border: 1px solid #6d5d40; border-radius: 8px; color: #2f2416; box-shadow: inset 0 1px 2px rgba(34, 23, 13, 0.18); padding: 0 14px; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-search-form .hsguru-leaderboard-search-input:focus { outline: none; border-color: #8d7658; box-shadow: inset 0 1px 2px rgba(34, 23, 13, 0.18), 0 0 0 2px rgba(141, 118, 88, 0.18); } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-search-form .hsguru-leaderboard-search-input::placeholder { color: rgba(97, 67, 38, 0.72); } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-input, .filters-container.hsguru-leaderboard-filters > select.hsguru-leaderboard-inline-input { height: 40px; min-width: 140px; padding: 0 14px; background: #f4ead1; border: 1px solid #6d5d40; border-radius: 8px; color: #2f2416; box-shadow: inset 0 1px 2px rgba(34, 23, 13, 0.18); } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-input::placeholder { color: rgba(97, 67, 38, 0.72); } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-input:focus, .filters-container.hsguru-leaderboard-filters > select.hsguru-leaderboard-inline-input:focus { outline: none; border-color: #8d7658; box-shadow: inset 0 1px 2px rgba(34, 23, 13, 0.18), 0 0 0 2px rgba(141, 118, 88, 0.18); } .svg-container:not(:has(svg)) { display: none !important; } .svg-container:has(svg) { margin: 0 74px 10px 74px; padding: 24px 24px 14px; border: 2px solid #6b5634; outline: 3px solid #c5a058; border-radius: 16px; background: linear-gradient(180deg, rgba(252, 244, 220, 0.96), rgba(234, 219, 182, 0.94)); box-shadow: 0 14px 30px rgba(56, 31, 14, 0.18); overflow: hidden; } .svg-container:has(svg) svg { display: block; width: 100%; height: auto; background: transparent !important; } .svg-container:has(svg) svg text { fill: #4a3217 !important; font-family: var(--hsguru-font-sans); font-size: 12px; } .svg-container:has(svg) svg path, .svg-container:has(svg) svg line { stroke: rgba(86, 59, 28, 0.7) !important; } .svg-container:has(svg) svg circle { fill: #ba3c26 !important; stroke: #f6d78e !important; stroke-width: 1.4px !important; filter: drop-shadow(0 2px 4px rgba(73, 27, 15, 0.18)); } .filters-container .dropdown { border: 1px solid #711513; outline: 3px solid #a92d25; border-radius: 21px; margin-right: 0; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); } .filters-container .dropdown.is-active, .filters-container .dropdown.is-hoverable:hover { position: relative; z-index: 200; } .filters-container .dropdown .button{ height: 40px; border-radius: 20px; background-color: #c4b18a; border: 1px solid #6d5d40; outline: 3px solid #c5a058; color: #614326; } .filters-container > button.button, .filters-container > a.button, .filters-container > .hsguru-filter-button { display: inline-flex; align-items: center; justify-content: center; height: 40px; min-width: 100px; padding: 0 18px; border-radius: 20px; background-color: #c4b18a; border: 1px solid #6d5d40; outline: 3px solid #c5a058; color: #614326; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); } .filters-container > button.button:hover, .filters-container > a.button:hover, .filters-container > .hsguru-filter-button:hover { background-color: #ffff95; color: #614326; } .filters-container > button.button.is-focused, .filters-container > button.button:focus, .filters-container > a.button:focus, .filters-container > .hsguru-filter-button:focus { border-color: #6d5d40; box-shadow: 0 0 0 2px rgba(255, 255, 149, 0.28); } .filters-container .dropdown .button:hover { background-color: #ffff95 } .filters-container .dropdown .button-with-icon{ justify-content: left; min-width: 100px; padding-left: 40px; } @media (max-width: 1280px) { .filters-container { padding-left: 24px; } } @media (max-width: 768px) { .filters-container { gap: 8px; min-height: 0; padding: 18px 12px 14px; } .filters-container .dropdown, .filters-container .dropdown .button { max-width: 100%; } .filters-container .dropdown .button-with-icon { min-width: 0; } .filters-container.hsguru-streamer-filters { padding-left: 12px; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-search-form { min-width: 100%; max-width: 100%; margin-left: 0; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form { width: 100%; justify-content: stretch; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field { flex: 1 1 120px; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > .hsguru-leaderboard-inline-input, .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > input.input, .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > input[type='number'], .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > input[type='search'], .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-form > .hsguru-leaderboard-inline-field > select { width: 100% !important; min-width: 0; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-search-form .hsguru-leaderboard-search-input { min-width: 0; } .filters-container.hsguru-leaderboard-filters > .hsguru-leaderboard-inline-input, .filters-container.hsguru-leaderboard-filters > select.hsguru-leaderboard-inline-input { min-width: 120px; } .svg-container:has(svg) { margin: 0 14px; padding: 16px 14px 8px; } } .filters-container .dropdown .dropdown-menu { top: calc(100% + 8px); border: 1px solid #2f2922; outline: 3px solid #5d5850; padding-top: 0px; border-radius: .4em; z-index: 210; } .filters-container .dropdown .dropdown-menu::before { content: ''; position: absolute; top: -8px; left: 0; right: 0; height: 8px; } .filters-container .dropdown .dropdown-menu .dropdown-content { background-color: #3e3630; border: 2px solid #2c2720; outline: 1px solid #1e1912; } .filters-container .dropdown .dropdown-menu .dropdown-content .dropdown-item { height: 45px; line-height: 45px; padding: 0px; padding-left: 40px; } .filters-container .dropdown .dropdown-menu .dropdown-content a:hover { background-color: #12100e; color: #fff } .filters-container .dropdown .dropdown-menu .dropdown-content a.is-active { background-color:unset; color: #fcd144; }.filters-container .dropdown .dropdown-menu .dropdown-content a.is-active:hover { background-color:#12100e; } [data-balloon-pos]::before, [data-balloon-pos]::after { z-index: 1000 !important; } .chart-container { width: min(100% - 48px, 1740px); margin: 24px auto 20px; padding: 22px 26px 18px; border: 2px solid #6b5634; outline: 3px solid #c5a058; border-radius: 16px; background: linear-gradient(180deg, rgba(252, 244, 220, 0.96), rgba(234, 219, 182, 0.94)); box-shadow: 0 14px 30px rgba(56, 31, 14, 0.18); box-sizing: border-box; overflow: hidden; } .chart-container [phx-hook="ChartJs"] { width: 100%; min-height: 400px; } .chart-container canvas { display: block !important; width: 100% !important; max-width: 100% !important; height: auto !important; max-height: 480px !important; margin: 0 auto; border: 1px solid rgba(107, 86, 52, 0.35); border-radius: 10px; background: rgba(239, 232, 214, 0.88) !important; box-shadow: inset 0 1px 2px rgba(34, 23, 13, 0.16); box-sizing: border-box; } .class-icon { background-repeat: no-repeat; background-size: 28px; background-position: 5px center; } .class-standard{ background-image: url(data:image/webp;base64,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Ozgw8XND2xQitlsEAcVdGqm3hPVlwsDJMr3eOPOosS25sjBgn4kB6LQNREADKhAckkxew//efslNchMlSlMQFxSU5t5gQZyjSsEiazqMfcvOMqoZzORy+dpMEz91a2bgfX+Ai+YoQeX+a3bxxs4sAJ+a3wOH4hYMw23lRH4U8mMfbjInlPO7g+P7vLNdIMdcHYRtd3uTuDpjh3GwrR4te2s35QbJy1Z+TyOjQwjXwBghL77YBDx9ndlnlrp5ypXus0R/Bft1/43vOGaAy98Xz7DixpjBZzHhg3AH/JuRjAb9DMMgltvAlzcl9wSuVNx1OJB/+fDhWjFkuZjbuVYDwPphE63XO8oh3qkuqAFAfZsv7SnEFwc1v2bu0MIdKXv8JYbpjZ5Z9RJHFCEUuvFTYBUj//+sNjlGH//CukZLVSOQBZ7iqikb4C2Tb5WtZNy7ou8Dx5VyCga0V7Dm+udAc6rRIf7BD6kj0kK7qIu3sHA4IS2SyX58ERdGrbBaQWFoq41Cs04Qfg8puSdz55O26JFoEu+8viFpHojdM/KeVTuZYyrFKfy4Qsz0crQndJq3/qPUv1fTwIHvjvq8R8NX3D4A1fbnPKbdyIesbQY1M5DoqmR3wxCY14z4vOWWSmuBxJr3VpaxAAAAAFhNUCAQAwAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0E1MTBFMEQ5QTdEMTFFRkFDMTdEMjEwQTY1NjZDNTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0E1MTBFMEU5QTdEMTFFRkFDMTdEMjEwQTY1NjZDNTgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3QTUxMEUwQjlBN0QxMUVGQUMxN0QyMTBBNjU2NkM1OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3QTUxMEUwQzlBN0QxMUVGQUMxN0QyMTBBNjU2NkM1OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg==); } .class-wild{ background-image: url(data:image/webp;base64,UklGRuIbAABXRUJQVlA4WAoAAAAUAAAAjwEA6AAAQUxQSMILAAABkJVtb9hWgiAIhmAIhmAIhhAIZmAIhhAIhmAIhiAI/8W21pFst+c5NxExAfQfbrgBKf8OfMOv+V9Bwp/yj6DiRfdPoOLV619Axcv9H0DCm+7r5/Fu+fbxeEv4y1fw/vXdc5g4vnttBtI3L2Dq+Oa1OYjfu4DJ7Xt3z0L41jlMb9+6Mg/hO8fyQPvOJTwZvnL9kfaN83g2fOHKQ+NEQvCfzXgI6TiyABjFfS4RT4/TqPizuk+lPoZ0FhGvFv5M5LlxFuMlSPxEAhSmk/B49+bPo2gQPojyFiR+HEMD8kG094DyYTioFD4HTO3uo7h0IB8Dz4HET+JWIu4UwiQgfxDQWk8HN38KQQ3cIcR56O5DyHruQ8gPQPxn0PQgHA+QPgJR1A4I5QPw0Fzy71cIIRwK6nM+uMNJqt6W1nIO/jDQ+S0OMefWmuDt1lrJOQQ+jGLp79FydPu4HkPnF/xVG1T2Vq7Ap9BW8Ku0HHgL4TlI+MHpFiiXVpI/AKy1l8gHAPScO6xKy2FvbjE/2+X2Z79lv6+wIACj+MMDIDUqCTH/DLyMvCYAo/hVuV0AkBqfiqXjxdsvoi4LQL94SbQRAFLcvHjjXfFraCsDUMPpAWhpisuCiX0NY3HAuHg5shtgJH4n3pi8BmxQiltM2w8g6QWOVTB9CbwDANWdHjASEXHIDU/2JYRNAHc4PQBN8HQ9KuB2x6cwLaFsBKhuEfVc3ApYtgJkXkI+lk4L5I7dSvpkrgVwx4Z7+FycPe7Yc2Fr4VQ6meeOXUv8TC5zTrDxm03RqThr3LF1iZ/HTca5Y/eFDcmZJGPcsf/u7eBIhW1xxwlKspLOpJLthkOsbILHmQRbFcfYnQHfcaSDTBccpAR1UXCml6mEs0zKMk7VWQo4zaKJb5zqTYadHAeqHt9xrNEQdxxoYyVBcKxChiuOtLOKhIMthi4camcFFSfr7Xgca+enuOFkO5nlcS7o/Ax3HO1l58Yqe2utjcWg8xMsWHC7c75CCDmXNqyxmQsLHPcVmP7kkEpbBzo/ULHYlqOjd8N1i51GVr2Yuy9HM0Ppi8A9j7HSUSJNj1WMZDMdtu/ENN9dfQmo08I6RvH0cGombisZlsfl6GlfZQG4FlcjaQzNgLAND8MtkkpOwx7SJF7CyExaQ1eHbKPbaYH0pmZO/Bxq9kYi1Zdog7eQYbUF0h2aMQye48RYC6TddW3dgIPRHkh/HLZwzyFvqgWyWJQh62s25CKbSUzhmkPJzohkNCmD1xZh8mayytkU/BwqRiSRXS+6mjIeFiSSZXdb6jyHqonMZNmLKiRdGQZvJuNh2EGZxF1fc2Tci6qhysHgRQvMdhDmEIuyEcl+UIWs6dYngZbomhnhOeRFVWFaYVIlrCdAfXe0yiRGcE+iqKh7WmTVhKynqutM6+TbCNIkutRkWmfXJKyFob0yLTWKDXGTqOronhbqRREuLbe2Sqvl2wT6LGoaCq310jR0cIXyRguOYgF5FvfHJNBquyKkx3yIZUB55xUR3xYQJpGXh26m5QZNbQ6HcOXc2oDJwbToKAYGTyL/zEUrrorg3gq5wbZ4Wjbf+nDPovTA8LRkp6m85qvAfKKVR1GHNIvytJtp0VXReMU1LPCmtbumTtwsqpMuWrZThPBXEixQeHFEWRv6NO4zJNDCq6L6R8ASI60/iDKUWcTjve5o5V7R+KMtodEOuStDnEVe3qlMa+964H/DEv0WiKsy4VkU38i0+qQoL6TSLosutGmUXpFEy2fR03/rK3DboKQLeRrVv8TTBqse8C9pAY02mnQhTKP6W3e0w6go/ELdXtwJJV3C0yh1YGSmPSrKvzmxJrTXpApt3l5vPe038mKsboaSKpQjuPTIH+TFVtwNJVWIJ+D1wP1BXkzRfpMqcQdAoif8Ra4bahuiSxM6H8CtJ79A3O2UHVHVhHoAWU95haiaSVuiqglpf0FPe40uK2FP3DXBb8/p6W9QEBu8J+KhSXh3pAfvkOsmaNdeFKFvr5shrgdFURPq7podonRQlDUhba5YIj/OiW5NCHvLpojvc+KuSdy5EeVjIi+K0PngKIgq3hklTWg7q+bIdU1ha1Q1oW6sqRnziKuiuDfumpD2NdS0B4iynrw38qIJaVeMJVBSc2+Okirxmwp6yjN0aRm7o1sTxO8p68kP0VAC3h0PTei8paYnPVW0hN2RV4XOO4Le8FTWkrdHWRXahoIifipqafujrgp1P0WP0NNBixyAE1Wo2xl62mNOC/z+6NKFuhkPvfkxUpMPgJoulL0URfG5oaWfgBNdSFsRRe65pgV8AJSUIW0kQu+g54uadAJ0K0Pax63oVnCpuTfBpaFlnsaiDGkXDoovBUEN3Ba84KekWRS1oWyianIKWM+1Ay/4s7lJdGtD3QKLokEaRc3YAAtelDTJiTbUHWQoriqaGoTlccfrlafQpQ6Vl8eiKaooeu7Vcce7nadQU4fOq8vQTCqTHri1ccf74qc4UYfu1sai6dbhFdWlecFM8TPo0gfxS8vQnHSQIriFecFc8TOo6QPSwpyoYiVNUV1XFMwWP8NbQFnXDc03Kc2KEFZ14UHxEyhbQONFBaiOWoKmtiaueFR4AnULkLCmoUpIK2vCtSLX8XDnCcEEkFeUobqooa5JeD1R8HidQMUGmluOh26vp2jCvZwCjWkCDxuQazE8dDXSG1XhWovvUCnuPYpGgOaWUqE7KWJd8Cu5BErbBLqtAJnXcUG3kOama/AyXIPeNIHFDCStIkB5VnXpQl/FJVAs/B5ddoCRluBFG6vyylCXEDp0lwnUDAEjsTkvUF5J91CGao8r1LsJzhQg1dvyAu1OWdGGau0S6K8TKNsCMEq04wXaKymP6lBNpQGTbgJ1awCkJjaRBOqdNhJ16GwmNBi9ZoQF/GyX18Y39FdSX/VheBuhwWyeQWUNAKQmp4ezwKDTFw0Al4HYYHgOj1X8HDV5Db4KLFYyKBbQnLI0YDpOobCSn9JydE/4MmDUWagmgMx6XBHY7jT5XszvreYQ3vIxN4HZTBaDEUhSkhqsi5/FsqI/R2vtzrm21gZsC5ugYQSQzI/FKjDfHU2PC1toIpvZDIAaH+BYBQus9OR9Pp2MOkuA1OQmcMwdS5REjzo5nmCFmqmf0nIK4ZcQUm4Dq+yeHr5Op5DZZG7ZlenxdjbCdmgciSRS6ORoIhnOJ9I9qUwnc5NldyDiSGk9F2FTVM8jk1buxxLJtj8Pr4ZYDqWQ9XocpNjLkXQ2x3IaXhF5OZDBZD+eRtZEXo5jeFrhfRiiirwcRmdaIvezQFJFfhzFzbRIL2fRdRH3g8i0znAWCLqI6ymMQCtNZ3ErI7rOoDCtNR0FnDbyY38j0HLTURR1xHVzkmnFUQ5CWB1RlJ1VR2v2cg5IBojLtlqgZXM/h26BKPQttUBLL8cAZ4IoyXZaoNWHcQqXEeIsW2mBNsjlEG4rRJxlGy3QJkM/ArFDxFn2kGijlxwA2BAR57GBi7bKWfYXTBFR6qsbtFvOsrvLGpGvsrS6HSLOspyWb1GU7RFx6gtLGyKi1Fci1RERp7ETInJ5rIr3ROSLLGJkpj/TUNIWQUS+jBV12nisYu+O9PoleyEif/XllJ0RUazDUr+Y3uZ7N0TEqY6lxM0Rkb9uMdEuR3OTbOenv25ZBu/vp7/qUDVqZJrv+2NlRT9dKm0Fnc6Rw1WaKGglOnqY21N5Vb/6VJrYKgfxZwg5t9ZnjFZycKSzbOxXDinXNozE83jVhZdJeXomrO9FH0LIeehyJ2PbyxNuI39emgZ9rNznCW04KaqfC3Gddu+Ikp7rgyG6Zl1boqTGfzTkZY7bEyUt9OFym9Fo10lH+3SI8oS0LfKioXw+5Ps7nTbuRUH6gIiyvBZ2Rtyf8x8RufrKRXvn+zH6lF2R3y7afnmofUxEFHK+s6MDjPJI+aQO0vcnrq8ccXkgfOeIokyjrz23SeN7R5Rkyv3NI84yIX31iDiNdzp9/0OVVzr/AyCikNsAIHei/1gBVlA4IOIMAABQTACdASqQAekAPpFAmkolo6IhqrIaaLASCWJu4XJ+AP416mcZ7NP3r/AftJ+//ooUt65/ev2Z/rv6/dYFtV4Y/GHqkzbernuL/H+3T57/y7/AfYB9AP0f7AH8K/lP+u/zn+J/XruC/930Af1L/K/9X+3e9t/qv877Mv83+JPwAfz//T/+XsBv7d6gH8q/1Pq5f8j9e//V8jf7Xft58B38+/w//+/4n/n+AD/yeoB+//sAeuP0A/hX4Afph+fvf4bCzPjEWdJN30ie8zMxzjTR0C1jnGmjoFwLf9AmIm2RMTbOv/D3hpMBFJOGzzbOwCnaFKAhotP/z93SLWefnIhgVcvfZlVaKYhXmqScNNEezsbsyLOzbuHgenpNqvSYDdbOPOROmN0aUFda75tVgPAevp3v/nK+iSbPj/qIp4abetlCN7thDa3zEl2wqC98ArWjTf/NFr2ZNTQkDEnc7O3R0kK3iYYwg9w043DoA889W6FWFYfsaCT6HLSZi3//SZbhF+eiKdDx4RnwRPLFQp+fHRydMVyCyr8qS8ZW9jxNjOajvEsiqdiqNxBixs7P0RLKiKvnXtAetne7IqN9921u+zRmTGQe+iCQ3BKPNxnw0hwTY/KI2CkL4Hil2KxZvz4Dh1Q/E8cRV0ZTVB2EPdnK4Xi7CKIHTF1pyUG1suiI4QlLXoD2KqQgoTjB3mMFdrNR3oJ+iYd+h0ZQwVdP5K08CR0qDpypT1qtD+IEJxOaw4ugn2JQEmJxPMpu6RPivP/P3NLkPzzpvDJcc5r2N9x76CJ8dLOKjrFvrVRJcDmjnsjThDn03+387cdEAP6/mM7D/t3ORGgU/R4z1hpCgZ+Bv5cl2+CBNIeG4FAVebP1U99gCseNmYqE5OD/9kwAzNd1cTRzRgd1kOceG6dntL3//+9c+D1pv7BECemYkqAAAAaMJNNEM7u2rk4cqlycSduOD9FYrW9vF2jz73rYHFbRSbE2tFlqBTeRP9onTMoA5GABAUFrnpP1MEnLi+YNFPADza71ceHUg7TLVscOJVnemm+R2Fk9ceF2t39pVFPAA8q1//2hrLZZROGm3mKrrl0vu3WtoMATiN6TfSytKMxBFLg4gpffCSTcipSnSuHIrnCAWd4Iwiicz+wXN1YRerKQ+3XOM90KG0FmFd5dUlSm8lxGk0uj+yk8ZmE1wpwwui6Zdvh3r66CLZpIoG4643756o++yiPCkCTNa7lAlZSpb7E0uEYzsFr3DPsJmjLj3gDyohxdaL31msLTyvTbSBc2nu959iTftR47Ac+8QxGM7jBs+1dv810SLV/G66R9bfjuPrzb5z/q5e1UjK4Oy7Lhm+Zf7Z/JX//jIEanfWI6aBT9Hf5TeaBZVtPf6Kxc4iAXmTwAFJ2JEIFTOn6HucjXVhsJVOZRiO7f2huaQz8iLzqE06wTyb+2aDqPOK+FUPMWGLIEpczpa19sBaiR3m+3Wknv1h02SusPWVuL4FTEuFXQAxb4QIPL/fbLxo71G+f1r2TJlEU9FQ8vIxRfoqG8vk/PKme/RHJ6DTuq4BUETVVPH/pKIzynHarK8G9pqMKShYVxsX8UlCe4LtTwvyDQFXeYPpvrEg5Xh44Uej2mxiQjWqjqgjotzNzf20byvR0Gbq3nlvyVqCS1/1FxdExkh729jLKchIKxgaHG4o+XoDySiW/bsdzhQ5B9cGjOq4/N71YiIk2wWZ5TzZSeIgiMup/JrcKnU6eAzLzgMUoXph/jaDcLzscjuJPyIM+Xrx/KAc2Q9LXU9cfGT5UKDCrcLJK9nYMZc0wr3vptyPwtnoZpK3e02eRM0qZ+Vkk2WjU0/NHTeTt8XJlwAjaqO3GLrJRtuCsKyqytSpyeZjmbS+nwwUwaVBfhMvmzCRoonov6wQFTSDcZUULdgO6mpkHk0Vicg2tpFI57omzRseog9VIZKJpkOxYY1cQwHVj7TJ46LgU4gz0ZjcNiqt68Uvh82OtON23IS16r5DmMNf0u578fMiGvnTSVI17EXOuYUdA5vPqbZ3Dgy8V25yRNXU3SuZsaik3j9YwZFYriPHfR+4i2ousREpGR3Vx4NQaVymz3054C6z3q09a7jO1UKb/j/zHNqtZA/el5vjsmNQxQH7y9EHNxrXMEqKFo3fu6yVW1ZInGOzb0+dSCIqA8sLHICWEOGe5Mmm2Nj70NBFVyKSJo1a8iXb3r17LOPci0V8bK3n0v/BsxDMSbeochXiSn/Tp72/fGqzk+F9/41Qiw/ZkByyWWIVyN7R3nEx/QOspuPTLCHdgKtfSyEGKJ4NkesfNa3jonX/gJyLgVKX6WEOPMsGg0IoQPJq3Ak6NJZdg9YhIe35K1BJdzHTKDktXPk44wl50KvZ1c3i2ttQ17X/UyEo0pHOhV7OrnTioBOUWQBooghTvUr2MgvIjk9Cr3T6/i90eEDaOCJ0v1U5WjgZlbnAy3pS1a4wAAoDOngmtdNDVxBGK56wWsjMENPh1vXda2rJE4x2h4rQT8sV2rF5IjxuyIqYB/VxhTO6Yje4y1nGeYE7Jawu1nPGJrsDOEJZ55jd7+1EZhx0TNFZp2SM6+CNobJyr66tXckdquUcAAmYPXedANBHYP42S6Xpbpel1ylXAm8Kjh/zh45d9S+CjWLNvyhRxbqNISaTZ9Lt0QLgPNJZwWdNIDdNFw/e1p1kqSyCmlQubLSsFzzm1HHXbIxEiC8PhEf3f/CYuGgKDMkDTHm8WTj7L1rdwm9/WDtceMkQAqO+IjkzjzUe0Gme93ZxJ4Jitzc6XqiZPLhntn0gzimevrjATISxLw0H4j0yl7i+hfrY0MG0lLNafhY8oymB8ZNY8dHyQ1biGRQDoUe2FzDDa8u6Bncpi8A0HZ7GihInxzD3NOyFUSMFZtYFtZgeuiPDbNt4SyF+IXnEoAP4dtimg/AY6YYG6IMX5yZ1WA1y+Nt3dL9VsrCLvb0Fh5EFRck6apP1QOVLpNntkMLhOtvT/vbT76FfqAevYrze0PXekwLybBtMDiAu2Vqvs5wxMcTpuXN/PRUFOrnOuXuhglGWtz2t2eOhuSF82HFDBOhzoRzGiGTOGQX1//3Z6ahLSJeDsAWFvzH+JIiw5ZJNuWV2RxuaBjo0RvWy2nrLsCsChgQmVYNn0DvX10EW6k5g5lqE11fNMONq/7/jnQLuaHxIBeWogPbigeUYLNkm4AiFkahuCnCCoa6tqiheATmahV4ffQgcA9w7gCjw/dYD5N/eZ5VXT5aeFYb/648bPRa7vwHzAI7uiWDqTM3kOSeIIxKu0AZtS+vJTe5NFgfBtjDeUYjusqTpOQHyByLOTJXpNHY9bC87NxD/Du8PLj0IRUNF/DevHRVdsLPVmydD503e8E5OrCunRryml6XudSibHgwCgPeV8RpIwXgRl7Q7ldpxCoMg3i7HHlyXb2+SIkm0CQM22AZ+znhkYJsdw8b97+G13LHzL4NJ74IC4cBD9df4gzP/aXS9LdLuqzI/UJIzmkYFvky4VWnY0YyW8iUrVJRZP9mOAR4EOJlgDmcBY/QYkEFInASUAQiFaVnq4sgQQuGU1gY9bqFe6X4/NYckRnQ8G8ahKF8xa68IetWBaLFiRZ9S16UcQr1VoSgymUAKHwXI2mbtBtbirUklKMux161Y4WJ0Zy8y5xlib43fm/nyBPmAABZxtHwP+Qe+wB9DN0u4Ej56zyEpFjsT5bgkTnkc1HcFEnKkaHcPynUmRL0tgY0fFpkF+3tqP1hBGFPB+OwkAByC4yPtUkhd4jdHnSJd51CkI5XsKhAYvSUUlOjM8bMrKo/ofi/e89acCjrKfEF0ZMbSJKdqoU4YZF5AqUY5/MIFRCSQe9fS2+NyDcif2WNlbSUFvoZz2pya6QRLE9TVlH+UkbkXNXLv5a5jxXALu3FqechYL2OWsh+FU9CINsCCkuIDv+V/hSft+Pu6cb/X4jTW+9t6h8pLCkRhJ5hGDEV6uwv6T7Nrqi93xYcyZO/UkpWk2F99y9h1tHhBhe+SVQtAEab7Xd72TAufJXBTwm1w57VcFvW/NODns0XgYTtuyn68HV/kDDUDsY7E1UhhUtbbdasyn9rrLJhZmdiSDdMcHfRPufEAi7s34O2LQ4XAntAj2ES6LzIurFkc5nHENTxKHmT8DywVh7DvB8oySY3zLSHC4oFH22TsTRJuLVrjkTQ8XAffegLrV2wG954PSu5MiCcJMrE6WDq7xqNQBXv0E6NeaLUIDKOE35jeFqcP833xYnmOFF0D+sN+w4qLSrbIGVEz4TDW9LHXwoU65mC1O3BGMZPRJtPnBQJZ6JgRWN2lGfvWAAAAAAAJ76zdR0tizZIIA7Cg5kRD1KCFSJ6T37PbrYVI5lMxlTJp9MULoDHEy4AAAAWE1QIBADAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3RTJBQjgwOTlBN0QxMUVGOTEyMkYwMDFDQTExRDY1RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3RTJBQjgwQTlBN0QxMUVGOTEyMkYwMDFDQTExRDY1RSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdFMkFCODA3OUE3RDExRUY5MTIyRjAwMUNBMTFENjVFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdFMkFCODA4OUE3RDExRUY5MTIyRjAwMUNBMTFENjVFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+); } .class-top-1k, .class-top-5k, .class-legend{ background-image: url(data:image/png;base64,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); } .class-diamond-4-1{ background-image: url(data:image/png;base64,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); } .class-diamond-legend{ background-image: url(data:image/png;base64,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); } .class-all{ background-image: url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgZmlsbD0ibm9uZSIgdmlld0JveD0iMCAxIDQ4IDQ4Ij48cGF0aCBmaWxsPSIjNTkzODEwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNCAxMi4xN2M3IDAgMTIuOCA1LjggMTIuOCAxMi44UzMxIDM3Ljc3IDI0IDM3Ljc3cy0xMi44LTUuOC0xMi44LTEyLjhTMTcgMTIuMTcgMjQgMTIuMTciIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNGRjlDMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0ibTM3LjQgMzAuMTcgOC42LTUuMi04LjYtNS4yYy0uNC0xLjItMS0yLTEuNi0zbDItNS40LTUuNCAyYy0xLS42LTItMS4yLTMtMS42TDI0IDIuOTdsLTUuMiA4LjZjLTEuMi40LTIgMS0zIDEuNmwtNS40LTIgMiA1LjRjLS42IDEtMS4yIDItMS42IDNMMiAyNC45N2w4LjYgNS4yYy40IDEuMiAxIDIgMS42IDNsLTIgNS4zOTkgNS40LTJjMSAuNiAyIDEuMiAzIDEuNmw1LjQgOC44IDUuMi04LjZjMS4yLS40IDItMSAzLTEuNmw1LjQgMi0yLTUuNGMuOC0xIDEuNC0yLjIgMS44LTMuMk0yNCAzNi43N2MtNi42IDAtMTEuOC01LjItMTEuOC0xMS44czUuNC0xMS44IDExLjgtMTEuOGM2LjYgMCAxMS44IDUuNCAxMS44IDExLjggMCA2LjYtNS4yIDExLjgtMTEuOCAxMS44IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjMzlDQ0ZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zMiAyNC41NjljMCAuMi0uMi40LS40LjYtLjIuNC4yLjQuMi42IDAgLjQgMCAxLS4yIDEuNCAwIC40LS4yLjgtLjQgMS4ycy0uNC42LS42IDFjMCAuNC0uMi44LS40IDEuMi0uNC40LS42LjYtMSAuOHMtLjQuNi0uOCAxbC0xLjIuNmMtLjQuMi0uOC4yLTEuMi40cy0xIC4yLTEuNC40Yy0uNCAwLTEgMC0xLjQuMi0uNCAwLS44LjQtMS4yLjRzLS44LS40LTEuMi0uNC0uOC0uMi0xLjItLjQtLjgtLjItMS4yLS40Yy0uNCAwLS44LS40LTEtLjggMC0uNCAxLjItLjQgMS42LS42LjYtLjQgMS40LS4yIDItLjYuMi0uMi40LS40LjYtLjQuMi0uMi40LS4yLjgtLjIuNC0uMiAxLS4yIDEuNi0uNGwxLjItLjZjLjQtLjIuNi0uNCAxLS44LjQtLjIuNi0uNiAxLTFsLjYtMS4yYy40LS40LjgtLjQuNi0uOHMtLjItMS0uMi0xLjRjMC0xIC4yLTItLjQtMi44LS40LS40LS42LS44LS44LTEuMi0uMi0uMi0uMi0uNC0uMi0uNiAwLS40LjItLjQtLjItLjQtLjIgMC0uNC4yLS42LjJoLS44Yy0uNiAwLTEuMiAwLTEuNi4ycy0xIC40LTEuMi42Yy0uNC4yLS42LjYtMSAuOC0uMiAwLS40LjItLjYuNCAwIC4yLS4yLjQtLjIuNi0uMi40LS4yIDEgMCAxLjYuMi44LjggMiAxLjggMS42cy0uOC0xLjggMC0yLjJjLjQtLjIgMS0uMiAxLjQgMCAuNiAwIDEgLjIgMS40LjRzLjIuOC40IDEuMmMuNC40LjQuOC40IDEuNCAwIDEtLjYgMS44LTEuNCAyLjItLjQuMi0xIDAtMS40LjJzLS44LjQtMS4yLjRjLS4yIDAtLjQtLjItLjYtLjJoLS42Yy0uNCAwLS42LS42LTEtLjYgMC0uNC0uNi0uOC0uOC0xLS40LS40LS42LS44LTEtMS4ycy0uNi0uOC0uOC0xLjIgMC0uOC0uMi0xLjJjMC0uMi0uMi0uNC0uMi0uNnYtLjhjMC0uNC0uMi0uOC0uMi0xLjJzMC0uNC40LS40Yy4yLS4yLjQtLjQuNi0uNC0uMi0uOCAwLTEgLjQtMS40IDAtLjIuMi0uNC40LS42cy4yLS40LjQtLjRjLjQtLjQuOC0uNiAxLjItMSAuOC0uNiAxLjYtMS4yIDIuOC0uOC42LjIuOC0uMiAxLjItLjJzLjguNCAxLjIuNGMuNC4yLjguMiAxLjIuNHMxIC40IDEuNC42YzEgLjQgMS4yIDEuMiAxLjggMS44LjQuNiAxLjYgMS40IDEuMiAyLjIgMCAuMiAwIC42LjIuOC4yLjQuMi42LjIgMSAuMi42LjggMS4yLjggMS42IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=); } .class-emerald-dream{ background-image: url(data:image/webp;base64,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); } .class-any-class,.class-player-class{ background-image: url(data:image/webp;base64,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tx255597eNnAGvqjA1Nczdtk071O84At6Zd4sPH9l34POTWwszBFGmTLQsuNeYMIU9G9VKQAxvhm6lfbg4Yw4Q0zHqO8qPZBVt7kluHea6EHhZYN2RmatarDCbNzGc2dfq+gyYHHZz3KQZwV97+aWMuWZVOzp3hxM9N07bFwAC1oMgAAWE1QIGsDAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmNkOGVlZDQtMTY0Ni0xOTRjLWJlMzMtMDQzN2UwZDJjMjAzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQyODJCMUY2MjRDODExRTlBQUYwQTg2NzJCQjc0QTQ5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQyODJCMUY1MjRDODExRTlBQUYwQTg2NzJCQjc0QTQ5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmQ2MmQzYmRiLTllMDktZWQ0YS1hMzk5LTBhMzBhOTM4ZTUzNCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjljZjljMGE1LWE5NTItYjk0Ni04YjFjLTNhNmU5MDFkZGU4YyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgA=); } .class-opponent-class, .class-opponent\\'s-class { background-image: url(data:image/webp;base64,UklGRuwHAABXRUJQVlA4WAoAAAAUAAAAQwAAQwAAQUxQSKoBAAABgCMAkGlnvnUL/59SnZMjsNIRUtp2aye9Ual2DmDb1sRv38wcICIcuI2kSM4x883ME0A9QyizYXht/xbxdn9tuCEzZADqnGmDJ6jZyWCak1JE9y0qdtsdRSVhBnU1n0AhbAp1NxWml63iGQl6qbTp4l5AohbcOqRcI1nXKcryP5Cwj3zFz3IzEtdkUEG+RaxRkIsM5WhK/uDwkaJ1r1fI0pX7X9ZFZGrJ+p9SZKv0H95HPo/evyaRsak/opG1aAH7iJO/fy2RufAfXdxav7nuuF3YANKQvRSAIX69YDjhtwNBFJA3Q4LsRgmahiUYXZZgeVOCzTMJzp4leJZBxpFNCbZk3JCMz7aM71imiO+6jN8cw6mE3z4Y4tcn479Ayn8SdEv4b4RIbhHw0zSvaRFjlhj43ZSAfQAf5xjOJ2EsWfbvmHaJbUxrkzC29mhNmZjG+BLmGrmgXQu9FlBgaCHfGkCpAto5YIHkuSiAl25O7NM3N696ofBaZROxRkBQ4rzOtYokICpK35oJYa70wRNtJ4PpLqDOEMpqGF1bv3h5uVhfG23MChlAOQBWUDggqAIAAPARAJ0BKkQARAA+fTSRR6SjIaE61twAkA+JZQDBEGT3052aFKsdITQ9soeB1MltmCazqanlLI9Yi6DopXB0YtHCDJfMgtXiMjjK5zq+fxJPdJUyLYcqWvtse7+iESPokWxbFCfex9IKrjLN0fTe4yJTpetxtsOr2NWy+Acg18znSTaBlMK8+3pbzZRjuwEQB8G/4d1y39ZAAP7+FHEVY1SOdyTPUojZeq4Qszh7zWOIxpZru7xWHdfE3XAHytHiESR2a3eIVRkgLlsCQ2CtejSs4MwFpN570+1V8bhatC8phinZwSUhN4R1+PUIt1d8cDXbYbzzrFe/wbRS3gd9vk7yz6y6EFx5awO/n8r/bQPZExHtcC8z2mXRdAA9E6SpcGcU1X/USW5jhjq8vLQDFwLwpvqQMNImMM+ZEViPLOcEz88GjHkxN8RKdNcF1u8PuOCs97U4yVY7+eIWOn5HgJWFKCloJPIkVWnpUcuopHOlllFf6wQwtlQl/is83aW0JoSrJWXEiRjHIuyjP1aVeCw/HcLe4IpbnS/N4w+4vIwZchNa1y1kS5MMrCTDJhcp53DKadlDVx9FpZn2e7rrwH3U2mpUqYzqx+MNDM6RRDB46sgB8v0FJuUTp8Cy/6IQC7cAL1peC5VFQMHBqAM2vXMe8uNSrQD6oTY4gA0Ur9spFI29RGvm9bqKl4LGgThdxlhlBQITsLz2QzLx6JyvPFT5w7UwqyUPNVHEpw4kIs0gBdjQPRypEZwVbb+zcIMtNN5ZBWR+qvjQR9T1VoJ1TMn1TOdVBZDcb5VjYO8e1YEF35CBmHhtKNXMYtYkd5dUnvJnzvK4QXJVej1cGj5rT25FkxywCCOoQ1xKR/Kgm6TkM50cP4S9shcRUTkRJEH6SIF6hJzLgAAAWE1QIGsDAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmNkOGVlZDQtMTY0Ni0xOTRjLWJlMzMtMDQzN2UwZDJjMjAzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQ3MjI0RTAzMjRDODExRTlCQTlCQzMzODRGQ0EzRDlBIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3MjI0RTAyMjRDODExRTlCQTlCQzMzODRGQ0EzRDlBIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmQ2MmQzYmRiLTllMDktZWQ0YS1hMzk5LTBhMzBhOTM4ZTUzNCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjljZjljMGE1LWE5NTItYjk0Ni04YjFjLTNhNmU5MDFkZGU4YyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgA=); } .class-death-knight,.class-vs-death-knight { background-image: url(data:image/webp;base64,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); } .class-demon-hunter,.class-vs-demon-hunter { background-image: url(data:image/webp;base64,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); } .class-druid,.class-vs-druid { background-image: url(data:image/webp;base64,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a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmNkOGVlZDQtMTY0Ni0xOTRjLWJlMzMtMDQzN2UwZDJjMjAzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUwQ0Q0RTMxMjRDODExRTlCMkNBOUQ2REM4QzM5MDFDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUwQ0Q0RTMwMjRDODExRTlCMkNBOUQ2REM4QzM5MDFDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmQ2MmQzYmRiLTllMDktZWQ0YS1hMzk5LTBhMzBhOTM4ZTUzNCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjljZjljMGE1LWE5NTItYjk0Ni04YjFjLTNhNmU5MDFkZGU4YyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgA=); } .class-hunter,.class-vs-hunter { background-image: url(data:image/webp;base64,UklGRqQIAABXRUJQVlA4WAoAAAAUAAAAQwAAQwAAQUxQSKoBAAABgCMAkGlnvnUL/59SnZMjsNIRUtp2aye9Ual2DmDb1sRv38wcICIcuI2kSM4x883ME0A9QyizYXht/xbxdn9tuCEzZADqnGmDJ6jZyWCak1JE9y0qdtsdRSVhBnU1n0AhbAp1NxWml63iGQl6qbTp4l5AohbcOqRcI1nXKcryP5Cwj3zFz3IzEtdkUEG+RaxRkIsM5WhK/uDwkaJ1r1fI0pX7X9ZFZGrJ+p9SZKv0H95HPo/evyaRsak/opG1aAH7iJO/fy2RufAfXdxav7nuuF3YANKQvRSAIX69YDjhtwNBFJA3Q4LsRgmahiUYXZZgeVOCzTMJzp4leJZBxpFNCbZk3JCMz7aM71imiO+6jN8cw6mE3z4Y4tcn479Ayn8SdEv4b4RIbhHw0zSvaRFjlhj43ZSAfQAf5xjOJ2EsWfbvmHaJbUxrkzC29mhNmZjG+BLmGrmgXQu9FlBgaCHfGkCpAto5YIHkuSiAl25O7NM3N696ofBaZROxRkBQ4rzOtYokICpK35oJYa70wRNtJ4PpLqDOEMpqGF1bv3h5uVhfG23MChlAOQBWUDggYAMAABASAJ0BKkQARAA+kT6aSaWjIiEmdm0wsBIJQBihisJeIpfLlm5Y/u0WYMwb07rSZaEHOxVJ4iG0O4HX+PycONvZGh6ycCnwzX8OnO66Aja0byVSvtoFsFK8Njn9f+UD0gle7PR9iRvOHvtAON/tY7hIshArhXjNk63OMeuOQsdFCYU5ATCSAOEpwXMHhX9yRLupjh2SEGtHAAD+/hTMEc2R0+dPguQo/ADtuf8LXHHJ7DjSF05A4aAl4WOcGOPrZv8buDFZD4AdZ57h6WCSvjhM/w3YWMQXTZ5upJ00fk950b0U15sh9dfff6hM3AlybpT4/+03hFdE7B0RG2ypoe9PleyDmrv+dwkHhQ5Et6OyoTk8iHYc6w6YELC0MFjNA3bVnX92GEaVPcxQyoaeTnFZVaew3OezREL15s6uDH6vItBKsz8nUCNFKgDDSOGn2MglWlvkK9FZSUaM1WTkT3GeXWL3O/Zs4r55ugarn1gnhYDXtkNe/kdJni2oiKmcXPJ4tWT9HNl+nD2o6PEoiJ7I6SGZ1GsVPcN4nYKSZssyvnP4pNiemoSni6LJgULTAxnROFH8cd4++cltw9UFTdwWOMnGQQ5PoMvz7qwYNyjzs/qskOWpaYbyJozeVw3/VxTic1lpjLGAwnOJeBb+tYm3JiOGdGePh6ZFzeUgzAvQgrdQsfGiIRjUezwl2gRSrPQoETWRst4djfnCmQnc2oEwkNpqWfySigtm+DH9HO6MSZRWpa2WVgof6xoVyJfSc31kzxaWUhBuqYxLlNPrpDaVGfPCuyx03fz5bW6/MtK5TgBA7EHq2zXqQSnwUi7bwV7qwAzChB86uBE5Gc0MVwVch536WmUMDkfkR7KIXJzC6J9ihZykL6UasN9738jACckmemVOORMzfJYJmfERPs6c3+8acPtxUTfq2tWxCGzlm+PQdJeQNVKqHMDmqzSsuiE0PM2nHpnC6VmbM/Y1EFG7WZfM2RtTB1wi6keTbY/e45nJvbTK0Y6kz9KLMCHppCt7iI63VBf6pwpwZl7EE2wgP9tThgYtx6lP/s8fXJ5nayfwCBEcQQ21woi4DuiZwrjPqFHGQvTArHGbjrxv3lwtzdor/kr49UOC88Ru4Cd8cB/vbO0VIrDCDWKv8coAAFhNUCBrAwAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmJjZDhlZWQ0LTE2NDYtMTk0Yy1iZTMzLTA0MzdlMGQyYzIwMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQzMzQzQ3NzI0QzgxMUU5OUJFQTgxMTNGMDZBRTk0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQzMzQzQ3NjI0QzgxMUU5OUJFQTgxMTNGMDZBRTk0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpkNjJkM2JkYi05ZTA5LWVkNGEtYTM5OS0wYTMwYTkzOGU1MzQiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5Y2Y5YzBhNS1hOTUyLWI5NDYtOGIxYy0zYTZlOTAxZGRlOGMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4A); } .class-mage,.class-vs-mage { background-image: url(data:image/webp;base64,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67ONaSjuJJyALOzCvVtvr3TEDcgt3t2z0qEEb8x4NzBG4gCcmsAcnTpb/Hj9uj236kNTTWGPweWC0pSl2ClcL4AAAABYTVAgawMAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiY2Q4ZWVkNC0xNjQ2LTE5NGMtYmUzMy0wNDM3ZTBkMmMyMDMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkNERUMxMEQyNEM4MTFFOUIzQTc4MUQ4NDZDMzNGNTgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkNERUMxMEMyNEM4MTFFOUIzQTc4MUQ4NDZDMzNGNTgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZDYyZDNiZGItOWUwOS1lZDRhLWEzOTktMGEzMGE5MzhlNTM0IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OWNmOWMwYTUtYTk1Mi1iOTQ2LThiMWMtM2E2ZTkwMWRkZThjIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AA==); } .class-paladin,.class-vs-paladin { background-image: url(data:image/webp;base64,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xgSI2OuCmyGgoAAAAABYTVAgawMAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiY2Q4ZWVkNC0xNjQ2LTE5NGMtYmUzMy0wNDM3ZTBkMmMyMDMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDE2RjhEODIyNEM5MTFFOUFEMkNCNjBGN0E5OUY0NTQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDE2RjhEODEyNEM5MTFFOUFEMkNCNjBGN0E5OUY0NTQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZDYyZDNiZGItOWUwOS1lZDRhLWEzOTktMGEzMGE5MzhlNTM0IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OWNmOWMwYTUtYTk1Mi1iOTQ2LThiMWMtM2E2ZTkwMWRkZThjIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AA==); } .class-priest,.class-vs-priest { background-image: url(data:image/webp;base64,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gDPp4k2KsrbGjO/Kv9jEDIoBkzZXsZ+qrNLZQIKTJqWsMO409AAAAFhNUCBrAwAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmJjZDhlZWQ0LTE2NDYtMTk0Yy1iZTMzLTA0MzdlMGQyYzIwMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGN0QyMTQ0NzI0QzgxMUU5QUUwQUM5N0UxQTdDNEE2OCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0QyMTQ0NjI0QzgxMUU5QUUwQUM5N0UxQTdDNEE2OCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpkNjJkM2JkYi05ZTA5LWVkNGEtYTM5OS0wYTMwYTkzOGU1MzQiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5Y2Y5YzBhNS1hOTUyLWI5NDYtOGIxYy0zYTZlOTAxZGRlOGMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4A); } .class-rogue,.class-vs-rogue { background-image: url(data:image/webp;base64,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IHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmNkOGVlZDQtMTY0Ni0xOTRjLWJlMzMtMDQzN2UwZDJjMjAzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzMTBBOUM5MjRDODExRTlCMEQ5QkYwNzBEMzFCNzQ2IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzMTBBOUM4MjRDODExRTlCMEQ5QkYwNzBEMzFCNzQ2IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmQ2MmQzYmRiLTllMDktZWQ0YS1hMzk5LTBhMzBhOTM4ZTUzNCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjljZjljMGE1LWE5NTItYjk0Ni04YjFjLTNhNmU5MDFkZGU4YyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgA=); } .class-shaman,.class-vs-shaman { background-image: url(data:image/webp;base64,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Jp/qTUy9xoWU1Qy4D3Cm+tmmmdCgQA/OKux/sqRtgPv80qOO1RItJWETlHLxNZAL807Rb8GzQNaru/lJIQgL7krfvJAEe0w7y9z7c8V3Kkwv35bTZUnOky9n08/1UPyxrpiclVJ3ANkubGifKyPMlrthjTWRBK+YcDajOu/hlKZhuozeVAXOYcfQBhWN4oXSYbc5JoeOGALck4D/WBERWAAAWE1QIGsDAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmNkOGVlZDQtMTY0Ni0xOTRjLWJlMzMtMDQzN2UwZDJjMjAzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVFODRDMUJEMjRDODExRTk4RTdFRUZDOTYyRUZFRjVGIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVFODRDMUJDMjRDODExRTk4RTdFRUZDOTYyRUZFRjVGIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmQ2MmQzYmRiLTllMDktZWQ0YS1hMzk5LTBhMzBhOTM4ZTUzNCIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjljZjljMGE1LWE5NTItYjk0Ni04YjFjLTNhNmU5MDFkZGU4YyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgA=); } .class-warlock,.class-vs-warlock { background-image: url(data:image/webp;base64,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czp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmJjZDhlZWQ0LTE2NDYtMTk0Yy1iZTMzLTA0MzdlMGQyYzIwMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFOUVBMjM3MzI0QzgxMUU5OUFDM0YxMkFFQzYwQzQ1RiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFOUVBMjM3MjI0QzgxMUU5OUFDM0YxMkFFQzYwQzQ1RiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpkNjJkM2JkYi05ZTA5LWVkNGEtYTM5OS0wYTMwYTkzOGU1MzQiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5Y2Y5YzBhNS1hOTUyLWI5NDYtOGIxYy0zYTZlOTAxZGRlOGMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4A); } .class-warrior,.class-vs-warrior { background-image: url(data:image/webp;base64,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eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiY2Q4ZWVkNC0xNjQ2LTE5NGMtYmUzMy0wNDM3ZTBkMmMyMDMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTU0OTBEMDAyNEM4MTFFOUEzRTM5QzU0MDgzRjQzRjQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTU0OTBDRkYyNEM4MTFFOUEzRTM5QzU0MDgzRjQzRjQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZDYyZDNiZGItOWUwOS1lZDRhLWEzOTktMGEzMGE5MzhlNTM0IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OWNmOWMwYTUtYTk1Mi1iOTQ2LThiMWMtM2E2ZTkwMWRkZThjIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AA==); } `; const manaStyles = ` .icon-crystal { background: url(data:image/webp;base64,UklGRsACAABXRUJQVlA4WAoAAAAQAAAAIwAAIQAAQUxQSNEAAAABgGLb1vLmhiPRoWaScZkAJwMoqcqu6nYMdZGVVaQYHHl2JJn5+/n73/tGEBETAMeORlmH2zuSLTdzGul7Ti78RfOzLLekEX8lZbL/VN8jmWON/Cvq1BR0Yt7pVmN8C9lNa6wzNt43nnuPZaTx/kwBiP0xaTcAdjXunxbKgk07KV5q/P/7moq/Sih6p0RPKPCGMwVmURRsL15gk0s0AER+mdZgXeD5CNl4Xzn+OrCf4liH8xXdZ1SiIciGkD2g2oV04p/mOyGHRZoxuPSeUOzAEQBWUDggyAEAALAJAJ0BKiQAIgA+kTiZSKWjIiEuO/gAsBIJYwDJYQlSfcwDs2TNVb00Hx3tOaG7yySA9JAFJV8PSaFGjRYkTFODVD5WMCirbR/HFjkwQcuYzWec2/gAAP7739pzrCX4lbQ17C3TWGITMrcCfAoZpiEFUKaxy06jWHzahsnUlFZiRH42/Yi+CEBGmoHGfymxG048OQEnxWQUOthIavlu4a9h7wGUbN/ul+ALgA3G/72nldHJ41XtGUmb6Q9ehRSYTh3djQUBJRkqpujLFj/pqendwz/6VVIpYpIR7LjoTQJbdLAIx+91w/iYpOOjFNR9s/0zDLq5dp252qwmEW/IcKJFFCLXzrj6G69lFDbyAIMpu733rDVeOLoEkpk4m09aVJbluo1YTnVSc5aAl+Z6PDRmAzUY2vG4VcNEHMDiC9jx2hHVWYvzIvez+e9t7li3dLFBHMAObl8oNBs5beaySbPXVlnTURihUtBci8rJaQXcjwI48+ABjJA8NrDXtwcL97kPwCJalSUopoMM6wOjYdeuos4skzu2z3jzHA2IM7ne+b9xXuU1ekH9CrVfGAMqkHkZQFcpi9rkpEEgINXnLolYgGONbIAAAA==) center center / contain no-repeat; display: flex; justify-content: center; align-items: center; position: relative; z-index: 101; width: 3ch; height: 24px; left: -10px; } .icon-crystal p { position: relative; height: 100%; text-align: center; margin: 0; color: white; font-weight: bold; display: flex; align-items: center; justify-content: center; font-family: "Belwe_Bold", serif; text-shadow: #000000 1px 0 0, #000000 0.87759px 0.47943px 0, #000000 0.5403px 0.84147px 0, #000000 0.07074px 0.9975px 0, #000000 -0.41615px 0.9093px 0, #000000 -0.80115px 0.59847px 0, #000000 -0.98999px 0.14112px 0, #000000 -0.93646px -0.35079px 0, #000000 -0.65365px -0.7568px 0, #000000 -0.2108px -0.97753px 0, #000000 0.28366px -0.95893px 0, #000000 0.70867px -0.70554px 0, #000000 0.96017px -0.27942px 0; } `; const adStyles = ` .container.is-fluid { padding: 0 !important; } /* ... */.container.is-fluid { padding: 0 !important; } @media only screen and (min-width: 1025px) { .container.space-for-ads { padding-right: 0 !important; } } #items_viewport, #deck_stats_viewport{ width: 90% !important; margin: 0 auto !important; } `; const titleStyles = ` div.title.is-2 { font-size: 19px !important; color: #614326 !important; white-space: nowrap !important; width: 300px !important; height: 50px !important; line-height: 50px !important; text-align: center !important; margin: 30px auto !important; position: relative !important; background: url(data:image/webp;base64,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) center center no-repeat; } `; const subStyles = ` div.new_subtitle { text-align: center !important; color: #614326 !important; font-size: 14px !important; } div.new_subtitle a{ text-decoration: underline !important; color: #725a37 !important; font-weight: bold !important; } div.new_subtitle a:hover { color: #e22c14 !important; } `; const runeStyles = ` /* 死骑符文容器 */ .rune-container { float: right; } /* 死骑符文颜色 */ .rune-blood { display: inline-block; background: rgb(239, 102, 102); height: 8px;width: 8px; transform: translateY(-1px) rotate(45deg); margin: 0px 2px; box-shadow: rgb(30, 30, 30) 0px 0px 2px inset; } .rune-frost { display: inline-block; width: 10px; height: 10px; margin: 0px 2px; box-shadow: rgb(30, 30, 30) 0px 0px 2px inset; background: rgb(78, 188, 230);border-radius: 50%; } .rune-unholy { display: inline-block; background: rgb(111, 218, 88); width: 10px; height: 10px; margin: 0px 2px; box-shadow: rgb(30, 30, 30) 0px 0px 2px inset; } `; const tableStyles = ` .table { background-color: #e9d8ac !important; color: #614326 !important; } .content table thead td, .content table thead th, .table thead td, .table thead th { font-size: 16px !important; color: #614326 !important; background-color:#e8d3a6 !important; border-bottom: 2px solid #caae85 !important; } .content table td, .content table th, .table td, .table th { border-bottom: 1px solid #caae85 !important; } .table.is-striped tbody tr:not(.is-selected):nth-child(even) { background-color: #dbc99e !important; } table.table.is-fullwidth { width:90% !important; margin:0 auto 0 0 !important; } table a { color: #614326 !important; } table a:hover { color: #e22c14 !important; } table.hsguru-streamer-decks-table, table.table.is-fullwidth.hsguru-streamer-decks-table { width: calc(100% - 32px); margin: 16px auto 0; border-collapse: separate; border-spacing: 0; table-layout: fixed; border: 1px solid #b9aa8b; background: #efe1bc; box-shadow: rgba(40, 30, 18, 0.08) 0 8px 18px; } table.hsguru-streamer-decks-table thead th { position: sticky; top: 0; z-index: 3; background: #d8c394; color: #3d2b16; font-size: 13px; font-weight: 700; padding: 8px 10px; border-right: 1px solid #b9aa8b; border-bottom: 2px solid #9e7d55; white-space: nowrap; vertical-align: middle; } table.hsguru-streamer-decks-table tbody td { padding: 8px 10px; border-right: 1px solid #caae85; border-bottom: 1px solid #caae85; color: #3a2a18; vertical-align: middle; } table.hsguru-streamer-decks-table tbody tr:nth-child(even) { background: #e2d0a6; } table.hsguru-streamer-decks-table tbody tr:hover { background: #f0dfb9; } table.hsguru-streamer-decks-table td:first-child, table.hsguru-streamer-decks-table td.hsguru-streamer-deck-cell { width: 16%; min-width: 240px; max-width: 280px; } table.hsguru-streamer-decks-table tbody tr:nth-child(odd) td.hsguru-streamer-deck-cell { background: linear-gradient(90deg, rgba(255, 248, 225, 0.98), rgba(245, 232, 198, 0.92)) !important; } table.hsguru-streamer-decks-table tbody tr:nth-child(even) td.hsguru-streamer-deck-cell { background: linear-gradient(90deg, rgba(246, 232, 194, 0.98), rgba(226, 205, 156, 0.94)) !important; } table.hsguru-streamer-decks-table td.hsguru-streamer-deck-cell { --hsguru-streamer-accent: #9a8768; padding: 7px 10px; border-right: 1px solid #caae85; border-bottom: 1px solid #caae85; border-left: 5px solid var(--hsguru-streamer-accent) !important; color: #1f1409; } table.hsguru-streamer-decks-table td:first-child .decklist-card-container { width: 100%; max-width: none; min-height: 28px; border: 0; box-shadow: none; filter: saturate(0.82) brightness(1.08); } table.hsguru-streamer-decks-table td:first-child .decklist-info { position: relative; width: 100%; max-width: 100%; min-height: 34px; margin: 0 !important; padding: 0; box-sizing: border-box; overflow: hidden; border: 0; border-radius: 0; background: transparent !important; box-shadow: none; color: #241609; } table.hsguru-streamer-decks-table td:first-child .decklist-info::before { content: none; } table.hsguru-streamer-decks-table td:first-child .decklist-info.death-knight, table.hsguru-streamer-decks-table td:first-child .decklist-info.deathknight { --hsguru-streamer-accent: #c51e35; } table.hsguru-streamer-decks-table td:first-child .decklist-info.demon-hunter, table.hsguru-streamer-decks-table td:first-child .decklist-info.demonhunter { --hsguru-streamer-accent: #5aa832; } table.hsguru-streamer-decks-table td:first-child .decklist-info.druid { --hsguru-streamer-accent: #c67a2d; } table.hsguru-streamer-decks-table td:first-child .decklist-info.hunter { --hsguru-streamer-accent: #5a9f44; } table.hsguru-streamer-decks-table td:first-child .decklist-info.mage { --hsguru-streamer-accent: #36b9d4; } table.hsguru-streamer-decks-table td:first-child .decklist-info.paladin { --hsguru-streamer-accent: #d8c936; } table.hsguru-streamer-decks-table td:first-child .decklist-info.priest { --hsguru-streamer-accent: #b8ad98; } table.hsguru-streamer-decks-table td:first-child .decklist-info.rogue { --hsguru-streamer-accent: #d3b63b; } table.hsguru-streamer-decks-table td:first-child .decklist-info.shaman { --hsguru-streamer-accent: #1581cf; } table.hsguru-streamer-decks-table td:first-child .decklist-info.warlock { --hsguru-streamer-accent: #a931c7; } table.hsguru-streamer-decks-table td:first-child .decklist-info.warrior { --hsguru-streamer-accent: #bf8a55; } table.hsguru-streamer-decks-table td:first-child .decklist-info .level.is-mobile { position: relative; z-index: 2; display: grid; grid-template-columns: 26px minmax(0, 1fr) 26px; align-items: center; gap: 4px; min-height: 32px; margin: 0; padding: 3px 6px 3px 10px; } table.hsguru-streamer-decks-table td:first-child .decklist-info .level-left, table.hsguru-streamer-decks-table td:first-child .decklist-info .level-right { min-width: 0; margin: 0; justify-content: center; } table.hsguru-streamer-decks-table td:first-child .decklist-info .deck-title { margin: 0; max-width: 100%; font-size: 15px; line-height: 1.15; font-weight: 700; text-align: left; } table.hsguru-streamer-decks-table td:first-child .decklist-info .deck-title a { display: inline-block; max-width: 100%; overflow: hidden; color: #1f1409 !important; text-overflow: ellipsis; text-shadow: none; vertical-align: bottom; white-space: nowrap; } table.hsguru-streamer-decks-table td:first-child .decklist-info .clip-btn-value, table.hsguru-streamer-decks-table td:first-child .decklist-info .level-right .is-clickable { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: 0; background: transparent; color: rgba(48, 34, 20, 0.88); } table.hsguru-streamer-decks-table td:first-child .decklist-info .icon.is-small, table.hsguru-streamer-decks-table td:first-child .decklist-info svg.icon { width: 18px; height: 18px; } table.hsguru-streamer-decks-table td:first-child .decklist-info:hover { background: transparent !important; } table.hsguru-streamer-decks-table th:nth-child(2), table.hsguru-streamer-decks-table td:nth-child(2) { width: 16%; } table.hsguru-streamer-decks-table th:nth-child(3), table.hsguru-streamer-decks-table td:nth-child(3) { width: 6%; } table.hsguru-streamer-decks-table th:nth-child(4), table.hsguru-streamer-decks-table td:nth-child(4), table.hsguru-streamer-decks-table th:nth-child(5), table.hsguru-streamer-decks-table td:nth-child(5), table.hsguru-streamer-decks-table th:nth-child(6), table.hsguru-streamer-decks-table td:nth-child(6) { width: 8%; } table.hsguru-streamer-decks-table th:nth-child(7), table.hsguru-streamer-decks-table td:nth-child(7) { width: 9%; } table.hsguru-streamer-decks-table th:nth-child(8), table.hsguru-streamer-decks-table td:nth-child(8) { width: 10%; } table.hsguru-streamer-decks-table th:nth-child(9), table.hsguru-streamer-decks-table td:nth-child(9) { width: 19%; } table.hsguru-streamer-decks-table td:first-child .decklist-card-gradient, table.hsguru-streamer-decks-table td:first-child .decklist-card-background { background: rgba(255, 246, 216, 0.72) !important; color: #17110a !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.55); } table.hsguru-streamer-decks-table td:first-child .card-name { font-weight: 700; text-align: center; } table.hsguru-streamer-decks-table td:first-child .decklist-card-tile { opacity: 0.28; } table.hsguru-streamer-decks-table td:first-child .rune-container { position: relative; z-index: 2; } table.hsguru-streamer-decks-table td:nth-child(2) a { font-weight: 700; color: #553719; } table.hsguru-streamer-decks-table .tag { display: inline-flex; align-items: center; justify-content: center; border-radius: 5px; color: #111; font-weight: 700; } table.hsguru-streamer-decks-table .legend-rank { display: inline-flex; align-items: center; justify-content: center; min-width: 58px; height: 24px; padding: 0 6px; box-sizing: border-box; background: #f4ead1; border: 1px solid #b9aa8b; color: #3d2b16; } table.hsguru-streamer-decks-table .hsguru-streamer-empty-rank { color: #796a54; font-size: 12px; font-weight: 600; } table.hsguru-streamer-decks-table td:nth-child(7) .tag { display: inline-flex; align-items: center; justify-content: center; min-width: 70px; height: 24px; padding: 0 6px; box-sizing: border-box; } table.hsguru-streamer-decks-table .icon.tag.is-link { width: 24px; height: 24px; min-width: 24px; padding: 0; background: #5b4124; color: #f8edcf; border: 1px solid #2d2115; vertical-align: middle; } table.hsguru-streamer-decks-table td:nth-child(8) { white-space: nowrap; } table.hsguru-streamer-decks-table td:nth-child(8) a { display: inline-flex; align-items: center; gap: 4px; height: 24px; vertical-align: middle; } table.hsguru-streamer-decks-table td:nth-child(8) a .tag:not(.icon) { min-height: 24px; height: 24px; padding: 0 8px; } table.hsguru-streamer-decks-table time.datetime-human { color: #4b3a25; font-size: 12px; white-space: nowrap; } #deck_stats_viewport .decklist-info, .card > .card-image .decklist-info, table.hsguru-meta-table .decklist-info { --hsguru-class-accent: #9a8768; } #deck_stats_viewport .decklist-info.deathknight, .card > .card-image .decklist-info.deathknight, table.hsguru-meta-table .decklist-info.deathknight { --hsguru-class-accent: #c51e35; } #deck_stats_viewport .decklist-info.demonhunter, .card > .card-image .decklist-info.demonhunter, table.hsguru-meta-table .decklist-info.demonhunter { --hsguru-class-accent: #5aa832; } #deck_stats_viewport .decklist-info.druid, .card > .card-image .decklist-info.druid, table.hsguru-meta-table .decklist-info.druid { --hsguru-class-accent: #c67a2d; } #deck_stats_viewport .decklist-info.hunter, .card > .card-image .decklist-info.hunter, table.hsguru-meta-table .decklist-info.hunter { --hsguru-class-accent: #5a9f44; } #deck_stats_viewport .decklist-info.mage, .card > .card-image .decklist-info.mage, table.hsguru-meta-table .decklist-info.mage { --hsguru-class-accent: #36b9d4; } #deck_stats_viewport .decklist-info.paladin, .card > .card-image .decklist-info.paladin, table.hsguru-meta-table .decklist-info.paladin { --hsguru-class-accent: #d8c936; } #deck_stats_viewport .decklist-info.priest, .card > .card-image .decklist-info.priest, table.hsguru-meta-table .decklist-info.priest { --hsguru-class-accent: #b8ad98; } #deck_stats_viewport .decklist-info.rogue, .card > .card-image .decklist-info.rogue, table.hsguru-meta-table .decklist-info.rogue { --hsguru-class-accent: #d3b63b; } #deck_stats_viewport .decklist-info.shaman, .card > .card-image .decklist-info.shaman, table.hsguru-meta-table .decklist-info.shaman { --hsguru-class-accent: #1581cf; } #deck_stats_viewport .decklist-info.warlock, .card > .card-image .decklist-info.warlock, table.hsguru-meta-table .decklist-info.warlock { --hsguru-class-accent: #a931c7; } #deck_stats_viewport .decklist-info.warrior, .card > .card-image .decklist-info.warrior, table.hsguru-meta-table .decklist-info.warrior { --hsguru-class-accent: #bf8a55; } #deck_stats_viewport .card, .card:has(> .card-image .decklist-info), .hsguru-deck-card-shell { border: 2px solid #433829 !important; border-radius: 10px !important; background: #3b3329 !important; box-shadow: rgba(38, 28, 17, 0.18) 0 8px 18px !important; } #deck_stats_viewport .card .decklist-info:not(.dust-bar), .card > .card-image .decklist-info:not(.dust-bar), .hsguru-deck-summary { width: var(--decklist-width); height: 30px !important; min-height: 30px !important; margin: 0 !important; overflow: hidden; border: 1px solid rgba(80, 61, 38, 0.42); border-left: 5px solid var(--hsguru-class-accent) !important; border-radius: 6px 6px 0 0; background: linear-gradient(90deg, rgba(255, 248, 225, 0.98), rgba(237, 224, 193, 0.94)) !important; color: #1f1409; } #deck_stats_viewport .card .decklist-info:not(.dust-bar) .level.is-mobile, .card > .card-image .decklist-info:not(.dust-bar) .level.is-mobile, .hsguru-deck-summary-row { display: grid !important; grid-template-columns: 22px minmax(0, 1fr) 22px; align-items: center !important; gap: 4px; height: 28px !important; min-height: 28px !important; margin: 0 !important; padding: 2px 6px !important; } #deck_stats_viewport .card .decklist-info:not(.dust-bar) .level-left, #deck_stats_viewport .card .decklist-info:not(.dust-bar) .level-right, .card > .card-image .decklist-info:not(.dust-bar) .level-left, .card > .card-image .decklist-info:not(.dust-bar) .level-right, .hsguru-deck-summary-row > div { min-width: 0; height: 22px !important; min-height: 22px !important; margin: 0 !important; align-items: center !important; justify-content: center !important; } #deck_stats_viewport .card .decklist-info:not(.dust-bar) .level-left, .card > .card-image .decklist-info:not(.dust-bar) .level-left, .hsguru-deck-summary-row .level-left { width: 100% !important; justify-content: flex-start !important; } #deck_stats_viewport .card .decklist-info:not(.dust-bar) .deck-title, .card > .card-image .decklist-info:not(.dust-bar) .deck-title, .hsguru-deck-summary-title { display: flex !important; align-items: center !important; width: 100% !important; height: 22px !important; min-height: 22px !important; margin: 0 !important; overflow: hidden; text-align: left; } #deck_stats_viewport .card .decklist-info:not(.dust-bar) .deck-title a, .card > .card-image .decklist-info:not(.dust-bar) .deck-title a, .hsguru-deck-summary-title a { display: block !important; overflow: hidden; color: #1f1409 !important; font-family: var(--hsguru-font-serif); font-size: 13px; font-weight: 700; line-height: 22px !important; text-overflow: ellipsis; text-shadow: none; white-space: nowrap; } .hsguru-deck-summary-title > span { display: flex !important; align-items: center !important; min-width: 0; width: 100%; height: 22px !important; line-height: 22px !important; } .hsguru-hidden-deck-code { display: none !important; height: 0 !important; line-height: 0 !important; } #deck_stats_viewport .card .decklist-info:not(.dust-bar) .clip-btn-value, #deck_stats_viewport .card .decklist-info:not(.dust-bar) .level-right .is-clickable, .card > .card-image .decklist-info:not(.dust-bar) .clip-btn-value, .card > .card-image .decklist-info:not(.dust-bar) .level-right .is-clickable, .hsguru-deck-icon-button { display: inline-flex !important; align-items: center !important; justify-content: center !important; width: 22px; height: 22px; padding: 0; border: 0; background: transparent; color: rgba(48, 34, 20, 0.88); } #deck_stats_viewport .card .decklist-info:not(.dust-bar) .icon.is-small, #deck_stats_viewport .card .decklist-info:not(.dust-bar) svg.icon, .card > .card-image .decklist-info:not(.dust-bar) .icon.is-small, .card > .card-image .decklist-info:not(.dust-bar) svg.icon, .hsguru-deck-icon-button .icon.is-small, .hsguru-deck-icon-button svg { width: 16px; height: 16px; } #deck_stats_viewport .card .dust-bar.decklist-info, .card > .card-image .dust-bar.decklist-info, .hsguru-deck-dust-bar { width: var(--decklist-width); min-height: 24px; margin: 4px 0 0; border: 1px solid rgba(80, 61, 38, 0.34); border-left: 5px solid var(--hsguru-class-accent) !important; border-radius: 0 0 6px 6px; background: linear-gradient(90deg, rgba(255, 248, 225, 0.98), rgba(237, 224, 193, 0.94)) !important; color: #1f1409; } #deck_stats_viewport .card .dust-bar-inner, .card > .card-image .dust-bar-inner { display: inline-flex; align-items: center; justify-content: center; gap: 4px; width: 100%; min-height: 22px; font-size: 13px; font-weight: 700; line-height: 22px; } #deck_stats_viewport .card .dust-bar .icon, .card > .card-image .dust-bar .icon { width: 16px; height: 16px; } #deck_stats_viewport .card .dust-bar img, .card > .card-image .dust-bar img { width: 16px; height: 16px; object-fit: contain; } table.hsguru-meta-table { border-collapse: separate; border-spacing: 0; border: 1px solid #c4aa71; background: #efe1bc; } table.hsguru-meta-table thead th { background: #d8c394; color: #3d2b16; border-bottom: 2px solid #9e7d55; } table.hsguru-meta-table tbody tr:nth-child(odd) td:not(.hsguru-meta-archetype-cell) { background: #efe1bc; } table.hsguru-meta-table tbody tr:nth-child(even) td:not(.hsguru-meta-archetype-cell) { background: #dbc99e; } table.hsguru-meta-table tbody tr:nth-child(odd) td.hsguru-meta-archetype-cell { background: linear-gradient(90deg, rgba(255, 248, 225, 0.98), rgba(245, 232, 198, 0.92)) !important; } table.hsguru-meta-table tbody tr:nth-child(even) td.hsguru-meta-archetype-cell { background: linear-gradient(90deg, rgba(246, 232, 194, 0.98), rgba(226, 205, 156, 0.94)) !important; } table.hsguru-meta-table td.hsguru-meta-archetype-cell { width: 220px; min-width: 220px; padding: 7px 10px; border-right: 1px solid #caae85; border-bottom: 1px solid #caae85; border-left: 5px solid var(--hsguru-class-accent) !important; color: #1f1409; } table.hsguru-meta-table td.hsguru-meta-archetype-cell .deck-title { display: block; width: auto; overflow: hidden; color: #1f1409 !important; font-family: var(--hsguru-font-serif); font-size: 15px; font-weight: 700; line-height: 1.2; text-overflow: ellipsis; text-shadow: none; white-space: nowrap; } #matchups_table_wrapper.hsguru-matchups-wrapper { width: 100%; margin: 8px auto 0; padding: 0; overflow: auto; border: 1px solid #b9aa8b; border-radius: 0; background: transparent; box-shadow: none; scrollbar-color: #9e9279 #e4d7b8; } table.hsguru-matchups-table { width: max-content; min-width: 100%; margin: 0; border-collapse: separate; border-spacing: 0; color: #141413; background: #efe1bc; } table.table.is-fullwidth.hsguru-matchups-table { width: max-content; min-width: 100%; margin: 0; } table.hsguru-matchups-table thead th, table.hsguru-matchups-table tbody td { box-sizing: border-box; min-width: 64px; padding: 4px 6px; border-right: 1px solid #7c7c74; border-bottom: 1px solid #7c7c74; text-align: center; vertical-align: middle; font-size: 12px; line-height: 1.15; color: #141413; } table.hsguru-matchups-table thead th { position: sticky; top: 0; z-index: 5; background: #e8dfc7; color: #141413; } table.hsguru-matchups-table thead th.hsguru-matchups-corner-cell, table.hsguru-matchups-table thead th.hsguru-matchups-meta-header { background: #ddd3bb; color: #141413; } table.hsguru-matchups-table thead th.hsguru-matchups-corner-cell { position: sticky; left: 0; z-index: 7; min-width: 60px; width: 60px; height: 124px; padding: 0; vertical-align: bottom; } table.hsguru-matchups-table thead th.hsguru-matchups-meta-header { position: sticky; left: 60px; z-index: 7; min-width: 148px; width: 148px; height: 124px; padding: 0; vertical-align: bottom; } table.hsguru-matchups-table th.hsguru-matchups-deck-header { box-shadow: inset 1px 0 0 #cfbd94, inset 0 -1px 0 #c6ad7b; background-clip: padding-box; border-color: #c6ad7b !important; color: #141413; font-family: var(--hsguru-font-serif); font-weight: 700; min-width: 86px; max-width: 118px; padding: 4px 6px; text-align: left; white-space: normal; word-break: keep-all; } table.hsguru-matchups-table th.hsguru-matchups-deck-header .hsguru-matchups-action { justify-content: flex-start; width: 100%; min-height: 23px; padding: 0 3px 0 6px; overflow: hidden; border: 0; background: transparent; box-shadow: none; color: #1f1409; font-family: var(--hsguru-font-serif); font-size: 13px; font-weight: 700; line-height: 1.1; text-align: left; text-overflow: ellipsis; white-space: normal; } table.hsguru-matchups-table th.hsguru-matchups-deck-header .hsguru-matchups-action:hover { background: rgba(255, 255, 255, 0.28); transform: none; } table.hsguru-matchups-table td.hsguru-matchups-winrate-cell, table.hsguru-matchups-table td.hsguru-matchups-archetype-cell { background: #f7edcf; color: #141413; } table.hsguru-matchups-table td.hsguru-matchups-winrate-cell { min-width: 60px; width: 60px; font-weight: 700; } table.hsguru-matchups-table td.hsguru-matchups-archetype-cell { box-shadow: inset 1px 0 0 #cfbd94, 4px 0 0 rgba(20, 20, 19, 0.08); background-clip: padding-box; border-color: #c6ad7b !important; font-family: var(--hsguru-font-serif); font-weight: 700; min-width: 148px; width: 148px; padding: 4px 8px 4px 10px; text-align: left; white-space: nowrap; } table.hsguru-matchups-table td.hsguru-matchups-deck-cell { box-shadow: inset 1px 0 0 #cfbd94; background-clip: padding-box; border-color: #c6ad7b !important; color: #141413; font-family: var(--hsguru-font-serif); font-weight: 700; min-width: 148px; width: 148px; padding: 4px 8px 4px 10px; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } table.hsguru-matchups-table th.hsguru-matchups-deck-header.class-background, table.hsguru-matchups-table td.hsguru-matchups-deck-cell.class-background, table.hsguru-matchups-table td.hsguru-matchups-archetype-cell.class-background { border-top-color: #d8c89f !important; border-right-color: #bda474 !important; border-bottom-color: #bda474 !important; border-left-color: #d8c89f !important; background-color: #f7edcf !important; background-image: linear-gradient(0deg, var(--hsguru-class-bg, rgba(154, 135, 104, 0.10)), var(--hsguru-class-bg, rgba(154, 135, 104, 0.10))) !important; background-clip: padding-box !important; } table.hsguru-matchups-table td.hsguru-matchups-deck-cell button { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin: 0 5px 0 0; padding: 0; border: 0; background: transparent; color: rgba(48, 34, 20, 0.88); vertical-align: middle; } table.hsguru-matchups-table td.hsguru-matchups-deck-cell .icon, table.hsguru-matchups-table td.hsguru-matchups-deck-cell svg.icon { width: 18px; height: 18px; } table.hsguru-matchups-table .hsguru-matchups-sticky-col { position: sticky; left: 0; z-index: 4; box-shadow: 4px 0 0 rgba(20, 20, 19, 0.08); } table.hsguru-matchups-table .hsguru-matchups-sticky-col-2 { position: sticky; left: 60px; z-index: 4; box-shadow: 4px 0 0 rgba(20, 20, 19, 0.08); } table.hsguru-matchups-table td.hsguru-matchups-deck-cell.hsguru-matchups-sticky-col-2, table.hsguru-matchups-table td.hsguru-matchups-archetype-cell.hsguru-matchups-sticky-col-2 { box-shadow: inset 1px 0 0 #cfbd94, 4px 0 0 rgba(20, 20, 19, 0.08); } table.hsguru-matchups-table .hsguru-matchups-action { display: inline-flex; align-items: center; justify-content: center; min-height: 22px; border: 1px solid #b8aa8c; border-radius: 5px; background: #fbf8ef; color: #2f2d28; padding: 2px 6px; font-size: 11px; font-weight: 600; line-height: 1.1; box-shadow: none; transition: background-color 0.18s ease, border-color 0.18s ease; } table.hsguru-matchups-table .hsguru-matchups-action:hover { background: #f1e8d0; border-color: #92846b; transform: none; box-shadow: none; } table.hsguru-matchups-table .hsguru-matchups-action-winrate:hover { transform: translateX(-50%) translateY(-50%); } table.hsguru-matchups-table .hsguru-matchups-action-winrate { position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); white-space: nowrap; } table.hsguru-matchups-table .hsguru-matchups-action-fill, table.hsguru-matchups-table .hsguru-matchups-action-reset { position: absolute; top: 50%; transform: translateY(-50%); } table.hsguru-matchups-table .hsguru-matchups-action-fill:hover, table.hsguru-matchups-table .hsguru-matchups-action-reset:hover { transform: translateY(-50%); } table.hsguru-matchups-table .hsguru-matchups-action-fill { left: 4px; right: auto; } table.hsguru-matchups-table .hsguru-matchups-action-reset { right: 4px; left: auto; } table.hsguru-matchups-table .hsguru-matchups-action-usage { position: absolute; left: 4px; top: calc(50% + 37.5px); } table.hsguru-matchups-table .hsguru-matchups-action-archetype { position: absolute; right: 4px; top: calc(50% + 37.5px); } table.hsguru-matchups-table .hsguru-matchups-meta-separator { position: absolute; left: 50%; top: calc(50% + 37.5px); transform: translateX(-50%); font-size: 11px; font-weight: 600; color: #7a6a52; pointer-events: none; line-height: 22px; } table.hsguru-matchups-table .hsguru-matchups-heat-cell { font-weight: 600; color: #141413; } table.hsguru-matchups-table .hsguru-matchups-low-sample { color: #6d675b; font-size: 11px; font-weight: 600; letter-spacing: 0; } table.hsguru-matchups-table tbody tr:hover td:not(.hsguru-matchups-winrate-cell):not(.hsguru-matchups-archetype-cell):not(.hsguru-matchups-deck-cell) { filter: brightness(0.96); } table.hsguru-matchups-table input[type="number"] { width: 46px; height: 22px; margin-top: 2px; border: 1px solid #b8aa8c; border-radius: 4px; background: #fbf8ef; color: #141413; font-size: 11px; } table.hsguru-matchups-table input[type="number"]:focus { outline: none; border-color: #8d7658; box-shadow: 0 0 0 2px rgba(141, 118, 88, 0.14); } `; function injectStyles(config) { const styleModules = { TABLE_STYLE: isFeatureEnabled("TABLE_STYLE", config) ? tableStyles : "", UI: isFeatureEnabled("UI", config) ? uiStyles : "", FILTER_STYLE: isFeatureEnabled("FILTER_STYLE", config) ? filterStyles : "", MANA: isFeatureEnabled("MANA", config) ? manaStyles : "", AD: isFeatureEnabled("AD", config) ? adStyles : "", TITLE_STYLE: isFeatureEnabled("TITLE_STYLE", config) ? titleStyles : "", SUB_STYLE: isFeatureEnabled("SUB_STYLE", config) ? subStyles : "", RUNE: isFeatureEnabled("RUNE", config) ? runeStyles : "" }; const enabledStyles = Object.values(styleModules).filter(Boolean).join("\n"); const styleId = "hsguru-chinese-plus-main-style"; let style = document.getElementById(styleId); if (!style) { style = document.createElement("style"); style.id = styleId; document.head.appendChild(style); } style.textContent = enabledStyles; } function isFeatureEnabled(featureKey, config) { const configKey = `enable_${featureKey}`; if (config && Object.prototype.hasOwnProperty.call(config, configKey)) { return config[configKey] !== false; } return FEATURES[featureKey]?.enabled !== false; } function handleAd() { [ "nitropay-sticky-side-rail-container", "below-title-ads", "nitropay-below-title-leaderboard", "nitropay-floating-video-all", "nitro-float-close", "nitropay-sticky-side-rail", "nitropay-sticky-side-rail-close", "nitropay-desktop-anchor", "nitropay-desktop-anchor-close" ].forEach((id) => { const element = document.getElementById(id); if (element) element.remove(); }); const navbarEnd = document.querySelector("div.navbar-end"); if (navbarEnd) navbarEnd.remove(); if (window.location.href.match( /^https:\/\/www\.hsguru\.com\/deck\/(\d+|[A-Za-z0-9+/=%]+)(?:\?.*)?$/ )) { const columnElement = document.querySelector( "div.column.is-narrow-mobile" ); if (columnElement) { columnElement.style.flex = "none"; columnElement.style.minWidth = "400px"; columnElement.style.marginTop = "3.5rem"; } } if (window.location.href.match(/^https:\/\/www\.hsguru\.com\/?$/)) { const cardContents = document.querySelectorAll("div.card-content"); cardContents.forEach((cardContent) => { const greatGrandParent = cardContent.parentNode?.parentNode?.parentNode; if (greatGrandParent) greatGrandParent.remove(); }); } } function handleScrollTop() { if (document.getElementById("hsguru-scroll-top")) return; const btn = document.createElement("button"); btn.id = "hsguru-scroll-top"; btn.title = "返回顶部"; btn.innerHTML = ` `; Object.assign(btn.style, { position: "fixed", bottom: "30px", right: "30px", width: "48px", height: "48px", borderRadius: "50%", backgroundColor: "#4f46e5", color: "#fff", border: "none", cursor: "pointer", display: "flex", alignItems: "center", justifyContent: "center", boxShadow: "0 4px 12px rgba(0,0,0,0.15)", zIndex: "9999", opacity: "0", visibility: "hidden", transition: "all 0.3s ease", transform: "translateY(20px)" }); btn.onmouseenter = () => { btn.style.backgroundColor = "#4338ca"; btn.style.transform = "translateY(-2px)"; }; btn.onmouseleave = () => { btn.style.backgroundColor = "#4f46e5"; btn.style.transform = "translateY(0)"; }; btn.onclick = () => { window.scrollTo({ top: 0, behavior: "smooth" }); }; document.body.appendChild(btn); const toggleVisibility = () => { if (window.scrollY > 300) { btn.style.opacity = "1"; btn.style.visibility = "visible"; btn.style.transform = "translateY(0)"; } else { btn.style.opacity = "0"; btn.style.visibility = "hidden"; btn.style.transform = "translateY(20px)"; } }; window.addEventListener("scroll", toggleVisibility); toggleVisibility(); } const uiTranslations = new Map([ ["Yes", "是"], ["No", "否"], ["True", "是"], ["False", "否"], ["Show 5", "显示5条"], ["Show 10", "显示10条"], ["Show 20", "显示20条"], ["Show 30", "显示30条"], ["Show 40", "显示40条"], ["Show 50", "显示50条"], ["Show 75", "显示75条"], ["Show 100", "显示100条"], ["Show 150", "显示150条"], ["Show 200", "显示200条"], ["Show 250", "显示250条"], ["Show 300", "显示300条"], ["Show 350", "显示350条"], ["Show 500", "显示500条"], ["Show 750", "显示750条"], ["Show 1000", "显示1000条"], ["Show 3000", "显示3000条"], ["Show 2000", "显示2000条"], ["Show 4000", "显示4000条"], ["Show 5000", "显示5000条"], ["Chart", "图表"], ["Min 1", "最少1局"], ["Min 2", "最少2局"], ["Min 3", "最少3局"], ["Min 5", "最少5局"], ["Min 7", "最少7局"], ["Min 10", "最少10局"], ["Min 15", "最少15局"], ["Min 20", "最少20局"], ["Min 50", "至少50局"], ["Min 100", "至少100局"], ["Min 200", "至少200局"], ["Min 800", "至少800局"], ["Min 400", "至少400局"], ["Min 1600", "至少1600局"], ["Min 3200", "至少3200局"], ["Min 6400", "至少6400局"], ["Min 12800", "至少 12800局"], ["Min 1 Finishes", "最少1局"], ["Min 2 Finishes", "最少2局"], ["Min 3 Finishes", "最少3局"], ["Min 5 Finishes", "最少5局"], ["Min 7 Finishes", "最少7局"], ["Min 10 Finishes", "最少10局"], ["Min 15 Finishes", "最少15局"], ["Min 20 Finishes", "最少20局"], ["Min 0%", "最低0%"], ["Min 20%", "最低20%"], ["Min 30%", "最低30%"], ["Min 40%", "最低40%"], ["Min 45%", "最低45%"], ["Min 50%", "最低50%"], ["Min 55%", "最低55%"], ["Min 60%", "最低60%"], ["Min 70%", "最低70%"], ["Min 80%", "最低80%"], ["Top 500", "前100名"], ["Top 1000", "前1000名"], ["Top 5000", "前5000名"], ["Top 1k", "前1000名"], ["Top 5k", "前5000名"], ["Legend", "传说"], ["Diamond 4-1", "钻石4-1"], ["Diamond-Legend", "钻石-传说"], ["Top 1", "第1名"], ["Top 5", "前5名"], ["Top 10", "前10名"], ["Top 25", "前25名"], ["Top 50", "前50名"], ["Top 100", "前100名"], ["Top 200", "前200名"], ["Arena", "竞技场"], ["Mercenaries", "佣兵战记"], ["Brawl", "乱斗"], ["Battlegrounds Duos", "酒馆战旗双人"], ["Battlegrounds", "酒馆战旗"], ["Standard", "标准"], ["Twist", "幻变"], ["Wild", "狂野"], ["Americas", "美服"], ["Asia-Pacific", "亚服"], ["China", "国服"], ["Europe", "欧服"], ["Win", "胜利"], ["Loss", "失败"], ["Draw", "平局"], ["January", "1月"], ["February", "2月"], ["March", "3月"], ["April", "4月"], ["May", "5月"], ["June", "6月"], ["July", "7月"], ["August", "8月"], ["September", "9月"], ["October", "10月"], ["November", "11月"], ["December", "12月"], ["Spring", "春季"], ["Summer", "夏季"], ["Fall", "秋季"], ["Winter", "冬季"], ["10 minutes ago", "10分钟前"], ["15 minutes ago", "15分钟前"], ["20 minutes ago", "20分钟前"], ["30 minutes ago", "30分钟前"], ["1 hour ago", "1小时前"], ["6 hours ago", "6小时前"], ["1 day ago", "1天前"], ["1 week ago", "1周前"], ["2023 Fall", "2023年秋季"], ["2023 Spring", "2023年春季"], ["2023 Summer", "2023年夏季"], ["2023", "2023年"], ["2024 Spring", "2024年春季"], ["2024 Summer", "2024年夏季"], ["2024", "2024年"], ["2025 Last Chance", "2025年最后机会"], ["2025 Spring", "2025年春季"], ["2025 Summer", "2025年夏季"], ["2025", "2025年"], ["Past Day", "过去1天"], ["Past 3 Hours", "过去3小时"], ["Past 6 Hours", "过去6小时"], ["Past 3 Days", "过去3天"], ["Past Week", "过去1周"], ["Past 2 Weeks", "过去2周"], ["Past 30 days", "过去30天"], ["hour ago", "小时前"], ["hours ago", "小时前"], ["minute ago", "分钟前"], ["minutes ago", "分钟前"], ["Demonhunter", "恶魔猎手"], ["Deathknight", "死亡骑士"], ["Death Knight", "死亡骑士"], ["Druid", "德鲁伊"], ["Demon Hunter", "恶魔猎手"], ["Hunter", "猎人"], ["Mage", "法师"], ["Paladin", "圣骑士"], ["Priest", "牧师"], ["Rogue", "盗贼"], ["Shaman", "萨满祭司"], ["Warlock", "术士"], ["Warrior", "战士"], ["VS Death Knight", "VS 死亡骑士"], ["VS Demon Hunter", "VS 恶魔猎手"], ["VS Druid", "VS 德鲁伊"], ["VS Hunter", "VS 猎人"], ["VS Mage", "VS 法师"], ["VS Paladin", "VS 圣骑士"], ["VS Priest", "VS 牧师"], ["VS Rogue", "VS 盗贼"], ["VS Shaman", "VS 萨满祭祀"], ["VS Warlock", "VS 术士"], ["VS Warrior", "VS 战士"], ["Follow", "关注"], ["Matchups (WIP)", "对阵数据(开发中)"], ["Privacy Policy", "隐私政策"], ["Battlefy Multi Tournament Stats", "多赛事统计"], ["Batch Lineup Importer", "批量阵容导入器"], ["Chat Bot Hooks", "聊天机器人钩子"], ["Any Decks", "任意卡组"], ["Includes Latest Set", "包含最新扩展包"], ["Includes Cataclysm Cards", "包含大灾变卡牌"], ["3rd Party Tournaments", "第三方赛事"], ["About", "关于"], ["All", "全部"], ["Any Class", "任意职业"], ["Player Class", "玩家职业"], ["Any Opponent", "任意对手"], ["Any Player", "任意"], ["Any", "任意"], ["Archetype Card Stats", "卡组类型卡牌统计"], ["Archetype Stats", "卡组类型统计"], ["Archetypes", "卡组类型"], ["Archive of old hsesports pages", "历史电竞数据"], ["Battlefy Tournament Stats", "赛事统计"], ["Bonobo 2025", "2025年Bonobo"], ["Card Stats", "卡牌统计"], ["Card", "卡牌"], ["Cancel", "取消"], ["Cataclysm Cards", "大灾变卡牌"], ["Cards", "卡牌"], ["Cheapest Deck", "最便宜的卡组"], ["Choose organization", "选择赛事组织"], ["Class", "职业"], ["Classic", "经典"], ["Clear", "清除"], ["Coin?", "先后手?"], ["Compare to", "对比"], ["Counts Alongside Impact", "在影响值旁显示次数"], ["Deck Stats", "卡组统计"], ["Deck", "卡组"], ["Deckbuilder", "卡组构建器"], ["Decks", "卡组"], ["Deckviewer", "卡组查看器"], ["View deck and stats", "查看卡组和统计"], ["View in Deckviewer", "在卡组查看器中查看"], ["Find streamer decks for this deck", "查找此卡组的主播卡组"], ["Discord Bot", "Discord机器人"], ["Don't Show Counts", "不显示计数"], ["Drawn Count", "抽到次数"], ["Drawn Impact Tooltip", "抽到时胜率 - 卡组胜率"], ["Drawn Impact", "抽到影响"], ["Not Drawn Count", "未抽到次数"], ["Not Drawn Impact Tooltip", "未抽到时胜率 - 卡组胜率(越低越好)"], ["Not Drawn Impact", "未抽到影响"], ["Drawn", "抽到"], ["Esports", "电子竞技"], ["Exclude cards", "排除卡牌"], ["Fantasy", "梦幻联赛"], ["Filter Countries", "过滤国家"], ["Filters & co", "筛选器"], ["Game Mode", "对战模式"], ["Going First", "先手"], ["HDT Plugin", "HDT 插件"], ["Hearthstone Cards", "卡牌"], ["Hearthstone DeckBuilder", "卡组构建器"], ["Hide country flags", "隐藏国家旗帜"], ["HSEsports Points", "电竞积分"], ["In Mulligan", "换牌"], ["Include cards", "包含卡牌"], ["Kept Count", "保留次数"], ["Kept Impact Tooltip", "保留时胜率 - 卡组胜率"], ["Kept Impact", "保留影响"], ["Kept", "保留"], ["Known Issues", "已知问题"], ["Leaderboard Stats", "排行榜统计"], ["Leaderboard", "排行榜"], ["Leaderboards", "排行榜"], ["Legacy HSEsports", "历史电竞数据"], ["Meta", "环境"], ["Matchups", "对阵数据"], ["Min Drawn Count", "最小抽牌数"], ["Min Games", "最少对局数"], ["Min Mull Count", "最小换牌数"], ["Min Winrate", "最低胜率"], ["Min Matchup Games", "最少对局数"], ["Min Archetype Games", "最少卡组类型对局数"], ["Misc", "杂项"], ["Most Expensive Deck", "最贵的卡组"], ["Mulligan Count", "调度次数"], ["Mulligan Impact Tooltip", "换牌(保留+换来)胜率 - 卡组胜率"], ["Mulligan Impact", "换牌(换牌阶段)影响"], ["Newest Deck", "最新的卡组"], ["None", "无"], ["Not Drawn", "未抽到"], ["Not In Mulligan", "未换牌"], ["Not Kept", "未保留"], ["Oldest Deck", "最旧的卡组"], ["On Coin", "后手"], ["Opponent Class", "对战职业"], ["Opponent", "对手"], ["Opponent's Class", "对战职业"], ["Omni Bar", "全能搜索"], ["Page Size", "每页大小"], ["Period", "时段"], ["Played", "对战时间"], ["Player Stats", "玩家数据"], ["Player", "玩家"], ["Position", "当前排名"], ["Points Season", "积分赛季"], ["Rank", "排名"], ["Ranked Standard", "标准天梯"], ["Region", "地区"], ["Regions", "地区"], ["Replay Link", "回放链接"], ["Replays", "回放"], ["Reset Weights", "重置权重"], ["Result", "结果"], ["Search", "搜索"], ["Search help", "搜索帮助"], ["Show Country Flags", "显示国家旗帜"], ["Show country flags", "显示国家旗帜"], ["Show Counts", "显示计数"], ["Sign in (Battlenet)", "登录(战网)"], ["Stats Explanation", "统计说明"], ["Stats", "统计"], ["Seed Weights", "填充权重"], ["Streamer Decks", "直播卡组"], ["Streaming Now", "正在直播"], ["Submit", "提交"], ["Text Instructions", "文本说明"], ["Time", "时间"], ["Total Games", "总对局数"], ["Total", "总计"], ["Tournaments Stats", "赛事统计"], ["Troubleshooting", "故障排除"], ["Type or paste", "输入或粘贴"], [ "Type or paste something to get relevant links. Currently supported:", "输入或粘贴内容以获取相关链接。目前支持:" ], ["Unknown", "未知"], ["Use Current Season", "使用当前赛季"], ["Utilities", "工具库"], ["Video Guide", "视频教程"], ["View Replay", "查看回放"], ["Winrate %", "胜率 %"], ["Winrate", "胜率"], ["Wonderful Un'Goro", "美好的安戈洛"], ["History", "历史"], ["Battletag", "昵称"], ["Masters Tour", "大师巡回赛"], ["Wrong Region", "赛区错误"], ["Best", "最佳"], ["Worst", "最差"], ["Average Finish", "平均排名"], ["Total Finishes", "总上榜次数"], ["Archetype", "卡组职业"], ["Popularity", "使用率"], ["Turns", "回合数"], ["Duration", "对局时长"], ["Climbing Speed", "上分速度"], ["Legend Peak", "最高传说排名"], ["Latest Legend Rank", "当前传说排名"], ["Worst Legend Rank", "最低传说排名"], ["Peak", "最高"], ["Latest", "当前"], ["Worst", "最低"], ["Deck", "卡组"], ["Streamer", "主播"], ["Format", "模式"], ["Peak", "最高"], ["Latest", "当前"], ["Worst", "最低"], ["Win - Loss", "胜负比"], ["Links", "链接"], ["Last Played", "最后对局"], ["Last hour", "最近1小时"], ["Last day", "最近1天"], ["Last 3 days", "最近3天"], ["Last 7 days", "最近7天"], ["Last 15 days", "最近15天"], ["Last 30 days", "最近30天"], ["Last 120 days", "最近120天"], ["Include Cards", "包含卡牌"], ["Exclude Cards", "排除卡牌"], ["Any decks", "任意卡组"], ["Search Streamer", "搜索主播"], ["Name", "名称"], ["Start Time", "开始时间"], ["Tags", "标签"], ["Open", "公开"], ["Card Set", "扩展包"], ["Any Cost", "任意法力"], ["Any Attack", "任意攻击力"], ["Any Health", "任意生命值"], ["Any Type", "任意类型"], ["Any Minion Type", "任意随从类型"], ["Any Spell School", "任意法术类型"], ["Any Rarity", "任意稀有度"], ["Any Faction", "任意阵营"], ["Neutral", "中立"], ["Minion", "随从"], ["Spell", "法术"], ["Weapon", "武器"], ["Hero", "英雄"], ["Location", "地标"], ["Beast", "野兽"], ["Demon", "恶魔"], ["Draenei", "德莱尼"], ["Dragon", "龙"], ["Elemental", "元素"], ["Mech", "机械"], ["Murloc", "鱼人"], ["Naga", "娜迦"], ["Pirate", "海盗"], ["Quilboar", "野猪人"], ["Totem", "图腾"], ["Undead", "亡灵"], ["Arcane", "奥术"], ["Fel", "邪能"], ["Fire", "火焰"], ["Frost", "冰霜"], ["Holy", "神圣"], ["Nature", "自然"], ["Shadow", "暗影"], ["Common", "普通"], ["Rare", "稀有"], ["Epic", "史诗"], ["Legendary", "传说"], ["Free", "免费"], ["Grimy Goons", "污手党"], ["Jade Lotus", "玉莲帮"], ["Kabal", "暗金教"], ["Protoss", "星灵"], ["Terran", "人族"], ["Zerg", "异虫"], ["Mana", "法力"], ["Mana in Class", "职业法力"], ["Sort", "排序"], ["Mode", "模式"], ["Language", "语言"], ["Newest", "最新"], ["Oldest", "最旧"], ["Most Viewers", "最多观众"], ["Fewest Viewers", "最少观众"], ["Well met!", "您好!"], ["Contact", "联系"], ["Donate/Follow", "捐赠/关注"], ["Streamer Instructions", "主播说明"], ["2025 Announcement", "2025 公告"], ["2026 Announcement", "2026 公告"], ["You need to login to use these filters", "您需要登录才能使用这些过滤器"], [ "No decks available for these filters. Maybe try changing one of the highlighted ones?", "没有可用的卡组。也许尝试更改高亮的筛选器?" ], [ "Sample sizes matter! Even though I'll let you see low sample size stats, don't put too much stock into them", "样本数量很重要!虽然我将允许您看到低样本数量的统计信息,但请不要把这些统计信息看的太重要。" ], [ "tl;dr: Use mulligan impact for what to keep in the mull, and drawn impact for what to include in your list", "总结:使用换牌影响来决定要保留的卡牌,使用抽到影响来决定要包含的卡牌" ], ["Archetype Card Stats", "卡组类型卡牌统计"], ["Nicknames", "昵称"], ["Id", "编号"], ["Mana Cost", "法力值消耗"], ["Attack", "攻击力"], ["Health", "生命值"], ["Durability", "耐久度"], ["Classes", "职业"], ["Minion Type", "随从类型"], ["Dust Cost", "合成花费"], ["Dust Free", "分解获得"], ["Spell School", "法术类型"], ["Flavor Text", "趣味描述"], ["Text", "卡牌描述"], ["Help", "帮助"], ["Keywords", "关键词"], ["Factions", "阵营"], ["Collectible", "可收藏"], ["Artist Name", "画师"], ["Crop Image", "裁剪图片"], ["Image", "卡牌图片"], ["Image Gold", "金色卡牌图片"], ["Battlefy link", "Battlefy 链接"], ["Deckcode", "卡组代码"], ["Battletags", "战网昵称"], [ "The top players earn points based on how high they finish", "顶尖玩家会根据最终排名获得对应积分" ], ["Wrong region to earn an invite", "赛区错误,无法凭此赛区获得邀请资格"], [ "More is planned! If you have an idea join my discord to share it after checking the pinned post", "后续还会继续支持更多内容。如果你有想法,欢迎先查看置顶帖,再加入我的 Discord 进行分享。" ], [ "This data uses old archetyping. Archetyping will be updated after there is more data with the latest patch", "这些数据使用了旧的卡组类型。卡组类型将在有更多最新补丁数据后更新" ], ["Battlecry", "战吼"], ["Imbue", "灌注"], ["Emerald Dream", "翡翠梦境"], ["Showdown in the Badlands", "决战荒芜之地"], ["Caverns of Time", "时光之穴"], ["TITANS", "泰坦诸神"], ["Festival of Legends", "传奇音乐节"], ["March of the Lich King", "巫妖王的进军"], ["Path of Arthas", "阿尔萨斯之路"], ["Murder at Castle Nathria", "纳斯利亚堡的悬案"], ["Voyage to the Sunken City", "探寻沉没之城"], ["Fractured in Alterac Valley", "奥特兰克的决裂"], ["United in Stormwind", "暴风城下的集结"], ["Legacy", "怀旧"], ["Forged in the Barrens", "贫瘠之地的锤炼"], ["Madness at the Darkmoon Faire", "疯狂的暗月马戏团"], ["Scholomance Academy", "通灵学园"], ["Ashes of Outland", "外域的灰烬"], ["Demon Hunter Initiate", "恶魔猎手新兵"], ["Galakrond's Awakening", "迦拉克隆的觉醒"], ["Descent of Dragons", "巨龙降临"], ["Saviors of Uldum", "奥丹姆奇兵"], ["Rise of Shadows", "暗影崛起"], ["Rastakhan's Rumble", "拉斯塔哈的大乱斗"], ["The Boomsday Project", "砰砰计划"], ["The Witchwood", "女巫森林"], ["Kobolds and Catacombs", "狗头人与地下城"], ["Knights of the Frozen Throne", "冰封王座的骑士"], ["Journey to Un'Goro", "勇闯安戈洛"], ["Mean Streets of Gadgetzan", "龙争虎斗加基森"], ["One Night in Karazhan", "卡拉赞之夜"], ["Whispers of the Old Gods", "上古之神的低语"], ["League of Explorers", "探险者协会"], ["The Grand Tournament", "冠军的试炼"], ["Blackrock Mountain", "黑石山的火焰"], ["Goblins vs Gnomes", "地精大战侏儒"], ["Curse of Naxxramas", "纳克萨玛斯的诅咒"], ["Embers", "余烬"], ["The Great Dark Beyond", "深暗领域"], ["GDB (Expansion only)", "深暗领域(仅限扩展包)"], ["Perils in Paradise", "胜地历险记"], ["Whizbang's Workshop", "威兹班的工坊"], ["The Lost City of Un'Goro", "安戈洛龟途"], ["Into the Emerald Dream", "漫游翡翠梦境"], ["Core 2025", "核心 2025"], ["Core", "核心"], ["Event 2025", "活动 2025"], ["Event", "活动"], ["Lost City", "失落之城"], ["Day of Rebirth", "重生之日"] ]); function extractGamesText(element) { const gamesSpan = element.querySelector("span span"); if (!gamesSpan) return ""; const gamesMatch = gamesSpan.textContent.trim().match(/Games: (\d+)/); return gamesMatch ? `| 对局:${gamesMatch[1]} ` : ""; } function translateNodeText(node, translations) { const text = (node.textContent || "").trim(); const translation = translations.get(text); if (translation) { node.textContent = translation; return true; } return false; } function translateSelectorText(root, selector, translations) { root.querySelectorAll(selector).forEach((node) => { translateNodeText(node, translations); }); } function translateTableHeaders(table, selector = "thead th", translations) { translateSelectorText(table, selector, translations); } function translateClassNameCells(table, translations) { translateSelectorText(table, "td .tag.player-name .basic-black-text", translations); } function translateSortedTextNode(node, translations) { const text = node.textContent.trim(); const arrow = text.match(/[↑↓]$/)?.[0] || ""; const cleanText = text.replace(/[↑↓]$/, "").trim(); const translation = translations.get(cleanText); if (!translation) return false; node.textContent = `${translation}${arrow}`; return true; } function translateTrailingTotalRow(table, translations) { const totalRow = table.querySelector("tbody tr:last-child td:first-child"); if (totalRow?.textContent.trim() === "Total") { totalRow.textContent = translations.get("Total") || "总计"; } } function translateLeaderboardPoints(table, translations) { table.querySelectorAll("tbody td .tag").forEach((tag) => { const text = tag.textContent.trim(); const ptsMatch = text.match(/^(\d+)\s*pts$/i); if (ptsMatch) { tag.textContent = `${ptsMatch[1]}积分`; } else { const translation = translations.get(text); if (translation) { tag.textContent = translation; } } const label = tag.getAttribute("aria-label"); if (label) { const translation = translations.get(label.trim()); if (translation) { tag.setAttribute("aria-label", translation); } } }); } let clipboardToastTimer; function showClipboardFeedback(button, successLabel, copyLabel) { let toast = document.getElementById("hsguru-copy-toast"); if (!toast) { toast = document.createElement("div"); toast.id = "hsguru-copy-toast"; toast.className = "hsguru-copy-toast"; document.body.appendChild(toast); } toast.textContent = successLabel; toast.classList.add("is-visible"); clearTimeout(clipboardToastTimer); clipboardToastTimer = setTimeout(() => { toast.classList.remove("is-visible"); }, 1400); button.classList.add("hsguru-copy-success"); button.setAttribute("aria-label", successLabel); clearTimeout(button._hsguruCopyTimer); button._hsguruCopyTimer = setTimeout(() => { button.classList.remove("hsguru-copy-success"); button.setAttribute("aria-label", copyLabel); }, 1400); } function replaceSubtitle(element, subtitleHTML) { const titleElement = document.querySelector(".title.is-2"); if (!titleElement) return; const newSubtitleElement = document.createElement("div"); newSubtitleElement.className = "new_subtitle"; newSubtitleElement.innerHTML = subtitleHTML; titleElement.insertAdjacentElement("afterend", newSubtitleElement); element.remove(); } function translateExactTextNodes(root, translations) { if (!root) return; const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, { acceptNode(node2) { if (!node2.parentElement) return NodeFilter.FILTER_REJECT; if (["SCRIPT", "STYLE"].includes(node2.parentElement.tagName)) { return NodeFilter.FILTER_REJECT; } return NodeFilter.FILTER_ACCEPT; } }); let node; while (node = walker.nextNode()) { const rawText = node.nodeValue || ""; const trimmedText = rawText.trim(); if (!trimmedText) continue; const translation = translations.get(trimmedText); if (!translation || translation === trimmedText) continue; const leading = rawText.match(/^\s*/)?.[0] || ""; const trailing = rawText.match(/\s*$/)?.[0] || ""; node.nodeValue = `${leading}${translation}${trailing}`; } } function translateTranslatableAttributes(root, translations) { if (!root) return; const attributeSelectors = [ ["[placeholder]", "placeholder"], ["[title]", "title"], ["[aria-label]", "aria-label"] ]; attributeSelectors.forEach(([selector, attribute]) => { root.querySelectorAll(selector).forEach((element) => { const value = element.getAttribute(attribute); if (!value) return; const translation = translations.get(value.trim()); if (translation) { element.setAttribute(attribute, translation); } }); }); } function translateDeckNameCell(cell, translateFn) { const link = cell.querySelector("a"); if (link) { translateDeckNameInNode(link, translateFn); return; } translateDeckNameInNode(cell, translateFn); } function translateDeckNameInNode(node, translateFn) { const originalText = node.textContent.trim(); const translatedText = translateFn(originalText); if (translatedText && translatedText !== originalText) { node.textContent = translatedText; return true; } return false; } function getMappedClassValue(element, mapping, fallback) { const className = Object.keys(mapping).find( (name) => element.classList.contains(name) ); return mapping[className] || fallback; } function applyClassAccentStyles(element) { const htmlEl = element; const accent = getMappedClassValue(element, CLASS_ACCENT_COLORS, DEFAULT_CLASS_ACCENT); const bg = getMappedClassValue(element, CLASS_BG_COLORS, DEFAULT_CLASS_BG); htmlEl.style.setProperty("--hsguru-class-accent", accent); htmlEl.style.setProperty("--hsguru-class-bg", bg); htmlEl.style.setProperty("background", `linear-gradient(0deg, ${bg}, ${bg}), #f7edcf`, "important"); htmlEl.style.setProperty("border-left", `5px solid ${accent}`, "important"); } function replaceDeckNameTextNode(cell, translateFn) { const originalText = Array.from(cell.childNodes).filter((node) => node.nodeType === Node.TEXT_NODE).map((node) => node.textContent).join(" ").trim() || cell.textContent.trim(); const translatedText = translateFn(originalText); if (!translatedText || translatedText === originalText) return; const textNode = Array.from(cell.childNodes).find( (node) => node.nodeType === Node.TEXT_NODE && node.textContent.trim() ); if (textNode) { textNode.textContent = ` ${translatedText}`; } else { cell.appendChild(document.createTextNode(` ${translatedText}`)); } } function extractRelativeTimeText(sourceElement, translations) { if (!sourceElement) return ""; const timeMatch = sourceElement.textContent.trim().match(/(\d+)\s*(hours?|minutes?|days?)\s*ago/); if (!timeMatch) return ""; const [, number, unit] = timeMatch; return `| ${number} ${translations.get(unit + " ago")} `; } function handleClipboard() { const clipboardButtons = document.querySelectorAll("button.clip-btn-value"); clipboardButtons.forEach((element) => { const originalText = element.getAttribute(DATASET.CLIPBOARD_TEXT); if (originalText && !originalText.startsWith("#") && !originalText.endsWith("#")) { const deckTitleElement = element.closest(".decklist-info")?.querySelector("a.basic-black-text"); const deckTitle = deckTitleElement ? deckTitleElement.textContent?.trim() || "" : ""; const modifiedText = `###${deckTitle} # ${originalText} #`; element.setAttribute(DATASET.CLIPBOARD_TEXT, modifiedText); } const iconSpan = element.querySelector("svg.icon"); if (iconSpan) { iconSpan.classList.remove("icon"); iconSpan.classList.add("clipboard-icon"); } if (element.dataset.hsguruClipboardBound === "true") return; element.dataset.hsguruClipboardBound = "true"; element.setAttribute("aria-label", uiTranslations.get("Copy") || "复制"); element.addEventListener("click", () => { setTimeout(() => { showClipboardFeedback( element, UI_TEXT.COPY_SUCCESS_LABEL, uiTranslations.get("Copy") || "复制" ); }, 0); }); }); } function handleCardLinks() { document.querySelectorAll("div.decklist_card_container > div > a").forEach((link) => link.removeAttribute("href")); } function handleBasic() { const selectors = [ `${SELECTORS.NAV_BASE} > div:nth-child(2) > a`, `${SELECTORS.NAV_BASE} > div:nth-child(3) > a`, `${SELECTORS.NAV_BASE} > div:nth-child(4) > a`, `${SELECTORS.NAV_BASE} > a:nth-child(5)`, `${SELECTORS.NAV_BASE} > a:nth-child(6)`, `${SELECTORS.NAV_BASE} > div:nth-child(7) > a`, `${SELECTORS.NAV_BASE} > div:nth-child(8) > a`, "a.navbar-item", "a.button", "a.tag.column.is-link", "a.link", "a.twitter-follow-button", "button.button", "div.subtitle.is-4", "div.subtitle.is-5", "div.notification" ]; selectors.forEach((selector) => { const elements = queryCache.getOrCreate(selector); elements.forEach((element) => { if (element.matches("a.button") && element.closest(".has-dropdown")) return; const text = element.textContent?.trim() || ""; const chartText = translateChartToggleText(text); if (chartText) { element.textContent = chartText; return; } const translation = uiTranslations.get(text); if (translation) element.textContent = translation; }); }); } function translateChartToggleText(text) { const match = text.match(/^Chart\s*([↑↓])?$/); if (!match) return null; return `图表${match[1] ? ` ${match[1]}` : ""}`; } function handleFilter() { const selectors = ["a.dropdown-item", ".has-dropdown > a.button"]; selectors.forEach((selector) => { const elements = queryCache.getOrCreate(selector); elements.forEach((element) => { const text = element.textContent?.trim() || ""; const translation = uiTranslations.get(text); if (translation) element.textContent = translation; }); }); const inputs = queryCache.getOrCreate('input[placeholder="Search"]'); inputs.forEach((input) => { input.setAttribute("placeholder", uiTranslations.get("Search") || "搜索"); }); } function handleSearch() { const searchBoxes = Array.from( document.querySelectorAll( 'input[name="search"][placeholder="Type or paste"]' ) ); searchBoxes.forEach((element) => { if (element.placeholder === "Type or paste") { element.placeholder = uiTranslations.get("Type or paste") || "输入或粘贴"; } }); const genericSearchBoxes = Array.from( document.querySelectorAll('input[placeholder="Search"]') ); genericSearchBoxes.forEach((element) => { element.placeholder = uiTranslations.get("Search") || "搜索"; }); const searchHelpButtons = Array.from( document.querySelectorAll( 'button[phx-click*="show_modal"], button[title], button[aria-label]' ) ); searchHelpButtons.forEach((button) => { const searchWrapper = button.closest(".level.is-mobile"); if (!searchWrapper || !searchWrapper.querySelector('input[name="search"]')) { return; } ["title", "aria-label"].forEach((attribute) => { const value = button.getAttribute(attribute); if (!value) return; const translation = uiTranslations.get(value.trim()); if (translation) { button.setAttribute(attribute, translation); } }); }); document.querySelectorAll('[role="dialog"], .modal, .ReactModal__Content').forEach((dialog) => { translateExactTextNodes(dialog, uiTranslations); translateTranslatableAttributes(dialog, uiTranslations); }); document.querySelectorAll('input[name="search"]').forEach((searchInput) => { const scope = searchInput.closest("#feed_container") || searchInput.closest("[id]") || searchInput.closest("div"); if (!scope) return; translateExactTextNodes(scope, uiTranslations); scope.querySelectorAll(".dropdown .dropdown-item a").forEach((link) => { const text = link.textContent?.trim() || ""; const translation = uiTranslations.get(text); if (translation) link.textContent = translation; }); }); } function handleTag() { const tags = Array.from( queryCache.getOrCreate("div.column.tag, a.tag.column.is-link") ); tags.forEach((tag) => { const text = tag.textContent?.trim() || ""; const gamesMatch = text.match(/Games: (\d+)/); if (gamesMatch) { tag.textContent = `对局:${gamesMatch[1]}`; return; } const peakedMatch = text.match(/Peaked By: (.+)/); if (peakedMatch) { tag.textContent = `最高:${peakedMatch[1]}`; return; } const streamedMatch = text.match(/First Streamed: (.+)/); if (streamedMatch) { tag.textContent = `首次直播:${streamedMatch[1]}`; return; } const streamCountMatch = text.match(/^\s*#\s*Streamed:\s*(\d+)\s*$/); if (streamCountMatch) { tag.textContent = `直播次数:${streamCountMatch[1]}`; return; } }); } const translationCache = { cache: new Map(), maxSize: 2e3, size: 0, getOrCreate(text, translationFn) { if (!text) return text; if (!this.cache.has(text)) { if (this.size >= this.maxSize) { const entriesToDelete = Math.floor(this.maxSize * 0.2); const entries = Array.from(this.cache.entries()); entries.slice(0, entriesToDelete).forEach(([key]) => { this.cache.delete(key); this.size--; }); } const translation = translationFn(text); this.cache.set(text, translation); this.size++; } return this.cache.get(text); }, clear() { this.cache.clear(); this.size = 0; } }; const cardCache = new Map(); const cardImageCache = new Map(); let activeCardPreviewName$1 = ""; function getCachedCardImage(cardName) { if (!cardName) return ""; if (cardImageCache.has(cardName)) return cardImageCache.get(cardName); const cachedImage = localStorage.getItem(storageKey.cardImage(cardName)); if (cachedImage) { cardImageCache.set(cardName, cachedImage); return cachedImage; } return ""; } function cacheCardImage(cardName, imageUrl, onImageAvailable) { if (!cardName || !imageUrl) return; cardImageCache.set(cardName, imageUrl); localStorage.setItem(storageKey.cardImage(cardName), imageUrl); if (activeCardPreviewName$1 === cardName && onImageAvailable) { onImageAvailable(cardName, imageUrl); } } function saveCardTranslation(cardName, translation) { cardCache.set(cardName, translation); localStorage.setItem(storageKey.cardTranslation(cardName), translation); } function fetchCardTranslation(cardName, callback) { const encodedName = encodeURIComponent(cardName); const url = API.CARD_TRANSLATION; const body = `ignoreHero=1&name=${encodedName}&statistic=total&order=-series%2C%2Bmana&token=&page=0&size=30`; GM_xmlhttpRequest({ method: "POST", url, headers: { accept: "*/*", "content-type": "application/x-www-form-urlencoded; charset=UTF-8", Referer: "https://www.iyingdi.com/" }, data: body, onload: (response) => { let translation = cardName; let imageUrl = ""; let found = false; if (response.status === 200) { try { const data = JSON.parse(response.responseText); if (data.success && data.data.total > 0) { const matchedCard = data.data.cards.find( (card) => card.ename === cardName ); if (matchedCard) { translation = matchedCard.cname; imageUrl = matchedCard.img || matchedCard.thumbnail || ""; found = true; } } } catch (e) { console.error("[HSGuru] 解析卡牌翻译失败", e); } } callback({ translation, imageUrl, found }); }, onerror: () => { console.error("[HSGuru] 卡牌翻译请求失败", cardName); callback({ translation: cardName, imageUrl: "", found: false }); } }); } const pendingFetches = new Map(); const requestQueue = []; const pendingRequestSet = new Set(); const callbackMap = new Map(); let activeRequests = 0; function isCardPending(cardName) { return pendingRequestSet.has(cardName); } function addPendingElement(cardName, element) { if (!pendingFetches.has(cardName)) { pendingFetches.set(cardName, []); } pendingFetches.get(cardName).push(element); } function updateCardElement(element, translation, originalName) { if (originalName) { element.dataset.originalCardName = originalName; } const cardNameNode = Array.from(element.childNodes).find( (node) => node.nodeType === Node.TEXT_NODE && node.textContent?.trim() ); if (cardNameNode) { const fragment = document.createDocumentFragment(); const textNode = document.createTextNode(` ${translation} `); fragment.appendChild(textNode); cardNameNode.parentNode?.replaceChild(fragment, cardNameNode); } element.dataset.cardTranslated = "true"; } function processQueue(maxConcurrent = MAX_CONCURRENT_REQUESTS, delay = REQUEST_DELAY) { if (requestQueue.length === 0 || activeRequests >= maxConcurrent) return; const cardName = requestQueue.shift(); activeRequests++; fetchCardTranslation(cardName, (result) => { const elements = pendingFetches.get(cardName) || []; const callbacks = callbackMap.get(cardName); if (callbacks) { callbacks.forEach((cb) => cb(cardName, result, elements)); } pendingFetches.delete(cardName); callbackMap.delete(cardName); setTimeout(() => { activeRequests--; pendingRequestSet.delete(cardName); processQueue(maxConcurrent, delay); }, delay); }); } function enqueueCardFetch(cardName, maxConcurrent = MAX_CONCURRENT_REQUESTS, delay = REQUEST_DELAY, onUpdateCard) { const alreadyPending = pendingRequestSet.has(cardName); if (!alreadyPending) { requestQueue.push(cardName); pendingRequestSet.add(cardName); } if (onUpdateCard) { if (!callbackMap.has(cardName)) { callbackMap.set(cardName, new Set()); } callbackMap.get(cardName).add(onUpdateCard); } processQueue(maxConcurrent, delay); } const CUSTOM_CARD_TRANSLATIONS_KEY = storageKey.customCard(); let customCardTranslations = null; function loadCustomCardTranslations() { if (customCardTranslations) return; try { const saved = StorageManager.gm.get(CUSTOM_CARD_TRANSLATIONS_KEY, {}); customCardTranslations = saved || {}; } catch (e) { customCardTranslations = {}; } } function getCustomCardTranslations() { loadCustomCardTranslations(); return customCardTranslations; } function saveCustomCardTranslation(original, translation) { loadCustomCardTranslations(); customCardTranslations[original] = translation; StorageManager.gm.set(CUSTOM_CARD_TRANSLATIONS_KEY, customCardTranslations); } function saveCustomCardTranslations(translations) { loadCustomCardTranslations(); Object.assign(customCardTranslations, translations); StorageManager.gm.set(CUSTOM_CARD_TRANSLATIONS_KEY, customCardTranslations); } function deleteCustomCardTranslation(original) { loadCustomCardTranslations(); if (customCardTranslations.hasOwnProperty(original)) { delete customCardTranslations[original]; StorageManager.gm.set(CUSTOM_CARD_TRANSLATIONS_KEY, customCardTranslations); } } function addUnmatchedCardName(name) { loadCustomCardTranslations(); if (/[a-zA-Z]/.test(name) && !customCardTranslations.hasOwnProperty(name)) { customCardTranslations[name] = ""; StorageManager.gm.set( CUSTOM_CARD_TRANSLATIONS_KEY, customCardTranslations ); } } function handleCardFetchResult(cardName, result, elements) { if (result.found) { saveCardTranslation(cardName, result.translation); if (result.imageUrl) { cacheCardImage(cardName, result.imageUrl); } } else { addUnmatchedCardName(cardName); } elements.forEach((el) => updateCardElement(el, result.translation, cardName)); } function handleCard() { const cardNames = document.querySelectorAll(SELECTORS.CARD_NAME); const customCardTranslations2 = getCustomCardTranslations(); cardNames.forEach((element) => { if (element.dataset.cardTranslated === "true") return; const cardNameNode = Array.from(element.childNodes).find( (node) => node.nodeType === Node.TEXT_NODE && node.textContent?.trim() ); if (!cardNameNode) return; const text = cardNameNode.textContent.trim(); element.dataset.originalCardName = text; if (cardCache.has(text)) { updateCardElement(element, cardCache.get(text), text); return; } if (Object.prototype.hasOwnProperty.call(customCardTranslations2, text)) { const customTranslation = customCardTranslations2[text]; if (customTranslation) { cardCache.set(text, customTranslation); updateCardElement(element, customTranslation, text); } else { element.dataset.cardTranslated = "true"; } return; } const cachedTranslation = localStorage.getItem(storageKey.cardTranslation(text)); if (cachedTranslation) { cardCache.set(text, cachedTranslation); updateCardElement(element, cachedTranslation, text); return; } if (isCardPending(text)) { addPendingElement(text, element); return; } addPendingElement(text, element); enqueueCardFetch(text, 2, 500, handleCardFetchResult); }); } const CUSTOM_TRANSLATIONS_KEY = storageKey.customDeck(); let customTranslations = null; function loadCustomTranslations() { if (customTranslations) return; try { const saved = StorageManager.gm.get(CUSTOM_TRANSLATIONS_KEY, {}); customTranslations = saved || {}; } catch (e) { customTranslations = {}; } } function getCustomTranslations() { loadCustomTranslations(); return customTranslations; } function saveCustomTranslation(original, translation) { loadCustomTranslations(); customTranslations[original] = translation; StorageManager.gm.set(CUSTOM_TRANSLATIONS_KEY, customTranslations); } function saveCustomTranslations(translations) { loadCustomTranslations(); Object.assign(customTranslations, translations); StorageManager.gm.set(CUSTOM_TRANSLATIONS_KEY, customTranslations); } function getEffectiveCustomTranslations() { loadCustomTranslations(); return Object.fromEntries( Object.entries(customTranslations).filter( ([, value]) => typeof value === "string" && value.trim() ) ); } function deleteCustomTranslation(original) { loadCustomTranslations(); if (customTranslations.hasOwnProperty(original)) { delete customTranslations[original]; StorageManager.gm.set(CUSTOM_TRANSLATIONS_KEY, customTranslations); } } function addUnmatchedWord(word) { loadCustomTranslations(); if (/[a-zA-Z]/.test(word) && !/[^\x00-\xff]/.test(word) && !customTranslations.hasOwnProperty(word)) { customTranslations[word] = ""; StorageManager.gm.set(CUSTOM_TRANSLATIONS_KEY, customTranslations); } } function generateAllRuneCombinations() { if (!FEATURES.RUNE.enabled) return {}; const RUNE_TYPES = { B: "blood", F: "frost", U: "unholy" }; const runeTypes = Object.keys(RUNE_TYPES); const combinations = {}; for (let length = 1; length <= 3; length++) { (function generateCombinations(prefix, remainingLength) { if (remainingLength === 0) { combinations[prefix] = `${prefix.split("").map((type) => ``).join("")}`; return; } for (const runeType of runeTypes) { generateCombinations(prefix + runeType, remainingLength - 1); } })("", length); } return combinations; } function getFullPrefixRules() { return { ...staticPrefix, ...generateAllRuneCombinations(), ...getEffectiveCustomTranslations() }; } function generateDeckTranslation(englishName) { loadCustomTranslations(); const customTranslation = customTranslations[englishName]; if (typeof customTranslation === "string" && customTranslation.trim()) { return customTranslation.trim(); } const words = englishName.split(" "); const result = [...words]; const processedIndices = new Set(); let classFound = null; const lastWord = words[words.length - 1]; const secondLastWord = words[words.length - 2]; if (/Demon\s+(Hunter|hunter)/.test(`${secondLastWord} ${lastWord}`)) { classFound = "DH"; result[words.length - 2] = ""; result[words.length - 1] = classSuffix["DH"]; processedIndices.add(words.length - 2); processedIndices.add(words.length - 1); } else if (/Death\s+(Knight|knight)/.test(`${secondLastWord} ${lastWord}`)) { classFound = "DK"; result[words.length - 2] = ""; result[words.length - 1] = classSuffix["DK"]; processedIndices.add(words.length - 2); processedIndices.add(words.length - 1); } else if (classSuffix[lastWord]) { classFound = lastWord; result[words.length - 1] = classSuffix[lastWord]; processedIndices.add(words.length - 1); } const prefixRules = getFullPrefixRules(); const multiByteKeys = Object.keys(prefixRules).filter( (key) => key.includes(" ") ); for (const key of multiByteKeys) { const keyWords = key.split(" "); const matchStart = words.findIndex( (_word, index) => !processedIndices.has(index) && keyWords.every( (keyWord, keyIndex) => !processedIndices.has(index + keyIndex) && words[index + keyIndex] === keyWord ) ); if (matchStart !== -1) { result[matchStart] = prefixRules[key]; for (let i = 0; i < keyWords.length; i++) { if (i > 0) result[matchStart + i] = ""; processedIndices.add(matchStart + i); } } } for (let i = 0; i < words.length - (classFound ? 1 : 0); i++) { if (!processedIndices.has(i)) { const word = words[i]; const isRune = /^[BFU]{1,3}$/.test(word); const ruleValue = prefixRules[word]; if (ruleValue && (!isRune || FEATURES.RUNE.enabled)) { result[i] = ruleValue; processedIndices.add(i); } } } words.forEach((_word, i) => { if (!processedIndices.has(i)) { const cleanWord = _word.replace(/<[^>]+>/g, "").trim(); if (cleanWord) { addUnmatchedWord(cleanWord); } } }); const filtered = result.filter((word) => word); return filtered.reduce((acc, curr, i) => { if (i === 0) return curr; const prev = filtered[i - 1]; const needsSpace = /[a-zA-Z0-9]$/.test(prev) && /^[a-zA-Z0-9]/.test(curr); return acc + (needsSpace ? " " : "") + curr; }, ""); } function handleDeck() { const deckTitleSelector = `${SELECTORS.DECK_TITLE}, ${SELECTORS.DECK_LINK}, ${SELECTORS.BASIC_DECK_TITLE}`; const deckTitles = queryCache.getOrCreate(deckTitleSelector); deckTitles.forEach((element) => { const text = element.textContent?.trim() || ""; const translation = translationCache.getOrCreate( text, generateDeckTranslation ); if (translation !== text) { const fragment = document.createDocumentFragment(); const tempDiv = document.createElement("div"); tempDiv.innerHTML = translation; while (tempDiv.firstChild) { fragment.appendChild(tempDiv.firstChild); } element.innerHTML = ""; element.appendChild(fragment); } }); const deckCards = new Set([ ...Array.from(document.querySelectorAll("#deck_stats_viewport .card")), ...Array.from(document.querySelectorAll(".card-image .decklist-info")).map((deckInfo) => deckInfo.closest(".card")).filter(Boolean) ]); deckCards.forEach((card) => { if (!card.classList.contains(CLASSES.DECK_CARD_SHELL)) { card.classList.add(CLASSES.DECK_CARD_SHELL); } card.querySelectorAll( ".card-image .decklist-info:not(.dust-bar), .decklist-info:not(.dust-bar)" ).forEach((deckInfo) => { if (!deckInfo.querySelector(".deck-title")) return; deckInfo.classList.add(CLASSES.DECK_SUMMARY); const row = deckInfo.querySelector(".level.is-mobile"); if (row) row.classList.add(CLASSES.DECK_SUMMARY_ROW); const title = deckInfo.querySelector(".deck-title"); if (title) { title.classList.add(CLASSES.DECK_SUMMARY_TITLE); title.querySelectorAll( 'span[style*="display: block"], span[style*="line-size"]' ).forEach((span) => { span.classList.add(CLASSES.HIDDEN_DECK_CODE); }); title.querySelectorAll('span[style*="font-size: 0"]').forEach((span) => { span.classList.add(CLASSES.HIDDEN_DECK_CODE); }); } const copyButton = deckInfo.querySelector(".clip-btn-value"); if (copyButton) copyButton.classList.add(CLASSES.DECK_ICON_BUTTON); const viewButton = deckInfo.querySelector( ".level-right .is-clickable" ); if (viewButton) viewButton.classList.add(CLASSES.DECK_ICON_BUTTON); }); card.querySelectorAll(".dust-bar.decklist-info").forEach((dustBar) => { dustBar.classList.add(CLASSES.DECK_DUST_BAR); }); }); } function handleTable() { const tableConfigs = { card: { pattern: /^card\/\d+$/, handler: (table) => { const firstColumnCells = table.querySelectorAll("tbody tr td:first-child"); firstColumnCells.forEach((cell) => { const text = cell.textContent?.trim() || ""; const translation = uiTranslations.get(text); if (translation) cell.textContent = translation; }); const rows = table.querySelectorAll("tbody tr"); rows.forEach((row, index) => { const secondCell = row.querySelector("td:nth-child(2)"); if (!secondCell) return; const text = secondCell.textContent?.trim() || ""; if (index === 0) { const translation = translationCache.getOrCreate(text, (t) => cardCache.get(t) || t); if (translation !== text) { secondCell.textContent = translation; } } else if ([2, 8, 10, 12, 18].includes(index)) { const translation = uiTranslations.get(text); if (translation) secondCell.textContent = translation; } }); } }, deck: { pattern: /^deck\/(\d+|[A-Za-z0-9+/=%]+)$/, handler: (table) => { translateTableHeaders(table, "thead th", uiTranslations); translateClassNameCells(table, uiTranslations); translateTrailingTotalRow(table, uiTranslations); } }, meta: { pattern: /^meta$/, handler: (table) => { translateMetaChart(); table.dataset.hsguruStyled = "true"; table.classList.add(CLASSES.META_TABLE); const headers = table.querySelectorAll("thead th"); headers.forEach((header) => { const link = header.querySelector("a"); if (link) { translateSortedTextNode(link, uiTranslations); } else { translateNodeText(header, uiTranslations); } }); const rows = table.querySelectorAll("tbody tr"); rows.forEach((row) => { const archetypeCell = row.querySelector("td:first-child.decklist-info"); if (archetypeCell) { archetypeCell.classList.add(CLASSES.META_ARCHETYPE_CELL); applyClassAccentStyles(archetypeCell); translateDeckNameCell(archetypeCell, generateDeckTranslation); } const climbingSpeedCell = row.querySelector("td:last-child"); if (climbingSpeedCell) { const text = climbingSpeedCell.textContent?.trim() || ""; if (text.includes("⭐/h")) { climbingSpeedCell.textContent = text.replace("/h", "/小时"); } } }); } }, "card-stats": { pattern: /^card-stats/, handler: (table) => { const headers = table.querySelectorAll("thead th a"); headers.forEach((header) => { const tooltipSpan = header.querySelector(`span[${DATASET.BALLOON_POS}]`); if (tooltipSpan) { const text = tooltipSpan.textContent?.trim() || ""; const impacts = [ "Mulligan Impact", "Drawn Impact", "Not Drawn Impact", "Kept Impact" ]; for (const impact of impacts) { if (text.startsWith(impact)) { const arrow = text.match(/[↑↓]$/)?.[0] || ""; tooltipSpan.textContent = `${uiTranslations.get(impact)}${arrow}`; tooltipSpan.setAttribute("aria-label", uiTranslations.get(`${impact} Tooltip`) || ""); break; } } } else { const text = header.textContent?.trim() || ""; const counts = [ "Card", "Mulligan Count", "Drawn Count", "Not Drawn Count", "Kept Count" ]; for (const count of counts) { if (text.startsWith(count)) { const arrow = text.match(/[↑↓]$/)?.[0] || ""; header.textContent = `${uiTranslations.get(count)}${arrow}`; break; } } } }); const classCells = table.querySelectorAll("th .class-header .class-name"); classCells.forEach((cell) => { const text = cell.textContent?.trim() || ""; const translation = uiTranslations.get(text); if (translation) { cell.textContent = translation; } }); } }, archetype: { pattern: /^archetype\/[^/]+$/, handler: (table) => { translateTableHeaders(table, "thead th", uiTranslations); translateClassNameCells(table, uiTranslations); translateTrailingTotalRow(table, uiTranslations); } }, replays: { pattern: /^replays/, handler: (table) => { translateTableHeaders(table, "thead th", uiTranslations); const gameModes = table.querySelectorAll("td p.tag"); gameModes.forEach((mode) => { translateNodeText(mode, uiTranslations); }); const replayLinks = table.querySelectorAll("td a"); replayLinks.forEach((link) => { const text = link.textContent?.trim() || ""; if (text === "View Replay") { link.textContent = uiTranslations.get(text) || null; } }); const timeCells = table.querySelectorAll("td:last-child"); timeCells.forEach((cell) => { const text = cell.textContent?.trim() || ""; const timeMatch = text.match(/(\d+) (hour|hours|minute|minutes) ago/); if (timeMatch) { const [, number, unit] = timeMatch; cell.textContent = `${number} ${uiTranslations.get(unit + " ago")}`; } }); } }, "leaderboard-player-stats": { pattern: /^leaderboard\/player-stats/, handler: (table) => { const headers = table.querySelectorAll("thead th a.is-text"); headers.forEach((header) => { translateSortedTextNode(header, uiTranslations); }); } }, "leaderboard-points": { pattern: /^leaderboard\/points/, handler: (table) => { translateTableHeaders(table, "thead th", uiTranslations); translateLeaderboardPoints(table, uiTranslations); } }, leaderboard: { pattern: /^leaderboard(?:\/|$)/, handler: (table) => { translateTableHeaders(table, "thead th", uiTranslations); translateLeaderboardPoints(table, uiTranslations); } }, "streamer-decks": { pattern: /^streamer-decks/, handler: (table) => { table.dataset.hsguruStyled = "true"; table.classList.add(CLASSES.STREAMER_DECKS_TABLE); const headers = table.querySelectorAll("thead th"); headers.forEach((header) => { const abbr = header.querySelector("abbr"); if (abbr) { const text = abbr.textContent?.trim() || ""; const title = abbr.getAttribute("title"); if (uiTranslations.get(text)) { abbr.textContent = uiTranslations.get(text); } if (title && uiTranslations.get(title)) { abbr.setAttribute("title", uiTranslations.get(title)); } } else { translateNodeText(header, uiTranslations); } }); const formatCells = table.querySelectorAll("tbody tr td:nth-child(3)"); formatCells.forEach((cell) => { const formatTag = cell.querySelector(".tag"); if (formatTag) translateNodeText(formatTag, uiTranslations); }); const deckCards = table.querySelectorAll("tbody tr td:first-child .decklist-info"); deckCards.forEach((deckCard) => { const accentColor = getMappedClassValue( deckCard, CLASS_ACCENT_COLORS, DEFAULT_CLASS_ACCENT ); const deckCell = deckCard.closest("td"); if (deckCell) { deckCell.classList.add(CLASSES.STREAMER_DECK_CELL); deckCell.style.setProperty("--hsguru-streamer-accent", accentColor); } }); const rankCells = table.querySelectorAll( "tbody tr td:nth-child(4), tbody tr td:nth-child(5), tbody tr td:nth-child(6)" ); rankCells.forEach((cell) => { if (!cell.textContent?.trim()) { cell.classList.add(CLASSES.STREAMER_EMPTY_RANK); cell.textContent = UI_TEXT.NO_RANK; } }); } }, esports: { pattern: /^esports/, handler: (table) => { translateTableHeaders(table, "thead th", uiTranslations); const statusCells = table.querySelectorAll("tbody tr td:nth-child(3)"); statusCells.forEach((cell) => { const statusSpans = cell.querySelectorAll("span"); statusSpans.forEach((span) => { translateNodeText(span, uiTranslations); }); }); } }, matchups: { pattern: /^matchups/, handler: (table) => { table.dataset.hsguruStyled = "true"; const wrapper = table.closest("#matchups_table_wrapper"); if (wrapper) { wrapper.classList.add(CLASSES.MATCHUPS_WRAPPER); } table.classList.add(CLASSES.MATCHUPS_TABLE); const headerButtons = table.querySelectorAll("th button"); headerButtons.forEach((button) => { const originalText = button.textContent?.trim() || ""; const cleanText = originalText.replace(/:$/, "").trim(); const translatedText = uiTranslations.get(cleanText); if (translatedText) { button.textContent = translatedText; } button.classList.add(CLASSES.MATCHUPS_ACTION); if (cleanText === "Winrate") button.classList.add(CLASSES.MATCHUPS_ACTION_WINRATE); if (cleanText === "Seed Weights") button.classList.add(CLASSES.MATCHUPS_ACTION_FILL); if (cleanText === "Reset Weights") button.classList.add(CLASSES.MATCHUPS_ACTION_RESET); if (cleanText === "Popularity") button.classList.add(CLASSES.MATCHUPS_ACTION_USAGE); if (cleanText === "Archetype") button.classList.add(CLASSES.MATCHUPS_ACTION_ARCHETYPE); if (BUTTON_TITLES[cleanText]) { const btnEl = button; btnEl.title = BUTTON_TITLES[cleanText]; btnEl.setAttribute("aria-label", BUTTON_TITLES[cleanText]); } }); const metaHeader = table.querySelector( `th.${CLASSES.MATCHUPS_META_HEADER}, thead th:nth-child(2)` ); if (metaHeader && !metaHeader.querySelector(`.${CLASSES.MATCHUPS_META_SEPARATOR}`)) { const sep = document.createElement("span"); sep.className = CLASSES.MATCHUPS_META_SEPARATOR; sep.textContent = UI_TEXT.SEPARATOR; metaHeader.appendChild(sep); } const allHeaders = table.querySelectorAll("thead th"); allHeaders.forEach((header, index) => { if (index === 0) header.classList.add(CLASSES.MATCHUPS_CORNER_CELL); if (index === 1) header.classList.add(CLASSES.MATCHUPS_META_HEADER); }); const classHeaders = table.querySelectorAll("th.class-background"); classHeaders.forEach((header) => { header.classList.add(CLASSES.MATCHUPS_DECK_HEADER); applyClassAccentStyles(header); const labelButton = header.querySelector("button"); translateDeckNameCell(labelButton || header, generateDeckTranslation); }); const firstColHeaders = table.querySelectorAll("tbody td:nth-child(1)"); firstColHeaders.forEach((cell) => { cell.classList.add(CLASSES.MATCHUPS_STICKY_COL, CLASSES.MATCHUPS_WINRATE_CELL); }); const secondColHeaders = table.querySelectorAll("tbody td:nth-child(2)"); secondColHeaders.forEach((cell) => { cell.classList.add(CLASSES.MATCHUPS_STICKY_COL_2, CLASSES.MATCHUPS_ARCHETYPE_CELL); applyClassAccentStyles(cell); }); const classCells = table.querySelectorAll("td.class-background"); classCells.forEach((cell) => { cell.classList.add(CLASSES.MATCHUPS_DECK_CELL); applyClassAccentStyles(cell); replaceDeckNameTextNode(cell, generateDeckTranslation); }); const dataCells = table.querySelectorAll("tbody td"); dataCells.forEach((cell) => { if (cell.classList.contains("class-background") || cell.classList.contains(CLASSES.MATCHUPS_WINRATE_CELL) || cell.classList.contains(CLASSES.MATCHUPS_ARCHETYPE_CELL)) return; const text = cell.textContent?.trim() || ""; const numeric = Number.parseFloat(text.replace(/[^\d.\-]/g, "")); if (Number.isNaN(numeric)) return; cell.classList.add(CLASSES.MATCHUPS_HEAT_CELL); }); const tooltipCells = table.querySelectorAll("tbody td[aria-label]"); tooltipCells.forEach((cell) => { const label = cell.getAttribute("aria-label"); if (!label) return; const matchupMatch = label.match(/^(.*?) versus (.*?) - ([\d,]+) games?$/); const totalMatch = label.match(/^(.*?) - ([\d,]+) games?$/); if (matchupMatch) { const playerDeck = generateDeckTranslation(matchupMatch[1].trim()); const opponentDeck = generateDeckTranslation(matchupMatch[2].trim()); const games = matchupMatch[3]; const isLowSample = !cell.textContent?.trim(); const lowSampleNote = isLowSample ? ",少于100局,未显示胜率" : ""; cell.setAttribute( "aria-label", `${playerDeck} 对阵 ${opponentDeck} - ${games} 局${lowSampleNote}` ); if (isLowSample) { cell.classList.add(CLASSES.MATCHUPS_LOW_SAMPLE); cell.textContent = UI_TEXT.LOW_SAMPLE; } } else if (totalMatch) { const deckName = generateDeckTranslation(totalMatch[1].trim()); const games = totalMatch[2]; cell.setAttribute("aria-label", `${deckName} - 总局数 ${games} 局`); } }); } } }; const currentPath = window.location.href.replace(BASE_URL, "").split("?")[0]; for (const [, config] of Object.entries(tableConfigs)) { if (currentPath.match(config.pattern)) { const tables = document.querySelectorAll("table"); tables.forEach((t) => config.handler(t)); break; } } } function translateMetaChart() { const chartRoots = document.querySelectorAll( '.chart-container [phx-hook="ChartJs"][data-config][data-data]' ); chartRoots.forEach((root) => { const config = parseChartJson(root.dataset.config); const data = parseChartJson(root.dataset.data); if (!config || !data) return; translateChartConfig(config); translateChartData(data); const nextConfig = JSON.stringify(config); const nextData = JSON.stringify(data); if (root.dataset.config !== nextConfig) { root.dataset.config = nextConfig; } if (root.dataset.data !== nextData) { root.dataset.data = nextData; } updateRenderedChart(root, config, data); }); } function parseChartJson(value) { if (!value) return null; try { return JSON.parse(value); } catch { return null; } } function translateChartConfig(config) { const scales = config?.options?.scales; if (!scales) return; Object.values(scales).forEach((scale) => { const titleText = scale?.title?.text; if (typeof titleText === "string") { scale.title.text = uiTranslations.get(titleText) || titleText; } }); } function translateChartData(data) { if (!Array.isArray(data?.datasets)) return; data.datasets.forEach((dataset) => { if (typeof dataset.label === "string") { dataset.label = uiTranslations.get(dataset.label) || dataset.label; } if (!Array.isArray(dataset.data)) return; dataset.data.forEach((point) => { if (typeof point?.label === "string") { point.label = toPlainText(generateDeckTranslation(point.label)); } }); }); } function toPlainText(value) { const temp = document.createElement("div"); temp.innerHTML = value; return temp.textContent?.trim() || value; } function updateRenderedChart(root, config, data) { const canvas = root.querySelector("canvas"); const chartGlobal = window.Chart; const chart = canvas && chartGlobal?.getChart?.(canvas); if (!chart) return; if (config?.options) { chart.options = { ...chart.options, ...config.options }; } if (Array.isArray(data?.datasets)) { chart.data.datasets = data.datasets; } chart.update(); } const listConfigs = { format: ["Standard", "Wild"], rank: [ "Top 100", "Top 200", "Top 500", "Top 1000", "Top 5000", "Top 1k", "Top 5k", "Legend", "Diamond 4-1", "Diamond-Legend", "All" ], class: [ "Player Class", "Any Class", "Opponent Class", "Death Knight", "Demon Hunter", "Druid", "Hunter", "Mage", "Paladin", "Priest", "Rogue", "Shaman", "Warlock", "Warrior" ], vsClass: [ "Any Class", "Opponent's Class", "VS Death Knight", "VS Demon Hunter", "VS Druid", "VS Hunter", "VS Mage", "VS Paladin", "VS Priest", "VS Rogue", "VS Shaman", "VS Warlock", "VS Warrior" ] }; function applyFilterIcons(root, lists) { const textToList = new Map(); lists.forEach((list) => { list.forEach((text) => { textToList.set(text, list); }); }); const filterNodes = root.querySelectorAll( ".has-dropdown > a.button, a.dropdown-item" ); filterNodes.forEach((node) => { const text = node.textContent?.trim() || ""; if (textToList.has(text)) { node.classList.add("class-icon"); if (node.matches(".has-dropdown > a.button")) { node.classList.add("button-with-icon"); } node.classList.add( `class-${text.toLowerCase().replace(/\s+/g, "-")}` ); } }); } function createFilterContainer({ targetSelector, lists }) { let targetElement; if (typeof targetSelector === "string") { targetElement = document.querySelector(targetSelector); } else { targetElement = targetSelector; } if (!targetElement) return; const siblings = Array.from(targetElement.parentNode.children).filter( (node) => node !== targetElement ); const existingContainer = siblings.find( (node) => node instanceof HTMLElement && node.classList.contains("filters-container") && node.dataset.hsguruFilterContainer === "true" ); if (existingContainer) return; const container = document.createElement("div"); container.className = "filters-container"; container.dataset.hsguruFilterContainer = "true"; const controls = siblings.filter((node) => { if (!(node instanceof HTMLElement)) return false; return node.tagName === "SPAN" || node.matches( '.has-dropdown.dropdown, a.button, button.button, form, select, input.input, input[type="number"], input[type="search"]' ); }); const textToList = new Map(); lists.forEach((list) => { list.forEach((text) => { textToList.set(text, list); }); }); controls.forEach((control) => { const button = control.matches("a.button") ? control : control.querySelector("a.button"); if (button) { const text = button.textContent?.trim() || ""; if (textToList.has(text)) { button.classList.add("class-icon", "button-with-icon"); button.classList.add( `class-${text.toLowerCase().replace(/\s+/g, "-")}` ); } } const dropdownItems = Array.from( control.querySelectorAll("a.dropdown-item") ); dropdownItems.forEach((item) => { const text = item.textContent?.trim() || ""; if (textToList.has(text)) { item.classList.add("class-icon"); item.classList.add( `class-${text.toLowerCase().replace(/\s+/g, "-")}` ); } }); control.querySelectorAll("a.button, button.button, a.dropdown-item").forEach((button2) => { button2.classList.add("hsguru-filter-button"); }); if (control.matches("button.button")) { control.classList.add("hsguru-filter-button"); } }); controls.forEach((control) => container.appendChild(control)); targetElement.parentNode.insertBefore(container, targetElement); } const pageHandlers = [ { urlPattern: new RegExp(`^${BASE_URL}decks(\\?|$)`), handler: () => { createFilterContainer({ targetSelector: "#deck_stats_viewport", lists: [listConfigs.format, listConfigs.rank, listConfigs.class] }); } }, { urlPattern: new RegExp( `^${BASE_URL}deck/(\\d+|[A-Za-z0-9+/=%]+)(?:\\?.*)?$` ), handler: () => { createFilterContainer({ targetSelector: ".table.is-fullwidth.is-striped", lists: [listConfigs.rank] }); } }, { urlPattern: new RegExp(`^${BASE_URL}meta(\\?|$)`), handler: () => { const table = document.querySelector( "table.table.is-fullwidth.is-striped.is-narrow" ); if (table) { const parentDiv = table.parentNode; if (parentDiv) { createFilterContainer({ targetSelector: parentDiv, lists: [listConfigs.format, listConfigs.rank, listConfigs.vsClass] }); } } } }, { urlPattern: new RegExp(`^${BASE_URL}matchups(\\?|$)`), handler: () => { createFilterContainer({ targetSelector: "#matchups_table_wrapper", lists: [listConfigs.rank] }); } }, { urlPattern: new RegExp(`^${BASE_URL}archetype/[^/]+$`), handler: () => { createFilterContainer({ targetSelector: ".table.is-fullwidth.is-striped", lists: [listConfigs.format, listConfigs.rank] }); } }, { urlPattern: new RegExp(`^${BASE_URL}card-stats\\?archetype=`), handler: () => { createFilterContainer({ targetSelector: ".table.is-fullwidth.is-striped.is-gapless", lists: [listConfigs.format, listConfigs.rank, listConfigs.vsClass] }); } }, { urlPattern: new RegExp(`^${BASE_URL}card-stats\\?deck_id=\\d+`), handler: () => { createFilterContainer({ targetSelector: ".table.is-fullwidth.is-striped", lists: [listConfigs.rank] }); } }, { urlPattern: new RegExp(`^${BASE_URL}card-stats`), handler: () => { createFilterContainer({ targetSelector: ".table.is-fullwidth.is-striped", lists: [listConfigs.format, listConfigs.rank, listConfigs.class] }); } }, { urlPattern: new RegExp(`^${BASE_URL}streamer-decks(\\?|$)`), handler: () => { const toolbar = document.querySelector(".columns.is-pulled-left"); if (!toolbar) return; toolbar.classList.add("filters-container", CLASSES.STREAMER_FILTERS); toolbar.classList.remove("is-pulled-left"); applyFilterIcons(toolbar, [ listConfigs.format, listConfigs.rank, listConfigs.class ]); } }, { urlPattern: new RegExp(`^${BASE_URL}leaderboard(?:[/?].*)?$`), handler: () => { const toolbars = new Set(); document.querySelectorAll(".level.level-left").forEach((toolbar) => { if (toolbar.querySelector(".dropdown") && toolbar.querySelector("a.button, span.button, button.button")) { toolbars.add(toolbar); } }); document.querySelectorAll(`form[action^='/leaderboard']`).forEach((form) => { if (form.querySelector(".dropdown")) { toolbars.add(form); } }); toolbars.forEach((toolbar) => { if (toolbar.dataset.hsguruLeaderboardFiltersStyled === "true") { return; } toolbar.dataset.hsguruLeaderboardFiltersStyled = "true"; toolbar.classList.add("filters-container", CLASSES.LEADERBOARD_FILTERS); if (toolbar.tagName === "FORM") { toolbar.querySelectorAll("span.button.is-link, a.button.is-link").forEach((button) => { button.classList.add(CLASSES.LEADERBOARD_NAV_BUTTON); }); } else { toolbar.querySelectorAll(":scope > form.filters-container").forEach((form) => { form.classList.remove("filters-container", CLASSES.LEADERBOARD_FILTERS); delete form.dataset.hsguruLeaderboardFiltersStyled; }); toolbar.querySelectorAll(":scope > span.button, :scope > a.button.is-link").forEach((button) => { button.classList.add(CLASSES.LEADERBOARD_NAV_BUTTON); }); toolbar.querySelectorAll(':scope > form[action^="/leaderboard"]').forEach( (form) => { form.classList.add(CLASSES.LEADERBOARD_SEARCH_FORM); const input = form.querySelector("input.input, input[type='search']"); if (input) { input.classList.add(CLASSES.LEADERBOARD_SEARCH_INPUT); if (!input.getAttribute("placeholder")) { input.setAttribute("placeholder", uiTranslations.get("Search") || "搜索"); } } form.querySelectorAll("a.button.is-link, span.button.is-link").forEach((btn) => { btn.classList.add(CLASSES.LEADERBOARD_NAV_BUTTON); }); } ); } }); createLeaderboardFilterContainer(); } } ]; function handleFilterStyle() { for (const { urlPattern, handler } of pageHandlers) { if (urlPattern.test(window.location.href)) { handler(); break; } } applyFilterIcons(document.body, [ listConfigs.format, listConfigs.rank, listConfigs.class, listConfigs.vsClass ]); } function createLeaderboardFilterContainer() { const anchor = document.querySelector( ".svg-container, table.table.is-fullwidth, table.table.is-striped.is-fullwidth.is-narrow" ); if (!anchor || !anchor.parentElement) { return; } const parent = anchor.parentElement; if (parent.querySelector(":scope > .filters-container.hsguru-leaderboard-filters[data-hsguru-filter-container='true']")) { return; } const siblings = Array.from(parent.children); const anchorIndex = siblings.indexOf(anchor); if (anchorIndex <= 0) return; const controls = []; for (let i = anchorIndex - 1; i >= 0; i -= 1) { const node = siblings[i]; if (!(node instanceof HTMLElement)) continue; if (node.matches( `.has-dropdown.dropdown, form[action^='/leaderboard'], a.button.is-link, span.button.is-link, .button.is-link, input.input, input[type='number'], input[type='search'], select` )) { controls.unshift(node); continue; } if (controls.length === 0 && (node.tagName === "BR" || node.id === "nitropay-below-title-leaderboard" || node.classList.contains("title") || node.classList.contains("alert"))) { continue; } break; } if (controls.length === 0) return; const container = document.createElement("div"); container.className = `filters-container ${CLASSES.LEADERBOARD_FILTERS}`; container.dataset.hsguruFilterContainer = "true"; container.dataset.hsguruLeaderboardFiltersStyled = "true"; controls.forEach((node) => { if (node.matches("a.button.is-link, span.button.is-link, .button.is-link")) { node.classList.add(CLASSES.LEADERBOARD_NAV_BUTTON); } if (node.matches( "input.input, input[type='number'], input[type='search'], select" )) { node.classList.add(CLASSES.LEADERBOARD_INLINE_INPUT); } if (node.matches(`form[action^='/leaderboard']`)) { const visibleInputs = Array.from( node.querySelectorAll("input.input, input[type='number'], input[type='search'], select") ).filter((input) => input.type !== "hidden" && !input.classList.contains("is-hidden")); const searchInput = visibleInputs.find( (input) => input.matches("input[type='search']") || input.type === "text" ); if (searchInput) { node.classList.add(CLASSES.LEADERBOARD_SEARCH_FORM); searchInput.classList.add(CLASSES.LEADERBOARD_SEARCH_INPUT); if (!searchInput.getAttribute("placeholder")) { searchInput.setAttribute("placeholder", uiTranslations.get("Search") || "搜索"); } node.querySelectorAll("a.button.is-link, span.button.is-link").forEach((btn) => { btn.classList.add(CLASSES.LEADERBOARD_NAV_BUTTON); }); } else if (visibleInputs.length > 0) { node.classList.add(CLASSES.LEADERBOARD_INLINE_FORM); Array.from(node.children).forEach((child) => { if (!(child instanceof HTMLElement)) return; if (child.classList.contains("is-pulled-right") && child.querySelector("input.input, input[type='number'], input[type='search'], select")) { child.classList.add(CLASSES.LEADERBOARD_INLINE_FIELD); } }); visibleInputs.forEach((input) => { input.classList.add(CLASSES.LEADERBOARD_INLINE_INPUT); }); } } container.appendChild(node); }); parent.insertBefore(container, anchor); } const cardTranslations = new Map(); function handleTitle() { const titleElement = document.querySelector("div.title.is-2"); if (!titleElement) return; const currentPath = window.location.href.replace(BASE_URL, "").split("?")[0]; const text = titleElement.textContent?.trim() || ""; function handleDeckNameTranslation(match) { if (!match || !titleElement) return false; const deckName = match[1]; const tempDiv = document.createElement("div"); tempDiv.innerHTML = generateDeckTranslation(deckName); const translated = tempDiv.textContent?.trim() || ""; titleElement.textContent = translated; document.title = translated; return true; } if (currentPath.match(/^card\/\d+$/)) { const translation2 = cardTranslations.get(text) || text; if (translation2 !== text) { titleElement.textContent = translation2; document.title = translation2; } return; } if (currentPath.match(/^deck\/(\d+|[A-Za-z0-9+/=%]+)$/)) { if (handleDeckNameTranslation(text.match(/(.*?) (Standard|Wild)$/))) return; } if (currentPath.match(/^leaderboard\/player-history\//)) { const translated = text.replace(/\bRank\b/g, uiTranslations.get("Rank") || "Rank").replace(/\bHistory\b/g, uiTranslations.get("History") || "History"); if (translated !== text) { titleElement.textContent = translated; document.title = translated; } return; } if (currentPath.match(/^leaderboard\/rank-history\//)) { const translated = text.replace(/\bRank\b/g, uiTranslations.get("Rank") || "Rank").replace(/\bHistory\b/g, uiTranslations.get("History") || "History"); if (translated !== text) { titleElement.textContent = translated; document.title = translated; } return; } if (currentPath === "card-stats") { if (text.includes("Archetype Card Stats")) { if (handleDeckNameTranslation(text.match(/(.*?) Archetype Card Stats/))) return; } const translation2 = uiTranslations.get(text); if (translation2) { titleElement.textContent = translation2; document.title = translation2; } return; } const translation = uiTranslations.get(text); if (translation) { titleElement.textContent = translation; document.title = translation; } } function handleSub() { const subtitleElement = document.querySelector( "div.subtitle.is-6, div.subtitle.is-5" ); if (!subtitleElement) return; const currentUrl = window.location.href; const pageHandlers2 = { decks: { pattern: new RegExp(`^${BASE_URL}decks(\\?|$)`), handler: (element) => { const timeSpan = Array.from(element.querySelectorAll("span")).find( (span) => span.textContent?.includes("ago") ) || null; const timeText = extractRelativeTimeText(timeSpan, uiTranslations); const subtitleHTML = `数据说明${timeText}|要做出贡献,请使用 火石HDT 插件`; replaceSubtitle(element, subtitleHTML); } }, meta: { pattern: new RegExp(`^${BASE_URL}meta(\\?|$)`), handler: (element) => { const timeSpan = Array.from(element.querySelectorAll("span")).find( (span) => span.textContent?.includes("ago") ) || null; const timeText = extractRelativeTimeText(timeSpan, uiTranslations); const subtitleHTML = `要做出贡献,请使用 火石HDT 插件${timeText}`; replaceSubtitle(element, subtitleHTML); } }, matchups: { pattern: new RegExp(`^${BASE_URL}matchups(\\?|$)`), handler: (element) => { const subtitleHTML = `要做出贡献,请使用 火石HDT 插件`; replaceSubtitle(element, subtitleHTML); } }, deck: { pattern: new RegExp(`^${BASE_URL}deck/(\\d+|[A-Za-z0-9+/=%]+)(?:\\?.*)?$`), handler: (element) => { const timeSpan = element.querySelector('span[phx-update="ignore"]'); const timeText = extractRelativeTimeText(timeSpan, uiTranslations); const editLink = element.querySelector(`a[href*="${ROUTES.DECK_BUILDER}"]`); const cardStatsLink = element.querySelector(`a[href*="${ROUTES.CARD_STATS}"]`); const archetypeLink = element.querySelector(`a[href*="${ROUTES.ARCHETYPE}"]`); const replaysLink = element.querySelector(`a[href*="${ROUTES.REPLAYS_WITH_URL}"]`); const replaysByArchLink = element.querySelector(`a[href*="${ROUTES.REPLAYS_BY_ARCHETYPE}"]`); const subtitleHTML = ` 编辑 | 卡牌统计(调度) | 卡组类型统计 | 回放 | 卡组类型回放 ${timeText} `; replaceSubtitle(element, subtitleHTML); } }, cardStatsDeck: { pattern: new RegExp(`^${BASE_URL}card-stats\\?deck_id=\\d+`), handler: (element) => { const timeSpan = element.querySelector('span[phx-update="ignore"]'); const timeText = extractRelativeTimeText(timeSpan, uiTranslations); const gamesText = extractGamesText(element); const deckDetailLink = element.querySelector(`a[href*="${ROUTES.DECK_DETAIL}"]`); const cardStatsByArchLink = element.querySelector(`a[href*="${ROUTES.CARD_STATS_BY_ARCHETYPE}"]`); const subtitleHTML = ` 卡组统计 | 卡组类型卡牌统计 | 数据说明 | 要做出贡献,请使用 Firestone ${timeText}${gamesText} `; replaceSubtitle(element, subtitleHTML); } }, cardStatsArchetype: { pattern: new RegExp(`^${BASE_URL}card-stats\\?archetype=`), handler: (element) => { const timeSpan = element.querySelector('span[phx-update="ignore"]'); const timeText = extractRelativeTimeText(timeSpan, uiTranslations); const gamesText = extractGamesText(element); const cardStatsQueryLink = element.querySelector(`a[href*="${ROUTES.CARD_STATS_QUERY}"]`); const archetypeLink = element.querySelector(`a[href*="${ROUTES.ARCHETYPE}"]`); const subtitleHTML = ` 卡组卡牌统计 | 卡组类型统计 | 数据说明 | 要做出贡献,请使用 Firestone ${timeText}${gamesText} `; replaceSubtitle(element, subtitleHTML); } }, archetype: { pattern: new RegExp(`^${BASE_URL}archetype/[^/]+$`), handler: (element) => { const timeSpan = element.querySelector('span[phx-update="ignore"]'); const timeText = extractRelativeTimeText(timeSpan, uiTranslations); const cardStatsByArchLink = element.querySelector(`a[href*="${ROUTES.CARD_STATS_BY_ARCHETYPE}"]`); const decksQueryLink = element.querySelector(`a[href*="${ROUTES.DECKS_QUERY}"]`); const replaysQueryLink = element.querySelector(`a[href*="${ROUTES.REPLAYS_QUERY}"]`); const subtitleHTML = ` 卡牌统计 | 卡组 | 回放统计 ${timeText} `; replaceSubtitle(element, subtitleHTML); } }, cardStats: { pattern: new RegExp(`^${BASE_URL}card-stats(\\?|$)`), handler: (element) => { const subtitleHTML = ` 卡组构建器 | HDT 插件 | Discord `; replaceSubtitle(element, subtitleHTML); } }, replays: { pattern: new RegExp(`^${BASE_URL}replays(\\?|$)`), handler: (element) => { const subtitleHTML = ` 要做出贡献,请使用 FirestoneHDT 插件 公开你的回放 `; replaceSubtitle(element, subtitleHTML); } }, leaderboardPoints: { pattern: new RegExp(`^${BASE_URL}leaderboard/points`), handler: (element) => { const announcementLink = element.querySelector(`a[href*="${API.BLIZZARD}"]`); const href = announcementLink ? announcementLink.href : "#"; const subtitleHTML = `2026 公告 `; replaceSubtitle(element, subtitleHTML); } }, leaderboard: { pattern: new RegExp(`^${BASE_URL}leaderboard(\\?|$)`), handler: (element) => { const timeElement = element.querySelector("time"); const timeHTML = timeElement ? timeElement.outerHTML : ""; const blizzardLink = element.querySelector(`a[href*="${API.BLIZZARD}"]`); const subtitleHTML = ` 统计 | 官方网站 | 更新于 ${timeHTML} `; replaceSubtitle(element, subtitleHTML); } }, streamerDecks: { pattern: new RegExp(`^${BASE_URL}streamer-decks$`), handler: (element) => { const subtitleHTML = `主播说明`; replaceSubtitle(element, subtitleHTML); } }, esports: { pattern: new RegExp(`^${BASE_URL}esports$`), handler: (element) => { const subtitleHTML = ` 巡回赛站点 | 传统电竞赛事 | 此页面正在建设中,如果你有想法请 告诉我们 `; replaceSubtitle(element, subtitleHTML); } }, streamingNow: { pattern: new RegExp(`^${BASE_URL}streaming-now$`), handler: (element) => { const subtitleHTML = `主播说明`; replaceSubtitle(element, subtitleHTML); } }, hdtPlugin: { pattern: new RegExp(`^${BASE_URL}hdt-plugin$`), handler: (element) => { const subtitleHTML = ` 不仅仅用于主播卡组。 为卡组做贡献, 分享并享受你的卡组回放Firestone用户也可使用这些功能) `; replaceSubtitle(element, subtitleHTML); } } }; for (const [, config] of Object.entries(pageHandlers2)) { if (currentUrl.match(config.pattern)) { config.handler(subtitleElement); break; } } } let cardPreviewOverlay = null; let activeCardPreviewName = ""; let lastCardPreviewPosition = { x: 0, y: 0 }; let nativePreviewsHidden = false; function getCardPreviewOverlay() { if (cardPreviewOverlay) return cardPreviewOverlay; if (!document.getElementById("hsguru-card-preview-hide-style")) { const style = document.createElement("style"); style.id = "hsguru-card-preview-hide-style"; style.textContent = ` body.hsguru-hide-native-card-preview .decklist-card-image { display: none !important; opacity: 0 !important; visibility: hidden !important; pointer-events: none !important; } `; document.head.appendChild(style); } cardPreviewOverlay = document.createElement("div"); cardPreviewOverlay.id = "hsguru-chinese-card-preview"; Object.assign(cardPreviewOverlay.style, { position: "fixed", display: "none", pointerEvents: "none", zIndex: "2147483647", width: "260px", filter: "drop-shadow(0 16px 28px rgba(0, 0, 0, 0.35))", transition: "opacity 0.12s ease" }); const image = document.createElement("img"); image.alt = ""; Object.assign(image.style, { display: "block", width: "100%", height: "auto", borderRadius: "14px" }); cardPreviewOverlay.appendChild(image); document.body.appendChild(cardPreviewOverlay); return cardPreviewOverlay; } function positionCardPreview(x, y) { const overlay = getCardPreviewOverlay(); const previewWidth = 260; const previewHeight = 360; const gap = 18; const verticalLift = 120; let left = x + gap; let top = y - verticalLift; if (left + previewWidth > window.innerWidth - 8) { left = x - previewWidth - gap; } if (top + previewHeight > window.innerHeight - 8) { top = window.innerHeight - previewHeight - 8; } overlay.style.left = `${Math.max(8, left)}px`; overlay.style.top = `${Math.max(8, top)}px`; } function hideNativeHoverCardPreviews() { if (nativePreviewsHidden) return; nativePreviewsHidden = true; document.body.classList.add("hsguru-hide-native-card-preview"); } function restoreNativeHoverCardPreviews() { if (!nativePreviewsHidden) return; nativePreviewsHidden = false; document.body.classList.remove("hsguru-hide-native-card-preview"); } function renderChineseCardPreview(imageUrl) { if (!imageUrl || !activeCardPreviewName) return; const overlay = getCardPreviewOverlay(); const image = overlay.querySelector("img"); if (image.src !== imageUrl) image.src = imageUrl; positionCardPreview(lastCardPreviewPosition.x, lastCardPreviewPosition.y); hideNativeHoverCardPreviews(); overlay.style.display = "block"; overlay.style.opacity = "1"; } function ensureCardImageFetch(cardName) { if (!cardName || getCachedCardImage(cardName) || isCardPending(cardName)) return; enqueueCardFetch(cardName, 2, 500, (_name, result) => { if (result.imageUrl) { cacheCardImage(cardName, result.imageUrl); if (activeCardPreviewName === cardName) { renderChineseCardPreview(result.imageUrl); } } }); } function showChineseCardPreview(cardName, x, y) { if (!cardName) return; activeCardPreviewName = cardName; lastCardPreviewPosition = { x, y }; const imageUrl = getCachedCardImage(cardName); if (imageUrl) { renderChineseCardPreview(imageUrl); return; } hideNativeHoverCardPreviews(); const overlay = getCardPreviewOverlay(); overlay.style.display = "none"; ensureCardImageFetch(cardName); } function moveChineseCardPreview(x, y) { if (!activeCardPreviewName) return; lastCardPreviewPosition = { x, y }; positionCardPreview(x, y); } function hideChineseCardPreview() { activeCardPreviewName = ""; restoreNativeHoverCardPreviews(); if (!cardPreviewOverlay) return; cardPreviewOverlay.style.opacity = "0"; cardPreviewOverlay.style.display = "none"; } function createTranslationItemElement(original, translation, type = "DECK") { const item = document.createElement("div"); item.className = `hsguru-feature-card custom-translation-item ${type === "CARD" ? "card-item" : "deck-item"}`; const checkbox = document.createElement("input"); checkbox.type = "checkbox"; checkbox.className = "hsguru-checkbox custom-item-checkbox"; checkbox.dataset.original = original; checkbox.dataset.type = type; const infoDiv = document.createElement("div"); infoDiv.className = "hsguru-feature-info"; const nameDiv = document.createElement("div"); nameDiv.className = "hsguru-feature-name"; nameDiv.textContent = original; infoDiv.appendChild(nameDiv); const actionDiv = document.createElement("div"); actionDiv.style.display = "flex"; actionDiv.style.alignItems = "center"; const translationInput = document.createElement("input"); translationInput.type = "text"; translationInput.className = "hsguru-input custom-translation-input"; translationInput.value = translation; translationInput.placeholder = "请输入翻译..."; translationInput.dataset.original = original; translationInput.dataset.type = type; const deleteBtn = document.createElement("button"); deleteBtn.type = "button"; deleteBtn.className = "hsguru-delete-btn"; deleteBtn.textContent = "✕"; deleteBtn.onclick = () => { if (type === "CARD") { deleteCustomCardTranslation(original); } else { deleteCustomTranslation(original); } item.remove(); updateMergeBtnVisibility(type); }; actionDiv.appendChild(translationInput); actionDiv.appendChild(deleteBtn); item.appendChild(checkbox); item.appendChild(infoDiv); item.appendChild(actionDiv); return item; } function updateMergeBtnVisibility(type = "DECK") { const modal = document.getElementById("hsguru-config-modal"); if (!modal) return; const mergeBtn = document.getElementById( type === "CARD" ? "hsguru-merge-card" : "hsguru-merge-custom" ); if (!mergeBtn) return; const checkedCount = modal.querySelectorAll( `.custom-item-checkbox[data-type="${type}"]:checked` ).length; mergeBtn.style.display = checkedCount >= 2 ? "block" : "none"; } function createConfigModal() { if (document.getElementById("hsguru-config-modal")) return; const modal = document.createElement("div"); modal.id = "hsguru-config-modal"; modal.className = "hsguru-modal"; const style = document.createElement("style"); style.textContent = ` .hsguru-modal, .hsguru-modal * { box-sizing: border-box; } .hsguru-modal { display: none; position: fixed; z-index: 10000; inset: 0; padding: 24px; background: rgba(20, 20, 19, 0.5); backdrop-filter: blur(8px); font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); color: #141413; } .hsguru-modal-dialog { position: relative; width: min(1080px, 100%); height: min(760px, calc(100vh - 48px)); margin: 0 auto; top: 50%; transform: translateY(-50%); background: #faf9f5; border: 1px solid #e8e6dc; border-radius: 28px; overflow: hidden; display: flex; flex-direction: column; box-shadow: rgba(20, 20, 19, 0.16) 0 24px 80px; } .hsguru-modal-header { padding: 24px 28px 20px; background: linear-gradient(180deg, #faf9f5 0%, #f5f4ed 100%); border-bottom: 1px solid #e8e6dc; display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; } .hsguru-modal-header-copy { min-width: 0; } .hsguru-modal-eyebrow { margin: 0 0 10px; font-size: 11px; line-height: 1.5; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; color: #87867f; } .hsguru-modal-title { margin: 0; font-family: var(--hsguru-font-serif, Georgia, "Times New Roman", serif); font-size: 31px; line-height: 1.15; font-weight: 500; color: #141413; } .hsguru-modal-subtitle { margin: 10px 0 0; max-width: 640px; font-size: 14px; line-height: 1.6; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); font-weight: 400; color: #5e5d59; } .hsguru-close-btn { width: 40px; height: 40px; flex: 0 0 40px; border: 1px solid #e8e6dc; border-radius: 999px; background: #ffffff; color: #5e5d59; font-size: 24px; line-height: 1; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 0 0 1px rgba(209, 207, 197, 0); } .hsguru-close-btn:hover { color: #141413; border-color: #d1cfc5; box-shadow: 0 0 0 1px #d1cfc5; transform: translateY(-1px); } .hsguru-modal-body { flex: 1; display: flex; min-height: 0; overflow: hidden; background: #f5f4ed; } .hsguru-sidebar { width: 260px; flex: 0 0 260px; background: linear-gradient(180deg, #f8f7f1 0%, #f1efe6 100%); color: #141413; border-right: 1px solid #e8e6dc; padding: 20px 16px; display: flex; flex-direction: column; gap: 8px; overflow-y: auto; } .hsguru-sidebar-intro { padding: 16px; margin-bottom: 8px; border: 1px solid #e8e6dc; border-radius: 18px; background: rgba(255, 255, 255, 0.7); box-shadow: rgba(20, 20, 19, 0.03) 0 4px 18px; } .hsguru-sidebar-title { margin: 0 0 6px; font-family: var(--hsguru-font-serif, Georgia, "Times New Roman", serif); font-size: 19px; line-height: 1.2; font-weight: 500; color: #141413; } .hsguru-sidebar-note { margin: 0; font-size: 13px; line-height: 1.6; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); color: #5e5d59; } .hsguru-tab-item { position: relative; padding: 13px 16px; border: 1px solid transparent; border-radius: 16px; cursor: pointer; font-size: 14px; line-height: 1.4; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); font-weight: 500; color: #5e5d59; transition: all 0.2s ease; display: flex; align-items: center; gap: 10px; } .hsguru-tab-item:hover { color: #141413; background: rgba(255, 255, 255, 0.72); border-color: #e8e6dc; } .hsguru-tab-item.active { color: #141413; background: #fff7f2; border-color: #c96442; box-shadow: inset 0 0 0 1px rgba(201, 100, 66, 0.18), rgba(20, 20, 19, 0.04) 0 4px 14px; } .hsguru-content { flex: 1; min-width: 0; padding: 26px; overflow-y: auto; background: linear-gradient(180deg, #f5f4ed 0%, #f0eee6 100%); } .hsguru-tab-content { display: none; } .hsguru-tab-content.active { display: block; } .hsguru-feature-card { background: rgba(255, 255, 255, 0.72); backdrop-filter: blur(6px); border: 1px solid #e8e6dc; border-radius: 18px; padding: 18px 20px; margin-bottom: 12px; display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; box-shadow: rgba(20, 20, 19, 0.04) 0 6px 24px; } .hsguru-feature-info { flex: 1; min-width: 0; padding-right: 8px; } .hsguru-feature-name { margin-bottom: 6px; font-family: var(--hsguru-font-serif, Georgia, "Times New Roman", serif); font-size: 20px; line-height: 1.25; font-weight: 500; color: #141413; } .hsguru-feature-desc { font-size: 14px; line-height: 1.6; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); color: #5e5d59; } .hsguru-switch { position: relative; display: inline-block; width: 52px; height: 30px; flex-shrink: 0; margin-top: 2px; } .hsguru-switch input { opacity: 0; width: 0; height: 0; } .hsguru-slider { position: absolute; cursor: pointer; inset: 0; background: #d1cfc5; transition: 0.25s ease; border-radius: 999px; box-shadow: inset 0 0 0 1px rgba(20, 20, 19, 0.06); } .hsguru-slider:before { position: absolute; content: ""; height: 24px; width: 24px; left: 3px; bottom: 3px; background: #ffffff; transition: 0.25s ease; border-radius: 50%; box-shadow: rgba(20, 20, 19, 0.18) 0 2px 8px; } input:checked + .hsguru-slider { background: #c96442; } input:checked + .hsguru-slider:before { transform: translateX(22px); } .hsguru-modal-footer { padding: 18px 28px; background: #faf9f5; border-top: 1px solid #e8e6dc; display: flex; justify-content: flex-end; gap: 12px; } .hsguru-btn { min-height: 42px; padding: 10px 18px; border-radius: 12px; font-size: 14px; font-weight: 500; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); cursor: pointer; transition: all 0.2s ease; border: 1px solid transparent; box-shadow: 0 0 0 1px rgba(209, 207, 197, 0); } .hsguru-btn:hover { transform: translateY(-1px); } .hsguru-btn-secondary { background: #e8e6dc; color: #4d4c48; border-color: #e8e6dc; } .hsguru-btn-secondary:hover { background: #dedbd0; box-shadow: 0 0 0 1px #c2c0b6; } .hsguru-btn-primary { background: #c96442; color: #faf9f5; border-color: #c96442; } .hsguru-btn-primary:hover { background: #b85a39; box-shadow: 0 0 0 1px rgba(201, 100, 66, 0.25); } .hsguru-btn-success { background: #30302e; color: #faf9f5; border-color: #30302e; } .hsguru-btn-success:hover { background: #1f1f1d; box-shadow: 0 0 0 1px rgba(48, 48, 46, 0.24); } .hsguru-input { width: 200px; min-height: 42px; padding: 10px 14px; border: 1px solid #d1cfc5; border-radius: 12px; font-size: 14px; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); color: #141413; background: #ffffff; transition: border-color 0.2s ease, box-shadow 0.2s ease; } .hsguru-input::placeholder { color: #87867f; } .hsguru-input:focus { border-color: #c96442; box-shadow: 0 0 0 3px rgba(201, 100, 66, 0.16); outline: none; } .custom-translation-item { align-items: center; } .hsguru-custom-list { display: flex; flex-direction: column; gap: 10px; } .hsguru-delete-btn { background: none; border: none; color: #b53333; cursor: pointer; font-size: 18px; padding: 6px 10px; margin-left: 8px; border-radius: 10px; transition: all 0.2s ease; } .hsguru-delete-btn:hover { background: rgba(181, 51, 51, 0.08); } .hsguru-custom-actions { position: sticky; top: -26px; display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; background: linear-gradient(180deg, #f5f4ed 0%, rgba(245, 244, 237, 0.92) 100%); padding: 0 0 12px; z-index: 10; } .hsguru-checkbox { margin-right: 12px; width: 18px; height: 18px; cursor: pointer; accent-color: #c96442; } .custom-translation-item.edit-mode { background: #fff7f2; border: 1px solid rgba(201, 100, 66, 0.4); box-shadow: 0 0 0 1px rgba(201, 100, 66, 0.16); } .hsguru-save-edit-btn { background: #c96442; color: #faf9f5; border-color: #c96442; } .hsguru-save-edit-btn:hover { background: #b85a39; } .hsguru-edit-field-wrap { flex: 0 0 auto; margin-right: 10px; } .hsguru-edit-actions { display: flex; align-items: center; flex: 1; } .hsguru-edit-original-input { width: 150px; } .hsguru-edit-translation-input { flex: 1; margin-right: 8px; } .hsguru-edit-save-btn { padding: 4px 8px; font-size: 12px; margin-right: 4px; } .hsguru-edit-cancel-btn { padding: 4px 8px; font-size: 12px; } .hsguru-cancel-edit-btn { background: #ffffff; border: 1px solid #d1cfc5; color: #5e5d59; } .hsguru-cancel-edit-btn:hover { background: #f5f4ed; } .empty-message { padding: 28px 20px; text-align: center; font-family: var(--hsguru-font-sans, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); font-size: 14px; line-height: 1.6; color: #87867f; background: rgba(255, 255, 255, 0.48); border: 1px dashed #d1cfc5; border-radius: 18px; } @media (max-width: 900px) { .hsguru-modal { padding: 12px; } .hsguru-modal-dialog { height: calc(100vh - 24px); border-radius: 22px; } .hsguru-modal-body { flex-direction: column; } .hsguru-sidebar { width: auto; flex: 0 0 auto; border-right: none; border-bottom: 1px solid #e8e6dc; padding-bottom: 14px; } .hsguru-content { padding: 18px; } .hsguru-custom-actions { top: -18px; } } @media (max-width: 640px) { .hsguru-modal-header, .hsguru-modal-footer { padding-left: 18px; padding-right: 18px; } .hsguru-modal-title { font-size: 26px; } .hsguru-feature-card, .custom-translation-item { flex-direction: column; align-items: stretch; } .hsguru-edit-field-wrap { margin-right: 0; } .hsguru-edit-actions { width: 100%; } .hsguru-feature-info { padding-right: 0; } .hsguru-input { width: 100%; } } `; document.head.appendChild(style); const fragment = document.createDocumentFragment(); const dialog = document.createElement("div"); dialog.className = "hsguru-modal-dialog"; const header = document.createElement("div"); header.className = "hsguru-modal-header"; const headerCopy = document.createElement("div"); headerCopy.className = "hsguru-modal-header-copy"; const eyebrow = document.createElement("p"); eyebrow.className = "hsguru-modal-eyebrow"; eyebrow.textContent = "HSGuru Chinese Plus Companion"; const title = document.createElement("h5"); title.className = "hsguru-modal-title"; title.textContent = "插件配置"; const subtitle = document.createElement("p"); subtitle.className = "hsguru-modal-subtitle"; subtitle.textContent = "按分类管理美化、翻译和增强功能,并在右侧维护自定义词库,让站点界面更接近中文使用习惯。"; headerCopy.appendChild(eyebrow); headerCopy.appendChild(title); headerCopy.appendChild(subtitle); const closeBtn = document.createElement("button"); closeBtn.type = "button"; closeBtn.id = "hsguru-close-config"; closeBtn.className = "hsguru-close-btn"; closeBtn.textContent = "×"; header.appendChild(headerCopy); header.appendChild(closeBtn); const body = document.createElement("div"); body.className = "hsguru-modal-body"; const sidebar = document.createElement("div"); sidebar.className = "hsguru-sidebar"; const sidebarIntro = document.createElement("div"); sidebarIntro.className = "hsguru-sidebar-intro"; const sidebarTitle = document.createElement("div"); sidebarTitle.className = "hsguru-sidebar-title"; sidebarTitle.textContent = "功能分组"; const sidebarNote = document.createElement("p"); sidebarNote.className = "hsguru-sidebar-note"; sidebarNote.textContent = "左侧切换模块,右侧即时调整。自定义翻译词库会持久化到本地浏览器存储。"; sidebarIntro.appendChild(sidebarTitle); sidebarIntro.appendChild(sidebarNote); sidebar.appendChild(sidebarIntro); Object.keys(CATEGORIES).forEach((catId, index) => { const catName = CATEGORIES[catId]; const tabItem = document.createElement("div"); tabItem.className = `hsguru-tab-item ${index === 0 ? "active" : ""}`; tabItem.dataset.tab = catId; tabItem.textContent = catName; sidebar.appendChild(tabItem); }); const deckTab = document.createElement("div"); deckTab.className = "hsguru-tab-item"; deckTab.dataset.tab = "CUSTOM_DECK"; deckTab.textContent = "自定义卡组翻译"; sidebar.appendChild(deckTab); const cardTab = document.createElement("div"); cardTab.className = "hsguru-tab-item"; cardTab.dataset.tab = "CUSTOM_CARD"; cardTab.textContent = "自定义卡牌翻译"; sidebar.appendChild(cardTab); const content = document.createElement("div"); content.className = "hsguru-content"; Object.keys(CATEGORIES).forEach((catId, index) => { const tabContent = document.createElement("div"); tabContent.className = `hsguru-tab-content ${index === 0 ? "active" : ""}`; tabContent.id = `tab-content-${catId}`; Object.keys(FEATURES).forEach((featId) => { const feat = FEATURES[featId]; if (feat.category === catId) { const card = document.createElement("div"); card.className = "hsguru-feature-card"; const info = document.createElement("div"); info.className = "hsguru-feature-info"; const name = document.createElement("div"); name.className = "hsguru-feature-name"; name.textContent = feat.name; const desc = document.createElement("div"); desc.className = "hsguru-feature-desc"; desc.textContent = feat.description || ""; info.appendChild(name); info.appendChild(desc); const label = document.createElement("label"); label.className = "hsguru-switch"; const input = document.createElement("input"); input.type = "checkbox"; input.id = `enable_${featId}`; if (feat.enabled) input.checked = true; const slider = document.createElement("span"); slider.className = "hsguru-slider"; label.appendChild(input); label.appendChild(slider); card.appendChild(info); card.appendChild(label); tabContent.appendChild(card); } }); content.appendChild(tabContent); }); const deckTabContent = document.createElement("div"); deckTabContent.className = "hsguru-tab-content"; deckTabContent.id = "tab-content-CUSTOM_DECK"; const deckActions = document.createElement("div"); deckActions.className = "hsguru-custom-actions"; const addDeckBtn = document.createElement("button"); addDeckBtn.type = "button"; addDeckBtn.className = "hsguru-btn hsguru-btn-success"; addDeckBtn.id = "hsguru-add-deck"; addDeckBtn.textContent = "新增组合词"; const mergeDeckBtn = document.createElement("button"); mergeDeckBtn.type = "button"; mergeDeckBtn.className = "hsguru-btn hsguru-btn-primary"; mergeDeckBtn.id = "hsguru-merge-custom"; mergeDeckBtn.style.display = "none"; mergeDeckBtn.textContent = "合并所选单词"; deckActions.appendChild(addDeckBtn); deckActions.appendChild(mergeDeckBtn); const deckList = document.createElement("div"); deckList.className = "hsguru-custom-list"; deckList.id = "hsguru-deck-list"; deckTabContent.appendChild(deckActions); deckTabContent.appendChild(deckList); content.appendChild(deckTabContent); const cardTabContent = document.createElement("div"); cardTabContent.className = "hsguru-tab-content"; cardTabContent.id = "tab-content-CUSTOM_CARD"; const cardActions = document.createElement("div"); cardActions.className = "hsguru-custom-actions"; const addCardBtn = document.createElement("button"); addCardBtn.type = "button"; addCardBtn.className = "hsguru-btn hsguru-btn-success"; addCardBtn.id = "hsguru-add-card"; addCardBtn.textContent = "新增卡牌翻译"; const mergeCardBtn = document.createElement("button"); mergeCardBtn.type = "button"; mergeCardBtn.className = "hsguru-btn hsguru-btn-primary"; mergeCardBtn.id = "hsguru-merge-card"; mergeCardBtn.style.display = "none"; mergeCardBtn.textContent = "合并所选单词"; cardActions.appendChild(addCardBtn); cardActions.appendChild(mergeCardBtn); const cardList = document.createElement("div"); cardList.className = "hsguru-custom-list"; cardList.id = "hsguru-card-list"; cardTabContent.appendChild(cardActions); cardTabContent.appendChild(cardList); content.appendChild(cardTabContent); body.appendChild(sidebar); body.appendChild(content); const footer = document.createElement("div"); footer.className = "hsguru-modal-footer"; const cancelBtn = document.createElement("button"); cancelBtn.type = "button"; cancelBtn.className = "hsguru-btn hsguru-btn-secondary"; cancelBtn.id = "hsguru-cancel-config"; cancelBtn.textContent = "取消"; const saveBtn = document.createElement("button"); saveBtn.type = "button"; saveBtn.className = "hsguru-btn hsguru-btn-primary"; saveBtn.id = "hsguru-save-config"; saveBtn.textContent = "保存并刷新"; footer.appendChild(cancelBtn); footer.appendChild(saveBtn); dialog.appendChild(header); dialog.appendChild(body); dialog.appendChild(footer); fragment.appendChild(dialog); modal.appendChild(fragment); document.body.appendChild(modal); const deckListContainer = modal.querySelector("#hsguru-deck-list"); const customDeckTranslations = getCustomTranslations(); if (customDeckTranslations && Object.keys(customDeckTranslations).length > 0) { Object.keys(customDeckTranslations).forEach((original) => { const translation = customDeckTranslations[original]; const item = createTranslationItemElement(original, translation, "DECK"); deckListContainer.appendChild(item); }); } else { const emptyMsg = document.createElement("div"); emptyMsg.className = "empty-message"; emptyMsg.textContent = "暂无待翻译的卡组名称"; deckListContainer.appendChild(emptyMsg); } const cardListContainer = modal.querySelector("#hsguru-card-list"); const customCardTranslations2 = getCustomCardTranslations(); if (customCardTranslations2 && Object.keys(customCardTranslations2).length > 0) { Object.keys(customCardTranslations2).forEach((original) => { const translation = customCardTranslations2[original]; const item = createTranslationItemElement(original, translation, "CARD"); cardListContainer.appendChild(item); }); } else { const emptyMsg = document.createElement("div"); emptyMsg.className = "empty-message"; emptyMsg.textContent = "暂无待翻译的卡牌名称"; cardListContainer.appendChild(emptyMsg); } bindConfigModalEvents(); } function bindConfigModalEvents() { const modal = document.getElementById("hsguru-config-modal"); const closeBtn = document.getElementById("hsguru-close-config"); const cancelBtn = document.getElementById("hsguru-cancel-config"); const saveBtn = document.getElementById("hsguru-save-config"); const tabs = modal.querySelectorAll(".hsguru-tab-item"); const contents = modal.querySelectorAll(".hsguru-tab-content"); tabs.forEach((tab) => { tab.onclick = () => { const tabId = tab.dataset.tab; tabs.forEach((t) => t.classList.remove("active")); contents.forEach((c) => c.classList.remove("active")); tab.classList.add("active"); document.getElementById(`tab-content-${tabId}`)?.classList.add("active"); }; }); const closeModal = () => modal.style.display = "none"; closeBtn.onclick = closeModal; cancelBtn.onclick = closeModal; window.addEventListener("click", (event) => { if (event.target === modal) closeModal(); }); const setupMergeLogic = (type) => { const btnId = type === "CARD" ? "hsguru-merge-card" : "hsguru-merge-custom"; const mergeBtn = document.getElementById(btnId); if (!mergeBtn) return; mergeBtn.onclick = () => { const checked = Array.from( modal.querySelectorAll( `.custom-item-checkbox[data-type="${type}"]:checked` ) ); if (checked.length < 2) return; const words = checked.map((cb) => cb.dataset.original || ""); const combined = words.join(" "); const itemsToHide = checked.map( (cb) => cb.closest(".custom-translation-item") ); itemsToHide.forEach((item) => { if (item) item.style.display = "none"; }); const editRow = document.createElement("div"); editRow.className = `hsguru-feature-card custom-translation-item edit-mode ${type === "CARD" ? "card-item" : "deck-item"}`; const infoDiv = document.createElement("div"); infoDiv.className = "hsguru-feature-info hsguru-edit-field-wrap"; const originalInput = document.createElement("input"); originalInput.type = "text"; originalInput.className = "hsguru-input edit-original-input hsguru-edit-original-input"; originalInput.value = combined; originalInput.placeholder = "请输入组合词..."; infoDiv.appendChild(originalInput); const actionsDiv = document.createElement("div"); actionsDiv.className = "hsguru-edit-actions"; const translationInput = document.createElement("input"); translationInput.type = "text"; translationInput.className = "hsguru-input edit-translation-input hsguru-edit-translation-input"; translationInput.placeholder = "请输入翻译..."; const saveEditBtn = document.createElement("button"); saveEditBtn.type = "button"; saveEditBtn.className = "hsguru-btn hsguru-btn-primary hsguru-save-edit-btn hsguru-edit-save-btn"; saveEditBtn.textContent = "保存"; const cancelEditBtn = document.createElement("button"); cancelEditBtn.type = "button"; cancelEditBtn.className = "hsguru-btn hsguru-btn-secondary hsguru-cancel-edit-btn hsguru-edit-cancel-btn"; cancelEditBtn.textContent = "取消"; actionsDiv.appendChild(translationInput); actionsDiv.appendChild(saveEditBtn); actionsDiv.appendChild(cancelEditBtn); editRow.appendChild(infoDiv); editRow.appendChild(actionsDiv); if (itemsToHide[0]?.parentNode) { itemsToHide[0].parentNode.insertBefore(editRow, itemsToHide[0]); } translationInput.focus(); saveEditBtn.onclick = () => { const newOriginal = originalInput.value.trim(); const newTranslation = translationInput.value.trim(); if (newOriginal && newTranslation) { if (type === "CARD") { saveCustomCardTranslation(newOriginal, newTranslation); const current = getCustomCardTranslations(); words.forEach((word) => { if (current[word] === "" && word !== newOriginal) deleteCustomCardTranslation(word); }); } else { saveCustomTranslation(newOriginal, newTranslation); const current = getCustomTranslations(); words.forEach((word) => { if (current[word] === "" && word !== newOriginal) deleteCustomTranslation(word); }); } itemsToHide.forEach((item) => { if (item) item.remove(); }); const newItem = createTranslationItemElement( newOriginal, newTranslation, type ); if (editRow.parentNode) { editRow.parentNode.insertBefore(newItem, editRow); } editRow.remove(); updateMergeBtnVisibility(type); } else { alert("请输入完整的翻译"); } }; cancelEditBtn.onclick = () => { editRow.remove(); itemsToHide.forEach((item) => { if (item) item.style.display = ""; }); }; }; }; const setupAddLogic = (type) => { const btnId = type === "CARD" ? "hsguru-add-card" : "hsguru-add-deck"; const listId = type === "CARD" ? "#hsguru-card-list" : "#hsguru-deck-list"; const addBtn = document.getElementById(btnId); if (!addBtn) return; addBtn.onclick = () => { const listContainer = modal.querySelector(listId); const emptyMessage = listContainer?.querySelector(".empty-message"); if (emptyMessage) emptyMessage.remove(); const editRow = document.createElement("div"); editRow.className = `hsguru-feature-card custom-translation-item edit-mode ${type === "CARD" ? "card-item" : "deck-item"}`; const infoDiv = document.createElement("div"); infoDiv.className = "hsguru-feature-info hsguru-edit-field-wrap"; const originalInput = document.createElement("input"); originalInput.type = "text"; originalInput.className = "hsguru-input edit-original-input hsguru-edit-original-input"; originalInput.placeholder = type === "CARD" ? "卡牌英文名" : "组合词"; infoDiv.appendChild(originalInput); const actionsDiv = document.createElement("div"); actionsDiv.className = "hsguru-edit-actions"; const translationInput = document.createElement("input"); translationInput.type = "text"; translationInput.className = "hsguru-input edit-translation-input hsguru-edit-translation-input"; translationInput.placeholder = "请输入翻译..."; const saveEditBtn = document.createElement("button"); saveEditBtn.type = "button"; saveEditBtn.className = "hsguru-btn hsguru-btn-primary hsguru-save-edit-btn hsguru-edit-save-btn"; saveEditBtn.textContent = "保存"; const cancelEditBtn = document.createElement("button"); cancelEditBtn.type = "button"; cancelEditBtn.className = "hsguru-btn hsguru-btn-secondary hsguru-cancel-edit-btn hsguru-edit-cancel-btn"; cancelEditBtn.textContent = "取消"; actionsDiv.appendChild(translationInput); actionsDiv.appendChild(saveEditBtn); actionsDiv.appendChild(cancelEditBtn); editRow.appendChild(infoDiv); editRow.appendChild(actionsDiv); if (listContainer) { listContainer.insertBefore(editRow, listContainer.firstChild); } originalInput.focus(); saveEditBtn.onclick = () => { const newOriginal = originalInput.value.trim(); const newTranslation = translationInput.value.trim(); if (newOriginal && newTranslation) { if (type === "CARD") { saveCustomCardTranslation(newOriginal, newTranslation); } else { saveCustomTranslation(newOriginal, newTranslation); } const newItem = createTranslationItemElement( newOriginal, newTranslation, type ); if (editRow.parentNode) { editRow.parentNode.insertBefore(newItem, editRow); } editRow.remove(); updateMergeBtnVisibility(type); } else { alert("请输入完整的英文原名和中文翻译"); } }; cancelEditBtn.onclick = () => { editRow.remove(); if (listContainer && listContainer.children.length === 0) { const emptyMsg = document.createElement("div"); emptyMsg.className = "empty-message"; emptyMsg.textContent = type === "CARD" ? "暂无待翻译的卡牌名称" : "暂无待翻译的卡组名称"; listContainer.appendChild(emptyMsg); } }; }; }; setupMergeLogic("DECK"); setupMergeLogic("CARD"); setupAddLogic("DECK"); setupAddLogic("CARD"); if (saveBtn) { saveBtn.onclick = () => { saveCurrentConfig(); saveCustomTranslationsFromUI(); location.reload(); }; } } function saveCustomTranslationsFromUI() { const inputs = document.querySelectorAll(".custom-translation-input"); const deckTranslations = {}; const cardTranslations2 = {}; inputs.forEach((input) => { const original = input.dataset.original || ""; const translation = input.value.trim(); const type = input.dataset.type; if (type === "CARD") { cardTranslations2[original] = translation; } else { deckTranslations[original] = translation; } }); saveCustomTranslations(deckTranslations); saveCustomCardTranslations(cardTranslations2); } function saveCurrentConfig() { const config = {}; Object.keys(FEATURES).forEach((key) => { const checkbox = document.getElementById(`enable_${key}`); if (checkbox) { config[`enable_${key}`] = checkbox.checked; } }); StorageManager.gm.set(storageKey.config(), config); } function loadConfigToUI(config) { Object.keys(FEATURES).forEach((key) => { const checkbox = document.getElementById(`enable_${key}`); if (checkbox) { checkbox.checked = config[`enable_${key}`] !== void 0 ? config[`enable_${key}`] : FEATURES[key].enabled; } }); } function showConfigModal() { createConfigModal(); const modal = document.getElementById("hsguru-config-modal"); const config = getConfig(); loadConfigToUI(config); if (modal) modal.style.display = "block"; } function addConfigButton() { const navbarStart = document.querySelector(".navbar-start"); if (!navbarStart) return; if (document.getElementById("config-menu-button")) return; const configButton = document.createElement("a"); configButton.id = "config-menu-button"; configButton.className = "navbar-item"; configButton.href = "#"; configButton.title = "插件配置"; configButton.innerHTML = "⚙️"; configButton.addEventListener("click", (e) => { e.preventDefault(); showConfigModal(); }); navbarStart.appendChild(configButton); } function getConfig() { const savedConfig = StorageManager.gm.get(storageKey.config(), {}); const defaultConfig = {}; Object.keys(FEATURES).forEach((key) => { defaultConfig[`enable_${key}`] = FEATURES[key].enabled; }); return { ...defaultConfig, ...savedConfig }; } function applyConfig(config) { Object.keys(FEATURES).forEach((key) => { if (config.hasOwnProperty(`enable_${key}`)) { FEATURES[key].enabled = config[`enable_${key}`]; } }); } FEATURES.AD.handler = handleAd; FEATURES.BASIC.handler = handleBasic; FEATURES.CARD.handler = handleCard; FEATURES.CARD_LINK.handler = handleCardLinks; FEATURES.CLIPBOARD.handler = handleClipboard; FEATURES.DECK.handler = handleDeck; FEATURES.FILTER.handler = handleFilter; FEATURES.FILTER_STYLE.handler = handleFilterStyle; FEATURES.SEARCH.handler = handleSearch; FEATURES.SUB.handler = handleSub; FEATURES.TABLE.handler = handleTable; FEATURES.TAG.handler = handleTag; FEATURES.TITLE.handler = handleTitle; FEATURES.SCROLL_TOP.handler = handleScrollTop; let hsguruIsApplying = false; let hsguruDomObserver = null; function runHsguruFeaturesSafely() { if (hsguruIsApplying) return; hsguruIsApplying = true; try { queryCache.clear(); initializeFeatures(); } finally { hsguruIsApplying = false; } } function initializeFeatures() { Object.values(FEATURES).forEach((feature) => { if (feature.enabled && feature.handler) { try { feature.handler(); } catch (e) { console.error(`Error in feature ${feature.name}:`, e); } } }); } function setupDOMTranslationObserver() { if (hsguruDomObserver) return; let rafId = null; const scheduleUpdate = () => { if (rafId !== null) return; rafId = requestAnimationFrame(() => { rafId = null; runHsguruFeaturesSafely(); }); }; hsguruDomObserver = new MutationObserver((mutations) => { for (const mutation of mutations) { if (mutation.type === "childList" || mutation.type === "characterData") { scheduleUpdate(); break; } } }); hsguruDomObserver.observe(document.body, { childList: true, subtree: true, characterData: true }); } let eventListenersBound = false; function setupEventListeners() { if (eventListenersBound) return; document.body.addEventListener("click", (event) => { if (event.target.matches("a.dropdown-item") || event.target.closest("a.dropdown-item")) { setTimeout(() => { queryCache.clear(); handleDeck(); handleCard(); }, 1e3); } }); document.body.addEventListener("mouseover", (event) => { const cardRow = event.target.closest(".tw-relative"); const cardNameElement = cardRow?.querySelector(SELECTORS.CARD_NAME) || event.target.closest(SELECTORS.CARD_NAME); if (!cardNameElement) return; const originalName = cardNameElement.dataset.originalCardName || cardNameElement.textContent?.trim() || ""; showChineseCardPreview(originalName, event.clientX, event.clientY); }); let moveRafId = null; document.body.addEventListener("mousemove", (event) => { if (moveRafId !== null) return; moveRafId = requestAnimationFrame(() => { moveRafId = null; if (!activeCardPreviewName) return; moveChineseCardPreview(event.clientX, event.clientY); }); }); document.body.addEventListener("mouseout", (event) => { const cardRow = event.target.closest(".tw-relative"); if (!cardRow || !cardRow.querySelector(SELECTORS.CARD_NAME)) return; const nextCardRow = event.relatedTarget?.closest?.(".tw-relative"); if (nextCardRow === cardRow) return; hideChineseCardPreview(); }); eventListenersBound = true; } function schedulePluginInitialization() { const runWhenStable = () => { runHsguruFeaturesSafely(); }; if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", runWhenStable, { once: true }); } else { requestAnimationFrame(runWhenStable); } } function initializePlugin() { migrateLegacyData(); migrateLegacyCardCache(); const config = getConfig(); applyConfig(config); addConfigButton(); injectStyles(config); setupDOMTranslationObserver(); setupEventListeners(); schedulePluginInitialization(); } (function() { console.log("[HSGuru] 模块化脚本已启动"); initializePlugin(); })(); })();