Sistema de notificações para UserScripts.
Acest script nu ar trebui instalat direct. Aceasta este o bibliotecă pentru alte scripturi care este inclusă prin directiva meta a // @require https://update.greasyfork.org/scripts/549920/1795893/Script%20Notifier.js
// ==UserScript==
// @name Script Notifier
// @namespace http://github.com/0H4S
// @version 2.7
// @author OHAS
// @description Sistema de notificação para UserScripts.
// @license CC-BY-NC-ND-4.0
// @copyright 2025-2026 OHAS. All Rights Reserved. (https://gist.github.com/0H4S/ae2fa82957a089576367e364cbf02438)
// ==/UserScript==
/**
* Copyright Notice & Terms of Use
* Copyright © 2025-2026 OHAS. All rights reserved.
*
* This software is the exclusive property of OHAS and is licensed for personal, non-commercial use only.
*
* You may:
* - Install, use, and inspect the code for learning or personal purposes.
*
* You may not, without prior written authorization from OHAS:
* - Copy, redistribute, or republish this software.
* - Modify, sell, or use this software for commercial purposes.
* - Create derivative works that distribute this code.
*
* By downloading, installing, executing, or in any way using this software, in whole or in part, you acknowledge that you have read, understood, and fully accepted the terms set forth herein. If you do not agree with any of the conditions described, do not use this software.
* Any use, action, or purpose not expressly stated in this document shall be considered unauthorized. The absence of explicit mention does not imply the granting of permission.
*
* For questions, permission requests, or alternative licensing, please contact via
* - GitHub: https://github.com/0H4S
* - Ko-fi: https://ko-fi.com/ohas
* - Greasy Fork: https://greasyfork.org/users/1464180
*
* This software is provided “as is”, without warranties of any kind. Under no circumstances shall the author be held liable for any damages resulting from its use.
*/
const SNICONS={success:'<svg viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path stroke-dasharray="64" stroke-dashoffset="64" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0"><animate fill="freeze" attributeName="stroke-dashoffset" dur="0.6s" values="64;0"/></path><path stroke-dasharray="14" stroke-dashoffset="14" d="m8 12 3 3 5-5"><animate fill="freeze" attributeName="stroke-dashoffset" begin="0.6s" dur="0.2s" values="14;0"/></path></g></svg>',warning:'<svg viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path stroke-dasharray="60" d="m12 3 9 17H3z"><animate fill="freeze" attributeName="stroke-dashoffset" dur="0.6s" values="60;0"/></path><path stroke-dasharray="6" stroke-dashoffset="6" d="M12 10v4"><animate attributeName="stroke-width" begin="0.7s" dur="3s" keyTimes="0;0.1;0.2;0.3;1" repeatCount="indefinite" values="2;3;3;2;2"/><animate fill="freeze" attributeName="stroke-dashoffset" begin="0.7s" dur="0.2s" to="0"/></path><path stroke-dasharray="4" stroke-dashoffset="4" d="M12 17v.01"><animate fill="freeze" attributeName="stroke-dashoffset" begin="0.7s" dur="0.2s" to="0"/><animate attributeName="stroke-width" begin="1s" dur="3s" keyTimes="0;0.1;0.2;0.3;1" repeatCount="indefinite" values="2;3;3;2;2"/></path></g></svg>',info:'<svg viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path stroke-dasharray="60" d="M12 3a9 9 0 1 1-.001 18.001A9 9 0 0 1 12 3"><animate fill="freeze" attributeName="stroke-dashoffset" dur="0.6s" values="60;0"/></path><path stroke-dasharray="8" stroke-dashoffset="8" d="M12 7v6"><animate attributeName="stroke-width" begin="0.7s" dur="3s" keyTimes="0;0.1;0.2;0.3;1" repeatCount="indefinite" values="2;3;3;2;2"/><animate fill="freeze" attributeName="stroke-dashoffset" begin="0.7s" dur="0.2s" to="0"/></path><path stroke-dasharray="4" stroke-dashoffset="4" d="M12 17v.01"><animate fill="freeze" attributeName="stroke-dashoffset" begin="0.7s" dur="0.2s" to="0"/><animate attributeName="stroke-width" begin="1s" dur="3s" keyTimes="0;0.1;0.2;0.3;1" repeatCount="indefinite" values="2;3;3;2;2"/></path></g></svg>',expand:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg>',close:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>',translate:'<svg viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.958 8.95a1.5 1.5 0 0 1 1.085.02c.472.193.693.613.791.81.112.227.223.523.337.828l.015.04 3.75 10a1 1 0 0 1-1.872.703l-3.613-9.633-4.028 9.667a1 1 0 0 1-1.846-.77l4.179-10.028.016-.04a10 10 0 0 1 .367-.815c.104-.194.34-.605.82-.781Zm-3.174-4.909a1 1 0 0 1 .675 1.243C12.476 8.6 11.432 11.04 9.87 13.02c-1.568 1.988-3.598 3.434-6.417 4.872a1 1 0 1 1-.909-1.782c2.683-1.369 4.434-2.654 5.756-4.329 1.329-1.685 2.285-3.842 3.24-7.064a1 1 0 0 1 1.243-.675Z" clip-rule="evenodd"/><path fill="currentColor" fill-rule="evenodd" d="M5.961 7.342a1 1 0 0 1 1.235.689c.702 2.47 2.066 4.29 3.904 5.669a1 1 0 0 1-1.2 1.6c-2.162-1.622-3.798-3.802-4.627-6.723a1 1 0 0 1 .688-1.235M2 5a1 1 0 0 1 1-1h12.5a1 1 0 1 1 0 2H3a1 1 0 0 1-1-1" clip-rule="evenodd"/><path fill="currentColor" fill-rule="evenodd" d="M9 2a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0V3a1 1 0 0 1 1-1m4 15a1 1 0 0 1 1-1h5.5a1 1 0 1 1 0 2H14a1 1 0 0 1-1-1" clip-rule="evenodd"/></svg>'};class ScriptNotifier{constructor({notificationsUrl:e,scriptVersion:t,currentLang:a,runtimePolicy:o}){this.NOTIFICATIONS_URL=e,this.SCRIPT_VERSION=t,this.forcedLang=a,this.currentLang="en",this.STAGGER_DELAY=70,this.DISMISSED_NOTIFICATIONS_KEY="DismissedNotifications",this.LANG_STORAGE_KEY="UserScriptLang",this.USAGE_COUNT_KEY="ScriptUsageCount",this.TRANSLATION_PREFS_KEY="SNTranslationPrefs",this.USAGE_CAP=1e3,this.hostElement=null,this.shadowRoot=null,this.activeNotifications=[],this.fetchedNotifications=[],this.currentUsageCount=0,this.translationPrefs={targetLang:null,alwaysTranslate:!1},this.uiStrings={},this.icons=SNICONS,this.mediaCache=new Map,this.scriptPolicy=o||this._createPolicy(),this.notificationsFetchPromise=null,this._resolveNotificationsFetch=null}_fetchResourceAsBlobUrl(e){if(this.mediaCache.has(e))return this.mediaCache.get(e);const t=new Promise((t,a)=>{GM_xmlhttpRequest({method:"GET",url:e,responseType:"blob",anonymous:!0,onload:o=>{if(o.status>=200&&o.status<300){const e=URL.createObjectURL(o.response);t(e)}else this.mediaCache.delete(e),a(new Error(`HTTP error ${o.status}`))},onerror:t=>{this.mediaCache.delete(e),a(t)}})});return this.mediaCache.set(e,t),t}async _processMediaInContainer(e){const t=[...e.querySelectorAll('img[src^="http"]'),...e.querySelectorAll('video[src^="http"], source[src^="http"]')];await Promise.all(t.map(async e=>{const t=e.src||e.getAttribute("src");if(t)try{const a=await this._fetchResourceAsBlobUrl(t);if(e.src=a,"SOURCE"===e.tagName){const t=e.closest("video");t&&t.load()}}catch(e){}}))}async _incrementUsageCount(){let e=await GM_getValue(this.USAGE_COUNT_KEY,0);return e>=this.USAGE_CAP?this.USAGE_CAP:(e++,await GM_setValue(this.USAGE_COUNT_KEY,e),e)}async run(){await this._initializeLanguage();const e=await GM_getValue(this.TRANSLATION_PREFS_KEY);e&&(this.translationPrefs={...this.translationPrefs,...e}),this.currentUsageCount=await this._incrementUsageCount(),await GM_deleteValue("NotificationsEnabled"),await this._registerUserCommands(),setTimeout(()=>this.checkForNotifications(),1500)}forceShowAllNotifications(){this.checkForNotifications(!0)}async _getResolvedText(e){if(!e)return"";if("string"==typeof e)return e;if(this.translationPrefs.alwaysTranslate){const t=this.translationPrefs.targetLang||this.currentLang||"en";return e[t]?e[t]:await this._fetchTranslation(e,t)}const t=[this.currentLang,"en"].filter(e=>e);for(const a of t)if(e[a])return e[a];return Object.values(e)[0]||""}async _fetchTranslation(e,t){if(!e)return"";if(t||(t=this.currentLang||"en"),"object"==typeof e&&e[t])return e[t];let a="object"==typeof e?e[this.currentLang]||e.en||Object.values(e)[0]:e;const o=[];let n=a.replace(/<[^>]+>/g,e=>(o.push(e),`[[T${o.length-1}]]`));const i=`https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=${t}&dt=t`,s=await new Promise(e=>{GM_xmlhttpRequest({method:"POST",url:i,headers:{"Content-Type":"application/x-www-form-urlencoded"},data:`q=${encodeURIComponent(n)}`,onload:t=>e(t.responseText),onerror:()=>e(null)})});if(!s)return a;try{const e=JSON.parse(s);let t="";return e[0].forEach(e=>{e[0]&&(t+=e[0])}),t=t.replace(/\[\s*\[\s*T\s*(\d+)\s*\]\s*\]/gi,(e,t)=>o[parseInt(t)]||e),t}catch(e){return a}}_createTranslationMenu(e,t,a){let o=e.querySelector(".sn-translate-menu");if(o)return void o.remove();const n=document.createElement("div");n.className="sn-translate-menu";const i=["pt-BR","en","zh-CN","zh-TW","es","fr","ru","uk","ja","ko","de","it","id","tr","pl","vi","hi","tl"];let s=[{code:"af",name:"Afrikaans"},{code:"ak",name:"Akan"},{code:"sq",name:"Shqip"},{code:"am",name:"አማርኛ"},{code:"ar",name:"العربية"},{code:"hy",name:"Հայերեն"},{code:"as",name:"অসমীয়া"},{code:"ay",name:"Aymar aru"},{code:"az",name:"Azərbaycan dili"},{code:"bm",name:"Bamanankan"},{code:"eu",name:"Euskara"},{code:"be",name:"Беларуская"},{code:"bn",name:"বাংলা"},{code:"bho",name:"भोजपुरी"},{code:"bs",name:"Bosanski"},{code:"bg",name:"Български"},{code:"ca",name:"Català"},{code:"ceb",name:"Cebuano"},{code:"ny",name:"Chichewa"},{code:"zh-CN",name:"简体中文"},{code:"zh-TW",name:"繁體中文"},{code:"co",name:"Corsu"},{code:"hr",name:"Hrvatski"},{code:"cs",name:"Čeština"},{code:"da",name:"Dansk"},{code:"dv",name:"ދިވެހިބަސް"},{code:"doi",name:"डोगरी"},{code:"nl",name:"Nederlands"},{code:"en",name:"English"},{code:"eo",name:"Esperanto"},{code:"et",name:"Eesti"},{code:"ee",name:"Eʋegbe"},{code:"tl",name:"Tagalog"},{code:"fi",name:"Suomi"},{code:"fr",name:"Français"},{code:"fy",name:"Frysk"},{code:"gl",name:"Galego"},{code:"ka",name:"ქართული"},{code:"de",name:"Deutsch"},{code:"el",name:"Ελληνικά"},{code:"gn",name:"Guarani"},{code:"gu",name:"ગુજરાતી"},{code:"ht",name:"Kreyòl Ayisyen"},{code:"ha",name:"Hausa"},{code:"haw",name:"ʻŌlelo Hawaiʻi"},{code:"iw",name:"עברית"},{code:"hi",name:"हिन्दी"},{code:"hmn",name:"Hmoob"},{code:"hu",name:"Magyar"},{code:"is",name:"Íslenska"},{code:"ig",name:"Asụsụ Igbo"},{code:"ilo",name:"Ilokano"},{code:"id",name:"Bahasa Indonesia"},{code:"ga",name:"Gaeilge"},{code:"it",name:"Italiano"},{code:"ja",name:"日本語"},{code:"jw",name:"Basa Jawa"},{code:"kn",name:"ಕನ್ನಡ"},{code:"kk",name:"Қазақ тілі"},{code:"km",name:"ភាសាខ្មែរ"},{code:"rw",name:"Ikinyarwanda"},{code:"gom",name:"कोंकणी"},{code:"ko",name:"한국어"},{code:"kri",name:"Krio"},{code:"ku",name:"Kurdî (Kurmancî)"},{code:"ckb",name:"Kurdî (Soranî)"},{code:"ky",name:"Кыргызча"},{code:"lo",name:"ພາສາລາວ"},{code:"la",name:"Latina"},{code:"lv",name:"Latviešu"},{code:"ln",name:"Lingála"},{code:"lt",name:"Lietuvių"},{code:"lg",name:"Luganda"},{code:"lb",name:"Lëtzebuergesch"},{code:"mk",name:"Македонски"},{code:"mai",name:"मैथिली"},{code:"mg",name:"Malagasy"},{code:"ms",name:"Bahasa Melayu"},{code:"ml",name:"മലയാളം"},{code:"mt",name:"Malti"},{code:"mi",name:"Māori"},{code:"mr",name:"मराठी"},{code:"mni-Mtei",name:"ꯃꯤꯇꯩꯂꯣꯟ"},{code:"lus",name:"Mizo tawng"},{code:"mn",name:"Монгол хэл"},{code:"my",name:"မြန်မာစာ"},{code:"ne",name:"नेपाली"},{code:"no",name:"Norsk"},{code:"or",name:"ଓଡ଼ିଆ"},{code:"om",name:"Oromoo"},{code:"ps",name:"پښتو"},{code:"fa",name:"فارسی"},{code:"pl",name:"Polski"},{code:"pt",name:"Português (Portugal)"},{code:"pt-BR",name:"Português (Brasil)"},{code:"pa",name:"ਪੰਜਾਬੀ"},{code:"qu",name:"Runasimi"},{code:"ro",name:"Română"},{code:"ru",name:"Русский"},{code:"sm",name:"Gagana Sāmoa"},{code:"sa",name:"संस्कृतम्"},{code:"gd",name:"Gàidhlig"},{code:"nso",name:"Sesotho sa Leboa"},{code:"sr",name:"Српски"},{code:"st",name:"Sesotho"},{code:"sn",name:"ChiShona"},{code:"sd",name:"سنڌي"},{code:"si",name:"සිංහල"},{code:"sk",name:"Slovenčina"},{code:"sl",name:"Slovenščina"},{code:"so",name:"Soomaali"},{code:"es",name:"Español"},{code:"su",name:"Basa Sunda"},{code:"sw",name:"Kiswahili"},{code:"sv",name:"Svenska"},{code:"tg",name:"Тоҷиκӣ"},{code:"ta",name:"தமிழ்"},{code:"tt",name:"Татар"},{code:"te",name:"తెలుగు"},{code:"th",name:"ไทย"},{code:"ti",name:"ትግርኛ"},{code:"ts",name:"Xitsonga"},{code:"tr",name:"Türkçe"},{code:"tk",name:"Türkmen dili"},{code:"tw",name:"Twi"},{code:"uk",name:"Українська"},{code:"ur",name:"اردو"},{code:"ug",name:"ئۇيغۇرଚە"},{code:"uz",name:"Oʻzbekcha"},{code:"vi",name:"Tiếng Việt"},{code:"cy",name:"Cymraeg"},{code:"xh",name:"isiXhosa"},{code:"yi",name:"ייִדיש"},{code:"yo",name:"Yorùbá"},{code:"zu",name:"isiZulu"},{code:"ab",name:"Аҧсшәа"},{code:"ace",name:"Basa Acèh"},{code:"ach",name:"Lwo"},{code:"aa",name:"Qafár af"},{code:"alz",name:"Alur"},{code:"av",name:"авар мацӀ"},{code:"awa",name:"अवधी"},{code:"ban",name:"Basa Bali"},{code:"bal",name:"بلوچی"},{code:"ba",name:"Башҡортса"},{code:"btx",name:"Batak Karo"},{code:"bts",name:"Batak Simalungun"},{code:"bbc",name:"Batak Toba"},{code:"bem",name:"Chibemba"},{code:"bew",name:"Betawi"},{code:"bcl",name:"Bikol"},{code:"br",name:"Brezhoneg"},{code:"bua",name:"Буряад хэлэн"},{code:"yue",name:"粵語"},{code:"chm",name:"Mari"},{code:"ce",name:"Нохчийн"},{code:"chk",name:"Chuuk"},{code:"cv",name:"Чӑвашла"},{code:"crh",name:"Qırımtatarca"},{code:"din",name:"Thuɔŋjäŋ"},{code:"dyu",name:"Julakan"},{code:"dz",name:"རྫོང་ཁ"},{code:"fo",name:"Føroyskt"},{code:"fj",name:"Na Vosa Vakaviti"},{code:"fon",name:"Fongbe"},{code:"fur",name:"Furlan"},{code:"ff",name:"Fulfulde"},{code:"gaa",name:"Ga"},{code:"cnh",name:"Hakha Chin"},{code:"hil",name:"Hiligaynon"},{code:"hrx",name:"Hunsrik"},{code:"iba",name:"Iban"},{code:"jam",name:"Patois"},{code:"kac",name:"Jingpho"},{code:"kl",name:"Kalaallisut"},{code:"kr",name:"Kanuri"},{code:"pam",name:"Kapampangan"},{code:"kha",name:"Khasi"},{code:"cgg",name:"Rukiga"},{code:"kg",name:"Kikongo"},{code:"ktu",name:"Kituba"},{code:"trp",name:"Kokborok"},{code:"kv",name:"Коми"},{code:"ltg",name:"Latgalīšu"},{code:"lij",name:"Ligure"},{code:"li",name:"Limburgs"},{code:"lmo",name:"Lumbaart"},{code:"luo",name:"Dholuo"},{code:"mad",name:"Basa Madura"},{code:"mak",name:"Mangkasara"},{code:"ms-Arab",name:"جاوي"},{code:"mam",name:"Qyol Mam"},{code:"gv",name:"Gaelg"},{code:"mh",name:"Kajin M̧ajeļ"},{code:"mwr",name:"मारवाड़ी"},{code:"mfe",name:"Morisyen"},{code:"min",name:"Baso Minang"},{code:"nhe",name:"Nāhuatl"},{code:"ndc",name:"Ndau"},{code:"nr",name:"IsiNdebele"},{code:"new",name:"नेपाल भाषा"},{code:"nqo",name:"ߒߞߏ"},{code:"nus",name:"Thok Nath"},{code:"oc",name:"Occitan"},{code:"os",name:"Ирон"},{code:"pag",name:"Pangasinan"},{code:"pap",name:"Papiamentu"},{code:"pa-Arab",name:"پنجابی"},{code:"kek",name:"Qʼeqchiʼ"},{code:"rom",name:"Romani"},{code:"rn",name:"Ikirundi"},{code:"se",name:"Davvisámegiella"},{code:"sg",name:"Sängö"},{code:"sat",name:"Santali"},{code:"crs",name:"Seselwa"},{code:"shn",name:"လိၵ်ႈတႆး"},{code:"scn",name:"Sicilianu"},{code:"szl",name:"Ślōnskŏ gŏdka"},{code:"sus",name:"Susu"},{code:"ss",name:"SiSwati"},{code:"ty",name:"Reo Tahiti"},{code:"zgh",name:"ⵜⴰⵎⴰⵣⵉⵖⵜ"},{code:"tzm",name:"Tamazight"},{code:"tet",name:"Lia-Tetun"},{code:"bo",name:"བོད་སྐད"},{code:"tiv",name:"Tiv"},{code:"tpi",name:"Tok Pisin"},{code:"to",name:"Lea Faka-Tonga"},{code:"tn",name:"Setswana"},{code:"tcy",name:"ತುಳು"},{code:"tum",name:"Chitumbuka"},{code:"tyv",name:"Тыва дыл"},{code:"udm",name:"Удмурт"},{code:"ve",name:"Tshivenḓa"},{code:"vec",name:"Vèneto"},{code:"war",name:"Winaray"},{code:"wo",name:"Wolof"},{code:"sah",name:"Саха тыла"},{code:"yua",name:"Maaya T'aan"},{code:"zap",name:"Diidxazá"}].sort((e,t)=>{const a=i.indexOf(e.code),o=i.indexOf(t.code);return-1!==a&&-1!==o?a-o:-1!==a?-1:-1!==o?1:e.name.localeCompare(t.name)}).map(e=>`<option value="${e.code}" ${this.translationPrefs.targetLang===e.code?"selected":""}>${e.name}</option>`).join("");if(this._setSafeInnerHTML(n,` <div class="sn-tm-title">${this._getUIText("translateMenuTitle")}</div> <select class="sn-tm-select" id="sntm-lang">${s}</select> <label class="sn-tm-label"><input type="checkbox" id="sntm-always" ${this.translationPrefs.alwaysTranslate?"checked":""}> ${this._getUIText("alwaysTranslate")}</label> <button class="sn-tm-btn-apply">${this._getUIText("applyTranslation")}</button> `),e===this.shadowRoot&&(n.classList.add("is-root"),a)){const e=a.getBoundingClientRect();n.style.top=`${e.bottom+5}px`,n.style.right=window.innerWidth-e.right+"px"}e.appendChild(n),n.querySelector(".sn-tm-btn-apply").onclick=async e=>{e.stopPropagation();const a=e.target;a.textContent="...",a.disabled=!0;const o=n.querySelector("#sntm-lang").value,i=n.querySelector("#sntm-always").checked;this.translationPrefs.targetLang=o,this.translationPrefs.alwaysTranslate=i;const s={alwaysTranslate:i};i&&(s.targetLang=o),await GM_setValue(this.TRANSLATION_PREFS_KEY,s),await t(o),n.remove()};const r=t=>{const a=t.composedPath?t.composedPath()[0]:t.target;n.contains(a)||a.closest(".modal-translate-btn")||a.closest(".sn-adv-menu-translate")||(n.remove(),e.getRootNode().removeEventListener("click",r))};setTimeout(()=>e.getRootNode().addEventListener("click",r),10)}checkForNotifications(e=!1){this.NOTIFICATIONS_URL&&!this.NOTIFICATIONS_URL.includes("SEU_USUARIO")&&(this.notificationsFetchPromise=new Promise(e=>{this._resolveNotificationsFetch=e}),GM_xmlhttpRequest({method:"GET",url:`${this.NOTIFICATIONS_URL}?t=${(new Date).getTime()}`,onload:async t=>{if(t.status<200||t.status>=300)return;let a;if(this.NOTIFICATIONS_URL.includes("gist.github.com/")&&!this.NOTIFICATIONS_URL.includes("usercontent"))try{const e=new DOMParser,o=this.scriptPolicy?this.scriptPolicy.createHTML(t.responseText):t.responseText,n=e.parseFromString(o,"text/html").querySelectorAll("table.highlight .blob-code-inner");if(0===n.length)return;a=Array.from(n).map(e=>e.innerText).join("\n")}catch(e){return}else a=t.responseText;try{const t=JSON.parse(a).notifications||[];this.fetchedNotifications=t,e&&(this.activeNotifications.forEach(e=>e.element.remove()),this.activeNotifications=[]),await this._cleanupDismissedNotifications(t);const o=await GM_getValue(this.DISMISSED_NOTIFICATIONS_KEY,[]);t.filter(t=>{if(this.activeNotifications.some(e=>e.id===t.id))return!1;if(!e&&o.includes(t.id))return!1;if(t.expires&&new Date(t.expires)<new Date)return!1;if("number"==typeof t.minUsageCount&&this.currentUsageCount<t.minUsageCount)return!1;if("number"==typeof t.maxUsageCount&&this.currentUsageCount>t.maxUsageCount)return!1;const a=t.targetVersion,n=this.SCRIPT_VERSION;if(a&&"all"!==a){let e=!1;if("string"==typeof a)if(a.includes(",")){a.split(",").map(e=>e.trim()).includes(n)&&(e=!0)}else if(a.startsWith("*")){const t=a.substring(1);this._compareVersions(n,t)<=0&&(e=!0)}else if(a.endsWith("*")){const t=a.slice(0,-1);this._compareVersions(n,t)>=0&&(e=!0)}else a===n&&(e=!0);if(!e)return!1}return!t.targetHostname||window.location.hostname===t.targetHostname}).forEach((e,t)=>{setTimeout(()=>this.displayNotification(e),200*t)})}catch(e){}finally{this._resolveNotificationsFetch&&(this._resolveNotificationsFetch(),this._resolveNotificationsFetch=null)}},onerror:()=>{}}))}async displayNotification(e){this._ensureHostElement();const t=`notification-${e.id}`;if(this.shadowRoot.getElementById(t))return;const a=await this._getResolvedText(e.title),o=await this._getResolvedText(e.message);if(!a&&!o)return;const n=document.createElement("div");n.id=t,n.className="notification-container";const i=e.type||"info";n.dataset.type=i;const s=this._resolveThemeColor(e.customColor);s&&(n.style.borderLeftColor=s,n.style.setProperty("--type-color",s));const r=e.imageUrl?`<img src="${e.imageUrl}" class="notification-image" alt="Image">`:`<div class="notification-icon">${this.icons[i]||this.icons.info}</div>`;let c=e.expanded?.content?`<button class="expand-button" title="${this._getUIText("viewExpanded")}">${this.icons.expand}</button>`:"";const d=` ${r} <div class="notification-content"> <h3 class="notification-title">${a}</h3> <div class="notification-message">${o}</div> </div> <div class="notification-actions"> ${`<button class="bubble-translate-button" title="${this._getUIText("translateMenuTitle")}">${this.icons.translate}</button>`} ${c} <button class="dismiss-button" title="${this._getUIText("closeButtonTitle")}">${this.icons.close}</button> </div> `;if(this._setSafeInnerHTML(n,d),e.buttons?.length>0){const t=await this._createButtons(e.buttons,e.id,e);n.querySelector(".notification-content").appendChild(t)}this.shadowRoot.appendChild(n),this._processMediaInContainer(n),this.activeNotifications.push({id:e.id,element:n,isNew:!0}),this._updateNotificationPositions(),n.querySelector(".dismiss-button").onclick=()=>this._dismissNotification(e.id);const l=n.querySelector(".expand-button");l&&(l.onclick=()=>this._openExpandedView(e)),n.querySelector(".bubble-translate-button").onclick=t=>{t.stopPropagation(),this._createTranslationMenu(n,async t=>{const a=await this._fetchTranslation(e.title,t),o=await this._fetchTranslation(e.message,t);if(this._setSafeInnerHTML(n.querySelector(".notification-title"),a),this._setSafeInnerHTML(n.querySelector(".notification-message"),o),e.buttons&&e.buttons.length>0){const a=n.querySelectorAll(".notification-button");for(let o=0;o<a.length;o++)if(e.buttons[o]){const n=await this._fetchTranslation(e.buttons[o].text,t);this._setSafeInnerHTML(a[o],this._prepareMessageHTML(n))}}})}}_resolveThemeColor(e){if(!e)return null;if("string"==typeof e)return e;if("object"==typeof e){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?e.te||e.tc:e.tc||e.te}return null}async _openExpandedView(e){if(this._ensureHostElement(),this.shadowRoot.getElementById("sn-expanded-modal"))return;const t=document.createElement("div");t.id="sn-expanded-modal",t.className="modal-overlay";const a=e.expanded||{},o=await this._getResolvedText(a.content)||"Content Unavailable.",n=await this._getResolvedText(a.title||e.title),i=a.headerImage||null,s=await this._getResolvedText(a.summary)||null,r=i?`<img src="${i}" class="modal-hero-img" alt="Header">`:"",c=s?`<div class="modal-summary">${this._prepareMessageHTML(s)}</div>`:"",d=` <div class="modal-card"> <button class="modal-translate-btn floating" title="${this._getUIText("translateMenuTitle")}">${this.icons.translate}</button> <button class="modal-close-btn floating">${this.icons.close}</button> ${r} <div class="modal-inner-content"> <div class="modal-header"> <h1 class="modal-title">${this._prepareMessageHTML(n)}</h1> ${c} </div> <div class="modal-body"> ${o} </div> </div> </div> `;this._setSafeInnerHTML(t,d),this.shadowRoot.appendChild(t),this._processMediaInContainer(t),requestAnimationFrame(()=>{t.classList.add("animate-in")});t.querySelector(".modal-close-btn").onclick=()=>{t.classList.remove("animate-in"),t.classList.add("animate-out"),setTimeout(()=>t.remove(),300)};const l=t.querySelector(".modal-translate-btn");l.onclick=()=>{this._createTranslationMenu(this.shadowRoot,async o=>{const n=await this._fetchTranslation(a.title||e.title,o),i=await this._fetchTranslation(a.summary,o),s=await this._fetchTranslation(a.content,o);n&&this._setSafeInnerHTML(t.querySelector(".modal-title"),this._prepareMessageHTML(n)),i&&this._setSafeInnerHTML(t.querySelector(".modal-summary"),this._prepareMessageHTML(i)),s&&this._setSafeInnerHTML(t.querySelector(".modal-body"),s)},l)},t.querySelector(".modal-card").onclick=e=>{"IMG"===e.target.tagName&&(e.stopPropagation(),this._openLightbox(e.target.src))}}async _openAdvancedMenu(){if(this._ensureHostElement(),this.shadowRoot.getElementById("sn-adv-menu-overlay"))return;this.notificationsFetchPromise&&await this.notificationsFetchPromise;const e=document.createElement("div");e.id="sn-adv-menu-overlay",e.className="sn-adv-menu-overlay";let t="";const a=this.fetchedNotifications.filter(e=>{const t=e.targetVersion,a=this.SCRIPT_VERSION;if(t&&"all"!==t){let e=!1;if("string"==typeof t)if(t.includes(",")){t.split(",").map(e=>e.trim()).includes(a)&&(e=!0)}else if(t.startsWith("*")){const o=t.substring(1);this._compareVersions(a,o)<=0&&(e=!0)}else if(t.endsWith("*")){const o=t.slice(0,-1);this._compareVersions(a,o)>=0&&(e=!0)}else t===a&&(e=!0);if(!e)return!1}return!e.targetHostname||window.location.hostname===e.targetHostname});if(0===a.length)t=`<div class="sn-adv-menu-empty">${this._getUIText("noNotifications")}</div>`;else for(const e of a){const a=await this._getResolvedText(e.menuTitle||e.title||this._getUIText("noTitle")),o=e.menuComment||e.message||"",n=await this._getResolvedText(o),i=e.type||"info";let s=SNICONS[i]||SNICONS.info;e.customIconSvg&&(s=this._sanitizeAndStyleSvg(e.customIconSvg));const r=this._resolveThemeColor(e.customColor),c=r?`style="--type-color: ${r};"`:"",d=e.expanded&&e.expanded.content,l=n?`<div class="sn-adv-item-comment">${this._prepareMessageHTML(n)}</div>`:"";t+=` <div class="sn-adv-menu-item" data-id="${e.id}" data-type="${i}" ${c} title="${this._getUIText("viewNotification")}"> <div class="sn-adv-item-icon">${s}</div> <div class="sn-adv-item-content"> <div class="sn-adv-item-title">${this._prepareMessageHTML(a)}</div> ${l} </div> <div class="sn-adv-item-actions"> ${d?`<button class="sn-adv-action-btn action-expand" data-id="${e.id}" title="${this._getUIText("viewExpanded")}">${SNICONS.expand}</button>`:""} </div> </div> `}const o=` <div class="sn-adv-menu-panel"> <div class="sn-adv-menu-header"> <div class="sn-adv-menu-title">${this._getUIText("advancedMenuTitle")}</div> <div style="display:flex; gap:8px;"> <button class="sn-adv-menu-translate" title="${this._getUIText("translateMenuTitle")}">${SNICONS.translate}</button> <button class="sn-adv-menu-close">${SNICONS.close}</button> </div> </div> <div class="sn-adv-menu-body">${t}</div> </div> `;this._setSafeInnerHTML(e,o),this.shadowRoot.appendChild(e),requestAnimationFrame(()=>e.classList.add("animate-in"));const n=()=>{e.classList.remove("animate-in"),e.classList.add("animate-out"),setTimeout(()=>e.remove(),300)};e.querySelector(".sn-adv-menu-close").onclick=n,e.onclick=t=>{t.target===e&&n()};const i=e.querySelector(".sn-adv-menu-translate");i.onclick=()=>{this._createTranslationMenu(this.shadowRoot,async()=>{n(),setTimeout(()=>this._openAdvancedMenu(),350)},i)},e.querySelector(".sn-adv-menu-body").onclick=async e=>{const t=e.target.closest(".action-expand"),a=e.target.closest(".sn-adv-menu-item");if(t){e.stopPropagation();const a=this.fetchedNotifications.find(e=>e.id===t.dataset.id);return void(a&&(this._openExpandedView(a),n()))}if(a){const e=a.dataset.id,t=this.fetchedNotifications.find(t=>t.id===e);if(!t)return;let o=await GM_getValue(this.DISMISSED_NOTIFICATIONS_KEY,[]);o.includes(e)&&(o=o.filter(t=>t!==e),await GM_setValue(this.DISMISSED_NOTIFICATIONS_KEY,o)),this.displayNotification(t),n()}}}_openLightbox(e){const t=document.createElement("div");t.className="lightbox-overlay";const a=document.createElement("img");a.src=e,a.className="lightbox-img",a.draggable=!1,t.appendChild(a),this.shadowRoot.appendChild(t);let o,n,i=1,s=!1,r=0,c=0;const d=()=>{a.style.transform=`translate3d(${r}px, ${c}px, 0) scale(${i})`},l=()=>{t.classList.remove("visible"),document.removeEventListener("keydown",m),setTimeout(()=>t.remove(),300)},m=e=>{"Escape"===e.key&&l()};document.addEventListener("keydown",m),t.onclick=e=>{e.target===t&&l()},t.onwheel=e=>{e.preventDefault();const t=e.deltaY>0?-.2:.2,a=Math.min(Math.max(1,i+t),5);a!==i&&(i=a,1===i&&(r=0,c=0),d())},a.onpointerdown=e=>{i>1&&(s=!0,a.classList.add("dragging"),o=e.clientX-r,n=e.clientY-c,a.setPointerCapture(e.pointerId))},a.onpointermove=e=>{s&&(r=e.clientX-o,c=e.clientY-n,requestAnimationFrame(d))},a.onpointerup=()=>{s=!1,a.classList.remove("dragging")},requestAnimationFrame(()=>t.classList.add("visible"))}async _createButtons(e,t,a){const o=document.createElement("div");o.className="notification-buttons";for(let n=0;n<e.length;n++){const i=e[n],s=document.createElement("button"),r=await this._getResolvedText(i.text);this._setSafeInnerHTML(s,this._prepareMessageHTML(r)),s.className="notification-button";const c=this._resolveThemeColor(i.backgroundColor);c?(s.style.backgroundColor=c,s.classList.add("custom-bg")):0===n&&s.classList.add("primary");const d=this._resolveThemeColor(i.textColor);d&&(s.style.color=d),s.onclick=e=>{if(e.stopPropagation(),i.action)switch(i.action){case"open_url":window.location.href=i.value;break;case"open_url_new_tab":window.open(i.value,"_blank");break;case"open_expanded_view":a&&a.expanded&&a.expanded.content&&this._openExpandedView(a)}this._dismissNotification(t)},o.appendChild(s)}return o}async _dismissNotification(e){this._ensureHostElement();const t=this.activeNotifications.find(t=>t.id===e);if(!t)return;const a=await GM_getValue(this.DISMISSED_NOTIFICATIONS_KEY,[]);a.includes(e)||(a.push(e),await GM_setValue(this.DISMISSED_NOTIFICATIONS_KEY,a)),t.element.classList.remove("animate-in"),t.element.classList.add("animate-out"),setTimeout(()=>{this.activeNotifications=this.activeNotifications.filter(t=>t.id!==e),t.element.remove(),this._updateNotificationPositions()},600)}_updateNotificationPositions(){this._ensureHostElement();const e=parseInt(getComputedStyle(this.shadowRoot.host).getPropertyValue("--sn-spacing"))||20;let t=e;this.activeNotifications.forEach((a,o)=>{const{element:n}=a;n.style.top=`${t}px`,n.style.transitionDelay=o*this.STAGGER_DELAY+"ms",a.isNew&&(requestAnimationFrame(()=>{n.classList.add("animate-in")}),delete a.isNew),t+=n.offsetHeight+e/2})}_compareVersions(e,t){const a=e.split(".").map(e=>parseInt(e,10)||0),o=t.split(".").map(e=>parseInt(e,10)||0),n=Math.max(a.length,o.length);for(let e=0;e<n;e++){const t=a[e]||0,n=o[e]||0;if(t>n)return 1;if(t<n)return-1}return 0}_ensureHostElement(){const e="script-notifier-host";if(this.hostElement=document.getElementById(e),this.hostElement||(this.hostElement=document.createElement("div"),this.hostElement.id=e,document.body.appendChild(this.hostElement)),this.hostElement.shadowRoot)this.shadowRoot=this.hostElement.shadowRoot;else{this.shadowRoot=this.hostElement.attachShadow({mode:"open"});const e=document.createElement("style");e.textContent=this._getNotifierStyles(),this.shadowRoot.appendChild(e)}}async _initializeLanguage(){let e=this.forcedLang||await GM_getValue(this.LANG_STORAGE_KEY)||navigator.language||"en";e.startsWith("pt")?e="pt-BR":e.startsWith("zh")?e="zh-CN":e.startsWith("ckb")?e="ckb":e.startsWith("en")?e="en":e.startsWith("es")?e="es":e.startsWith("fr")?e="fr":e.startsWith("ru")?e="ru":e.startsWith("ja")?e="ja":e.startsWith("ko")?e="ko":e.startsWith("ar")?e="ar":e.startsWith("be")?e="be":e.startsWith("bg")?e="bg":e.startsWith("cs")?e="cs":e.startsWith("da")?e="da":e.startsWith("de")?e="de":e.startsWith("el")?e="el":e.startsWith("eo")?e="eo":e.startsWith("fi")?e="fi":e.startsWith("he")?e="he":e.startsWith("hr")?e="hr":e.startsWith("hu")?e="hu":e.startsWith("id")?e="id":e.startsWith("it")?e="it":e.startsWith("ka")?e="ka":e.startsWith("mr")?e="mr":e.startsWith("nl")?e="nl":e.startsWith("pl")?e="pl":e.startsWith("ro")?e="ro":e.startsWith("sk")?e="sk":e.startsWith("sr")?e="sr":e.startsWith("sv")?e="sv":e.startsWith("th")?e="th":e.startsWith("tr")?e="tr":e.startsWith("uk")?e="uk":e.startsWith("ug")?e="ug":e.startsWith("vi")?e="vi":e.startsWith("hi")?e="hi":(e.startsWith("nb")||e.startsWith("no"))&&(e="nb"),this.currentLang=["pt-BR","zh-CN","ckb","ar","be","bg","cs","da","de","el","en","eo","es","fi","fr","he","hr","hu","id","it","ja","ka","ko","mr","nb","nl","pl","ro","ru","sk","sr","sv","th","tr","uk","ug","vi","hi"].includes(e)?e:"en",this.uiStrings=this._getUIStrings()}async _cleanupDismissedNotifications(e){const t=await GM_getValue(this.DISMISSED_NOTIFICATIONS_KEY,[]);if(0===t.length)return;const a=new Set(e.filter(e=>!e.expires||new Date(e.expires)>=new Date).map(e=>e.id)),o=t.filter(e=>a.has(e));o.length<t.length&&await GM_setValue(this.DISMISSED_NOTIFICATIONS_KEY,o)}async _registerUserCommands(){GM_registerMenuCommand(this._getUIText("notificationMenuCmd"),()=>this._openAdvancedMenu())}_createPolicy(){if(!window.trustedTypes||!window.trustedTypes.createPolicy)return null;try{return window.trustedTypes.createPolicy("script-notifier-fallback",{createHTML:e=>e})}catch(e){return null}}_getUIText(e){return this.uiStrings[e]?.[this.currentLang]||this.uiStrings[e]?.en||""}_setSafeInnerHTML(e,t){e&&(e.innerHTML=this.scriptPolicy?this.scriptPolicy.createHTML(t):t)}_prepareMessageHTML(e){return e||""}_sanitizeAndStyleSvg(e){try{const t=document.createElement("div");this._setSafeInnerHTML(t,e);const a=t.querySelector("svg");return a?(a.setAttribute("fill","currentColor"),a.removeAttribute("width"),a.removeAttribute("height"),a.removeAttribute("style"),a.removeAttribute("class"),a.outerHTML):""}catch(e){return""}}_getUIStrings(){return{notificationMenuCmd:{"pt-BR":"🔔 Notificações","zh-CN":"🔔 通知",ckb:"🔔 ئاگادارکردنەوەکان",ar:"🔔 تنبيهات",be:"🔔 Апавяшчэнні",bg:"🔔 Известия",cs:"🔔 Oznámení",da:"🔔 Meddelelser",de:"🔔 Benachrichtigungen",el:"🔔 Ειδοποιήσεις",en:"🔔 Notifications",eo:"🔔 Sciigoj",es:"🔔 Notificaciones",fi:"🔔 Ilmoitukset",fr:"🔔 Notifications",he:"🔔 התראות",hr:"🔔 Obavijesti",hu:"🔔 Értesítések",id:"🔔 Notifikasi",it:"🔔 Notifiche",ja:"🔔 通知",ka:"🔔 შეტყობინებები",ko:"🔔 알림",mr:"🔔 अधिसूचना",nb:"🔔 Varslinger",nl:"🔔 Meldingen",pl:"🔔 Powiadomienia",ro:"🔔 Notificări",ru:"🔔 Уведомления",sk:"🔔 Oznámenia",sr:"🔔 Обавештења",sv:"🔔 Aviseringar",th:"🔔 การแจ้งเตือน",tr:"🔔 Bildirimler",uk:"🔔 Сповіщення",ug:"🔔 ئۇقتۇرۇشلار",vi:"🔔 Thông báo",hi:"🔔 सूचनाएं"},advancedMenuTitle:{"pt-BR":"Central de Notificações","zh-CN":"通知中心",ckb:"ناوەندی ئاگادارکردنەوەکان",ar:"مركز التنبيهات",be:"Цэнтр апавяшчэнняў",bg:"Център за известия",cs:"Centrum oznámení",da:"Meddelelsescenter",de:"Benachrichtigungszentrum",el:"Κέντρο Ειδοποιήσεων",en:"Notifications Hub",eo:"Centro de Sciigoj",es:"Centro de notificaciones",fi:"Ilmoituskeskus",fr:"Centre de notifications",he:"מרכז ההתראות",hr:"Centar za obavijesti",hu:"Értesítési központ",id:"Pusat Notifikasi",it:"Centro notifiche",ja:"通知センター",ka:"შეტყობინებების ცენტრი",ko:"알림 센터",mr:"अधिसूचना केंद्र",nb:"Varslingssenter",nl:"Meldingscentrum",pl:"Centrum powiadomień",ro:"Centru de notificări",ru:"Центр уведомлений",sk:"Centrum oznámení",sr:"Центар за обавештења",sv:"Aviseringscenter",th:"ศูนย์การแจ้งเตือน",tr:"Bildirim Merkezi",uk:"Центр сповіщень",ug:"ئۇقتۇرۇش مەركىزى",vi:"Trung tâm thông báo",hi:"सूचना केंद्र"},noNotifications:{"pt-BR":"Nenhuma notificação encontrada.",en:"No notifications found.","zh-CN":"未找到通知。",ckb:"هیچ ئاگادارکردنەوەیەک نەدۆزرایەوە.",ar:"لم يتم العثور على تنبيهات.",be:"Апавяшчэнняў не знойдзена.",bg:"Няма намерени известия.",cs:"Nenalezena žádná oznámení.",da:"Ingen meddelelser fundet.",de:"Keine Benachrichtigungen gefunden.",el:"Δεν βρέθηκαν ειδοποιήσεις.",eo:"Neniu sciigo trovita.",es:"No se encontraron notificaciones.",fi:"Ilmoituksia ei löytynyt.",fr:"Aucune notification trouvée.",he:"לא נמצאו התראות.",hr:"Nisu pronađene obavijesti.",hu:"Nem találhatók értesítések.",id:"Tidak ada notifikasi ditemukan.",it:"Nessuna notifica trovata.",ja:"通知が見つかりません。",ka:"შეტყობინებები ვერ მოიძებნა.",ko:"알림을 찾을 수 없습니다.",mr:"कोणतीही अधिसूचना आढळली नाही.",nb:"Ingen varslinger funnet.",nl:"Geen meldingen gevonden.",pl:"Nie znaleziono powiadomień.",ro:"Nu au fost găsite notificări.",ru:"Уведомлений não найдено.",sk:"Nenašli sa žiadne oznámenia.",sr:"Није пронађено ниједно обавештење.",sv:"Inga aviseringar hittades.",th:"ไม่พบการแจ้งเตือน",tr:"Bildirim bulunamadı.",uk:"Сповіщень не знайдено.",ug:"ئۇقتۇرۇش تېپىلمىدى.",vi:"Không tìm thấy thông báo.",hi:"कोई सूचना नहीं मिली।"},noTitle:{"pt-BR":"Sem título","zh-CN":"无标题",ckb:"بێ ناونیشان",ar:"بدون عنوان",be:"Без загалоўка",bg:"Без заглавие",cs:"Bez názvu",da:"Uden titel",de:"Ohne Titel",el:"Χωρίς τίτλο",en:"No title",eo:"Sen titolo",es:"Sin título",fi:"Ei otsikkoa",fr:"Sans titre",he:"ללא כותרת",hr:"Bez naslova",hu:"Nincs cím",id:"Tanpa judul",it:"Senza titolo",ja:"無題",ka:"სათაურის გარეშე",ko:"제목 없음",mr:"शीर्षक नाही",nb:"Uten tittel",nl:"Geen titel",pl:"Bez tytułu",ro:"Fără titlu",ru:"Без заголовка",sk:"Bez názvu",sr:"Без наслова",sv:"Ingen titel",th:"ไม่มีชื่อเรื่อง",tr:"Başlıksız",uk:"Без назви",ug:"تېمىسىز",vi:"Không có tiêu đề",hi:"कोई शीर्षक नहीं"},viewNotification:{"pt-BR":"Ver Notificação",en:"View Notification","zh-CN":"查看通知",ckb:"بینینی ئاگادارکردنەوە",ar:"عرض التنبيه",be:"Праглядзець апавяшчэнне",bg:"Виж известието",cs:"Zobrazit oznámení",da:"Vis meddelelse",de:"Benachrichtigung ansehen",el:"Προβολή ειδοποίησης",eo:"Vidi sciigon",es:"Ver notificación",fi:"Näytä ilmoitus",fr:"Voir la notification",he:"הצג התראה",hr:"Prikaži obavijest",hu:"Értesítés megtekintése",id:"Lihat Notifikasi",it:"Visualizza notifica",ja:"通知を表示",ka:"შეტყობინების ნახვა",ko:"알림 보기",mr:"अधिसूचना पहा",nb:"Vis varsling",nl:"Melding bekijken",pl:"Zobacz powiadomienie",ro:"Vizualizare notificare",ru:"Посмотреть уведомление",sk:"Zobraziť oznámenie",sr:"Прикажи обавештење",sv:"Visa avisering",th:"ดูการแจ้งเตือน",tr:"Bildirimi Görüntüle",uk:"Переглянути сповіщення",ug:"ئۇقتۇرۇشنى كۆرۈش",vi:"Xem thông báo",hi:"सूचना देखें"},viewExpanded:{"pt-BR":"Conteúdo Completo",en:"Full Content","zh-CN":"完整内容",ckb:"ناوەڕۆکی تەواو",ar:"المحتوى الكامل",be:"Поўны змест",bg:"Пълно съдържание",cs:"Celý obsah",da:"Fuldt indhold",de:"Vollständiger Inhalt",el:"Πλήρες περιεχόμενο",eo:"Plena enhavo",es:"Contenido completo",fi:"Koko sisältö",fr:"Contenu complet",he:"תוכן מלא",hr:"Puni sadržaj",hu:"Teljes tartalom",id:"Konten Lengkap",it:"Contenuto completo",ja:"全内容",ka:"სრული შინაარსი",ko:"전체 내용",mr:"पूर्ण सामग्री",nb:"Fullstendig innhold",nl:"Volledige inhoud",pl:"Pełna treść",ro:"Conținut complet",ru:"Полное содержание",sk:"Celý obsah",sr:"Пун садржај",sv:"Fullständigt innehåll",th:"เนื้อหาฉบับเต็ม",tr:"Tam İçerik",uk:"Повний зміст",ug:"تولۇق مەزمۇن",vi:"Nội dung đầy đủ",hi:"पूरी सामग्री"},closeButtonTitle:{"pt-BR":"Fechar",en:"Close","zh-CN":"关闭",ckb:"داخستن",ar:"إغلاق",be:"Закрыць",bg:"Затвори",cs:"Zavřít",da:"Luk",de:"Schließen",el:"Κλείσιμο",eo:"Fermi",es:"Cerrar",fi:"Sulje",fr:"Fermer",he:"סגירה",hr:"Zatvori",hu:"Bezárás",id:"Tutup",it:"Chiudi",ja:"閉じる",ka:"დახურვა",ko:"닫기",mr:"बंद करा",nb:"Lukk",nl:"Sluiten",pl:"Zamknij",ro:"Închide",ru:"Закрыть",sk:"Zatvoriť",sr:"Затвори",sv:"Stäng",th:"ปิด",tr:"Kapat",uk:"Закрити",ug:"تاقاش",vi:"Đóng",hi:"बंद करें"},translateMenuTitle:{"pt-BR":"Traduzir Notificação",en:"Translate Notification","zh-CN":"翻译通知",ckb:"وەرگێڕانی ئاگادارکردنەوە",ar:"ترجمة التنبيه",be:"Перакласці апавяшчэнне",bg:"Превод на известието",cs:"Přeložit oznámení",da:"Oversæt meddelelse",de:"Benachrichtigung übersetzen",el:"Μετάφραση ειδοποίησης",eo:"Traduki sciigon",es:"Traducir notificación",fi:"Käännä ilmoitus",fr:"Traduire la notification",he:"תרגם התראה",hr:"Prevedi obavijest",hu:"Értesítés fordítása",id:"Terjemahkan Notifikasi",it:"Traduci notifica",ja:"通知を翻訳",ka:"შეტყობინების თარგმნა",ko:"알림 번역",mr:"अधिसूचना अनुवाद करा",nb:"Oversett varsling",nl:"Melding vertalen",pl:"Przetłumacz powiadomienie",ro:"Traducere notificare",ru:"Перевести уведомление",sk:"Preložiť oznámenie",sr:"Преведи обавештење",sv:"Översätt avisering",th:"แปลการแจ้งเตือน",tr:"Bildirimi Çevir",uk:"Перекласти сповіщення",ug:"ئۇقتۇرۇشنى تەرجىمە قىلىش",vi:"Dịch thông báo",hi:"सूचना का अनुवाद करें"},alwaysTranslate:{"pt-BR":"Sempre Traduzir",en:"Always Translate","zh-CN":"总是翻译",ckb:"هەمیشە وەربگێڕە",ar:"ترجمة دائماً",be:"Заўсёды перакладаць",bg:"Винаги превеждай",cs:"Vždy přeložit",da:"Oversæt altid",de:"Immer übersetzen",el:"Πάντα μετάφραση",eo:"Ĉiam traduki",es:"Traducir siempre",fi:"Käännä aina",fr:"Toujours traduire",he:"תרגם תמיד",hr:"Uvijek prevedi",hu:"Mindig fordítsa le",id:"Selalu Terjemahkan",it:"Traduci sempre",ja:"常に翻訳",ka:"ყოველთვის თარგმნა",ko:"항상 번역",mr:"नेहमी अनुवाद करा",nb:"Alltid oversett",nl:"Altijd vertalen",pl:"Zawsze tłumacz",ro:"Traducere întotdeauna",ru:"Всегда переводить",sk:"Vždy preložiť",sr:"Увек преведи",sv:"Översätt alltid",th:"แปลเสมอ",tr:"Her Zaman Çevir",uk:"Завжди перекладати",ug:"ھەمىشە تەرجىمە قىلىش",vi:"Luôn dịch",hi:"हमेशा अनुवाद करें"},applyTranslation:{"pt-BR":"Aplicar Tradução",en:"Apply Translation","zh-CN":"应用翻译",ckb:"جێبەجێکردنی وەرگێڕان",ar:"تطبيق الترجمة",be:"Ужыць пераклад",bg:"Приложи превода",cs:"Použít překlad",da:"Anvend oversættelse",de:"Übersetzung anwenden",el:"Εφαρμογή μετάφρασης",eo:"Apliki tradukon",es:"Aplicar traducción",fi:"Käytä käännöstä",fr:"Appliquer la traduction",he:"החל תרגום",hr:"Primijeni prijevod",hu:"Fordítás alkalmazása",id:"Terapkan Terjemahan",it:"Applica traduzione",ja:"翻訳を適用",ka:"თარგმანის გამოყენება",ko:"번역 적용",mr:"अनुवाद लागू करा",nb:"Bruk oversettelse",nl:"Vertaling toepassen",pl:"Zastosuj tłumaczenie",ro:"Aplică traducerea",ru:"Применить перевод",sk:"Použiť preklad",sr:"Примени превод",sv:"Verkställ översättning",th:"ใช้การแปล",tr:"Çeviriyi Uygula",uk:"Застосувати переклад",ug:"تەرجىمىنى قوللىنىش",vi:"Áp dụng bản dịch",hi:"अनुवाद लागू करें"}}}_getNotifierStyles(){return':host{--sn-font-family:"Roboto Slab",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Heiti SC","Apple SD Gothic Neo","Noto Sans CJK SC",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--sn-font-family-code:"JetBrains Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace,var(--sn-font-family);--sn-font-size-title:16px;--sn-font-size-body:14px;--sn-font-weight-title:600;--sn-color-background:#fff;--sn-color-text-primary:#000;--sn-color-text-secondary:#333;--sn-color-border:#ddd;--sn-color-link:currentColor;--sn-color-link-underline:currentColor;--sn-color-dismiss:#999;--sn-color-dismiss-hover:#ff4d4d;--sn-color-expand-hover:#007bff;--sn-shadow-default:0 8px 20px rgba(0,0,0,0.15);--sn-shadow-button-hover:0 4px 10px rgba(0,0,0,0.2);--sn-card-background:rgba(0,0,0,0.05);--sn-card-border:#ccc;--sn-color-background-overlay:hsla(0,0%,100%,0.75);--sn-scrollbar-track:#f1f1f1;--sn-scrollbar-thumb:#ccc;--sn-scrollbar-thumb-hover:#aaa;--sn-button-hover-bg:#555;--sn-button-hover-text:#fff;--sn-border-radius:12px;--sn-border-radius-small:6px;--sn-padding:16px;--sn-notification-width:380px;--sn-spacing:20px;--sn-icon-size:24px;--sn-image-size:48px;--sn-message-max-height:110px;--sn-animation-duration-fast:0.2s;--sn-animation-duration-medium:0.4s;--sn-animation-duration-slow:0.8s;--sn-code-bg:rgba(0,0,0,0.06);--sn-code-text:#c7254e;--sn-code-block-bg:#f8f9fa;--sn-code-block-border:#e9ecef;--sn-table-border:#dee2e6;--sn-table-stripe:rgba(0,0,0,0.02);--sn-table-header-bg:rgba(0,0,0,0.04);--sn-menu-bg:#fff;--sn-menu-card-bg:rgba(0,0,0,0.03);--sn-menu-card-border:#e1e1e1;--sn-menu-accent:#007bff}@media (prefers-color-scheme:dark){:host{--sn-color-background:#292929;--sn-color-text-primary:#fff;--sn-color-text-secondary:#ddd;--sn-color-border:#444;--sn-color-dismiss:#aaa;--sn-color-expand-hover:#3b82f6;--sn-shadow-default:0 8px 20px rgba(0,0,0,0.5);--sn-shadow-button-hover:0 4px 12px rgba(0,0,0,0.4);--sn-card-background:rgba(0,0,0,0.1);--sn-card-border:#555;--sn-scrollbar-track:#444;--sn-scrollbar-thumb:#666;--sn-scrollbar-thumb-hover:#888;--sn-button-hover-bg:#777;--sn-code-bg:hsla(0,0%,100%,0.15);--sn-code-text:#ff7b72;--sn-code-block-bg:rgba(0,0,0,0.3);--sn-code-block-border:#444;--sn-table-border:#555;--sn-table-stripe:hsla(0,0%,100%,0.05);--sn-table-header-bg:hsla(0,0%,100%,0.1);--sn-color-background-overlay:rgba(0,0,0,0.75);--sn-menu-bg:#292929;--sn-menu-card-bg:hsla(0,0%,100%,0.05);--sn-menu-card-border:#444;--sn-menu-accent:#3b82f6}}.modal-card,.modal-card *,.notification-container,.notification-container *,.sn-adv-menu-panel,.sn-adv-menu-panel *{font-family:var(--sn-font-family)!important;box-sizing:border-box}.modal-card code,.modal-card kbd,.modal-card pre,.modal-card samp,.notification-container code,.notification-container kbd,.notification-container pre,.notification-container samp{font-family:var(--sn-font-family-code)!important}.notification-container{position:fixed;top:0;right:var(--sn-spacing);z-index:2147483647;width:var(--sn-notification-width);font-family:var(--sn-font-family)!important;background-color:var(--sn-color-background);color:var(--sn-color-text-secondary);border-radius:var(--sn-border-radius);box-shadow:var(--sn-shadow-default);border:1px solid var(--sn-color-border);display:flex;padding:var(--sn-padding);box-sizing:border-box;border-left:5px solid transparent;opacity:0;transform:translateX(120%);will-change:transform,opacity,top;align-items:flex-start;padding-right:8px}.notification-container.animate-in{opacity:1;transform:translateX(0);transition:transform var(--sn-animation-duration-slow) cubic-bezier(.22,1.6,.5,1),opacity var(--sn-animation-duration-medium) ease-out,top var(--sn-animation-duration-slow) cubic-bezier(.22,1.6,.5,1)}.notification-container.animate-out{opacity:0;transform:translateX(120%);transition:transform var(--sn-animation-duration-medium) cubic-bezier(.6,-.28,.735,.045),opacity var(--sn-animation-duration-medium) ease-out,top var(--sn-animation-duration-medium) ease-out}.notification-container[data-type=success],.sn-adv-menu-item[data-type=success]{--type-color:#22c55e}.notification-container[data-type=warning],.sn-adv-menu-item[data-type=warning]{--type-color:#f97316}.notification-container[data-type=info],.sn-adv-menu-item[data-type=info]{--type-color:#3b82f6}.notification-container[data-type]{border-left-color:var(--type-color)}.notification-icon{width:var(--sn-icon-size);height:var(--sn-icon-size);margin-right:12px;flex-shrink:0;color:var(--type-color)}.notification-image{width:var(--sn-image-size);height:var(--sn-image-size);border-radius:var(--sn-border-radius-small);object-fit:cover;flex-shrink:0;margin-right:15px}.notification-content{flex-grow:1;word-break:break-word}.notification-title{margin:0 0 8px;font-size:var(--sn-font-size-title);font-weight:var(--sn-font-weight-title);color:var(--sn-color-text-primary)}.notification-message{font-size:var(--sn-font-size-body);line-height:1.5;max-height:var(--sn-message-max-height);overflow-y:auto;padding-right:8px}.notification-message ol,.notification-message ul{padding-left:1.5rem!important;margin:0 0 16px 16px!important}.notification-message blockquote{margin:.5em 0;padding:.5em 1em;border-radius:0;background-color:var(--sn-card-background);border-left:4px solid var(--sn-card-border)}.notification-message a,.notification-title a{color:var(--sn-color-link);text-decoration:none}.notification-message a:hover,.notification-title a:hover{text-decoration:underline;text-decoration-color:var(--sn-color-link-underline)}.bubble-translate-button,.dismiss-button,.expand-button{background:none;border:none;color:var(--sn-color-dismiss);cursor:pointer;padding:4px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s,color .2s,transform .2s;align-self:flex-start}.bubble-translate-button:hover,.dismiss-button:hover,.expand-button:hover{background-color:rgba(0,0,0,.05);transform:scale(1.1)}.bubble-translate-button:hover{color:green}.dismiss-button:hover{color:var(--sn-color-dismiss-hover);transform:rotate(90deg)}.expand-button:hover{color:var(--sn-color-expand-hover)}.expand-button:active{transform:scale(.95)}.notification-actions{display:flex;flex-direction:row;align-items:center;gap:4px;margin-left:8px;flex-shrink:0}.notification-buttons{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}.notification-button,.sn-tm-btn-apply{background-color:var(--sn-color-border);color:var(--sn-color-text-secondary);border:none;border-radius:var(--sn-border-radius-small);padding:6px 12px;font-size:var(--sn-font-size-body);font-weight:500;cursor:pointer;transition:transform var(--sn-animation-duration-fast) ease-in-out,box-shadow var(--sn-animation-duration-fast) ease-in-out,background-color var(--sn-animation-duration-fast) ease-in-out,filter var(--sn-animation-duration-fast) ease-in-out,color var(--sn-animation-duration-fast) ease-in-out}.sn-tm-btn-apply{color:var(--sn-color-text-primary)!important;background-color:var(--sn-menu-accent)!important}.notification-button:hover,.sn-tm-btn-apply:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 0 var(--sn-color-text-primary);filter:brightness(1.15)}.notification-button:not(.custom-bg):hover{background-color:var(--sn-button-hover-bg);color:var(--sn-button-hover-text);filter:brightness(1)}.notification-button:active,.sn-tm-btn-apply:active{transform:translate(0);box-shadow:0 0 0 0 var(--sn-color-text-primary);transition-duration:.1s}.notification-button.primary,.notification-button.primary:hover{background-color:var(--sn-color-link);color:#fff}.notification-button.primary:hover{filter:brightness(1.1)}.notification-button.custom-bg:hover{filter:brightness(1.15)}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:var(--sn-color-background-overlay);z-index:2147483648;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;backdrop-filter:blur(4px);transition:opacity .3s ease,visibility .3s}.modal-overlay.animate-in{opacity:1;visibility:visible}.modal-overlay.animate-out{opacity:0;visibility:hidden}.modal-card{background-color:var(--sn-color-background);color:var(--sn-color-text-primary);width:95%;max-width:900px;height:auto;max-height:95vh;border-radius:16px;box-shadow:0 15px 40px rgba(0,0,0,.4);display:flex;flex-direction:column;overflow:hidden;transform:scale(.9);opacity:0;transition:transform .4s cubic-bezier(.19,1,.22,1),opacity .4s ease;border:1px solid var(--sn-color-text-primary);padding:0;position:relative}.modal-overlay.animate-in .modal-card{transform:scale(1);opacity:1}.modal-overlay.animate-out .modal-card{transform:scale(.9);opacity:0}.modal-hero-img{width:100%;height:auto;max-height:150px;object-fit:cover;display:block;border-bottom:1px solid var(--sn-color-text-primary);cursor:zoom-in;flex-shrink:0}.modal-close-btn.floating,.modal-translate-btn.floating{position:absolute;top:20px;right:20px;z-index:10;background-color:rgba(0,0,0,.6);border:none;cursor:pointer;color:#fff;padding:8px;border-radius:50%;transition:all .2s;display:flex;backdrop-filter:blur(4px)}.modal-close-btn.floating{right:20px}.modal-translate-btn.floating{right:68px}.modal-close-btn.floating svg,.modal-translate-btn.floating svg{width:24px;height:24px}.modal-close-btn.floating:hover{background-color:var(--sn-color-dismiss-hover);transform:scale(1.1)}.modal-translate-btn.floating:hover{background-color:green;transform:scale(1.1)}.modal-inner-content{display:flex;flex-direction:column;overflow:hidden;height:100%}.modal-header{padding:25px;background-color:var(--sn-color-background);display:block;text-align:left;flex-shrink:0;border-bottom:1px solid var(--sn-color-text-primary)}.modal-title{margin:0;font-size:26px;font-weight:700;line-height:1.2;color:var(--sn-color-text-primary)}.modal-summary{margin-top:10px;font-size:16px;color:var(--sn-color-text-secondary);line-height:1.5}.modal-body{padding:25px;overflow-y:auto;font-size:16px;line-height:1.7;text-align:left;color:var(--sn-color-text-primary)}.modal-body img,.modal-body video{display:block;margin:25px auto;max-width:100%;max-height:400px;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);cursor:zoom-in}.modal-body ol,.modal-body ul{padding-left:1.5rem!important;margin:0 0 16px 16px!important}.modal-body blockquote{margin:1em 0;padding:.5em 1em;border-radius:0;background-color:var(--sn-card-background);border-left:4px solid var(--sn-card-border)}.modal-body h1,h2,h3,h4,h5,h6{margin:0 0 16px}.modal-body hr{margin-top:16px;margin-bottom:16px}.lightbox-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.95);z-index:2147483649;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease;cursor:zoom-out;overflow:hidden;touch-action:none}.lightbox-overlay.visible{opacity:1}.lightbox-img{max-width:95vw;max-height:95vh;object-fit:contain;border-radius:4px;box-shadow:0 0 20px rgba(0,0,0,.8);transform:scale(.9);transition:transform .3s cubic-bezier(.2,0,.2,1);cursor:grab;will-change:transform;user-select:none}.lightbox-img.dragging{transition:none!important;cursor:grabbing}.lightbox-overlay.visible .lightbox-img{transform:scale(1)}.modal-body::-webkit-scrollbar{width:8px}.modal-body::-webkit-scrollbar-track{background:transparent}.modal-body::-webkit-scrollbar-thumb{background:#bbb;border-radius:4px}.modal-body::-webkit-scrollbar-thumb:hover{background:#999}.notification-message::-webkit-scrollbar{width:6px}.notification-message::-webkit-scrollbar-track{background:var(--sn-scrollbar-track);border-radius:3px}.notification-message::-webkit-scrollbar-thumb{background:var(--sn-scrollbar-thumb);border-radius:3px}.notification-message::-webkit-scrollbar-thumb:hover{background:var(--sn-scrollbar-thumb-hover)}.notification-message pre::-webkit-scrollbar{width:6px;height:6px}.notification-message pre::-webkit-scrollbar-track{background:transparent}.notification-message pre::-webkit-scrollbar-thumb{background:var(--sn-scrollbar-thumb);border-radius:3px}.notification-message pre::-webkit-scrollbar-thumb:hover{background:var(--sn-scrollbar-thumb-hover)}.modal-body code,.notification-message code{font-size:.9em!important;color:var(--sn-code-text);background-color:var(--sn-code-bg);padding:2px 5px;border-radius:4px;word-wrap:break-word}.modal-body pre,.notification-message pre{background-color:var(--sn-code-block-bg);border:1px solid var(--sn-code-block-border);border-radius:var(--sn-border-radius-small);padding:12px;margin:10px 0;font-size:.85em!important;color:var(--sn-color-text-primary);white-space:pre-wrap!important;word-wrap:break-word!important;word-break:break-word!important;max-height:300px;overflow-y:auto}.modal-body pre code,.notification-message pre code{background-color:transparent!important;color:inherit!important;padding:0!important;border-radius:0!important;font-size:inherit!important;background-color:transparent;color:inherit;padding:0;border-radius:0}.modal-body table,.notification-message table{width:100%;border-collapse:collapse;margin:12px 0;font-size:.9em;background-color:transparent}.modal-body td,.modal-body th,.notification-message td,.notification-message th{padding:8px 10px;border:1px solid var(--sn-table-border);text-align:center;vertical-align:middle}.modal-body th,.notification-message th{background-color:var(--sn-table-header-bg);font-weight:600;color:var(--sn-color-text-primary)}.modal-body tr:nth-child(2n),.notification-message tr:nth-child(2n){background-color:var(--sn-table-stripe)}.sn-adv-menu-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:var(--sn-color-background-overlay);z-index:2147483648;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;backdrop-filter:blur(4px);transition:opacity .3s ease,visibility .3s}.sn-adv-menu-overlay.animate-in{opacity:1;visibility:visible}.sn-adv-menu-overlay.animate-out{opacity:0;visibility:hidden}.sn-adv-menu-panel{background-color:var(--sn-menu-bg);color:var(--sn-color-text-primary);width:95%;max-width:500px;max-height:80vh;border-radius:16px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--sn-color-border);transform:translateY(20px);opacity:0;transition:transform .4s cubic-bezier(.19,1,.22,1),opacity .4s ease}.sn-adv-menu-overlay.animate-in .sn-adv-menu-panel{transform:translateY(0);opacity:1}.sn-adv-menu-overlay.animate-out .sn-adv-menu-panel{transform:translateY(20px);opacity:0}.sn-adv-menu-header{padding:20px;border-bottom:1px solid var(--sn-color-border);display:flex;justify-content:space-between;align-items:center}.sn-adv-menu-title{font-size:18px;font-weight:700;display:flex;align-items:center;gap:10px;color:var(--sn-color-text-primary)}.sn-adv-menu-title svg{width:22px;height:22px;color:var(--sn-menu-accent)}.sn-adv-menu-close{background:none;border:none;color:var(--sn-color-dismiss);cursor:pointer;padding:4px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s,color .2s,transform .2s}.sn-adv-menu-close:hover{background:var(--sn-menu-card-border);color:var(--sn-color-dismiss-hover);transform:rotate(90deg)}.sn-adv-menu-body{padding:10px;overflow-y:auto;flex-grow:1}.sn-adv-menu-empty{text-align:center;color:var(--sn-color-text-secondary);padding:30px;font-size:14px}.sn-adv-menu-item{display:flex;align-items:center;padding:12px;background:var(--sn-menu-card-bg);border:1px solid var(--sn-menu-card-border);border-radius:var(--sn-border-radius);margin-bottom:8px;cursor:pointer;transition:transform var(--sn-animation-duration-fast) ease-in-out,box-shadow var(--sn-animation-duration-fast) ease-in-out,background-color var(--sn-animation-duration-fast) ease-in-out,filter var(--sn-animation-duration-fast) ease-in-out,color var(--sn-animation-duration-fast) ease-in-out}.sn-adv-menu-item:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 0 var(--sn-color-text-primary);filter:brightness(1.15)}.sn-adv-menu-item:active{transform:translate(0);box-shadow:0 0 0 0 var(--sn-color-text-primary);transition-duration:.1s}.sn-adv-item-icon{width:32px;height:32px;margin-right:12px;flex-shrink:0;color:var(--type-color,var(--sn-menu-accent));display:flex;align-items:center;justify-content:center}.sn-adv-item-icon svg{width:100%;height:100%;fill:currentColor}.sn-adv-item-content{flex-grow:1;overflow:hidden}.sn-adv-item-title{font-size:14px;font-weight:600;color:var(--sn-color-text-primary)}.sn-adv-item-comment,.sn-adv-item-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sn-adv-item-comment{font-size:12px;color:var(--sn-color-text-secondary);margin-top:4px}.sn-adv-item-actions{display:flex;gap:6px;margin-left:10px;flex-shrink:0}.sn-adv-action-btn{background:var(--sn-menu-card-border);border:1px solid rgba(0,0,0,.05);color:var(--sn-color-text-secondary);width:28px;height:28px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s,color .2s,transform .1s,border-color .2s}.sn-adv-menu-item:hover .sn-adv-action-btn:not(:hover){background:rgba(0,0,0,.12);color:var(--sn-color-text-primary);border-color:rgba(0,0,0,.15)}.sn-adv-action-btn:hover{background:var(--sn-menu-accent);color:#fff;transform:scale(1.1);border-color:var(--sn-menu-accent)}.sn-adv-action-btn svg{width:16px;height:16px;pointer-events:none}.sn-translate-menu{position:absolute;top:65px;right:20px;background:var(--sn-color-background);border:1px solid var(--sn-color-border);border-radius:var(--sn-border-radius);box-shadow:var(--sn-shadow-default);padding:15px;z-index:2147483650;display:flex;flex-direction:column;gap:10px;width:240px;animation:sn-fade-in .2s ease-out}@keyframes sn-fade-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.sn-tm-title{font-weight:700;font-size:14px;color:var(--sn-color-text-primary);border-bottom:1px solid var(--sn-color-border);padding-bottom:5px;text-align:center}.sn-tm-select{width:100%;padding:6px;border-radius:4px;border:1px solid var(--sn-color-border);outline:none;cursor:pointer}.sn-tm-select,.sn-tm-select option{background:var(--sn-color-background);color:var(--sn-color-text-primary)}.sn-tm-label{font-size:13px;color:var(--sn-color-text-secondary);display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none}.sn-tm-label input{cursor:pointer;width:14px;height:14px}.sn-adv-menu-translate{background:none;border:none;color:var(--sn-color-dismiss);cursor:pointer;padding:4px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s,color .2s,transform .2s}.sn-adv-menu-translate:hover{background:var(--sn-menu-card-border);color:green;transform:scale(1.1)}.notification-container .sn-translate-menu{top:45px;right:0;width:200px}.sn-translate-menu.is-root{position:fixed!important;width:240px!important}'}}