Backloggd Plus

Backloggd 확장: 추가 게임 정보, 풍부한 UI, QoL 기능

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name               Backloggd Plus
// @name:ru            Backloggd Plus
// @name:zh-CN         Backloggd Plus
// @name:es            Backloggd Plus
// @name:pt-BR         Backloggd Plus
// @name:de            Backloggd Plus
// @name:fr            Backloggd Plus
// @name:ja            Backloggd Plus
// @name:ko            Backloggd Plus
// @name:pl            Backloggd Plus
// @namespace          https://github.com/NemoKing1210/backloggd-plus
// @version            0.7.82
// @author             NemoKing1210
// @description        Extends Backloggd and adds a Backloggd button on Steam game pages
// @description:ru     Расширяет Backloggd и добавляет кнопку Backloggd на страницах игр Steam
// @description:zh-CN  扩展 Backloggd:更多游戏信息、更丰富的界面与使用体验
// @description:es     Amplía Backloggd con más información de juegos, UI enriquecida y mejoras QoL
// @description:pt-BR  Amplia o Backloggd com mais info de jogos, UI enriquecida e melhorias QoL
// @description:de     Erweitert Backloggd um mehr Spielinfos, reichere UI und QoL-Features
// @description:fr     Enrichit Backloggd avec plus d’infos jeux, une UI améliorée et des QoL
// @description:ja     Backloggdを拡張:追加のゲーム情報、UI強化、QoL機能
// @description:ko     Backloggd 확장: 추가 게임 정보, 풍부한 UI, QoL 기능
// @description:pl     Rozszerza Backloggd o więcej informacji, bogatsze UI i usprawnienia QoL
// @license            MIT
// @icon               https://www.backloggd.com/favicon.ico
// @homepage           https://github.com/NemoKing1210/backloggd-plus
// @homepageURL        https://github.com/NemoKing1210/backloggd-plus
// @source             https://github.com/NemoKing1210/backloggd-plus.git
// @supportURL         https://github.com/NemoKing1210/backloggd-plus/issues
// @match              https://www.backloggd.com/*
// @match              https://backloggd.com/*
// @match              https://store.steampowered.com/app/*
// @match              https://steamcommunity.com/app/*
// @match              https://steamdb.info/app/*
// @tag                backloggd
// @tag                games
// @connect            www.backloggd.com
// @connect            backloggd.com
// @connect            store.steampowered.com
// @connect            api.steampowered.com
// @connect            steamdb.info
// @connect            gamestatus.info
// @connect            howlongtobeat.com
// @connect            api.opencritic.com
// @connect            opencritic.com
// @connect            html.duckduckgo.com
// @connect            www.protondb.com
// @connect            protondb.com
// @connect            cdn.jsdelivr.net
// @connect            latest.currency-api.pages.dev
// @connect            translate.googleapis.com
// @grant              GM_addStyle
// @grant              GM_getValue
// @grant              GM_registerMenuCommand
// @grant              GM_setValue
// @grant              GM_xmlhttpRequest
// @grant              unsafeWindow
// @run-at             document-idle
// @noframes
// ==/UserScript==

(e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const a=document.createElement("style");a.textContent=e,document.head.append(a)})(' turbo-frame#game-stats[data-blp-hide-game-stats="1"]{display:none!important}html[data-blp-hide-homepage-fuse="1"] .fuse-unit,html[data-blp-hide-homepage-fuse="1"] .min-fuse-height[data-fuse],html[data-blp-hide-homepage-fuse="1"] .row:has(>.col>.fuse-unit),html[data-blp-hide-homepage-fuse="1"] .row:has(>.col>.min-fuse-height[data-fuse]),html[data-blp-hide-homepage-fuse="1"] .row.d-sm-flex:has(>.col>[data-fuse]),html[data-blp-hide-homepage-fuse="1"] .row.d-none:has(>.col>[data-fuse]){display:none!important}html[data-blp-floating-header="1"] body>header,html[data-blp-floating-header="1"] header:has(#primary-nav){position:sticky;top:0;z-index:1040;padding:10px 12px 6px;margin:0;background:transparent!important;border:0!important;box-shadow:none!important;overflow:visible}html[data-blp-floating-header="1"] #primary-nav.navbar{position:relative;isolation:isolate;max-width:1180px;margin-inline:auto;padding:.45rem .85rem;border-radius:16px;border:1px solid rgba(255,255,255,.1)!important;background:transparent!important;box-shadow:0 14px 40px #00000061,inset 0 1px #ffffff0f;overflow:visible;transition:box-shadow .28s ease,border-color .28s ease,padding .28s ease,transform .28s ease}html[data-blp-floating-header="1"] #primary-nav.navbar:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,rgba(61,184,154,.1) 0%,transparent 42%),#12161eb8;backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);pointer-events:none;z-index:-1;transition:background-color .28s ease,background .28s ease}html[data-blp-floating-header="1"][data-blp-header-compact="1"] #primary-nav.navbar{padding:.28rem .75rem;border-color:#ffffff24!important;box-shadow:0 10px 32px #0000007a,inset 0 1px #ffffff0d}html[data-blp-floating-header="1"][data-blp-header-compact="1"] #primary-nav.navbar:before{background:linear-gradient(135deg,rgba(61,184,154,.12) 0%,transparent 40%),#0e1118e0}html[data-blp-floating-header="1"] #primary-nav .navbar-brand{font-weight:700;letter-spacing:-.02em;text-shadow:0 1px 12px rgba(61,184,154,.25);transition:color .2s ease,opacity .2s ease}html[data-blp-floating-header="1"] #primary-nav .navbar-brand:hover{color:var(--blp-accent, #3db89a)!important}html[data-blp-floating-header="1"] #primary-nav .nav-link{border-radius:8px;padding-inline:.65rem;transition:background-color .18s ease,color .18s ease}html[data-blp-floating-header="1"] #primary-nav .nav-link:hover,html[data-blp-floating-header="1"] #primary-nav .nav-link:focus{background:#ffffff0f}html[data-blp-floating-header="1"] #primary-nav .form-control.search-bar{border-radius:10px 0 0 10px!important;background:#00000047!important;border-color:#ffffff1a!important;color:var(--blp-text, #e8eaed)!important;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}html[data-blp-floating-header="1"] #primary-nav .search-btn{border-radius:0 10px 10px 0!important;background:#00000047!important;border-color:#ffffff1a!important;color:var(--blp-muted, #9aa0a6)!important}html[data-blp-floating-header="1"] #primary-nav .form-control.search-bar:focus{background:#0006!important;border-color:#3db89a73!important;box-shadow:0 0 0 3px #3db89a24}html[data-blp-floating-header="1"] #primary-nav .form-control.search-bar:focus+.input-group-append .search-btn,html[data-blp-floating-header="1"] #primary-nav .input-group:focus-within .search-btn{border-color:#3db89a73!important;color:var(--blp-accent, #3db89a)!important}html[data-blp-floating-header="1"] #primary-nav .dropdown-menu{margin-top:0!important;border-radius:12px!important;border:1px solid rgba(255,255,255,.1)!important;background:#12161ef0!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 16px 40px #00000073;overflow:hidden}html[data-blp-floating-header="1"] #primary-nav .dropdown-item{transition:background-color .15s ease,color .15s ease}html[data-blp-floating-header="1"] #primary-nav .dropdown-item:hover,html[data-blp-floating-header="1"] #primary-nav .dropdown-item:focus{background:#3db89a1f!important;color:var(--blp-accent, #3db89a)!important}html[data-blp-floating-header="1"] #primary-nav .btn-main{border-radius:999px!important;box-shadow:0 4px 14px #3db89a47;transition:filter .15s ease,transform .15s ease,box-shadow .15s ease}html[data-blp-floating-header="1"] #primary-nav .btn-main:hover,html[data-blp-floating-header="1"] #primary-nav .btn-main:focus-visible{filter:brightness(1.06);box-shadow:0 6px 18px #3db89a5c;transform:translateY(-1px)}html[data-blp-floating-header="1"] #primary-nav .navbar-toggler{border-radius:10px;border-color:#ffffff24!important;padding:.35rem .5rem}html[data-blp-floating-header="1"] #primary-nav .navbar-toggler:focus{outline:none;box-shadow:0 0 0 3px #3db89a33}html[data-blp-floating-header="1"] #primary-nav #mobile-user-nav .nav-link{border-radius:10px;background:#ffffff08;margin-bottom:.35rem}@media(max-width:767.98px){html[data-blp-floating-header="1"] body>header,html[data-blp-floating-header="1"] header:has(#primary-nav){padding:8px 8px 4px}html[data-blp-floating-header="1"] #primary-nav.navbar{border-radius:14px;padding:.4rem .65rem}}@media(prefers-reduced-motion:reduce){html[data-blp-floating-header="1"] #primary-nav.navbar,html[data-blp-floating-header="1"] #primary-nav .nav-link,html[data-blp-floating-header="1"] #primary-nav .btn-main{transition:none!important}}:root{--blp-accent: #3db89a;--blp-text: #e8eaed;--blp-muted: #9aa0a6;--blp-border: rgba(255, 255, 255, .08);--blp-mc-high: #6c3;--blp-mc-mid: #fc3;--blp-mc-low: #f67;--blp-rev-overwhelming: #66c0f4;--blp-rev-positive: #66c0f4;--blp-rev-mixed: #b9a404;--blp-rev-negative: #c35c2c;--blp-owned: #beee11;--blp-owned-bg: #3d4f1a;--blp-owned-border: rgba(190, 238, 17, .35);--blp-wishlist: #67c1f5;--blp-wishlist-bg: #2a4a63;--blp-wishlist-border: rgba(103, 193, 245, .4);--blp-gs-ready: #beee11;--blp-gs-ready-bg: #4c6b22;--blp-gs-partial: #ffb321;--blp-gs-partial-bg: #5a4630;--blp-gs-pending: #ffb321;--blp-gs-pending-bg: #5a4630;--blp-gs-old: #fecaca;--blp-gs-old-bg: #5a3030;--blp-gs-today: #67c1f5;--blp-gs-today-bg: #2a4a63;--blp-gs-unknown: #b0aeac;--blp-gs-unknown-bg: #3a4149;--blp-skel: rgba(128, 128, 128, .22);--blp-skel-shine: rgba(255, 255, 255, .18)}[data-blp-enrich] .blp-ext-link,.blp-settings .blp-toggle__label{display:inline-flex;align-items:center;gap:.35em;vertical-align:middle}[data-blp-enrich] .blp-favicon,.blp-settings .blp-favicon{width:14px;height:14px;border-radius:2px;flex:0 0 auto;object-fit:contain}#blp-steam-backloggd-btn{margin-right:2px}#blp-steam-backloggd-btn img.ico16{width:16px;height:16px;vertical-align:middle;border-radius:2px}#blp-nav-settings,.blp-export-btn.btn-main,.blp-export-log-btn.btn-main{white-space:nowrap;vertical-align:middle;background-color:var(--blp-accent)!important;border-color:transparent!important;color:#0b1210!important;font-weight:600}#blp-nav-settings:hover,#blp-nav-settings:focus-visible,.blp-export-btn.btn-main:hover,.blp-export-btn.btn-main:focus-visible,.blp-export-log-btn.btn-main:hover,.blp-export-log-btn.btn-main:focus-visible{filter:brightness(1.06);color:#0b1210!important}#add-a-game+#blp-nav-settings{min-height:var(--blp-nav-btn-h, unset)}#blp-nav-settings.nav-item,li.nav-item>#blp-nav-settings{margin-left:.5rem}#game-profile h1 .blp-title-icon-wrap,.game-title-section h1 .blp-title-icon-wrap,h1 .blp-title-icon-wrap{display:inline-block;position:relative;width:32px;height:32px;vertical-align:middle;margin-right:.45em;border-radius:5px;overflow:hidden;box-shadow:0 0 0 1px #ffffff24;background:#8080802e}#game-body .game-title-section h1 .blp-game-id,.game-title-section h1 .blp-game-id{display:inline;margin:0 0 0 .35em;padding:0;border:0;background:none;color:inherit;opacity:.55;font:inherit;font-weight:500;letter-spacing:.02em;cursor:pointer;vertical-align:baseline;transition:opacity .15s ease}#game-body .game-title-section h1 .blp-game-id:hover,.game-title-section h1 .blp-game-id:hover,#game-body .game-title-section h1 .blp-game-id:focus-visible,.game-title-section h1 .blp-game-id:focus-visible{opacity:.9;text-decoration:underline;outline:none}.blp-title-icon-wrap .blp-title-icon-skel{position:absolute;inset:0;display:block;width:100%;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--blp-skel) 0%,var(--blp-skel-shine) 45%,var(--blp-skel) 90%);background-size:200% 100%;animation:blp-shimmer 1.1s ease-in-out infinite;transition:opacity .28s ease}.blp-title-icon-wrap:not(.is-loading) .blp-title-icon-skel{opacity:0;pointer-events:none}#game-profile h1 .blp-title-icon,.game-title-section h1 .blp-title-icon,h1 .blp-title-icon{position:relative;display:block;width:32px;height:32px;border-radius:5px;object-fit:cover;opacity:0;transition:opacity .35s ease}#game-profile h1 .blp-title-icon-wrap .blp-title-icon.is-ready,.game-title-section h1 .blp-title-icon-wrap .blp-title-icon.is-ready,h1 .blp-title-icon-wrap .blp-title-icon.is-ready,.blp-title-icon-wrap .blp-title-icon.is-ready{opacity:1}.col-cover .blp-steamdb-cover,#logging-sidebar-section .blp-steamdb-cover,.blp-steamdb-cover{position:relative;margin-top:.75rem;width:100%;max-width:100%;line-height:0;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,.1);background:#00000040}.blp-steamdb-cover.is-loading{aspect-ratio:460 / 215;min-height:72px}.blp-steamdb-cover .blp-steamdb-cover-skel{position:absolute;inset:0;display:block;width:100%;height:100%;border-radius:0;background:linear-gradient(90deg,var(--blp-skel) 0%,var(--blp-skel-shine) 45%,var(--blp-skel) 90%);background-size:200% 100%;animation:blp-shimmer 1.1s ease-in-out infinite;transition:opacity .32s ease;z-index:1}.blp-steamdb-cover:not(.is-loading) .blp-steamdb-cover-skel{opacity:0;pointer-events:none}.blp-steamdb-cover img{display:block;width:100%;height:auto;max-height:none;object-fit:cover;object-position:center top;background:#1a1d24;opacity:0;transition:opacity .4s ease}.blp-steamdb-cover img.is-ready{opacity:1}.blp-steamdb-cover img.blp-steamdb-cover__logo{max-height:110px;object-fit:contain;object-position:center;padding:.65rem .5rem;background:radial-gradient(circle at 50% 40%,rgba(255,255,255,.06),transparent 65%)}.blp-steam-gallery{margin-top:1rem;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.blp-steam-gallery__head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.45rem}.blp-steam-gallery__title{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--blp-muted)}.blp-steam-gallery__link{font-size:.78rem;color:var(--back-interact-secondary, #839df9);text-decoration:none}.blp-steam-gallery__link:hover{color:var(--back-text, #badefc);text-decoration:underline}.blp-steam-gallery__track{display:flex;flex-wrap:nowrap;gap:.5rem;max-width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;padding-bottom:.35rem;scroll-snap-type:x proximity;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) rgba(255,255,255,.06)}.blp-steam-gallery__track::-webkit-scrollbar{height:6px}.blp-steam-gallery__track::-webkit-scrollbar-track{background:#ffffff0f;border-radius:999px}.blp-steam-gallery__track::-webkit-scrollbar-thumb{background:#ffffff47;border-radius:999px}.blp-steam-gallery__skel{flex:0 0 auto;width:min(42vw,220px);aspect-ratio:16 / 9;border-radius:6px;background:linear-gradient(90deg,var(--blp-skel) 0%,var(--blp-skel-shine) 45%,var(--blp-skel) 90%);background-size:200% 100%;animation:blp-shimmer 1.1s ease-in-out infinite}.blp-steamdb-cover.is-gallery{cursor:zoom-in}.blp-steamdb-cover.is-gallery:focus-visible{outline:2px solid var(--back-interact-secondary, #839df9);outline-offset:2px}.blp-export-wrap{margin-top:.55rem;width:100%}.blp-export-wrap .blp-export-btn{width:100%}#log-editor-footer .blp-export-log-wrap{display:flex;align-items:center}.blp-export-backdrop{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0000008c}.blp-export-dialog{width:min(440px,100%);max-height:min(90vh,720px);display:flex;flex-direction:column;overflow:hidden;background:#1a1d24;border:1px solid var(--blp-border);border-radius:8px;padding:1rem 1.1rem;color:var(--blp-text);box-shadow:0 12px 40px #00000073}@media(min-width:720px){.blp-export-dialog{width:min(980px,100%)}}.blp-export-dialog__head{flex:0 0 auto}.blp-export-dialog h3{margin:0 0 .35rem;font-size:1rem}.blp-export-dialog .blp-hint{margin:0 0 .85rem;color:var(--blp-muted);font-size:.78rem;line-height:1.4}.blp-export-layout{display:flex;flex-direction:column;gap:.85rem;min-height:0;flex:1 1 auto;overflow:auto}.blp-export-main{order:2;min-width:0}.blp-export-preview{order:1;margin:0;padding:.75rem .85rem;border-radius:6px;border:1px solid rgba(255,255,255,.08);background:#00000038;font-size:.82rem}@media(min-width:720px){.blp-export-layout{flex-direction:row;align-items:stretch;overflow:hidden}.blp-export-main{order:1;flex:1 1 auto;overflow:auto;padding-right:.15rem}.blp-export-preview{order:2;flex:0 0 min(520px,52%);max-width:560px;overflow:auto}}.blp-export-preview .blp-export-section-label{margin-bottom:.5rem}.blp-export-preview__fields{display:flex;flex-direction:column;gap:.35rem}.blp-export-preview__row{display:grid;grid-template-columns:minmax(6.5rem,42%) 1fr;gap:.3rem .55rem;align-items:start;font-size:.74rem;line-height:1.35}.blp-export-preview__key{color:var(--blp-muted);font-weight:600}.blp-export-preview__val{color:var(--blp-text);word-break:break-word}.blp-export-preview__json{margin:0;padding:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.7rem;line-height:1.4;color:var(--blp-text)}.blp-export-section-label{margin:0 0 .4rem;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--blp-muted)}.blp-export-formats{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.85rem}.blp-export-advanced{margin:0 0 .85rem;border:1px solid rgba(255,255,255,.08);border-radius:6px;background:#0000002e}.blp-export-advanced__summary{display:flex;align-items:center;gap:.45rem;padding:.55rem .7rem;cursor:pointer;list-style:none;user-select:none;font-size:.78rem;font-weight:600;color:var(--blp-muted)}.blp-export-advanced__summary::-webkit-details-marker{display:none}.blp-export-advanced__summary:before{content:"";width:.38rem;height:.38rem;border-right:2px solid var(--blp-muted);border-bottom:2px solid var(--blp-muted);transform:rotate(-45deg);transition:transform .15s ease;flex:0 0 auto;margin-top:-.08rem}.blp-export-advanced[open]>.blp-export-advanced__summary:before{transform:rotate(45deg);margin-top:0}.blp-export-advanced[open]>.blp-export-advanced__summary{color:var(--blp-text);border-bottom:1px solid rgba(255,255,255,.06)}.blp-export-advanced__body{padding:.7rem .7rem .85rem}.blp-export-advanced__body .blp-export-formats{margin-bottom:0}.blp-export-advanced__body .blp-export-section-label:first-child{margin-top:0}.blp-export-advanced__body .blp-export-section-label{margin-top:.75rem}.blp-export-option{display:flex;align-items:flex-start;gap:.55rem;margin:0;padding:.55rem .65rem;border-radius:6px;border:1px solid rgba(255,255,255,.1);background:#ffffff08;cursor:pointer}.blp-export-option:has(input:checked){border-color:#3db89a80;background:#3db89a1a}.blp-export-option.is-disabled{opacity:.55;cursor:not-allowed}.blp-export-option input{margin-top:.15rem;accent-color:#3db89a}.blp-export-option__body{display:flex;flex-direction:column;gap:.15rem;min-width:0}.blp-export-option__label{font-size:.84rem;font-weight:600;color:var(--blp-text)}.blp-export-option__label em{font-style:normal;font-weight:500;font-size:.72rem;color:var(--blp-muted);margin-left:.25rem}.blp-export-option__hint{font-size:.72rem;color:var(--blp-muted);line-height:1.35}.blp-export-dialog .blp-actions{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.blp-export-backdrop .blp-btn{appearance:none;border:1px solid var(--blp-border);background:#ffffff14;color:var(--blp-text);border-radius:6px;padding:.4rem .8rem;font-size:.8rem;font-weight:500;line-height:1.3;cursor:pointer}.blp-export-backdrop .blp-btn:hover{border-color:#3db89a73;color:#fff}.blp-export-backdrop .blp-btn.blp-primary,.blp-export-dialog .blp-actions .blp-btn.blp-primary{background:var(--blp-accent, #3db89a);border-color:transparent;color:#0b1210;font-weight:600}.blp-export-backdrop .blp-btn.blp-primary:hover,.blp-export-dialog .blp-actions .blp-btn.blp-primary:hover{background:#48c9a8;color:#0b1210;border-color:transparent}#interaction-sidebar .col-cover img.blp-cover-zoomable,img.blp-cover-zoomable{cursor:zoom-in}#interaction-sidebar .col-cover img.blp-cover-zoomable:focus-visible,img.blp-cover-zoomable:focus-visible{outline:2px solid var(--back-interact-secondary, #839df9);outline-offset:2px}.blp-steam-gallery__item{flex:0 0 auto;width:min(42vw,220px);aspect-ratio:16 / 9;padding:0;border:1px solid rgba(255,255,255,.1);border-radius:6px;overflow:hidden;background:#12151c;cursor:zoom-in;scroll-snap-align:start;transition:border-color .15s ease,transform .15s ease}.blp-steam-gallery__item--cover{aspect-ratio:460 / 215}.blp-steam-gallery__item:hover,.blp-steam-gallery__item:focus-visible{border-color:var(--back-interact-secondary, #839df9);transform:translateY(-1px);outline:none}.blp-steam-gallery__item img{display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s ease}.blp-steam-gallery__item img.is-ready{opacity:1}.blp-similar{margin-top:1.15rem;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.blp-similar__head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}.blp-similar__title{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--blp-muted)}.blp-similar__link{font-size:.78rem;color:var(--back-interact-secondary, #839df9);text-decoration:none}.blp-similar__link:hover{color:var(--back-text, #badefc);text-decoration:underline}.blp-similar__track{display:flex;flex-wrap:nowrap;gap:.65rem;max-width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;padding-bottom:.4rem;scroll-snap-type:x proximity;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) rgba(255,255,255,.06)}.blp-similar__track::-webkit-scrollbar{height:6px}.blp-similar__track::-webkit-scrollbar-track{background:#ffffff0f;border-radius:999px}.blp-similar__track::-webkit-scrollbar-thumb{background:#ffffff47;border-radius:999px}.blp-similar__skel{flex:0 0 auto;width:118px;height:210px;border-radius:8px;background:linear-gradient(90deg,var(--blp-skel) 0%,var(--blp-skel-shine) 45%,var(--blp-skel) 90%);background-size:200% 100%;animation:blp-shimmer 1.1s ease-in-out infinite}.blp-similar__card{flex:0 0 auto;width:118px;display:flex;flex-direction:column;gap:.35rem;color:inherit;scroll-snap-align:start;border-radius:8px;transition:transform .15s ease}.blp-similar__card:hover,.blp-similar__card:focus-within{transform:translateY(-2px)}.blp-similar__card:focus-within .blp-similar__cover{border-color:var(--back-interact-secondary, #839df9)}.blp-similar__cover{position:relative;width:100%;aspect-ratio:600 / 900;border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.1);background:#12151c}.blp-similar__hit{display:block;width:100%;height:100%;text-decoration:none;color:inherit}.blp-similar__cover img{display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s ease}.blp-similar__cover img.is-ready{opacity:1}.blp-similar__badge{position:absolute;top:.35rem;left:.35rem;z-index:1;display:flex;flex-direction:column;align-items:flex-start;gap:.05rem;padding:.2rem .35rem;border-radius:5px;background:#0c0e12d1;backdrop-filter:blur(4px);line-height:1.1;pointer-events:none}.blp-similar__pct{font-size:.82rem;font-weight:700;color:var(--back-text, #badefc)}.blp-similar__match{font-size:.58rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--blp-muted, #8a9bb8)}.blp-similar__steam{position:absolute;top:.3rem;right:.3rem;z-index:2;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:#0c0e12c7;opacity:0;transition:opacity .15s ease;text-decoration:none}.blp-similar__card:hover .blp-similar__steam,.blp-similar__card:focus-within .blp-similar__steam{opacity:1}.blp-similar__steam img{width:14px;height:14px;display:block;opacity:1}.blp-similar__meta{display:flex;flex-direction:column;gap:.15rem;min-width:0;text-decoration:none;color:inherit}.blp-similar__meta:hover .blp-similar__name,.blp-similar__meta:focus-visible .blp-similar__name{color:var(--back-interact-secondary, #839df9)}.blp-similar__name{font-size:.72rem;font-weight:600;line-height:1.25;color:var(--back-text, #badefc);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.blp-similar__tags{font-size:.62rem;line-height:1.2;color:var(--blp-muted, #8a9bb8);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.blp-viewer{position:fixed;inset:0;z-index:1000001;display:flex;flex-direction:column;background:color-mix(in srgb,var(--back-primary, #16181c) 88%,transparent);backdrop-filter:blur(4px);color:var(--back-text, #badefc);font:13px/1.35 system-ui,sans-serif;user-select:none;-webkit-user-select:none}.blp-viewer__chrome{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.65rem .85rem;background:linear-gradient(180deg,color-mix(in srgb,var(--back-primary, #16181c) 75%,transparent),transparent);z-index:2}.blp-viewer__chrome-left,.blp-viewer__chrome-right{display:flex;align-items:center;gap:.4rem;min-width:0}.blp-viewer__title{font-weight:700;letter-spacing:.03em;text-transform:uppercase;font-size:.72rem;color:var(--back-text-secondary, #8f9ca7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:28vw}.blp-viewer__counter{font-variant-numeric:tabular-nums;color:var(--back-text, #badefc);padding:.2rem .55rem;border-radius:999px;background:var(--back-field, #30394c);border:1px solid var(--back-field-border, #3b414e)}.blp-viewer__tool{width:36px;height:36px;border:1px solid var(--back-field-border, #3b414e);border-radius:8px;background:var(--back-secondary, #242832);color:var(--back-text, #badefc);font-size:1.05rem;line-height:1;cursor:pointer}.blp-viewer__tool:hover,.blp-viewer__tool:focus-visible{background:var(--back-field-highlight, #3b4760);border-color:var(--back-field-border-hover, #3f4b64);color:var(--back-btn-toggled-text, #fff);outline:none}.blp-viewer__tool:disabled{opacity:.35;cursor:default}.blp-viewer__body{flex:1 1 auto;position:relative;min-height:0;display:grid;grid-template-columns:auto 1fr auto;align-items:stretch;gap:.25rem;padding:0 .35rem}.blp-viewer__nav{align-self:center;width:44px;height:44px;border:1px solid var(--back-field-border, #3b414e);border-radius:999px;background:var(--back-secondary, #242832);color:var(--back-text, #badefc);font-size:1.45rem;line-height:1;cursor:pointer;z-index:2}.blp-viewer__nav:hover,.blp-viewer__nav:focus-visible{background:var(--back-interact, #4a5e8d);border-color:var(--back-interact-secondary, #839df9);color:var(--back-btn-toggled-text, #fff);outline:none}.blp-viewer__nav[hidden]{visibility:hidden;pointer-events:none}.blp-viewer__stage{position:relative;min-width:0;min-height:0;overflow:hidden;cursor:grab;touch-action:none}.blp-viewer__stage.is-dragging{cursor:grabbing}.blp-viewer__frame{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transform-origin:center center;will-change:transform}.blp-viewer__img{max-width:min(92vw,1280px);max-height:calc(100% - 8px);width:auto;height:auto;object-fit:contain;border-radius:6px;box-shadow:0 18px 48px #0000008c;background:var(--back-field-background, #272c37);pointer-events:auto;opacity:1;transition:opacity .2s ease}.blp-viewer__stage.is-loading .blp-viewer__img{opacity:.28}.blp-viewer__spinner{position:absolute;top:50%;left:50%;width:42px;height:42px;margin:-21px 0 0 -21px;border-radius:50%;border:3px solid var(--back-field-border, #3b414e);border-top-color:var(--back-field-selected, var(--back-pink-dk, #ea377a));opacity:0;pointer-events:none;z-index:3;transition:opacity .15s ease}.blp-viewer__stage.is-loading .blp-viewer__spinner{opacity:1;animation:blp-viewer-spin .7s linear infinite}@keyframes blp-viewer-spin{to{transform:rotate(360deg)}}.blp-viewer__film{flex:0 0 auto;display:flex;justify-content:safe center;justify-content:center;gap:.45rem;overflow-x:auto;overflow-y:hidden;padding:.55rem .85rem .85rem;scroll-snap-type:x proximity;background:color-mix(in srgb,var(--back-secondary, #242832) 88%,transparent);border-top:1px solid var(--back-dropdown-divider, #3f4b64);z-index:2}.blp-viewer__film::-webkit-scrollbar{height:6px}.blp-viewer__film::-webkit-scrollbar-thumb{background:var(--back-field-border-hover, #3f4b64);border-radius:999px}.blp-viewer__thumb{flex:0 0 auto;width:88px;aspect-ratio:16 / 9;padding:0;border:2px solid transparent;border-radius:6px;overflow:hidden;background:var(--back-field-background, #272c37);cursor:pointer;opacity:.55;scroll-snap-align:center;transition:opacity .15s ease,border-color .15s ease,transform .15s ease}.blp-viewer__thumb--cover{aspect-ratio:460 / 215}.blp-viewer__thumb:hover,.blp-viewer__thumb:focus-visible{opacity:.9;border-color:var(--back-field-border-hover, #3f4b64);outline:none}.blp-viewer__thumb.is-active{opacity:1;border-color:var(--back-field-selected, var(--back-pink-dk, #ea377a));transform:translateY(-2px);box-shadow:0 0 0 1px color-mix(in srgb,var(--back-pink-dk, #ea377a) 45%,transparent)}.blp-viewer__thumb.is-near{opacity:.78;border-color:var(--back-field-border, #3b414e)}.blp-viewer__thumb img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}[data-blp-enrich=players] .blp-players-badge{display:inline-flex;align-items:center;gap:.35em;padding:.12em .55em .14em;border-radius:4px;font-size:.82em;font-weight:700;line-height:1.45;text-decoration:none!important;color:#67c1f5!important;background:linear-gradient(180deg,#355a78,#2a4a63);border:1px solid rgba(103,193,245,.35);box-shadow:inset 0 1px #ffffff1a;width:fit-content;white-space:nowrap}[data-blp-enrich=players] .blp-players-badge__dot{width:.45em;height:.45em;border-radius:50%;background:currentColor;flex:0 0 auto;box-shadow:0 0 6px currentColor}[data-blp-enrich] .blp-mc-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.85em;padding:.18em .42em;border-radius:3px;font-size:.88em;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1.2;text-decoration:none!important;vertical-align:middle;white-space:nowrap;width:fit-content;box-shadow:inset 0 1px #ffffff38}[data-blp-enrich] .blp-mc-badge--high{background:var(--blp-mc-high);color:#14200a!important;border:1px solid rgba(102,204,51,.55)}[data-blp-enrich] .blp-mc-badge--mid{background:var(--blp-mc-mid);color:#2a2200!important;border:1px solid rgba(255,204,51,.55)}[data-blp-enrich] .blp-mc-badge--low{background:var(--blp-mc-low);color:#2a0a12!important;border:1px solid rgba(255,102,119,.5)}[data-blp-enrich] .blp-oc-badge,[data-blp-enrich] .blp-deck-badge,[data-blp-enrich] .blp-proton-badge,[data-blp-enrich] .blp-hltb-chip{display:inline-flex;align-items:center;justify-content:center;padding:.18em .5em;border-radius:3px;font-size:.82em;font-weight:700;line-height:1.2;text-decoration:none!important;white-space:nowrap;vertical-align:middle}[data-blp-enrich] .blp-oc-badge--mighty{background:#fc4;color:#1a1400!important;border:1px solid rgba(255,204,68,.55)}[data-blp-enrich] .blp-oc-badge--strong{background:#6c3;color:#14200a!important;border:1px solid rgba(102,204,51,.55)}[data-blp-enrich] .blp-oc-badge--fair{background:#fc3;color:#2a2200!important;border:1px solid rgba(255,204,51,.55)}[data-blp-enrich] .blp-oc-badge--weak{background:#f67;color:#2a0a12!important;border:1px solid rgba(255,102,119,.5)}[data-blp-enrich] .blp-oc-badge:not([class*=blp-oc-badge--]){background:#3a4149;color:#e8eaed!important;border:1px solid rgba(255,255,255,.12)}[data-blp-enrich] .blp-hltb-chips,[data-blp-enrich] .blp-deck-proton-chips,[data-blp-enrich] .blp-oc-chips{display:flex;flex-wrap:wrap;gap:.45rem;justify-content:flex-end;align-items:center}@media(min-width:768px){[data-blp-enrich] .blp-hltb-chips,[data-blp-enrich] .blp-deck-proton-chips,[data-blp-enrich] .blp-oc-chips{justify-content:flex-start}}[data-blp-enrich] .blp-hltb-chip{background:#1b2838;color:#c6d4df!important;border:1px solid rgba(198,212,223,.28)}[data-blp-enrich] .blp-deck-badge--verified{background:#1a9fff;color:#061018!important;border:1px solid rgba(26,159,255,.55)}[data-blp-enrich] .blp-deck-badge--playable{background:#ffc82c;color:#1a1400!important;border:1px solid rgba(255,200,44,.55)}[data-blp-enrich] .blp-deck-badge--unsupported,[data-blp-enrich] .blp-deck-badge--unknown{background:#3a4149;color:#e8eaed!important;border:1px solid rgba(255,255,255,.12)}[data-blp-enrich] .blp-proton-badge--platinum{background:#e5e4e2;color:#1a1a1a!important;border:1px solid rgba(229,228,226,.6)}[data-blp-enrich] .blp-proton-badge--gold{background:#d4af37;color:#1a1400!important;border:1px solid rgba(212,175,55,.55)}[data-blp-enrich] .blp-proton-badge--silver{background:silver;color:#1a1a1a!important;border:1px solid rgba(192,192,192,.55)}[data-blp-enrich] .blp-proton-badge--bronze{background:#cd7f32;color:#1a0e04!important;border:1px solid rgba(205,127,50,.55)}[data-blp-enrich] .blp-proton-badge--borked{background:#c35c2c;color:#fff!important;border:1px solid rgba(195,92,44,.55)}[data-blp-enrich] .blp-price{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35em .45em;text-decoration:none!important}[data-blp-enrich] .blp-price--sale{gap:.4em .5em}[data-blp-enrich] .blp-price__stack{display:inline-flex;flex-direction:column;align-items:flex-end;gap:.05em;line-height:1.15}@media(min-width:768px){[data-blp-enrich] .blp-price__stack{align-items:flex-start}}[data-blp-enrich] .blp-price__was{font-size:.78em;font-weight:500;color:var(--blp-muted, #9aa0a6);text-decoration:line-through;text-decoration-thickness:1px;opacity:.85}[data-blp-enrich] .blp-price__now{font-weight:700;color:#beee11;letter-spacing:.01em}[data-blp-enrich] .blp-price__fx{display:inline-flex;align-items:baseline;flex-wrap:nowrap;gap:.35em;margin-left:.2em;white-space:nowrap;vertical-align:baseline;color:var(--blp-muted, #9aa0a6);font-weight:600;opacity:.92}[data-blp-enrich] .blp-price__fx-now{font-weight:600;color:var(--blp-muted, #9aa0a6)}[data-blp-enrich] .blp-price__fx-was{font-size:.78em;font-weight:500;color:var(--blp-muted, #9aa0a6);text-decoration:line-through;text-decoration-thickness:1px;opacity:.8}.blp-card-badge--fx{opacity:.88;font-weight:600;white-space:nowrap}.blp-card-badge--fx-was{font-size:.85em;font-weight:500;opacity:.75;text-decoration:line-through;margin-left:.25em}[data-blp-enrich] .blp-discount{display:inline-flex;align-items:center;justify-content:center;min-width:2.6em;padding:.18em .42em;border-radius:3px;font-size:.92em;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.02em;line-height:1.2;color:#1b2838!important;background:#beee11;box-shadow:0 0 0 1px #beee1159}[data-blp-enrich] .blp-discount-ends{display:inline-block;padding:.12em .4em;border-radius:3px;font-size:.78em;font-weight:600;line-height:1.25;color:#c6ef5e;background:#3d4f1a8c;border:1px solid rgba(190,238,17,.28);opacity:1;margin-left:0}[data-blp-enrich] .blp-review--overwhelming,[data-blp-enrich] .blp-review--very-positive{color:var(--blp-rev-overwhelming)!important;font-weight:600}[data-blp-enrich] .blp-review--positive,[data-blp-enrich] .blp-review--mostly-positive{color:var(--blp-rev-positive)!important;font-weight:600}[data-blp-enrich] .blp-review--mixed{color:var(--blp-rev-mixed)!important;font-weight:600}[data-blp-enrich] .blp-review--mostly-negative,[data-blp-enrich] .blp-review--negative,[data-blp-enrich] .blp-review--very-negative,[data-blp-enrich] .blp-review--overwhelmingly-negative{color:var(--blp-rev-negative)!important;font-weight:600}[data-blp-enrich] .blp-steam-note{opacity:.65;font-size:.85em}[data-blp-enrich] .blp-steam-tags,[data-blp-enrich] .blp-steam-categories{display:flex;flex-wrap:wrap;gap:.3rem;justify-content:flex-end}@media(min-width:768px){[data-blp-enrich] .blp-steam-tags,[data-blp-enrich] .blp-steam-categories{justify-content:flex-start}}[data-blp-enrich] .blp-steam-tag{background:#1b2838;color:#66c0f4!important;border:1px solid rgba(102,192,244,.28);text-decoration:none!important}[data-blp-enrich] .blp-steam-tag:hover{background:#2a475e;color:#fff!important}[data-blp-enrich] .blp-steam-category{background:#ffffff0f;color:#c7d5e0!important;border:1px solid rgba(255,255,255,.14);text-decoration:none!important}[data-blp-enrich] .blp-steam-category:hover{background:#ffffff1f;color:#fff!important}[data-blp-enrich=steam]{align-items:flex-start}[data-blp-enrich=steam]>[class*=col]{margin-top:.35rem!important;margin-bottom:.35rem!important}[data-blp-enrich=steam] [data-blp-values]{display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}@media(min-width:768px){[data-blp-enrich=steam] [data-blp-values]{align-items:flex-start}}[data-blp-enrich=steam] .blp-steam-line{display:block;line-height:1.35}[data-blp-enrich=steamdb] .blp-sdb-facts{display:flex;flex-direction:column;gap:.4rem;width:100%;max-width:36rem;padding:.15rem 0 .15rem .7rem;border-left:2px solid rgba(102,192,244,.42)}[data-blp-enrich=steamdb] .blp-sdb-fact{display:grid;grid-template-columns:minmax(6.75rem,9.25rem) minmax(0,1fr);column-gap:.75rem;row-gap:.15rem;align-items:start}[data-blp-enrich=steamdb] .blp-sdb-fact__label{color:var(--blp-muted);font-size:.8em;font-weight:600;letter-spacing:.01em;line-height:1.45;padding-top:.12em}[data-blp-enrich=steamdb] .blp-sdb-fact__value{min-width:0;line-height:1.45}[data-blp-enrich=steamdb] .blp-sdb-value-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}[data-blp-enrich=steamdb] .blp-sdb-link{color:#66c0f4;text-decoration:none;font-weight:600}[data-blp-enrich=steamdb] .blp-sdb-link:hover,[data-blp-enrich=steamdb] .blp-sdb-link:focus-visible{color:#8ed0f8;text-decoration:underline}[data-blp-enrich=steamdb] .blp-sdb-link--muted{color:var(--blp-text);font-weight:500;font-variant-numeric:tabular-nums;font-size:.92em}[data-blp-enrich=steamdb] .blp-sdb-link--muted:hover,[data-blp-enrich=steamdb] .blp-sdb-link--muted:focus-visible{color:#66c0f4}[data-blp-enrich=steamdb] .blp-sdb-os,[data-blp-enrich=steamdb] .blp-sdb-tech{display:inline-flex;align-items:center;padding:.12em .48em;border-radius:4px;font-size:.8em;font-weight:600;line-height:1.35;text-decoration:none!important;white-space:nowrap}[data-blp-enrich=steamdb] .blp-sdb-os{color:#c6d4df!important;background:#1b2838;border:1px solid rgba(198,212,223,.22)}[data-blp-enrich=steamdb] .blp-sdb-os:hover,[data-blp-enrich=steamdb] .blp-sdb-os:focus-visible{border-color:#66c0f48c;color:#fff!important}[data-blp-enrich=steamdb] .blp-sdb-tech{color:#d7e6f0!important;background:linear-gradient(180deg,#2a475e,#1b2838);border:1px solid rgba(102,192,244,.28)}[data-blp-enrich=steamdb] .blp-sdb-tech:hover,[data-blp-enrich=steamdb] .blp-sdb-tech:focus-visible{border-color:#66c0f4a6;color:#fff!important}@media(max-width:575.98px){[data-blp-enrich=steamdb] .blp-sdb-facts{padding-left:.55rem;max-width:none}[data-blp-enrich=steamdb] .blp-sdb-fact{grid-template-columns:1fr;gap:.12rem}[data-blp-enrich=steamdb] .blp-sdb-fact__label{padding-top:0}}[data-blp-enrich] .blp-owned-badge{display:inline-flex;align-items:center;gap:.28em;padding:.1em .5em .12em;border-radius:4px;border:1px solid var(--blp-owned-border);background:linear-gradient(180deg,#4c6b22 0%,var(--blp-owned-bg) 100%);color:var(--blp-owned)!important;font-size:.78em;font-weight:700;letter-spacing:.03em;line-height:1.45;vertical-align:middle;white-space:nowrap;box-shadow:inset 0 1px #ffffff1f;width:fit-content}[data-blp-enrich] .blp-owned-badge__icon{width:.85em;height:.85em;flex:0 0 auto}[data-blp-enrich] .blp-wishlist-badge{display:inline-flex;align-items:center;gap:.28em;padding:.1em .5em .12em;border-radius:4px;border:1px solid var(--blp-wishlist-border);background:linear-gradient(180deg,#3a5f7d 0%,var(--blp-wishlist-bg) 100%);color:var(--blp-wishlist)!important;font-size:.78em;font-weight:700;letter-spacing:.03em;line-height:1.45;vertical-align:middle;white-space:nowrap;box-shadow:inset 0 1px #ffffff1f;width:fit-content}[data-blp-enrich] .blp-steam-match{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35rem .55rem;margin-top:.15rem;font-size:.72rem;color:var(--blp-muted)}[data-blp-enrich] .blp-steam-match__btn,.blp-fix-match-backdrop .blp-btn{appearance:none;border:1px solid var(--blp-border);background:#ffffff0f;color:var(--blp-text);border-radius:4px;padding:.15rem .45rem;font-size:.72rem;line-height:1.3;cursor:pointer}[data-blp-enrich] .blp-steam-match__btn:hover,.blp-fix-match-backdrop .blp-btn:hover{border-color:#3db89a73;color:#fff}.blp-fix-match-backdrop{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0000008c}.blp-fix-match-dialog{width:min(420px,100%);background:#1a1d24;border:1px solid var(--blp-border);border-radius:8px;padding:1rem 1.1rem;color:var(--blp-text);box-shadow:0 12px 40px #00000073}.blp-fix-match-dialog h3{margin:0 0 .35rem;font-size:1rem}.blp-fix-match-dialog .blp-hint{margin:0 0 .75rem;color:var(--blp-muted);font-size:.78rem;line-height:1.4}.blp-fix-match-dialog input{width:100%;margin-bottom:.65rem;padding:.4rem .5rem;border-radius:4px;border:1px solid var(--blp-border);background:#12151b;color:var(--blp-text)}.blp-fix-match-dialog .blp-actions{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.blp-fix-match-dialog .blp-error{color:#f67;font-size:.75rem;margin:0 0 .5rem}.game-cover{position:relative}.game-cover .blp-card-badges{position:absolute;top:.28rem;left:.28rem;right:.28rem;z-index:6;display:flex;flex-wrap:wrap;gap:.2rem;pointer-events:none;opacity:1;transition:opacity .15s ease}.blp-similar__cover .blp-card-badges{position:absolute;top:auto;bottom:.28rem;left:.28rem;right:.28rem;z-index:3;display:flex;flex-wrap:wrap;gap:.2rem;pointer-events:none;opacity:1;transition:opacity .15s ease}.game-cover:hover .blp-card-badges,.blp-similar__cover:hover .blp-card-badges{opacity:.25;pointer-events:none}.game-cover .blp-card-badges a,.game-cover .blp-card-badges button,.blp-similar__cover .blp-card-badges a,.blp-similar__cover .blp-card-badges button{pointer-events:auto}.game-cover:hover .blp-card-badges a,.game-cover:hover .blp-card-badges button,.blp-similar__cover:hover .blp-card-badges a,.blp-similar__cover:hover .blp-card-badges button{pointer-events:none}.blp-card-badge{display:inline-flex;align-items:center;gap:.2em;max-width:100%;padding:.08em .38em;border-radius:3px;font-size:.62rem;font-weight:700;line-height:1.35;letter-spacing:.02em;white-space:nowrap;text-decoration:none!important;color:#fff!important;background:#14181ed1;border:1px solid rgba(255,255,255,.12);box-shadow:0 1px 2px #00000059}.blp-card-badge--price{background:#1a2838e6}.blp-card-badge--discount{display:inline-flex;align-items:center;margin-left:.15em;padding:.05em .32em;border-radius:2px;font-weight:800;font-variant-numeric:tabular-nums;color:#1b2838!important;background:#beee11;border:none}.blp-card-badge--review{font-variant-numeric:tabular-nums}.blp-card-badge--review.blp-review--overwhelming,.blp-card-badge--review.blp-review--very-positive,.blp-card-badge--review.blp-review--positive,.blp-card-badge--review.blp-review--mostly-positive{color:var(--blp-rev-overwhelming)!important;border-color:#66c0f466;background:#2a4a63eb}.blp-card-badge--review.blp-review--mixed{color:var(--blp-rev-mixed)!important;border-color:#b9a40466;background:#4a4018eb}.blp-card-badge--review.blp-review--mostly-negative,.blp-card-badge--review.blp-review--negative,.blp-card-badge--review.blp-review--very-negative,.blp-card-badge--review.blp-review--overwhelmingly-negative{color:#fecaca!important;border-color:#c35c2c73;background:#5a3028eb}.blp-card-badge--mc{font-variant-numeric:tabular-nums;font-weight:800}.blp-card-badge--mc-high{color:#1a1d24!important;background:var(--blp-mc-high);border-color:transparent}.blp-card-badge--mc-mid{color:#1a1d24!important;background:var(--blp-mc-mid);border-color:transparent}.blp-card-badge--mc-low{color:#fff!important;background:var(--blp-mc-low);border-color:transparent}.blp-card-badge--owned{color:var(--blp-owned)!important;background:#3d4f1aeb;border-color:var(--blp-owned-border)}.blp-card-badge--wishlist{color:var(--blp-wishlist)!important;background:#2a4a63eb;border-color:var(--blp-wishlist-border)}.blp-card-badge--gs{text-transform:none}.blp-card-badge--gs.blp-gs-badge--ready{color:var(--blp-gs-ready)!important;background:#4c6b22eb}.blp-card-badge--gs.blp-gs-badge--partial,.blp-card-badge--gs.blp-gs-badge--pending-recent{color:var(--blp-gs-pending)!important;background:#5a4630eb}.blp-card-badge--gs.blp-gs-badge--pending-old{color:var(--blp-gs-old)!important;background:#5a3030eb}.blp-card-badge--gs.blp-gs-badge--release-today{color:var(--blp-gs-today)!important;background:#2a4a63eb}.blp-card-badges.is-loading .blp-card-badge{min-width:2.4rem;min-height:.95rem;background:linear-gradient(90deg,var(--blp-skel),var(--blp-skel-shine),var(--blp-skel));background-size:200% 100%;animation:blp-shimmer 1.1s ease-in-out infinite;border:0}[data-blp-enrich=gamestatus]{align-items:flex-start}[data-blp-enrich=gamestatus]>[class*=col]{margin-top:.35rem!important;margin-bottom:.35rem!important}[data-blp-enrich=gamestatus] [data-blp-values]{display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}@media(min-width:768px){[data-blp-enrich=gamestatus] [data-blp-values]{align-items:flex-start}}[data-blp-enrich] .blp-gs-badge{display:inline-flex;align-items:center;gap:.35em;padding:.12em .55em .14em;border-radius:4px;font-size:.82em;font-weight:700;line-height:1.45;text-decoration:none!important;width:fit-content;white-space:nowrap;box-shadow:inset 0 1px #ffffff1a}[data-blp-enrich] .blp-gs-badge__dot{width:.45em;height:.45em;border-radius:50%;background:currentColor;flex:0 0 auto}[data-blp-enrich] .blp-gs-badge--ready{color:var(--blp-gs-ready)!important;background:linear-gradient(180deg,#5a7d28 0%,var(--blp-gs-ready-bg) 100%);border:1px solid rgba(190,238,17,.35)}[data-blp-enrich] .blp-gs-badge--partial,[data-blp-enrich] .blp-gs-badge--pending-recent{color:var(--blp-gs-partial)!important;background:linear-gradient(180deg,#6a5538 0%,var(--blp-gs-partial-bg) 100%);border:1px solid rgba(255,179,33,.35)}[data-blp-enrich] .blp-gs-badge--pending-old{color:var(--blp-gs-old)!important;background:linear-gradient(180deg,#6a3838 0%,var(--blp-gs-old-bg) 100%);border:1px solid rgba(254,202,202,.3)}[data-blp-enrich] .blp-gs-badge--release-today{color:var(--blp-gs-today)!important;background:linear-gradient(180deg,#355a78 0%,var(--blp-gs-today-bg) 100%);border:1px solid rgba(103,193,245,.35)}[data-blp-enrich] .blp-gs-badge--unknown,[data-blp-enrich] .blp-gs-badge--missing{color:var(--blp-gs-unknown)!important;background:linear-gradient(180deg,#4a5158 0%,var(--blp-gs-unknown-bg) 100%);border:1px solid rgba(176,174,172,.25)}[data-blp-enrich] .blp-gs-chips{display:flex;flex-wrap:wrap;gap:.3rem;justify-content:flex-end}@media(min-width:768px){[data-blp-enrich] .blp-gs-chips{justify-content:flex-start}}[data-blp-enrich] .blp-gs-chip{display:inline-flex;align-items:center;padding:.08em .45em;border-radius:3px;font-size:.72em;font-weight:600;line-height:1.4;white-space:nowrap}[data-blp-enrich] .blp-gs-chip--protection{background:#2a3644;color:#acb2b8}[data-blp-enrich] .blp-gs-chip--highlight{background:#6b1f1f;color:#ff6b6b;border:1px solid rgba(255,107,107,.35)}[data-blp-enrich] .blp-gs-chip--ready{background:var(--blp-gs-ready-bg);color:var(--blp-gs-ready)}[data-blp-enrich] .blp-gs-chip--partial,[data-blp-enrich] .blp-gs-chip--pending-recent{background:var(--blp-gs-partial-bg);color:var(--blp-gs-partial)}[data-blp-enrich] .blp-gs-chip--pending-old{background:var(--blp-gs-old-bg);color:var(--blp-gs-old)}[data-blp-enrich] .blp-gs-chip--release-today{background:var(--blp-gs-today-bg);color:var(--blp-gs-today)}[data-blp-enrich] .blp-gs-chip--unknown{background:var(--blp-gs-unknown-bg);color:var(--blp-gs-unknown)}[data-blp-enrich] .blp-gs-chip--aaa{background:linear-gradient(to bottom,#66c0f4 5%,#417a9b 95%);color:#fff;font-weight:700}[data-blp-enrich] .blp-empty{opacity:.55}[data-blp-enrich] .blp-skeleton{display:inline-block;height:.95em;border-radius:4px;vertical-align:middle;background:linear-gradient(90deg,var(--blp-skel) 0%,var(--blp-skel-shine) 45%,var(--blp-skel) 90%);background-size:200% 100%;animation:blp-shimmer 1.1s ease-in-out infinite}[data-blp-enrich] .blp-skeleton--sm{width:4.5rem}[data-blp-enrich] .blp-skeleton--md{width:8rem}[data-blp-enrich] .blp-skeleton--lg{width:12rem}[data-blp-enrich] .blp-skeleton--link{width:4.25rem;height:1.1em;margin-right:.35rem}@keyframes blp-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.blp-settings-backdrop{position:fixed;inset:0;z-index:1000000;display:flex;align-items:center;justify-content:center;padding:16px;background:#06080c9e;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;transition:opacity .2s ease}.blp-settings-backdrop.is-open{opacity:1}.blp-settings{--blp-settings-surface: #151921;--blp-settings-elevated: #1a202b;--blp-settings-inset: #0f1319;--blp-settings-row: rgba(255, 255, 255, .035);width:min(1040px,100%);max-height:min(90vh,1440px);display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(120% 80% at 100% -10%,rgba(61,184,154,.12),transparent 42%),var(--blp-settings-surface);color:var(--blp-text);border:1px solid rgba(255,255,255,.1);border-radius:16px;box-shadow:0 24px 64px #0000008c,inset 0 1px #ffffff0d;font:14px/1.45 system-ui,sans-serif;transform:translateY(12px) scale(.985);opacity:0;transition:transform .22s cubic-bezier(.22,1,.36,1),opacity .22s ease}.blp-settings-backdrop.is-open .blp-settings{transform:translateY(0) scale(1);opacity:1}.blp-settings__head{flex:0 0 auto;padding:20px 22px 12px}.blp-settings__tabs{position:relative;display:flex;flex:0 0 auto;gap:2px;padding:0 14px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-behavior:smooth;scroll-padding-inline:14px;border-bottom:1px solid var(--blp-border);background:#0000002e;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) transparent}.blp-settings__tabs::-webkit-scrollbar{height:4px}.blp-settings__tabs::-webkit-scrollbar-track{background:transparent;margin-inline:10px}.blp-settings__tabs::-webkit-scrollbar-thumb{background:#ffffff29;border-radius:999px}.blp-settings__tabs::-webkit-scrollbar-thumb:hover{background:#3db89a8c}.blp-settings__tab-ink{position:absolute;left:0;bottom:0;height:2px;width:0;border-radius:2px 2px 0 0;background:var(--blp-accent);box-shadow:0 0 12px #3db89a73;pointer-events:none;transition:transform .28s cubic-bezier(.22,1,.36,1),width .28s cubic-bezier(.22,1,.36,1);will-change:transform,width}.blp-settings__tab{flex:0 0 auto;appearance:none;position:relative;z-index:1;display:inline-flex;align-items:center;gap:7px;margin:0;padding:12px 14px 11px;border:0;background:transparent;color:var(--blp-muted);cursor:pointer;font:inherit;font-size:12.5px;font-weight:600;letter-spacing:.02em;white-space:nowrap;line-height:1.2;border-radius:10px 10px 0 0;transition:color .18s ease,background-color .18s ease}.blp-settings__tab-label{display:inline-block}.blp-settings__tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:2.4em;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1.35;border:1px solid transparent;transition:color .18s ease,background-color .18s ease,border-color .18s ease}.blp-settings__tab-badge--low{color:var(--blp-accent);background:#3db89a24;border-color:#3db89a47}.blp-settings__tab-badge--mid{color:var(--blp-gs-partial);background:#ffb32124;border-color:#ffb3214d}.blp-settings__tab-badge--high{color:#fecaca;background:#fecaca1f;border-color:#fecaca47}.blp-settings__tab.is-active .blp-settings__tab-badge--low{background:#3db89a38}.blp-settings__tab.is-active .blp-settings__tab-badge--mid{background:#ffb32138}.blp-settings__tab.is-active .blp-settings__tab-badge--high{background:#fecaca2e}.blp-settings__tab:hover{color:var(--blp-text);background:#ffffff0a}.blp-settings__tab.is-active{color:var(--blp-accent);background:#3db89a14}.blp-settings__tab:focus-visible{outline:2px solid rgba(61,184,154,.55);outline-offset:-2px}.blp-settings__body{flex:1 1 auto;min-height:0;overflow:auto;padding:16px 18px 18px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}.blp-settings__panel{animation:blp-settings-panel-in .24s cubic-bezier(.22,1,.36,1)}.blp-settings__panel[hidden]{display:none}@keyframes blp-settings-panel-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.blp-settings__foot{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:12px 16px;padding:12px 18px 14px;border-top:1px solid var(--blp-border);background:#00000029}.blp-settings h2{margin:0 0 4px;font-size:19px;font-weight:700;letter-spacing:-.01em}.blp-settings__sub{margin:0;color:var(--blp-muted);font-size:13px}.blp-settings-group{margin:0 0 22px}.blp-settings-group:last-child{margin-bottom:0}.blp-settings-group__head{margin:0 0 10px}.blp-settings-group__head h3,.blp-settings h3{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--blp-muted);font-weight:700}.blp-settings-group__head .blp-settings__intro,.blp-settings__intro{margin:5px 0 0;font-size:12.5px;line-height:1.45;color:var(--blp-muted)}.blp-settings-list{display:flex;flex-direction:column;margin:0 0 12px;padding:2px 0;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:var(--blp-settings-inset);box-shadow:inset 0 1px #ffffff08;overflow:hidden}.blp-settings-list:last-child{margin-bottom:0}.blp-settings-list--stack{gap:0;padding:12px 14px 14px}.blp-settings-list__actions{margin-top:4px}.blp-settings-backup{display:flex;flex-direction:column;gap:12px}.blp-settings-backup__item{display:flex;align-items:center;gap:14px}.blp-settings-backup__item .blp-btn{flex:0 0 auto;min-width:7.5rem}.blp-settings-backup__hint{margin:0;min-width:0;flex:1 1 auto}.blp-settings-list>.blp-toggle+.blp-toggle,.blp-settings-list>.blp-field+.blp-toggle,.blp-settings-list>.blp-toggle+.blp-field{border-top:1px solid rgba(255,255,255,.06)}.blp-field{margin:0;padding:12px 14px}.blp-settings-list--stack>.blp-field{padding:10px 0 0}.blp-field label{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:var(--blp-text)}.blp-field select,.blp-field input[type=number]{width:100%;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:var(--blp-settings-elevated);color:var(--blp-text);font:inherit;font-size:13px;transition:border-color .15s ease,box-shadow .15s ease}.blp-field select:hover,.blp-field input[type=number]:hover{border-color:#ffffff29}.blp-field select:focus,.blp-field input[type=number]:focus{outline:none;border-color:#3db89a8c;box-shadow:0 0 0 3px #3db89a29}.blp-hint{margin:6px 0 0;font-size:12px;line-height:1.4;color:var(--blp-muted)}.blp-btn{display:inline-flex;align-items:center;justify-content:center;margin-top:0;padding:9px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:var(--blp-settings-elevated);color:var(--blp-text);cursor:pointer;font:inherit;font-size:13px;font-weight:600;line-height:1.2;transition:border-color .15s ease,color .15s ease,background-color .15s ease,transform .12s ease}.blp-btn:hover{border-color:#3db89a73;color:var(--blp-accent);background:#3db89a14}.blp-btn:active{transform:scale(.98)}.blp-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0;padding:12px 14px;cursor:pointer;transition:background-color .15s ease}.blp-toggle:hover{background:var(--blp-settings-row)}.blp-toggle__text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 auto}.blp-toggle__label{font-size:13.5px;font-weight:600;color:var(--blp-text);line-height:1.3}.blp-toggle__hint{font-size:12px;line-height:1.4;color:var(--blp-muted)}.blp-switch{appearance:none;position:relative;flex:0 0 auto;width:44px;height:26px;margin:0;padding:0;border:0;border-radius:999px;background:#ffffff1f;box-shadow:inset 0 0 0 1px #ffffff0f;cursor:pointer;transition:background-color .2s ease,box-shadow .2s ease}.blp-switch:hover{background:#ffffff29}.blp-switch.is-on{background:var(--blp-accent);box-shadow:inset 0 0 0 1px #ffffff14,0 0 0 3px #3db89a24}.blp-switch:focus-visible{outline:2px solid rgba(61,184,154,.65);outline-offset:2px}.blp-switch__thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#f4f7f6;box-shadow:0 2px 6px #00000059;transition:transform .22s cubic-bezier(.22,1,.36,1)}.blp-switch.is-on .blp-switch__thumb{transform:translate(18px)}.blp-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:0}.blp-settings__foot .blp-actions{margin-top:0;margin-left:auto}.blp-settings__foot .blp-actions--start{margin-left:0}.blp-actions button{padding:9px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:var(--blp-settings-elevated, #1a202b);color:var(--blp-text);cursor:pointer;font:inherit;font-size:13px;font-weight:600;transition:border-color .15s ease,background-color .15s ease,transform .12s ease,filter .15s ease}.blp-actions button:hover{border-color:#ffffff2e}.blp-actions button:active{transform:scale(.98)}.blp-actions button.blp-primary{background:var(--blp-accent);border-color:transparent;color:#0b1210;font-weight:700}.blp-actions button.blp-primary:hover{filter:brightness(1.06);border-color:transparent}.blp-actions button.blp-danger,.blp-confirm-dialog .blp-btn.blp-danger{background:#c44b5a;border-color:transparent;color:#fff;font-weight:700}.blp-actions button.blp-danger:hover,.blp-confirm-dialog .blp-btn.blp-danger:hover{filter:brightness(1.08)}.blp-confirm-backdrop{position:fixed;inset:0;z-index:1000001;display:flex;align-items:center;justify-content:center;padding:1rem;background:#0000008c}.blp-confirm-dialog{width:min(420px,100%);background:#1a1d24;border:1px solid var(--blp-border);border-radius:8px;padding:1rem 1.1rem;color:var(--blp-text);box-shadow:0 12px 40px #00000073}.blp-confirm-dialog h3{margin:0 0 .35rem;font-size:1rem}.blp-confirm-dialog .blp-hint{margin:0 0 .85rem;color:var(--blp-muted);font-size:.78rem;line-height:1.4}.blp-confirm-dialog .blp-actions{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.blp-confirm-dialog .blp-btn{padding:9px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:var(--blp-settings-elevated, #1a202b);color:var(--blp-text);cursor:pointer;font:inherit;font-size:13px;font-weight:600}.blp-confirm-dialog .blp-btn:hover{border-color:#ffffff2e}.blp-confirm-dialog .blp-btn.blp-primary{background:var(--blp-accent);border-color:transparent;color:#0b1210;font-weight:700}.blp-export-backdrop .blp-btn.blp-primary,.blp-export-dialog .blp-actions button.blp-btn.blp-primary{background:var(--blp-accent, #3db89a);background-color:var(--blp-accent, #3db89a);border-color:transparent;color:#0b1210;font-weight:600}.blp-export-backdrop .blp-btn.blp-primary:hover,.blp-export-dialog .blp-actions button.blp-btn.blp-primary:hover{background:#48c9a8;background-color:#48c9a8;color:#0b1210;border-color:transparent}.blp-settings__ver{margin-left:.4em;padding:2px 7px;border-radius:999px;font-size:.68em;font-weight:600;color:var(--blp-muted);background:#ffffff0f;vertical-align:middle}.blp-settings__footer{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35em .5em;margin-top:0;font-size:12px;color:var(--blp-muted);min-width:0}.blp-settings__footer a{color:var(--blp-accent);text-decoration:none;font-weight:600}.blp-settings__footer a:hover{text-decoration:underline}.blp-about{display:flex;flex-direction:column;gap:12px}.blp-about__desc{margin:0;font-size:13.5px;line-height:1.55;color:var(--blp-text)}.blp-about__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.blp-about__chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--blp-muted);background:#ffffff0f;border:1px solid rgba(255,255,255,.08)}.blp-about__link,.blp-about__repo{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:var(--blp-settings-elevated, #1a202b);color:inherit;text-decoration:none;transition:border-color .15s ease,background-color .15s ease}.blp-about__link:hover,.blp-about__repo:hover{border-color:#3db89a66;background:#3db89a14}.blp-about__link-icon,.blp-about__repo-icon{flex:0 0 auto;width:16px;height:16px;border-radius:3px}.blp-about__link-text,.blp-about__repo-text{display:flex;flex-direction:column;gap:1px;min-width:0}.blp-about__link-label,.blp-about__repo-label{font-size:13px;font-weight:600;color:var(--blp-accent)}.blp-about__link-hint,.blp-about__repo-hint{font-size:11.5px;color:var(--blp-muted)}.blp-about__note{margin:10px 0 0;padding:10px 12px;border-radius:10px;border:1px solid rgba(61,184,154,.18);background:#3db89a12;font-size:12.5px;line-height:1.5;color:var(--blp-text)}.blp-about__note--contribute{border-color:#ffffff14;background:#ffffff09;color:var(--blp-muted)}.blp-about__author-label{margin:0 0 10px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--blp-muted)}.blp-about__people{display:flex;flex-direction:column;gap:12px}.blp-about__author-row{display:flex;align-items:center;gap:14px}.blp-about__avatar-link{flex:0 0 auto;line-height:0;border-radius:50%}.blp-about__avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;border:2px solid rgba(61,184,154,.35);background:#ffffff0f;box-shadow:0 0 0 3px #3db89a14}.blp-about__author-info{display:flex;flex-direction:column;gap:2px;min-width:0}.blp-about__name{font-size:15px;font-weight:700;color:var(--blp-text);text-decoration:none}.blp-about__name:hover{color:var(--blp-accent)}.blp-about__handle{font-size:12px;color:var(--blp-muted);font-variant-numeric:tabular-nums}.blp-about__email{margin-top:4px;font-size:12.5px;color:var(--blp-accent);text-decoration:none;word-break:break-all}.blp-about__email:hover{text-decoration:underline}@media(max-width:560px){.blp-settings__foot{flex-direction:column;align-items:stretch}.blp-settings__foot .blp-actions{margin-left:0;width:100%}.blp-settings__foot .blp-actions button{flex:1 1 auto}}@media(prefers-reduced-motion:reduce){.blp-settings-backdrop,.blp-settings,.blp-settings__tab-ink,.blp-settings__panel,.blp-switch,.blp-switch__thumb{transition:none!important;animation:none!important}.blp-settings-backdrop:not(.is-open) .blp-settings,.blp-settings-backdrop .blp-settings{transform:none}}.blp-cache-msg{margin-top:6px;font-size:12px;color:var(--blp-accent)}.blp-cache-meter{--blp-cache-game: #6ea8fe;--blp-cache-profiles: #c084fc;--blp-cache-translations: #fbbf24;--blp-cache-fx: #34d399;--blp-cache-system: #94a3b8;margin:0}.blp-cache-meter__head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.blp-cache-meter__pct{display:flex;flex-direction:column;gap:2px;min-width:0}.blp-cache-meter__pct-value{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.03em;line-height:1}.blp-cache-meter__pct-caption{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blp-muted)}.blp-cache-meter__pct--low .blp-cache-meter__pct-value{color:var(--blp-accent)}.blp-cache-meter__pct--mid .blp-cache-meter__pct-value{color:var(--blp-gs-partial)}.blp-cache-meter__pct--high .blp-cache-meter__pct-value{color:#fecaca}.blp-cache-meter__used-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 auto;padding-bottom:2px;text-align:right}.blp-cache-meter__used{font-size:12px;font-variant-numeric:tabular-nums;color:var(--blp-muted)}.blp-cache-meter__entries{font-size:11px;font-variant-numeric:tabular-nums;color:#9aa0a6d9}.blp-cache-meter__bar{display:flex;height:14px;border-radius:8px;overflow:hidden;background:#ffffff0d;border:1px solid var(--blp-border);box-shadow:inset 0 1px #ffffff0a}.blp-cache-meter__seg{display:block;height:100%;min-width:0;transition:width .22s ease}.blp-cache-meter__seg--game{background:linear-gradient(180deg,#8bbcff 0%,var(--blp-cache-game) 100%)}.blp-cache-meter__seg--profiles{background:linear-gradient(180deg,#d8b4fe 0%,var(--blp-cache-profiles) 100%)}.blp-cache-meter__seg--translations{background:linear-gradient(180deg,#fcd34d 0%,var(--blp-cache-translations) 100%)}.blp-cache-meter__seg--fx{background:linear-gradient(180deg,#6ee7b7 0%,var(--blp-cache-fx) 100%)}.blp-cache-meter__seg--system{background:linear-gradient(180deg,#cbd5e1 0%,var(--blp-cache-system) 100%)}.blp-cache-meter__seg--full{background:var(--blp-accent)}.blp-cache-meter__seg--partial{background:var(--blp-gs-partial)}.blp-cache-meter__seg--free{background:transparent}.blp-cache-meter__legend{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px;font-size:12px;color:var(--blp-muted);font-variant-numeric:tabular-nums}.blp-cache-meter__row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0}.blp-cache-meter__row.is-off{opacity:.55}.blp-cache-meter__row.is-off .blp-cache-meter__swatch{filter:grayscale(.7)}.blp-cache-meter__name{display:flex;align-items:center;gap:6px;min-width:0;color:var(--blp-text);font-weight:500}.blp-cache-meter__off{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--blp-gs-partial);border:1px solid rgba(255,179,33,.35);border-radius:4px;padding:1px 5px;line-height:1.3}.blp-cache-meter__meta{display:flex;align-items:baseline;gap:10px;flex:0 0 auto;white-space:nowrap}.blp-cache-meter__count{color:var(--blp-muted)}.blp-cache-meter__size{color:var(--blp-text);font-weight:600;min-width:4.5em;text-align:right}.blp-cache-meter__swatch{width:10px;height:10px;border-radius:3px;flex:0 0 auto;box-shadow:inset 0 0 0 1px #0003}.blp-cache-meter__swatch--game{background:var(--blp-cache-game)}.blp-cache-meter__swatch--profiles{background:var(--blp-cache-profiles)}.blp-cache-meter__swatch--translations{background:var(--blp-cache-translations)}.blp-cache-meter__swatch--fx{background:var(--blp-cache-fx)}.blp-cache-meter__swatch--system{background:var(--blp-cache-system)}.blp-cache-meter__swatch--full{background:var(--blp-accent)}.blp-cache-meter__swatch--partial{background:var(--blp-gs-partial)}.blp-cache-meter__swatch--free{background:#ffffff1f;border:1px solid var(--blp-border);box-shadow:none}.blp-cache-meter .blp-hint{margin-top:10px;margin-bottom:0}.blp-debug-panel{margin:1rem 0 1.25rem;padding:.75rem .85rem;border-radius:8px;border:1px dashed rgba(255,179,33,.45);background:#00000052;text-align:left;width:100%;max-width:100%;box-sizing:border-box}.blp-debug-panel__summary{display:flex;align-items:center;gap:.45rem;margin:0;cursor:pointer;list-style:none;user-select:none}.blp-debug-panel__summary::-webkit-details-marker{display:none}.blp-debug-panel__summary:before{content:"";width:.4rem;height:.4rem;border-right:2px solid #ffb321;border-bottom:2px solid #ffb321;transform:rotate(-45deg);transition:transform .15s ease;flex:0 0 auto;margin-top:-.1rem}.blp-debug-panel[open]>.blp-debug-panel__summary:before{transform:rotate(45deg);margin-top:0}.blp-debug-panel__body{margin-top:.55rem}.blp-debug-cache{position:relative;border-radius:4px;box-shadow:inset 0 0 0 1px #ffffff14}.blp-debug-cache--hit{background-image:repeating-linear-gradient(-45deg,transparent,transparent 5px,rgba(72,199,142,.14) 5px,rgba(72,199,142,.14) 10px)}.blp-debug-cache--miss{background-image:repeating-linear-gradient(-45deg,transparent,transparent 5px,rgba(255,160,40,.16) 5px,rgba(255,160,40,.16) 10px)}.blp-debug-cache--mixed{background-image:repeating-linear-gradient(-45deg,transparent,transparent 5px,rgba(120,170,255,.16) 5px,rgba(120,170,255,.16) 10px)}.blp-debug-cache--na{background-image:repeating-linear-gradient(-45deg,transparent,transparent 5px,rgba(255,255,255,.06) 5px,rgba(255,255,255,.06) 10px)}.blp-cache-badge{display:inline-block;margin-left:.45em;padding:.08em .42em;font-size:.62rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:3px;vertical-align:middle;line-height:1.3;white-space:nowrap}.blp-cache-badge--hit{color:#1a3d2c;background:#48c78e}.blp-cache-badge--miss{color:#3d2208;background:#ffb321}.blp-cache-badge--mixed{color:#12233f;background:#7aabff}.blp-cache-badge--na{color:#ffffffd9;background:#ffffff2e}.blp-similar.blp-debug-cache{padding:.35rem .45rem .55rem;margin-left:-.45rem;margin-right:-.45rem}.blp-debug-panel__title{margin:0;font-size:.85rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#ffb321}.blp-debug-panel__section{margin-bottom:.65rem}.blp-debug-panel__label{display:block;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#ffb321;margin-bottom:.25rem}.blp-debug-panel__reason{display:block;font-size:.82rem;color:var(--blp-text);margin-bottom:.35rem;word-break:break-word}.blp-debug-panel__sources{list-style:none;margin:0 0 .45rem;padding:0;display:flex;flex-direction:column;gap:.65rem}.blp-debug-panel__source-group{display:flex;flex-direction:column;gap:.35rem}.blp-debug-panel__source-group-title{font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#c9a227;margin:0}.blp-debug-panel__source-group-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.blp-debug-panel__source-group-list li{display:flex;flex-direction:column;gap:.12rem}.blp-debug-panel__source-group-list li.is-request{padding-left:.4rem;border-left:2px solid #ffb321}.blp-debug-panel__source-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .45rem;font-size:.78rem;line-height:1.35;color:var(--blp-text)}.blp-debug-panel__source-head strong{color:#ffb321;font-weight:700}.blp-debug-panel__source-badge{display:inline-block;flex-shrink:0;font-size:.62rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#1a1d24;background:#ffb321;padding:.08rem .32rem;border-radius:3px;line-height:1.2}.blp-debug-panel__source-purpose{color:var(--blp-muted);font-size:.74rem}.blp-debug-panel__sources a{color:#67c1f5!important;text-decoration:underline!important;word-break:break-all;font-size:.74rem;line-height:1.35}.blp-debug-panel__sources a:hover{color:#9ad4f8!important}.blp-debug-panel__meta{font-size:.75rem;color:var(--blp-muted);margin-bottom:.35rem}.blp-debug-panel__pre{margin:0;padding:.5rem .55rem;border-radius:5px;background:#0006;color:#b0aeac;font-size:.68rem;line-height:1.35;overflow:auto;max-height:28rem;white-space:pre-wrap;word-break:break-word}.blp-toast-host{position:fixed;z-index:1000010;right:16px;top:16px;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:10px;max-width:min(380px,calc(100vw - 32px));pointer-events:none}.blp-toast{--blp-toast-tone: #67c1f5;pointer-events:auto;position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:10px 12px;width:max-content;min-width:min(280px,100%);max-width:100%;padding:12px 12px 14px;overflow:hidden;border-radius:12px;border:1px solid color-mix(in srgb,var(--blp-toast-tone) 28%,var(--blp-border));background:linear-gradient(135deg,color-mix(in srgb,var(--blp-toast-tone) 14%,#151921),#151921 42%,#12161e);color:var(--blp-text);box-shadow:0 14px 36px #0000007a,inset 0 1px #ffffff0a;font:13px/1.4 system-ui,sans-serif;cursor:pointer;opacity:0;transform:translateY(-10px) scale(.98);transition:opacity .22s ease,transform .22s ease}.blp-toast.is-in{opacity:1;transform:translateY(0) scale(1)}.blp-toast.is-leaving{opacity:0;transform:translateY(-8px) scale(.98)}.blp-toast__icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin-top:1px;border-radius:8px;color:var(--blp-toast-tone);background:color-mix(in srgb,var(--blp-toast-tone) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--blp-toast-tone) 28%,transparent);flex:0 0 auto}.blp-toast__icon svg{width:16px;height:16px;display:block}.blp-toast__body{display:flex;flex-direction:column;gap:2px;min-width:0;padding-top:1px}.blp-toast__title{font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--blp-text);line-height:1.3}.blp-toast__text{font-size:12.5px;line-height:1.4;color:var(--blp-muted);word-break:break-word}.blp-toast__close{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin:-2px -2px 0 0;padding:0;border:0;border-radius:7px;background:transparent;color:var(--blp-muted);cursor:pointer;transition:color .15s ease,background .15s ease}.blp-toast__close svg{width:12px;height:12px;display:block}.blp-toast__close:hover,.blp-toast__close:focus-visible{color:var(--blp-text);background:#ffffff0f;outline:none}.blp-toast__progress{position:absolute;left:0;right:0;bottom:0;height:2px;transform-origin:left center;background:color-mix(in srgb,var(--blp-toast-tone) 75%,#fff);opacity:.85;animation:blp-toast-progress var(--blp-toast-ms, 4.2s) linear forwards}@keyframes blp-toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.blp-toast--success{--blp-toast-tone: var(--blp-accent)}.blp-toast--info{--blp-toast-tone: #67c1f5}.blp-toast--warning{--blp-toast-tone: #ffb321}.blp-toast--error{--blp-toast-tone: #f66777}@media(max-width:480px){.blp-toast-host{left:12px;right:12px;top:12px;align-items:stretch;max-width:none}.blp-toast{width:100%;min-width:0}}@media(prefers-reduced-motion:reduce){.blp-toast,.blp-toast.is-in,.blp-toast.is-leaving{transition:none;transform:none}.blp-toast__progress{animation:none;opacity:.35;transform:scaleX(1)}}.blp-translate-btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:.4em;margin:0;font:inherit;line-height:1.2;cursor:pointer;text-decoration:none;border:0;background:none;padding:0;color:inherit;transition:color .15s ease,background .15s ease,border-color .15s ease,opacity .15s ease,filter .15s ease}.blp-translate-btn__spin{flex:0 0 auto;width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--blp-accent, #3db89a) 35%,transparent);border-top-color:var(--blp-accent, #3db89a);animation:blp-translate-spin .65s linear infinite}.blp-translate-btn__label{white-space:nowrap}.blp-translate-btn:hover,.blp-translate-btn:focus-visible{outline:none}.blp-translate-btn.is-loading{cursor:wait;pointer-events:none}.blp-translate-btn--chip{opacity:1;padding:.28rem .75rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--blp-accent, #3db89a) 55%,transparent);background:color-mix(in srgb,var(--blp-accent, #3db89a) 16%,#1a1f24);color:var(--blp-accent, #3db89a);font-size:.8rem;font-weight:600;letter-spacing:.01em}.blp-translate-btn--chip:hover,.blp-translate-btn--chip:focus-visible{color:#0b1210;border-color:var(--blp-accent, #3db89a);background:var(--blp-accent, #3db89a)}.blp-translate-btn--chip:hover .blp-translate-btn__spin,.blp-translate-btn--chip:focus-visible .blp-translate-btn__spin{border-color:color-mix(in srgb,#0b1210 35%,transparent);border-top-color:#0b1210}.blp-translate-btn--chip.is-loading{opacity:.9;color:var(--blp-accent, #3db89a);background:color-mix(in srgb,var(--blp-accent, #3db89a) 16%,#1a1f24);border-color:color-mix(in srgb,var(--blp-accent, #3db89a) 55%,transparent)}.blp-translate-btn--review{font-size:.78rem;padding:.2rem .6rem}.blp-translate-btn--review .blp-translate-btn__spin{width:11px;height:11px}.blp-translate-desc-slot,.blp-translate-review-slot{display:flex;align-items:center}.blp-translate-desc-slot{padding-right:.35rem}.blp-translate-result{margin-top:.65rem;padding-top:.55rem;border-top:1px solid color-mix(in srgb,var(--blp-accent, #3db89a) 22%,transparent);opacity:.92;font-size:inherit;line-height:inherit;white-space:pre-wrap}.blp-translate-result--card{margin:0 0 .75rem;padding:.7rem .85rem .8rem;border:1px solid color-mix(in srgb,var(--blp-accent, #3db89a) 28%,transparent);border-radius:10px;background:color-mix(in srgb,var(--blp-accent, #3db89a) 10%,#1a1f24);box-shadow:0 1px color-mix(in srgb,#000 35%,transparent);opacity:0;transform:translateY(6px);white-space:normal;transition:opacity .28s ease,transform .28s ease}.blp-translate-result--card.is-in{opacity:1;transform:translateY(0)}.blp-translate-result__head{margin:0 0 .4rem;font-size:.72rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--blp-accent, #3db89a);opacity:.9}.blp-translate-result__body{font-size:inherit;line-height:1.45;color:var(--blp-text, #e8eaed);white-space:pre-wrap;opacity:.95}.review-card .blp-translate-result--card{margin-left:0;margin-right:0}@keyframes blp-translate-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.blp-translate-btn__spin{animation:none;border-color:var(--blp-accent, #3db89a);opacity:.55}.blp-translate-result--card{transition:none;opacity:1;transform:none}}.blp-unified-rating-row{margin-top:1rem;margin-bottom:.15rem}@media(min-width:768px){.blp-unified-rating-row{margin-top:.85rem}}.blp-unified-rating{position:relative;overflow:hidden;padding:.85rem 1rem .9rem!important;border:1px solid rgba(61,184,154,.32)!important;background:radial-gradient(110% 120% at 100% 0%,rgba(61,184,154,.14),transparent 52%),radial-gradient(90% 90% at 0% 100%,rgba(102,192,244,.08),transparent 48%),var(--back-container, #1a1d24)!important}.blp-unified-rating[data-grade=high]{border-color:#beee1166!important}.blp-unified-rating[data-grade=mid]{border-color:#3db89a61!important}.blp-unified-rating[data-grade=low]{border-color:#ff667752!important}.blp-unified-rating__layout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem 1.25rem;align-items:stretch;width:100%}@media(max-width:575.98px){.blp-unified-rating__layout{grid-template-columns:1fr;gap:.7rem}}.blp-unified-rating__score-block{display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:6.5rem;padding:.35rem .75rem;border-radius:10px;background:#00000038;border:1px solid rgba(255,255,255,.08);text-align:center;aspect-ratio:1 / 1}.blp-unified-rating__label{margin:0;font-size:.78rem;font-weight:700;color:var(--blp-muted, #9aa0a6);white-space:nowrap}.blp-unified-rating__num{margin:.1rem 0 0;font-size:clamp(2.4rem,4.5vw,3.1rem);font-weight:900;line-height:1;letter-spacing:-.04em;color:#fff;transition:color .35s ease;font-variant-numeric:tabular-nums}.blp-unified-rating__num.is-pulse{animation:blp-unified-num-pulse .5s cubic-bezier(.22,1,.36,1)}@keyframes blp-unified-num-pulse{0%{transform:scale(1);filter:brightness(1)}35%{transform:scale(1.07);filter:brightness(1.15)}to{transform:scale(1);filter:brightness(1)}}.blp-unified-rating[data-grade=high] .blp-unified-rating__num{color:#beee11}.blp-unified-rating[data-grade=mid] .blp-unified-rating__num{color:#7ee0c5}.blp-unified-rating[data-grade=low] .blp-unified-rating__num{color:#ff8a98}.blp-unified-rating__denom{margin-top:.15rem;font-size:.75rem;font-weight:700;color:var(--blp-muted, #9aa0a6)}.blp-unified-rating__main{display:flex;flex-direction:column;justify-content:space-between;min-width:0;gap:.55rem}.blp-unified-rating__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem .75rem}.blp-unified-rating__title{margin:0;font-size:1rem;font-weight:800;color:var(--blp-text, #e8eaed)}.blp-unified-rating__hint{margin:0;font-size:.75rem;color:var(--blp-muted, #9aa0a6)}.blp-unified-rating__meter{height:7px;border-radius:999px;background:#ffffff14;overflow:hidden}.blp-unified-rating__meter-fill{height:100%;width:0%;border-radius:999px;background:linear-gradient(90deg,#66c0f4,#3db89a 52%,#beee11);transform-origin:left center;transition:width .55s cubic-bezier(.22,1,.36,1),opacity .3s ease;will-change:width}.blp-unified-rating__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;width:100%}@media(max-width:575.98px){.blp-unified-rating__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.blp-unified-rating__cell{display:flex;flex-direction:column;justify-content:center;gap:.12rem;min-width:0;padding:.55rem .65rem;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#00000038;transition:opacity .3s ease,border-color .3s ease,transform .35s cubic-bezier(.22,1,.36,1)}.blp-unified-rating__cell.is-missing{opacity:.5}.blp-unified-rating__cell.is-loading{opacity:.85}.blp-unified-rating__cell.is-reveal{animation:blp-unified-cell-reveal .4s cubic-bezier(.22,1,.36,1)}@keyframes blp-unified-cell-reveal{0%{opacity:.45;transform:translateY(3px);border-color:#3db89a59}to{opacity:1;transform:none}}.blp-unified-rating__cell-label{font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--blp-muted, #9aa0a6)}.blp-unified-rating__cell-value{font-size:1.15rem;font-weight:800;line-height:1.15;color:#fff;font-variant-numeric:tabular-nums}.blp-unified-rating__cell-sub{font-size:.72rem;color:var(--blp-muted, #9aa0a6);min-height:.85rem}.blp-unified-rating .blp-skeleton{display:inline-block;border-radius:4px;vertical-align:middle;background:linear-gradient(90deg,var(--blp-skel, rgba(255, 255, 255, .08)) 0%,var(--blp-skel-shine, rgba(255, 255, 255, .16)) 45%,var(--blp-skel, rgba(255, 255, 255, .08)) 90%);background-size:200% 100%;animation:blp-shimmer 1.1s ease-in-out infinite}.blp-unified-rating.is-loading .blp-unified-rating__num,.blp-unified-rating__num.is-skel{display:flex;justify-content:center;align-items:center;min-height:2.8rem}.blp-unified-rating__skel-num{display:block;width:3.4rem;height:2.5rem;border-radius:8px}.blp-unified-rating__skel-denom{display:block;width:3.6rem;height:.7rem;margin:.2rem auto 0;border-radius:4px}.blp-unified-rating__skel-value{display:block;width:2.5rem;height:1.1rem;margin-top:.1rem;border-radius:4px}.blp-unified-rating__skel-sub{display:block;width:2rem;height:.65rem;margin-top:.15rem;border-radius:4px}.blp-unified-rating__meter--loading .blp-unified-rating__meter-fill{width:36%;opacity:.55;transition:none;animation:blp-unified-meter-indeterminate 1.35s ease-in-out infinite}@keyframes blp-unified-meter-indeterminate{0%{transform:translate(-120%)}to{transform:translate(320%)}}@media(prefers-reduced-motion:reduce){.blp-unified-rating__num.is-pulse,.blp-unified-rating__cell.is-reveal,.blp-unified-rating__meter--loading .blp-unified-rating__meter-fill,.blp-unified-rating .blp-skeleton{animation:none!important}.blp-unified-rating__meter-fill,.blp-unified-rating__num,.blp-unified-rating__cell{transition:none!important}}a[data-blp-ump]>img,a[data-blp-ump] img{outline:2px solid rgba(200,210,220,.42);outline-offset:2px;border-radius:6px;transition:outline-color .2s ease,outline-width .15s ease,box-shadow .2s ease}a[data-blp-ump][data-blp-ump-tier=rookie] img{outline-color:#8b9098;box-shadow:0 0 0 1px #8b909840}a[data-blp-ump][data-blp-ump-tier=bronze] img{outline-color:#c8843d;box-shadow:0 0 8px #c8843d59}a[data-blp-ump][data-blp-ump-tier=silver] img{outline-color:#c5ced8;box-shadow:0 0 8px #c5ced866}a[data-blp-ump][data-blp-ump-tier=gold] img{outline-color:#e6b735;box-shadow:0 0 10px #e6b73573}a[data-blp-ump][data-blp-ump-tier=platinum] img{outline-color:#9ad7e8;box-shadow:0 0 10px #9ad7e873}a[data-blp-ump][data-blp-ump-tier=diamond] img{outline-color:#6de0ff;box-shadow:0 0 12px #6de0ff80}a[data-blp-ump][data-blp-ump-tier=master] img{outline-color:#3ecf8e;box-shadow:0 0 12px #3ecf8e80}a[data-blp-ump][data-blp-ump-tier=legend] img{outline-color:#ffc14d;box-shadow:0 0 0 1px #ffc14d59,0 0 14px #ffa0288c}a[data-blp-profile-hover="1"] img{outline-width:3px;filter:brightness(1.06)}a[data-blp-ump-loading]{position:relative;isolation:isolate}a[data-blp-ump-loading] .overflow-wrapper{position:relative}a[data-blp-ump-loading]>img,a[data-blp-ump-loading] img{filter:brightness(.72)}.blp-ump-avatar-spin{position:absolute;z-index:4;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;border-radius:inherit}.blp-ump-avatar-spin:after{content:"";flex:0 0 auto;width:14px;height:14px;border-radius:50%;border:2px solid color-mix(in srgb,var(--blp-accent, #3db89a) 35%,transparent);border-top-color:var(--blp-accent, #3db89a);animation:blp-translate-spin .65s linear infinite}.blp-ump{position:fixed;z-index:1000005;width:min(304px,calc(100vw - 24px));pointer-events:none;opacity:0;transform:translate3d(0,14px,0) scale(.92);filter:drop-shadow(0 18px 40px rgba(0,0,0,.55)) blur(5px);transform-origin:center top;transition:opacity .3s cubic-bezier(.22,1,.36,1),transform .42s cubic-bezier(.16,1,.3,1),filter .34s ease;will-change:transform,opacity,filter}.blp-ump.is-open{pointer-events:auto;opacity:1;transform:translateZ(0) scale(1);filter:drop-shadow(0 22px 48px rgba(0,0,0,.58)) blur(0)}.blp-ump.is-leaving{pointer-events:none;opacity:0;transform:translate3d(0,10px,0) scale(.95);filter:drop-shadow(0 12px 28px rgba(0,0,0,.4)) blur(4px);transition:opacity .24s cubic-bezier(.4,0,.2,1),transform .28s cubic-bezier(.4,0,.2,1),filter .24s ease}.blp-ump.is-open .blp-ump__card{animation:blp-ump-card-in .48s cubic-bezier(.22,1,.36,1) both}.blp-ump.is-open .blp-ump__card>*:not(.blp-ump__shine):not(.blp-ump__foil){opacity:0;transform:translateY(10px);transition:opacity .36s cubic-bezier(.22,1,.36,1),transform .42s cubic-bezier(.16,1,.3,1)}.blp-ump.is-open.is-ready .blp-ump__card>*:not(.blp-ump__shine):not(.blp-ump__foil){opacity:1;transform:none}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(1){transition-delay:.02s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(2){transition-delay:.04s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(3){transition-delay:.05s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(4){transition-delay:.07s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(5){transition-delay:.09s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(6){transition-delay:.11s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(7){transition-delay:.13s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(8){transition-delay:.15s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(9){transition-delay:.17s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(10){transition-delay:.19s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(11){transition-delay:.21s}.blp-ump.is-open.is-ready .blp-ump__card>*:nth-child(12){transition-delay:.23s}.blp-ump.is-leaving .blp-ump__card{animation:blp-ump-card-out .26s cubic-bezier(.4,0,.2,1) both}.blp-ump.is-leaving .blp-ump__card>*:not(.blp-ump__shine):not(.blp-ump__foil){opacity:0;transform:translateY(6px);transition:opacity .18s ease,transform .2s ease;transition-delay:0s!important}@keyframes blp-ump-card-in{0%{opacity:.55;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}@keyframes blp-ump-card-out{to{opacity:.4;transform:translateY(6px) scale(.98)}}.blp-ump__card{--ump-ink: #f4efe6;--ump-muted: rgba(244, 239, 230, .72);--ump-bg0: #1a1714;--ump-bg1: #2a241c;--ump-accent: #9a8b78;--ump-edge: rgba(255, 220, 170, .28);--ump-glow: rgba(180, 140, 90, .2);position:relative;overflow:hidden;border-radius:18px;padding:14px 14px 12px;color:var(--ump-ink);background:radial-gradient(120% 80% at 50% -10%,var(--ump-glow),transparent 55%),linear-gradient(160deg,var(--ump-bg1),var(--ump-bg0) 58%,#0e0c0a);border:1px solid var(--ump-edge);box-shadow:inset 0 1px #ffffff1f,inset 0 -1px #00000059;font-family:Montserrat,Roboto,system-ui,sans-serif}.blp-ump__card:before{content:"";position:absolute;inset:5px;border-radius:13px;border:1px solid var(--ump-edge);pointer-events:none;opacity:.55}.blp-ump__shine,.blp-ump__foil{position:absolute;inset:0;pointer-events:none}.blp-ump__shine{background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.08) 48%,transparent 62%);transform:translate(-120%);animation:blp-ump-shine 4.8s ease-in-out infinite}.blp-ump__foil{opacity:0;mix-blend-mode:soft-light;background:repeating-linear-gradient(-18deg,rgba(255,255,255,.05) 0 2px,transparent 2px 7px),radial-gradient(circle at 30% 20%,rgba(255,255,255,.2),transparent 45%)}.blp-ump__top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;position:relative;z-index:1}.blp-ump__tier-pill{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#120e0a;background:linear-gradient(180deg,#fff6e8,var(--ump-accent));box-shadow:0 1px #ffffff59 inset}.blp-ump__avg{font-size:12px;font-weight:700;color:var(--ump-ink);opacity:.9}.blp-ump__avatar-link{display:block;width:fit-content;margin:0 auto 8px;position:relative;z-index:1}.blp-ump__avatar{width:88px;height:88px;border-radius:50%;overflow:hidden;margin:0 auto;border:3px solid var(--ump-accent);box-shadow:0 0 0 3px #00000059,0 10px 24px #00000059;background:#111}.blp-ump__avatar img{width:100%;height:100%;object-fit:cover;display:block}.blp-ump__avatar--skel{display:flex;align-items:center;justify-content:center;position:relative;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.08),transparent 42%),linear-gradient(110deg,#1a1612,#2e2820 40%,#3a3228,#2e2820 60%,#1a1612);background-size:100% 100%,220% 100%;animation:blp-ump-skel 1.35s ease-in-out infinite}.blp-ump__spinner--avatar{width:14px;height:14px;border-width:2px;position:relative;z-index:1;flex:0 0 auto}.blp-ump__bone{display:block;border-radius:6px;background:linear-gradient(110deg,#ffffff0d,#ffffff1f,#ffffff0d 90%);background-size:220% 100%;animation:blp-ump-skel 1.35s ease-in-out infinite}.blp-ump__bone--pill{width:72px;height:20px;border-radius:999px}.blp-ump__bone--avg{width:36px;height:14px;border-radius:4px;animation-delay:.08s}.blp-ump__bone--sub{width:48%;height:10px;margin:6px auto 12px;animation-delay:.12s;position:relative;z-index:1}.blp-ump__bone--stat-n{width:42%;height:15px;margin:0 auto 6px}.blp-ump__bone--stat-l{width:58%;height:8px;margin:0 auto;animation-delay:.1s}.blp-ump__bone--label{width:64px;height:9px;margin-bottom:8px;animation-delay:.16s}.blp-ump__stat--skel{display:flex;flex-direction:column;justify-content:center;min-height:44px}.blp-ump__name--skel{opacity:.85;letter-spacing:.02em}.blp-ump__bar--skel{opacity:.35;background:linear-gradient(180deg,#ffffff59,#ffffff14);animation:blp-ump-skel-bar 1.2s ease-in-out infinite;animation-delay:var(--d, 0s)}.blp-ump__cover--skel{flex:0 0 calc((100% - (var(--ump-slots) - 1) * var(--ump-gap)) / var(--ump-slots));width:calc((100% - (var(--ump-slots) - 1) * var(--ump-gap)) / var(--ump-slots));aspect-ratio:3 / 4;border-radius:6px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(110deg,#ffffff0a,#ffffff1f,#ffffff0a 90%);background-size:220% 100%;animation:blp-ump-skel 1.35s ease-in-out infinite;animation-delay:var(--d, 0s);pointer-events:none}.blp-ump__card.is-skeleton .blp-ump__status{display:block;width:100%;margin-top:4px;padding:8px 0 2px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;opacity:.75}.blp-ump__spinner{flex:0 0 auto;width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--blp-accent, #3db89a) 35%,transparent);border-top-color:var(--blp-accent, #3db89a);animation:blp-translate-spin .65s linear infinite}.blp-ump__card.is-skeleton .blp-ump__shine{animation-duration:2.4s}.blp-ump__name{display:block;text-align:center;font-size:18px;font-weight:800;letter-spacing:.01em;color:var(--ump-ink);text-decoration:none;position:relative;z-index:1;line-height:1.2}.blp-ump__name:hover{color:#fff;text-decoration:none}.blp-ump__tier-sub{text-align:center;font-size:11px;color:var(--ump-muted);margin:4px 0 12px;position:relative;z-index:1}.blp-ump__status{text-align:center;font-size:12px;color:var(--ump-muted);margin:8px 0 4px;position:relative;z-index:1}.blp-ump__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px;position:relative;z-index:1}.blp-ump__stat{text-align:center;padding:7px 4px;border-radius:10px;background:#00000047;border:1px solid rgba(255,255,255,.06)}.blp-ump__stat strong{display:block;font-size:16px;font-weight:800;line-height:1.1}.blp-ump__stat span{display:block;margin-top:3px;font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--ump-muted);line-height:1.2}.blp-ump__ratings{display:flex;align-items:flex-end;gap:3px;height:36px;margin:0 2px 10px;position:relative;z-index:1}.blp-ump__bar{flex:1;height:var(--h, 10%);min-height:4px;border-radius:3px 3px 1px 1px;background:linear-gradient(180deg,#fff,var(--ump-accent));opacity:.9}.blp-ump__bio{margin:0 0 10px;font-size:11px;line-height:1.4;color:var(--ump-muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;position:relative;z-index:1}.blp-ump__section{margin-bottom:10px;position:relative;z-index:1}.blp-ump__section-label{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ump-muted);margin-bottom:6px}.blp-ump__covers{--ump-slots: 5;--ump-gap: 5px;display:flex;gap:var(--ump-gap)}.blp-ump__cover{flex:0 0 calc((100% - (var(--ump-slots) - 1) * var(--ump-gap)) / var(--ump-slots));width:calc((100% - (var(--ump-slots) - 1) * var(--ump-gap)) / var(--ump-slots));max-width:calc((100% - (var(--ump-slots) - 1) * var(--ump-gap)) / var(--ump-slots));aspect-ratio:3 / 4;border-radius:6px;overflow:hidden;background:#0a0908;border:1px solid rgba(255,255,255,.1);transition:transform .15s ease,border-color .15s ease}.blp-ump__cover:hover{transform:translateY(-2px);border-color:var(--ump-accent)}.blp-ump__cover img,.blp-ump__cover-ph{width:100%;height:100%;object-fit:cover;display:block}.blp-ump__cover-ph{background:#2a241c}.blp-ump__badges{display:flex;flex-wrap:wrap;gap:6px}.blp-ump__badge{width:28px;height:28px;border-radius:8px;overflow:hidden;background:#00000040;border:1px solid rgba(255,255,255,.08);display:inline-flex;align-items:center;justify-content:center}.blp-ump__badge img{width:22px;height:22px;object-fit:contain}.blp-ump__cta{display:block;text-align:center;margin-top:4px;padding:8px 10px;border-radius:10px;font-size:12px;font-weight:700;text-decoration:none;color:#120e0a;background:linear-gradient(180deg,#fff4e4,var(--ump-accent));position:relative;z-index:1;transition:filter .15s ease,transform .15s ease}.blp-ump__cta:hover{filter:brightness(1.06);transform:translateY(-1px);color:#120e0a;text-decoration:none}.blp-ump__card--rookie{--ump-accent: #8b9098;--ump-bg0: #15171a;--ump-bg1: #23262b;--ump-edge: rgba(180, 190, 200, .22);--ump-glow: rgba(140, 150, 160, .16)}.blp-ump__card--bronze{--ump-accent: #c8843d;--ump-bg0: #1a120c;--ump-bg1: #3a2414;--ump-edge: rgba(210, 140, 70, .4);--ump-glow: rgba(200, 120, 50, .28)}.blp-ump__card--silver{--ump-accent: #c5ced8;--ump-bg0: #12151a;--ump-bg1: #2a313a;--ump-edge: rgba(210, 220, 230, .38);--ump-glow: rgba(190, 205, 220, .24);--ump-ink: #f2f5f8}.blp-ump__card--gold{--ump-accent: #e6b735;--ump-bg0: #1a1406;--ump-bg1: #3d2e0a;--ump-edge: rgba(240, 190, 60, .48);--ump-glow: rgba(230, 180, 40, .32)}.blp-ump__card--gold .blp-ump__foil{opacity:.35}.blp-ump__card--platinum{--ump-accent: #9ad7e8;--ump-bg0: #0c1418;--ump-bg1: #1b2c34;--ump-edge: rgba(160, 220, 235, .45);--ump-glow: rgba(120, 200, 220, .28);--ump-ink: #eef8fb}.blp-ump__card--platinum .blp-ump__foil{opacity:.42}.blp-ump__card--diamond{--ump-accent: #6de0ff;--ump-bg0: #071018;--ump-bg1: #123044;--ump-edge: rgba(110, 220, 255, .5);--ump-glow: rgba(80, 200, 255, .34);--ump-ink: #eaf9ff}.blp-ump__card--diamond .blp-ump__foil{opacity:.5;background:conic-gradient(from 120deg,rgba(255,255,255,.15),transparent 30%,rgba(120,220,255,.2),transparent 70%),repeating-linear-gradient(-18deg,rgba(255,255,255,.06) 0 2px,transparent 2px 7px)}.blp-ump__card--master{--ump-accent: #3ecf8e;--ump-bg0: #07140f;--ump-bg1: #123528;--ump-edge: rgba(70, 220, 150, .48);--ump-glow: rgba(50, 200, 130, .32);--ump-ink: #eafff4}.blp-ump__card--master .blp-ump__foil{opacity:.45}.blp-ump__card--legend{--ump-accent: #ffc14d;--ump-bg0: #100a05;--ump-bg1: #2a1808;--ump-edge: rgba(255, 190, 70, .55);--ump-glow: rgba(255, 160, 40, .36)}.blp-ump__card--legend .blp-ump__foil{opacity:.55;animation:blp-ump-foil 6s linear infinite;background:linear-gradient(110deg,#ff50502e,#ffc83c38,#50dca02e,#50a0ff33,#ff50502e);background-size:220% 220%}.blp-ump__card--legend .blp-ump__tier-pill{background:linear-gradient(90deg,#ffb347,#ffd76a,#ffe9a8,#ffb347);background-size:200% 100%;animation:blp-ump-legend-pill 2.8s linear infinite}.blp-ump__card.is-skeleton .blp-ump__name{opacity:.85}@keyframes blp-ump-skel-bar{0%,to{opacity:.28;transform:scaleY(.92)}50%{opacity:.55;transform:scaleY(1)}}@keyframes blp-ump-shine{0%,55%{transform:translate(-120%)}75%,to{transform:translate(120%)}}@keyframes blp-ump-foil{0%{background-position:0% 50%}to{background-position:100% 50%}}@keyframes blp-ump-legend-pill{0%{background-position:0% 50%}to{background-position:200% 50%}}@keyframes blp-ump-skel{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.blp-ump__spinner,.blp-ump-avatar-spin:after{animation:none!important;border-color:var(--blp-accent, #3db89a);opacity:.55}.blp-ump,.blp-ump.is-open,.blp-ump.is-leaving,.blp-ump.is-open .blp-ump__card,.blp-ump.is-open .blp-ump__card>*:not(.blp-ump__shine):not(.blp-ump__foil),.blp-ump.is-open.is-ready .blp-ump__card>*:not(.blp-ump__shine):not(.blp-ump__foil),.blp-ump.is-leaving .blp-ump__card,.blp-ump.is-leaving .blp-ump__card>*:not(.blp-ump__shine):not(.blp-ump__foil),.blp-ump__shine,.blp-ump__foil,.blp-ump__card--legend .blp-ump__tier-pill,.blp-ump__cover,.blp-ump__cta,.blp-ump__bone,.blp-ump__avatar--skel,.blp-ump__cover--skel,.blp-ump__bar--skel,.blp-ump-avatar-spin,.blp-profile-header,.blp-profile-avatar,.blp-profile-tier-chip__bar>span,#profile-favorites.blp-profile-favorites .game-cover{animation:none!important;transition:none!important;filter:none!important;transform:none!important}.blp-ump.is-open{opacity:1}.blp-ump:not(.is-open){opacity:0}.blp-ump__shine,.blp-ump__foil{opacity:.15}.blp-profile-header:before{animation:none!important}}#profile-header.blp-profile-header{--blp-tier: #8b9098;--blp-tier-soft: rgba(139, 144, 152, .18);--blp-tier-glow: rgba(139, 144, 152, .22);position:relative;border-radius:16px;padding:16px 16px 8px;margin-left:-8px;margin-right:-8px;overflow:hidden;isolation:isolate}#profile-header.blp-profile-header:before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(90% 120% at 8% 20%,var(--blp-tier-glow),transparent 55%),linear-gradient(135deg,var(--blp-tier-soft),transparent 48%);border:1px solid rgba(255,255,255,.12);box-shadow:inset 0 0 0 1px var(--blp-tier-soft);border-radius:inherit;pointer-events:none}#profile-header.blp-profile-header[data-blp-profile-tier=rookie]{--blp-tier: #8b9098;--blp-tier-soft: rgba(139, 144, 152, .14);--blp-tier-glow: rgba(139, 144, 152, .2)}#profile-header.blp-profile-header[data-blp-profile-tier=bronze]{--blp-tier: #c8843d;--blp-tier-soft: rgba(200, 132, 61, .16);--blp-tier-glow: rgba(200, 132, 61, .28)}#profile-header.blp-profile-header[data-blp-profile-tier=silver]{--blp-tier: #c5ced8;--blp-tier-soft: rgba(197, 206, 216, .16);--blp-tier-glow: rgba(197, 206, 216, .28)}#profile-header.blp-profile-header[data-blp-profile-tier=gold]{--blp-tier: #e6b735;--blp-tier-soft: rgba(230, 183, 53, .18);--blp-tier-glow: rgba(230, 183, 53, .32)}#profile-header.blp-profile-header[data-blp-profile-tier=platinum]{--blp-tier: #9ad7e8;--blp-tier-soft: rgba(154, 215, 232, .16);--blp-tier-glow: rgba(154, 215, 232, .3)}#profile-header.blp-profile-header[data-blp-profile-tier=diamond]{--blp-tier: #6de0ff;--blp-tier-soft: rgba(109, 224, 255, .16);--blp-tier-glow: rgba(109, 224, 255, .34)}#profile-header.blp-profile-header[data-blp-profile-tier=master]{--blp-tier: #3ecf8e;--blp-tier-soft: rgba(62, 207, 142, .16);--blp-tier-glow: rgba(62, 207, 142, .32)}#profile-header.blp-profile-header[data-blp-profile-tier=legend]{--blp-tier: #ffc14d;--blp-tier-soft: rgba(255, 193, 77, .18);--blp-tier-glow: rgba(255, 160, 40, .36)}#profile-header.blp-profile-header[data-blp-profile-tier=legend]:before{background:radial-gradient(90% 120% at 8% 20%,var(--blp-tier-glow),transparent 55%),linear-gradient(120deg,#ff78501f,#ffc84624,#50c8a01a,#ff78501f);background-size:100% 100%,220% 220%;animation:blp-profile-legend-wash 8s linear infinite}.blp-profile-avatar{box-shadow:0 0 0 3px var(--blp-tier),0 10px 28px var(--blp-tier-glow);border-radius:8px}.blp-profile-avatar img{border-radius:6px}.blp-profile-tier-chip{display:flex;align-items:center;gap:10px;min-width:0;max-width:min(280px,55vw)}.blp-profile-tier-chip__pill{flex:0 0 auto;padding:5px 10px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#120e0a;background:linear-gradient(180deg,#fff6e8,var(--blp-tier));box-shadow:0 1px #ffffff59 inset;white-space:nowrap}.blp-profile-tier-chip__body{min-width:0;flex:1}.blp-profile-tier-chip__played{font-size:12px;font-weight:650;line-height:1.2;color:inherit;opacity:.92}.blp-profile-tier-chip__next{margin-top:2px;font-size:11px;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.blp-profile-tier-chip__bar{margin-top:6px;height:4px;border-radius:999px;background:#7f7f7f38;overflow:hidden}.blp-profile-tier-chip__bar>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blp-tier),#fff4d8);transition:width .45s cubic-bezier(.22,1,.36,1)}#profile-nav.blp-profile-nav a.current .selected-bar{background:var(--blp-tier, currentColor)!important;box-shadow:0 0 10px var(--blp-tier-glow, transparent)}#profile-stats.blp-profile-stats{position:relative;border-radius:14px;padding:10px 6px 4px;background:linear-gradient(180deg,var(--blp-tier-soft, transparent),transparent 70%);border:1px solid rgba(255,255,255,.1)}#profile-stats.blp-profile-stats h1{color:var(--blp-tier, inherit);text-shadow:0 0 18px var(--blp-tier-glow, transparent)}#profile-nav-row.blp-profile-nav-row{margin-top:1rem!important}#profile-nav.blp-profile-nav{align-items:center;gap:2px;padding:6px 8px!important;border-radius:14px;background:linear-gradient(180deg,var(--blp-tier-soft),transparent 80%),#00000038;border:1px solid rgba(255,255,255,.1);box-shadow:inset 0 1px #ffffff0f,0 8px 24px #0000002e}#profile-nav.blp-profile-nav>.col-auto{padding-left:2px!important;padding-right:2px!important}#profile-nav.blp-profile-nav a.d-inline{display:inline-flex!important;align-items:center;position:relative;padding:7px 11px;border-radius:10px;font-weight:600;letter-spacing:.01em;text-decoration:none!important;color:inherit;opacity:.72;transition:background .18s ease,color .18s ease,opacity .18s ease,box-shadow .18s ease}#profile-nav.blp-profile-nav a.d-inline:hover{opacity:1;background:#ffffff0f}#profile-nav.blp-profile-nav a.d-inline.current{opacity:1;color:#120e0a;background:linear-gradient(180deg,#fff6e8,var(--blp-tier));box-shadow:0 1px #ffffff59 inset,0 6px 16px var(--blp-tier-glow)}#profile-nav.blp-profile-nav a .selected-bar{display:none!important}h2.blp-profile-fav-title{display:inline-flex;align-items:center;gap:10px;letter-spacing:.02em}h2.blp-profile-fav-title:after{content:"";display:inline-block;width:42px;height:3px;border-radius:999px;background:linear-gradient(90deg,var(--blp-tier),transparent);box-shadow:0 0 12px var(--blp-tier-glow)}#profile-favorites.blp-profile-favorites{position:relative;padding:10px 6px 4px;margin-left:0!important;margin-right:0!important;border-radius:16px;background:radial-gradient(80% 90% at 50% 0%,var(--blp-tier-soft),transparent 60%);border:1px solid rgba(255,255,255,.08)}#profile-favorites.blp-profile-favorites .game-cover{position:relative;border-radius:8px;box-shadow:0 0 0 2px #ffffff14,0 0 0 3px var(--blp-tier),0 10px 22px #00000059,0 0 18px var(--blp-tier-glow);transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s ease}#profile-favorites.blp-profile-favorites .game-cover:hover{transform:translateY(-5px);box-shadow:0 0 0 2px #ffffff24,0 0 0 3px var(--blp-tier),0 16px 30px #0000006b,0 0 26px var(--blp-tier-glow)}#profile-favorites.blp-profile-favorites .game-cover .overflow-wrapper{border-radius:6px;overflow:hidden}#profile-favorites.blp-profile-favorites .game-cover[data-blp-fav-rank]:before{content:attr(data-blp-fav-rank);position:absolute;z-index:5;top:6px;left:6px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;letter-spacing:.02em;color:#120e0a;background:linear-gradient(180deg,#fff6e8,var(--blp-tier));box-shadow:0 1px #ffffff59 inset,0 4px 10px #00000059;pointer-events:none}#profile-favorites.blp-profile-favorites .game-cover[data-blp-fav-rank="1"]{box-shadow:0 0 0 2px #fff3,0 0 0 3px var(--blp-tier),0 0 0 6px #ffd77838,0 12px 26px #0006,0 0 28px var(--blp-tier-glow)}#profile-favorites.blp-profile-favorites .game-cover[data-blp-fav-rank="1"]:before{content:"\u2605 1";min-width:28px}html[data-blp-profile-tier=legend] #profile-favorites.blp-profile-favorites .game-cover{animation:blp-profile-fav-foil 7s linear infinite}@keyframes blp-profile-fav-foil{0%,to{filter:saturate(1)}50%{filter:saturate(1.15) brightness(1.04)}}html[data-blp-profile-tier]{--blp-tier: #8b9098;--blp-tier-soft: rgba(139, 144, 152, .14);--blp-tier-glow: rgba(139, 144, 152, .2)}html[data-blp-profile-tier=bronze]{--blp-tier: #c8843d;--blp-tier-soft: rgba(200, 132, 61, .16);--blp-tier-glow: rgba(200, 132, 61, .28)}html[data-blp-profile-tier=silver]{--blp-tier: #c5ced8;--blp-tier-soft: rgba(197, 206, 216, .16);--blp-tier-glow: rgba(197, 206, 216, .28)}html[data-blp-profile-tier=gold]{--blp-tier: #e6b735;--blp-tier-soft: rgba(230, 183, 53, .18);--blp-tier-glow: rgba(230, 183, 53, .32)}html[data-blp-profile-tier=platinum]{--blp-tier: #9ad7e8;--blp-tier-soft: rgba(154, 215, 232, .16);--blp-tier-glow: rgba(154, 215, 232, .3)}html[data-blp-profile-tier=diamond]{--blp-tier: #6de0ff;--blp-tier-soft: rgba(109, 224, 255, .16);--blp-tier-glow: rgba(109, 224, 255, .34)}html[data-blp-profile-tier=master]{--blp-tier: #3ecf8e;--blp-tier-soft: rgba(62, 207, 142, .16);--blp-tier-glow: rgba(62, 207, 142, .32)}html[data-blp-profile-tier=legend]{--blp-tier: #ffc14d;--blp-tier-soft: rgba(255, 193, 77, .18);--blp-tier-glow: rgba(255, 160, 40, .36)}@keyframes blp-profile-legend-wash{0%{background-position:0% 50%,0% 50%}to{background-position:0% 50%,100% 50%}}@media(max-width:575.98px){#profile-header.blp-profile-header{padding:12px 10px 6px;margin-left:0;margin-right:0}.blp-profile-tier-chip{max-width:100%;margin-top:6px}} ');

(function () {
	'use strict';

	var e=(()=>"undefined"!=typeof GM_getValue?GM_getValue:void 0)(),t=(()=>"undefined"!=typeof GM_registerMenuCommand?GM_registerMenuCommand:void 0)(),a=(()=>"undefined"!=typeof GM_setValue?GM_setValue:void 0)(),n=(()=>"undefined"!=typeof GM_xmlhttpRequest?GM_xmlhttpRequest:void 0)(),r=(()=>"undefined"!=typeof unsafeWindow?unsafeWindow:void 0)();const i=[{name:"Nikitamce",handle:"Nikitamce",url:"https://github.com/Nikitamce",avatarUrl:"https://avatars.githubusercontent.com/u/187407575?s=96&v=4"}],o="0.7.82",s="blp_settings",l="blp_cache_v1",c="blp_cache_script_version",u="blp_steam_overrides",d="data-blp-root",p="data-blp-enrich",m="data-blp-steamdb",g="data-blp-similar",h="data-blp-card",b="data-blp-card-state",f="data-blp-card-appid",S="data-blp-card-slug",v="data-blp-card-title",w="https://www.google.com/s2/favicons?domain={domain}&sz=32",y=[{id:"rookie",min:0},{id:"bronze",min:25},{id:"silver",min:50},{id:"gold",min:100},{id:"platinum",min:200},{id:"diamond",min:300},{id:"master",min:500},{id:"legend",min:1e3}],k=5242880,C="https://store.steampowered.com/api/appdetails",P="https://store.steampowered.com/dynamicstore/userdata/",B="https://store.steampowered.com/tagdata/populartags/english",x="https://api.steampowered.com/IStoreBrowseService/GetItems/v1/",D="https://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/",T="https://api.opencritic.com/api",H="https://opencritic.com",A="https://howlongtobeat.com",G=`${A}/api/bleed/init`,L=`${A}/api/bleed`,_="https://isthereanydeal.com",M="https://gameslike.co",$="https://shared.fastly.steamstatic.com/store_item_assets",I="https://steamdb.info",E=`${I}/app`,R="https://gamestatus.info",F="steam:userdata",O="steam:tagmap:english",N=6048e5,z=/^(https?-)?(store-)?steam(powered|static)?(-[a-z0-9]+)*(-com)?$|steampowered|steamstatic|akamaihd|^(on-)?wishlist$|^gamestatus$|^(soon-)?on-game-pass$/,U=["igdb","steam","steamdb","metacritic","opencritic","hltb","pcgamingwiki","itad","gogdb","gameslike"],q={igdb:"igdb.com",steam:"store.steampowered.com",steamdb:"steamdb.info",metacritic:"metacritic.com",opencritic:"opencritic.com",hltb:"howlongtobeat.com",pcgamingwiki:"pcgamingwiki.com",itad:"isthereanydeal.com",gogdb:"gogdb.org",gameslike:"gameslike.co"},j=["US","GB","DE","FR","RU","KZ","BR","JP","KR","CN","AU","CA","PL","ES","IT","TR","UA"],W={cacheHours:12,cacheGameData:true,cacheUserProfiles:true,cacheTranslations:true,cacheFx:true,uiLocale:"auto",steamCountry:"US",showPriceConvert:false,convertCurrency:"RUB",showSteam:true,showMetacritic:true,showOpenCritic:true,showHltb:true,showDeckProton:true,showGameStatus:true,showLinks:true,showSteamOwned:true,showSteamWishlist:true,showSteamTags:true,showSteamCategories:true,showSteamPageLink:true,showSteamDbPageLink:true,showSteamDbIcon:true,showSteamDbCover:true,showSteamDbGallery:true,showSimilarGames:true,showGameStats:true,showSteamPlayers:true,showSteamDbDetails:true,showCardBadges:true,showCardBadgePrice:true,showCardBadgeReview:true,showCardBadgeOwned:true,showCardBadgeWishlist:true,showCardBadgeGameStatus:true,showExport:false,showGameId:false,showTranslate:true,translateTargetLocale:"auto",translateDisplayMode:"replace",translateDescription:true,translateReviews:true,translateReviewsAuto:false,hideHomepageFuse:true,enhanceHeader:false,showUserMiniProfile:true,preloadUserMiniProfile:false,showProfilePage:true,showProfileHeader:true,showProfileTierChip:true,showProfileStats:true,showProfileNav:true,showProfileFavorites:true,showProfileMenuSettings:false,debugMode:false,links:{igdb:true,steam:true,steamdb:true,metacritic:true,opencritic:true,hltb:true,pcgamingwiki:true,itad:true,gogdb:true,gameslike:true}},J={en:{menuSettings:"Backloggd Plus — Settings",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · scores · Deck/Proton · HLTB · list badges · links",close:"Close",cancel:"Cancel",save:"Save",saveReload:"Save & Reload page",resetSettings:"Reset",resetSettingsConfirmTitle:"Reset settings?",resetSettingsConfirm:"All preferences will be restored to defaults. The page will reload. Your lookup cache is not cleared.",resetSettingsConfirmAction:"Reset",toastSettingsResetTitle:"Settings reset",toastSettingsReset:"Defaults restored. The page will reload.",repoLink:"GitHub",repoAbout:"Source code, updates, and issue reports",sectionGame:"Game page",sectionLists:"Game card",sectionListsHint:"Badges on cover cards in browse, search, journal, and Similar games.",sectionGeneral:"General",sectionProfile:"Profile",sectionUi:"UI",generalGroupLanguage:"Language",generalGroupLanguageHint:"Language of Plus menus, settings, and toasts.",generalGroupInterface:"Interface",generalGroupInterfaceHint:"Optional chrome tweaks on Backloggd pages.",generalGroupBackup:"Backup",generalGroupBackupHint:"Export or restore your Plus preferences. Lookup cache is not included.",settingsExport:"Export",settingsExportHint:"Download a JSON file with your current settings.",settingsImport:"Import",settingsImportHint:"Restore settings from a previously exported JSON file.",settingsImportConfirmTitle:"Import settings?",settingsImportConfirm:"Your current preferences will be replaced. The page will reload. Lookup cache is not changed.",settingsImportConfirmAction:"Import",toastSettingsExportedTitle:"Settings exported",toastSettingsExported:"Backup file downloaded.",toastSettingsExportFailedTitle:"Export failed",toastSettingsExportFailed:"Could not create the backup file.",toastSettingsImportedTitle:"Settings imported",toastSettingsImported:"Preferences restored. The page will reload.",toastSettingsImportFailedTitle:"Import failed",toastSettingsImportInvalid:"That file is not a valid settings backup.",toastSettingsImportEmpty:"No settings were found in that file.",toastSettingsImportTooLarge:"File is too large to import.",toastSettingsImportReadFailed:"Could not read that file.",profileGroupHover:"Hover cards",profileGroupHoverHint:"Brief mini profile when hovering user avatars.",profileGroupPage:"Profile page",profileGroupPageHint:"Tier chrome on /u/… profile pages (same ranks as hover cards).",profileGroupBlocks:"Page blocks",profileGroupBlocksHint:"Which parts of the profile page get tier styling when enhancement is on.",sectionCache:"Cache",sectionDebug:"Debug",sectionAbout:"About",sectionTranslate:"Translation",aboutDescription:"Backloggd Plus is a userscript that enriches Backloggd with Steam data, scores, Deck/Proton, HLTB, GameStatus, cover badges, screenshots, similar games, and quality-of-life tools. It also adds a Backloggd button on Steam and SteamDB app pages.",aboutLicense:"MIT License",aboutRepo:"GitHub repository",aboutAuthor:"Author",aboutContributors:"Contributors",aboutContributorsThanks:"Thank you to everyone who helps improve Backloggd Plus.",aboutBackloggd:"Backloggd profile",aboutBackloggdHint:"@{user} on Backloggd",aboutBackloggdNote:"Feel free to add me as a friend, say hello, or share feedback — always happy to chat.",aboutContribute:"Contribute",aboutContributeHint:"Open source — anyone can help make Backloggd better.",aboutContributeBody:"Ideas, bug reports, translations, and pull requests are all welcome. Every contribution helps the community.",aboutContributeCta:"Open the repository",aboutContributeCtaHint:"Issues, PRs, and discussions on GitHub",enhanceHeader:"Floating header",enhanceHeaderHint:"Sticky glass navbar that floats over the page and tightens slightly while scrolling.",hideHomepageFuse:"Hide Fuse ad slots",hideHomepageFuseHint:"Hides empty Fuse / incontent ad rows (homepage, game reviews, etc.).",showUserMiniProfile:"User mini-profile cards",showUserMiniProfileHint:"Brief mini profile on avatar hover. Tier grows with games played (25+ bronze … 1000+ legend).",preloadUserMiniProfile:"Preload in viewport",preloadUserMiniProfileHint:"Fetch mini-profile data for avatars as they enter the viewport so hover cards open instantly.",showProfilePage:"Enhance profile page",showProfilePageHint:"Applies tier styling to the profile page. Turn off individual blocks below as needed.",showProfileHeader:"Header & avatar",showProfileHeaderHint:"Tier wash behind the header and a colored avatar frame.",showProfileTierChip:"Tier chip",showProfileTierChipHint:"Rank pill next to the username with progress to the next tier.",showProfileStats:"Stats row",showProfileStatsHint:"Tier accent on Games Played / Backlog / This Year stats.",showProfileNav:"Profile navigation",showProfileNavHint:"Profile / Games / … tabs as a tier-tinted pill bar.",showProfileFavorites:"Favorite games",showProfileFavoritesHint:"Rank frames and hover lift on Favorite Games covers.",showProfileMenuSettings:"Plus settings in profile menu",showProfileMenuSettingsHint:"Adds a Plus entry to the account dropdown (next to Settings) and hides the header Plus button.",miniProfilePlayed:"Played",miniProfileBacklog:"Backlog",miniProfileThisYear:"This year",miniProfileFavorites:"Favorites",miniProfileRecent:"Recent",miniProfileBadges:"Badges",miniProfileAvgRating:"Average rating",miniProfileViewProfile:"View profile",miniProfileLoading:"Loading profile…",miniProfileError:"Could not load profile",miniProfileTierSub:"{count} games played",miniProfileTierRookie:"Rookie",miniProfileTierBronze:"Bronze",miniProfileTierSilver:"Silver",miniProfileTierGold:"Gold",miniProfileTierPlatinum:"Platinum",miniProfileTierDiamond:"Diamond",miniProfileTierMaster:"Master",miniProfileTierLegend:"Legend",profileTierProgress:"{n} to {tier}",profileTierMax:"Max tier",debugMode:"Debug mode",debugModeHint:"Show one debug panel on the game page with sources and a full response dump. Enrichment rows get a hatch + Cache/Network badge.",debugCacheHit:"Cache",debugCacheMiss:"Network",debugCacheMixed:"Mixed",debugCacheNa:"Derived",debugReason:"Reason",debugResponse:"Response",debugPanelTitle:"Debug",debugSources:"Sources",debugDump:"Full dump",debugSectionPage:"Page",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / players",debugSectionGameStatus:"GameStatus",debugOwned:"Owned",debugSrcRequest:"request",debugSrcBackloggd:"Current Backloggd game page",debugSrcIgdb:"Game slug / Links row (IGDB)",debugSrcMetacritic:"Links row — Metacritic URL (slug guess)",debugSrcSteamStore:"Steam store page — Links row + Steam row link",debugSrcSteamDb:"Links row — SteamDB app page",debugSrcSteamDbCharts:"SteamDB charts (reference; not scraped)",debugSrcSteamDbInfo:"SteamDB info (reference; not scraped)",debugSrcSteamTiny:"Tiny capsule — icon fallback",debugSrcSteamHeader:"Header image from appdetails",debugSrcSteamSearch:"storesearch — resolve Steam App ID",debugSrcSteamDetails:"appdetails — price, free, Metacritic, header",debugSrcSteamReviews:"appreviews — review summary for Steam row",debugSrcSteamTags:"GetItems — popular tags for Steam row",debugSrcSteamTagMap:"populartags — tag id → name map",debugSrcSteamOwned:"dynamicstore/userdata — owned library check",debugSrcSteamDbPage:"SteamDB HTML scrape — icon, logo, players",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — players fallback",debugSrcIcon:"Title icon (SteamDB / CDN)",debugSrcLogo:"Cover logo under Change cover",debugSrcGameStatusApi:"GameStatus API — status",debugSrcGameStatusPage:"GameStatus site page for matched slug",uiLanguage:"Interface language",uiLanguageHint:"Auto follows your browser language. Saved choice applies after reload.",uiLanguageAuto:"Auto (browser)",steamCountry:"Steam store region",steamCountryHint:"Affects price currency from the Steam Store API.",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Show Steam price & reviews",showMetacritic:"Show Metacritic score",showOpenCritic:"Show OpenCritic score",showOpenCriticHint:"OpenCritic tier badge (searched by title).",showHltb:"Show HowLongToBeat times",showHltbHint:"Main / Extra / Complete hours from HowLongToBeat.",showDeckProton:"Show Steam Deck & ProtonDB",showDeckProtonHint:"Steam Deck Verified/Playable plus ProtonDB tier (needs a Steam App ID).",showGameStatus:"Show GameStatus",showGameStatusHint:"Status from GameStatus.info (needs a Steam match).",showLinks:"Show quick links row",showSteamOwned:"Show Steam owned status",showSteamOwnedHint:"Shows “Owned” when the game is in your Steam library. Requires being logged into Steam in this browser.",showSteamWishlist:"Show Steam wishlist status",showSteamWishlistHint:"Shows “Wishlist” when the game is on your Steam wishlist (hidden if already owned). Requires Steam login in this browser.",showSteamTags:"Show Steam tags",showSteamTagsHint:"Popular community tags from the Steam store (Open World, RPG, …).",showSteamCategories:"Show Steam categories",showSteamCategoriesHint:"Store categories from Steam app details (Single-player, Multi-player, Steam Achievements, …).",showSteamPageLink:"Show Backloggd button on Steam",showSteamPageLinkHint:"Adds a SteamDB-style button in Other site info on Steam app pages.",showSteamDbPageLink:"Show Backloggd button on SteamDB",showSteamDbPageLinkHint:"Adds a Backloggd button next to Store / IGDB in SteamDB app links.",showSteamDbIcon:"Show SteamDB icon before title",showSteamDbIconHint:"App icon from Steam store assets (community_icon), same CDN as SteamDB.",showSteamDbCover:"Show SteamDB logo under Change cover",showSteamDbCoverHint:"Steam header image under the cover / Change cover control.",showSteamDbGallery:"Show Steam screenshots gallery",showSteamDbGalleryHint:"Horizontal screenshot strip after game stats (Steam store assets, same as SteamDB). Click to enlarge.",steamGalleryTitle:"Screenshots",steamGalleryOpen:"Open screenshot",steamGalleryClose:"Close",steamGalleryPrev:"Previous",steamGalleryNext:"Next",showSimilarGames:"Show similar games",showSimilarGamesHint:"Horizontal similar-games strip under screenshots (Steam More Like This + tag match %). Cards link to Backloggd.",similarGamesTitle:"Similar games",similarGamesMatch:"Match",similarGamesOpenSteam:"Open on Steam",showGameStats:"Show game stats block",showGameStatsHint:"Native Backloggd Plays / Playing / Backlogs / Wishlists / Ratings strip (#game-stats).",viewerZoomIn:"Zoom in",viewerZoomOut:"Zoom out",viewerZoomReset:"Reset zoom",viewerOf:"{current} / {total}",viewerOpenCover:"Open cover",showSteamPlayers:"Show online players",showSteamPlayersHint:"Current players from Steam GetNumberOfCurrentPlayers.",showSteamDbDetails:"Show SteamDB details",showSteamDbDetailsHint:"One SteamDB row: franchise and systems from Steam; technologies and last record update from SteamDB when reachable.",showExport:"Show export button",showExportHint:"Adds an Export control on game pages and in the log editor (CSV / Markdown / JSON for Notion). Off by default.",showGameId:"Show game ID",showGameIdHint:"Shows the Backloggd game ID (#…) after the title. Click to copy the numeric ID.",gameIdCopyLabel:"Copy game ID",showTranslate:"Enable translation",showTranslateHint:"Show Translate buttons on game descriptions and reviews (Google Translate).",translateTargetLocale:"Target language",translateTargetLocaleHint:"Language to translate into. “Same as interface” follows Settings → General → Interface language.",translateAsUi:"Same as interface",translateDisplayMode:"Display mode",translateDisplayModeHint:"How translated text is shown after you press Translate.",translateModeReplace:"Replace text (toggle original)",translateModeBelow:"Show translation below original",translateDescription:"Translate game description",translateDescriptionHint:"Button next to the summary on game pages.",translateReviews:"Translate reviews",translateReviewsHint:"Button on each review card.",translateReviewsAuto:"Auto-translate reviews",translateReviewsAutoHint:"When a review scrolls into view, translate it automatically. Off by default.",translateButton:"Translate",translateShowOriginal:"Show original",translateHide:"Hide translation",translateLoading:"Translating…",translateError:"Could not translate",translateResultLabel:"Translation",showCardBadges:"Show cover badges",showCardBadgesHint:"Master switch for chips on game cover cards. Off hides every badge.",cardGroupTypes:"Badge types",cardGroupTypesHint:"Which chips appear when cover badges are enabled.",showCardBadgePrice:"Price",showCardBadgePriceHint:"Steam store price for your region (sale price when discounted).",showCardBadgeReview:"Steam review %",showCardBadgeReviewHint:"Positive review percentage from Steam.",showCardBadgeOwned:"Owned",showCardBadgeOwnedHint:"Shows when the game is in your Steam library. Requires Steam login in this browser.",showCardBadgeWishlist:"Wishlist",showCardBadgeWishlistHint:"Shows when the game is on your Steam wishlist (hidden if already owned). Requires Steam login.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Release / status chip from GameStatus.info when a Steam match exists.",steamBackloggdTooltip:"View on Backloggd",steamDbBackloggdLabel:"Backloggd",steamOwned:"Owned",steamWishlist:"Wishlist",steamFixMatch:"Fix match",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"Override the automatic Steam store search for this Backloggd page. Paste the numeric App ID from the Steam store URL.",steamFixMatchPlaceholder:"e.g. 1245620",steamFixMatchClear:"Use automatic match",steamFixMatchInvalid:"Enter a valid numeric Steam App ID",steamMatchManual:"manual",steamMatchAuto:"auto",steamMatchLabel:"App {id} · {source}",sectionLinks:"Quick links",sectionLinksHint:"Choose which sites appear in the Links row on game pages.",gameGroupSteam:"Steam",gameGroupScores:"Scores & playtime",gameGroupCompat:"Compatibility & status",gameGroupMedia:"Media & layout",gameGroupTools:"Tools",gameGroupHosts:"Other sites",gameGroupHostsHint:"Backloggd buttons on Steam and SteamDB app pages.",navSettings:"Plus",navSettingsTitle:"Backloggd Plus settings",sectionCacheHint:"How much lookup data this browser profile is holding against the soft 5 MB budget.",sectionCacheDuration:"Duration",sectionCacheSources:"What to cache",sectionCacheSourcesHint:"Turn off a source to stop storing it. Existing entries for that source are removed when you save.",sectionCacheClear:"Clear",cacheHours:"Cache duration (hours)",cacheHoursHint:"How long to reuse game lookups (Steam, GameStatus, scores, media, similar). 0 disables that category. Profiles, translations, and FX keep their own TTLs when those toggles are on. Online players are never cached.",cacheGameData:"Game data",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, screenshots, similar games.",cacheUserProfiles:"User mini-profiles",cacheUserProfilesHint:"Hover cards and profile page enrichment for Backloggd users.",cacheTranslations:"Translations",cacheTranslationsHint:"Cached Google Translate results for descriptions and reviews.",cacheFx:"Currency rates",cacheFxHint:"FX rates used for approximate price conversion.",cacheCatGame:"Game data",cacheCatProfiles:"Profiles",cacheCatTranslations:"Translations",cacheCatFx:"Currency",cacheCatSystem:"System",cacheCatOff:"Off",cacheBarCatCount:"{count}",cacheBarEntries:"{count} entries",clearCache:"Clear cache",cacheCleared:"{count} lookup entries removed",cacheEmpty:"Nothing to clear — already empty",cacheBarFull:"Full",cacheBarPartial:"Partial",cacheBarFree:"Free",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"filled",cacheBarHint:"Soft storage budget by category. System (library/wishlist + tag map) stays on. Colored slices match the toggles below.",cacheBarAria:"Cache {pct}% full — {full} full, {partial} partial, {free} free",cacheBarAriaCats:"Cache {pct}% full — {detail}",cacheTabFillAria:"Cache {pct}% full",cacheClearHint:"Removes all lookup entries from this browser profile (does not change toggles).",toastTitleSuccess:"Success",toastTitleError:"Error",toastTitleInfo:"Info",toastTitleWarning:"Notice",toastDismiss:"Dismiss",toastSettingsSavedTitle:"Settings saved",toastSettingsSaved:"Your preferences will apply after the page reloads.",toastCacheClearedTitle:"Cache cleared",cacheEmptyTitle:"Cache",toastCacheClearedOnUpdateTitle:"Updated",toastCacheClearedOnUpdate:"v{version} — lookup cache was cleared",toastSteamMatchSavedTitle:"Match saved",toastSteamMatchSaved:"Steam App ID set to {id}",toastSteamMatchClearedTitle:"Match reset",toastSteamMatchCleared:"Using automatic Steam search again",steamFixMatchInvalidTitle:"Invalid App ID",on:"ON",off:"OFF",loading:"Loading…",notOnSteam:"Not found on Steam",loadError:"Could not load Steam data",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"Ready",gsPending:"Pending",gsPartial:"Partial",gsReleaseToday:"Release today",gsUnknown:"Unknown",gsNotInDatabase:"Not in database",reviews:"Reviews",price:"Price",free:"Free",discount:"-{n}%",discountEnds:"ends {date}",steamUsFallback:"Found via US store ({cc} search returned nothing)",recommendations:"{n} recommendations",links:"Links",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",players:"Players",playersOnline:"{n} playing",franchise:"Franchise",supportedSystems:"Supported Systems",technologies:"Technologies",lastRecordUpdate:"Last Record Update",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB blocked",openCritic:"OpenCritic",hltb:"HLTB",hltbMain:"Main {n}h",hltbExtra:"Extra {n}h",hltbComplete:"Complete {n}h",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",unifiedRatingTitle:"Plus rating",unifiedRatingHint:"Average of Steam, Metacritic, OpenCritic & Backloggd",unifiedRatingOutOf:"out of 5",unifiedRatingSources:"{n} sources",unifiedRatingLoading:"Gathering scores…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"Export",exportTitle:"Export game",exportHint:"Export this game as CSV, Markdown, or JSON for Notion.",exportFormats:"Export format",exportAdvanced:"Additional settings",exportRatingFormat:"Rating format",exportRatingText:"Text",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"Numeric",exportRatingNumericHint:"Stars out of 5 (e.g. 4.5)",exportStatusFormat:"Status format",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Columns match a Notion game database.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Notion-style page: title + property lines.",exportFormatJson:"JSON",exportFormatJsonHint:"Same fields as CSV, pretty-printed JSON.",exportDownload:"Download",exportCopy:"Copy",exportSoon:"Soon",exportNoRating:"No rating",exportPreviewTitle:"Preview",exportPreviewDeveloper:"Developer",exportPreviewRelease:"Release",exportPreviewTime:"Time",exportPreviewFavorite:"Favorite",exportPreviewTags:"Tags",exportPreviewSource:"Source",exportPreviewRating:"Rating",exportPreviewStatus:"Status",exportPreviewPlatform:"Platform",exportPreviewDlc:"DLC",exportPreviewDates:"Dates",exportFormatUnavailable:"That format is not available yet",exportFormatUnavailableTitle:"Unavailable",toastExportDoneTitle:"Exported",toastExportDone:"{name}",toastExportCopiedTitle:"Copied",toastExportCopied:"Content copied to the clipboard",toastExportCopyFailedTitle:"Copy failed",toastExportCopyFailed:"Could not copy to the clipboard",toastExportFailedTitle:"Export failed",toastExportFailed:"Could not create the file",toastGameIdCopiedTitle:"Game ID copied",toastGameIdCopied:"{id} copied to the clipboard"},ru:{menuSettings:"Backloggd Plus — Настройки",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · оценки · Deck/Proton · HLTB · бейджи · ссылки",close:"Закрыть",cancel:"Отмена",save:"Сохранить",saveReload:"Сохранить и перезагрузить",resetSettings:"Сбросить",resetSettingsConfirmTitle:"Сбросить настройки?",resetSettingsConfirm:"Все параметры будут возвращены к значениям по умолчанию. Страница перезагрузится. Кэш поиска не очищается.",resetSettingsConfirmAction:"Сбросить",toastSettingsResetTitle:"Настройки сброшены",toastSettingsReset:"Значения по умолчанию восстановлены. Страница будет перезагружена.",repoLink:"GitHub",repoAbout:"Исходники, обновления и баг-репорты",sectionGame:"Страница игры",sectionLists:"Карточка игры",sectionListsHint:"Бейджи на обложках в каталоге, поиске, журнале и блоке «Похожие игры».",sectionGeneral:"Общие",sectionProfile:"Профиль",sectionUi:"UI",generalGroupLanguage:"Язык",generalGroupLanguageHint:"Язык меню Plus, настроек и тостов.",generalGroupInterface:"Интерфейс",generalGroupInterfaceHint:"Опциональные правки оформления страниц Backloggd.",generalGroupBackup:"Резервная копия",generalGroupBackupHint:"Экспорт или восстановление настроек Plus. Кэш поиска не входит в файл.",settingsExport:"Экспорт",settingsExportHint:"Скачать JSON-файл с текущими настройками.",settingsImport:"Импорт",settingsImportHint:"Восстановить настройки из ранее экспортированного JSON.",settingsImportConfirmTitle:"Импортировать настройки?",settingsImportConfirm:"Текущие параметры будут заменены. Страница перезагрузится. Кэш поиска не изменится.",settingsImportConfirmAction:"Импорт",toastSettingsExportedTitle:"Настройки экспортированы",toastSettingsExported:"Файл резервной копии скачан.",toastSettingsExportFailedTitle:"Ошибка экспорта",toastSettingsExportFailed:"Не удалось создать файл резервной копии.",toastSettingsImportedTitle:"Настройки импортированы",toastSettingsImported:"Параметры восстановлены. Страница будет перезагружена.",toastSettingsImportFailedTitle:"Ошибка импорта",toastSettingsImportInvalid:"Файл не является корректной резервной копией настроек.",toastSettingsImportEmpty:"В файле не найдено настроек.",toastSettingsImportTooLarge:"Файл слишком большой для импорта.",toastSettingsImportReadFailed:"Не удалось прочитать файл.",profileGroupHover:"Мини-профиль",profileGroupHoverHint:"Карточка с краткой информацией при наведении на аватар пользователя.",profileGroupPage:"Страница профиля",profileGroupPageHint:"Оформление страниц /u/… по тирам (те же ранги, что у мини-профиля).",profileGroupBlocks:"Блоки страницы",profileGroupBlocksHint:"Какие части страницы профиля стилизовать, когда оформление включено.",sectionCache:"Кэш",sectionDebug:"Отладка",sectionAbout:"О скрипте",sectionTranslate:"Перевод",aboutDescription:"Backloggd Plus — userscript, который дополняет Backloggd данными Steam, оценками, Deck/Proton, HLTB, GameStatus, бейджами на обложках, скриншотами, похожими играми и удобными инструментами. Также добавляет кнопку Backloggd на страницах игр Steam и SteamDB.",aboutLicense:"Лицензия MIT",aboutRepo:"Репозиторий на GitHub",aboutAuthor:"Автор",aboutContributors:"Участники",aboutContributorsThanks:"Спасибо всем, кто помогает улучшать Backloggd Plus.",aboutBackloggd:"Профиль на Backloggd",aboutBackloggdHint:"@{user} на Backloggd",aboutBackloggdNote:"Можете добавить меня в друзья, написать или поделиться идеями — всегда рад общению.",aboutContribute:"Участие",aboutContributeHint:"Скрипт открытый — каждый может помочь сделать Backloggd удобнее.",aboutContributeBody:"Идеи, баг-репорты, переводы и pull request’ы приветствуются. Любой вклад помогает сообществу.",aboutContributeCta:"Открыть репозиторий",aboutContributeCtaHint:"Issues, PR и обсуждения на GitHub",enhanceHeader:"Плавающий хедер",enhanceHeaderHint:"Липкая стеклянная панель навигации поверх страницы; при прокрутке чуть уплотняется.",hideHomepageFuse:"Скрывать рекламные блоки Fuse",hideHomepageFuseHint:"Убирает пустые ряды Fuse / incontent (главная, отзывы на странице игры и т.п.).",showUserMiniProfile:"Мини-профиль пользователя",showUserMiniProfileHint:"Карточка с краткой информацией при наведении на аватар. Тир растёт с числом сыгранных игр (25+ бронза … 1000+ легенда).",preloadUserMiniProfile:"Предзагрузка в зоне видимости",preloadUserMiniProfileHint:"Загружает данные мини-профиля для аватаров в зоне видимости, чтобы карточка открывалась сразу.",showProfilePage:"Оформление страницы профиля",showProfilePageHint:"Применяет тир-стиль к странице профиля. Отдельные блоки можно отключить ниже.",showProfileHeader:"Шапка и аватар",showProfileHeaderHint:"Градиент шапки и цветная рамка аватара по тиру.",showProfileTierChip:"Чип тира",showProfileTierChipHint:"Рядом с именем: тир и прогресс до следующего ранга.",showProfileStats:"Статистика",showProfileStatsHint:"Подсветка ряда Games Played / Backlog / This Year.",showProfileNav:"Навигация профиля",showProfileNavHint:"Вкладки Profile / Games / … в виде тир-панели.",showProfileFavorites:"Избранные игры",showProfileFavoritesHint:"Рамки рангов и эффект при наведении у Favorite Games.",showProfileMenuSettings:"Настройки Plus в меню профиля",showProfileMenuSettingsHint:"Добавляет пункт Plus в меню аккаунта рядом с Settings и скрывает кнопку Plus в хедере.",miniProfilePlayed:"Сыграно",miniProfileBacklog:"Бэклог",miniProfileThisYear:"В этом году",miniProfileFavorites:"Избранное",miniProfileRecent:"Недавние",miniProfileBadges:"Значки",miniProfileAvgRating:"Средняя оценка",miniProfileViewProfile:"Открыть профиль",miniProfileLoading:"Загрузка профиля…",miniProfileError:"Не удалось загрузить профиль",miniProfileTierSub:"{count} игр сыграно",miniProfileTierRookie:"Новичок",miniProfileTierBronze:"Бронза",miniProfileTierSilver:"Серебро",miniProfileTierGold:"Золото",miniProfileTierPlatinum:"Платина",miniProfileTierDiamond:"Алмаз",miniProfileTierMaster:"Мастер",miniProfileTierLegend:"Легенда",profileTierProgress:"{n} до «{tier}»",profileTierMax:"Максимальный тир",debugMode:"Режим отладки",debugModeHint:"Одна панель отладки на странице игры: источники и полный дамп. Ряды обогащения — штриховка и бейдж Кэш/Сеть.",debugCacheHit:"Кэш",debugCacheMiss:"Сеть",debugCacheMixed:"Смешанно",debugCacheNa:"Локально",debugReason:"Причина",debugResponse:"Ответ",debugPanelTitle:"Отладка",debugSources:"Источники",debugDump:"Полный дамп",debugSectionPage:"Страница",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / игроки",debugSectionGameStatus:"GameStatus",debugOwned:"Куплено",debugSrcRequest:"запрос",debugSrcBackloggd:"Текущая страница игры на Backloggd",debugSrcIgdb:"Слаг игры / ряд Links (IGDB)",debugSrcMetacritic:"Ряд Links — URL Metacritic (по слагу)",debugSrcSteamStore:"Страница в Steam — Links + ссылка в ряду Steam",debugSrcSteamDb:"Ряд Links — страница приложения SteamDB",debugSrcSteamDbCharts:"SteamDB charts (справочно; не скрапится)",debugSrcSteamDbInfo:"SteamDB info (справочно; не скрапится)",debugSrcSteamTiny:"Маленькая капсула — запасной icon",debugSrcSteamHeader:"Картинка header из API appdetails",debugSrcSteamSearch:"Поиск Steam App ID (storesearch)",debugSrcSteamDetails:"appdetails — цена, бесплатно, Metacritic, header",debugSrcSteamReviews:"appreviews — сводка отзывов для ряда Steam",debugSrcSteamTags:"GetItems — популярные теги для ряда Steam",debugSrcSteamTagMap:"populartags — карта id тега → имя",debugSrcSteamOwned:"dynamicstore/userdata — проверка библиотеки",debugSrcSteamDbPage:"HTML SteamDB — icon, logo, игроки",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — запасной онлайн",debugSrcIcon:"Иконка у заголовка (SteamDB / CDN)",debugSrcLogo:"Логотип обложки под кнопкой смены обложки (Change cover)",debugSrcGameStatusApi:"API GameStatus — статус",debugSrcGameStatusPage:"Страница GameStatus для найденного слага",uiLanguage:"Язык интерфейса",uiLanguageHint:"Авто — язык браузера. Выбор применится после перезагрузки.",uiLanguageAuto:"Авто (браузер)",steamCountry:"Регион Steam Store",steamCountryHint:"Влияет на валюту цены из Steam Store API.",showPriceConvert:"Показывать цену в другой валюте",showPriceConvertHint:"После цены Steam Store — приблизительная сумма в выбранной валюте (рыночный курс, не второй регион Steam). Пример: 1 400 ₸ ~ 560 ₽. При скидке справа мелко зачёркнута цена без скидки.",convertCurrency:"Переводить цены в",convertCurrencyHint:"Только если включён перевод и валюта магазина отличается от выбранной.",showSteam:"Показывать цену и отзывы Steam",showMetacritic:"Показывать оценку Metacritic",showOpenCritic:"Показывать оценку OpenCritic",showOpenCriticHint:"Бейдж уровня (tier) с OpenCritic (поиск по названию).",showHltb:"Показывать время HowLongToBeat",showHltbHint:"Время «основное / с дополнениями / 100%» с HowLongToBeat.",showDeckProton:"Показывать Steam Deck и ProtonDB",showDeckProtonHint:"Статус Steam Deck (проверено / играбельно) и уровень ProtonDB (нужен Steam App ID).",showGameStatus:"Показывать статус GameStatus",showGameStatusHint:"Статус с GameStatus.info (нужно совпадение со Steam).",showLinks:"Показывать ряд ссылок",showSteamOwned:"Показывать «Куплено» в Steam",showSteamOwnedHint:"Показывает «Куплено», если игра в вашей библиотеке Steam. Нужен вход в Steam в этом браузере.",showSteamWishlist:"Показывать «В вишлисте» Steam",showSteamWishlistHint:"Показывает «В вишлисте», если игра в списке желаний Steam (скрывается, если уже куплена). Нужен вход в Steam.",showSteamTags:"Показывать теги Steam",showSteamTagsHint:"Популярные пользовательские теги из Steam Store (открытый мир, RPG, …).",showSteamCategories:"Показывать категории Steam",showSteamCategoriesHint:"Категории из карточки Steam (одиночная, мультиплеер, достижения Steam, …).",showSteamPageLink:"Кнопка Backloggd на Steam",showSteamPageLinkHint:"Кнопка в стиле SteamDB в блоке Other site info на страницах игр Steam.",showSteamDbPageLink:"Кнопка Backloggd на SteamDB",showSteamDbPageLinkHint:"Кнопка рядом со Store / IGDB в блоке app-links на SteamDB.",showSteamDbIcon:"Иконка SteamDB перед названием",showSteamDbIconHint:"Иконка из Steam store assets (community_icon), тот же CDN, что у SteamDB.",showSteamDbCover:"Логотип SteamDB под кнопкой смены обложки",showSteamDbCoverHint:"Картинка Steam header под обложкой / кнопкой смены обложки (Change cover).",showSteamDbGallery:"Галерея скриншотов Steam",showSteamDbGalleryHint:"Горизонтальная лента скриншотов после блока статистики (ассеты Steam Store, как на SteamDB). Клик — увеличить.",steamGalleryTitle:"Скриншоты",steamGalleryOpen:"Открыть скриншот",steamGalleryClose:"Закрыть",steamGalleryPrev:"Назад",steamGalleryNext:"Вперёд",showSimilarGames:"Похожие игры",showSimilarGamesHint:"Лента похожих игр под скриншотами (рекомендации Steam + % совпадения тегов). Карточки ведут на Backloggd.",similarGamesTitle:"Похожие игры",similarGamesMatch:"Сходство",similarGamesOpenSteam:"Открыть в Steam",showGameStats:"Блок статистики игры",showGameStatsHint:"Блок Backloggd: сыграно / играют / бэклог / вишлист / оценки (#game-stats).",viewerZoomIn:"Увеличить",viewerZoomOut:"Уменьшить",viewerZoomReset:"Сбросить масштаб",viewerOf:"{current} / {total}",viewerOpenCover:"Открыть обложку",showSteamPlayers:"Показывать онлайн игроков",showSteamPlayersHint:"Текущие игроки через Steam GetNumberOfCurrentPlayers.",showSteamDbDetails:"Показывать детали SteamDB",showSteamDbDetailsHint:"Один ряд SteamDB: франшиза и системы из Steam; технологии и последнее обновление записи — со SteamDB, если страница доступна.",showExport:"Показывать кнопку экспорта",showExportHint:"Кнопка экспорта на странице игры и в редакторе лога (CSV / Markdown / JSON для Notion). По умолчанию выключено.",showGameId:"Показывать ID игры",showGameIdHint:"Показывает ID игры Backloggd (#…) после названия. Клик копирует числовой ID.",gameIdCopyLabel:"Скопировать ID игры",showTranslate:"Включить перевод",showTranslateHint:"Кнопки «Перевести» у описания игры и обзоров (Google Translate).",translateTargetLocale:"Целевой язык",translateTargetLocaleHint:"Язык перевода. «Как интерфейс» следует настройке Общие → Язык интерфейса.",translateAsUi:"Как интерфейс",translateDisplayMode:"Режим отображения",translateDisplayModeHint:"Как показывать перевод после нажатия «Перевести».",translateModeReplace:"Заменить текст (переключение с оригиналом)",translateModeBelow:"Показать перевод под оригиналом",translateDescription:"Переводить описание игры",translateDescriptionHint:"Кнопка рядом с кратким описанием на странице игры.",translateReviews:"Переводить обзоры",translateReviewsHint:"Кнопка на каждой карточке обзора.",translateReviewsAuto:"Автоперевод обзоров",translateReviewsAutoHint:"Когда обзор появляется в зоне видимости, переводить его автоматически. По умолчанию выкл.",translateButton:"Перевести",translateShowOriginal:"Показать оригинал",translateHide:"Скрыть перевод",translateLoading:"Перевод…",translateError:"Не удалось перевести",translateResultLabel:"Перевод",showCardBadges:"Показывать бейджи на обложках",showCardBadgesHint:"Главный переключатель. Выключите — и все бейджи на карточках скроются.",cardGroupTypes:"Типы бейджей",cardGroupTypesHint:"Какие чипы показывать, когда бейджи включены.",showCardBadgePrice:"Цена",showCardBadgePriceHint:"Цена в Steam Store для вашего региона (со скидкой — акционная).",showCardBadgeReview:"Рейтинг Steam %",showCardBadgeReviewHint:"Процент положительных отзывов в Steam.",showCardBadgeOwned:"Куплено",showCardBadgeOwnedHint:"Если игра в вашей библиотеке Steam. Нужен вход в Steam в этом браузере.",showCardBadgeWishlist:"Вишлист",showCardBadgeWishlistHint:"Если игра в списке желаний Steam (скрывается, если уже куплена). Нужен вход в Steam.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Статус релиза с GameStatus.info, если есть матч Steam.",steamBackloggdTooltip:"Открыть на Backloggd",steamDbBackloggdLabel:"Backloggd",steamOwned:"Куплено",steamWishlist:"В вишлисте",steamFixMatch:"Исправить матч",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"Переопределить автоматический поиск в Steam Store для этой страницы Backloggd. Вставьте числовой App ID из URL магазина Steam.",steamFixMatchPlaceholder:"например 1245620",steamFixMatchClear:"Автоматический матч",steamFixMatchInvalid:"Введите корректный числовой Steam App ID",steamMatchManual:"вручную",steamMatchAuto:"авто",steamMatchLabel:"App {id} · {source}",sectionLinks:"Быстрые ссылки",sectionLinksHint:"Какие сайты показывать в ряду Links на странице игры.",gameGroupSteam:"Steam",gameGroupScores:"Оценки и время",gameGroupCompat:"Совместимость и статус",gameGroupMedia:"Медиа и оформление",gameGroupTools:"Инструменты",gameGroupHosts:"Другие сайты",gameGroupHostsHint:"Кнопки Backloggd на страницах игр Steam и SteamDB.",navSettings:"Плюс",navSettingsTitle:"Настройки Backloggd Plus",sectionCacheHint:"Сколько данных запросов хранится в этом профиле браузера относительно мягкого лимита 5 МБ.",sectionCacheDuration:"Срок хранения",sectionCacheSources:"Что кешировать",sectionCacheSourcesHint:"Выключите источник, чтобы больше не сохранять его. При сохранении записи этого типа удалятся.",sectionCacheClear:"Очистка",cacheHours:"Время кэша (часы)",cacheHoursHint:"Как долго переиспользовать игровые запросы (Steam, GameStatus, оценки, медиа, похожие). 0 отключает эту категорию. Профили, переводы и курсы валют сохраняют свои TTL, если их переключатели включены. Онлайн-игроки не кешируются.",cacheGameData:"Данные игр",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, скриншоты, похожие игры.",cacheUserProfiles:"Мини-профили",cacheUserProfilesHint:"Карточки при наведении и оформление страниц пользователей Backloggd.",cacheTranslations:"Переводы",cacheTranslationsHint:"Результаты Google Translate для описаний и рецензий.",cacheFx:"Курсы валют",cacheFxHint:"Курсы для приблизительной конвертации цены.",cacheCatGame:"Игры",cacheCatProfiles:"Профили",cacheCatTranslations:"Переводы",cacheCatFx:"Валюта",cacheCatSystem:"Система",cacheCatOff:"Выкл",cacheBarCatCount:"{count}",cacheBarEntries:"записей: {count}",clearCache:"Очистить кэш",cacheCleared:"Удалено записей: {count}",cacheEmpty:"Очищать нечего — кэш уже пуст",cacheBarFull:"Полный",cacheBarPartial:"Частичный",cacheBarFree:"Свободно",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"заполнено",cacheBarHint:"Мягкий лимит по категориям. Система (библиотека/вишлист + карта тегов) всегда включена. Цвета совпадают с переключателями ниже.",cacheBarAria:"Кэш заполнен на {pct}% — {full} полный, {partial} частичный, {free} свободно",cacheBarAriaCats:"Кэш заполнен на {pct}% — {detail}",cacheTabFillAria:"Кэш заполнен на {pct}%",cacheClearHint:"Удаляет все записи кэша из этого профиля браузера (переключатели не меняет).",toastTitleSuccess:"Готово",toastTitleError:"Ошибка",toastTitleInfo:"Инфо",toastTitleWarning:"Внимание",toastDismiss:"Закрыть",toastSettingsSavedTitle:"Настройки сохранены",toastSettingsSaved:"Параметры применятся после перезагрузки страницы.",toastCacheClearedTitle:"Кэш очищен",cacheEmptyTitle:"Кэш",toastCacheClearedOnUpdateTitle:"Обновлено",toastCacheClearedOnUpdate:"v{version} — кэш запросов очищен",toastSteamMatchSavedTitle:"Матч сохранён",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchClearedTitle:"Матч сброшен",toastSteamMatchCleared:"Снова используется автоматический поиск Steam",steamFixMatchInvalidTitle:"Неверный App ID",on:"ВКЛ",off:"ВЫКЛ",loading:"Загрузка…",notOnSteam:"Не найдено в Steam",loadError:"Не удалось загрузить данные Steam",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"Готово",gsPending:"Ожидание",gsPartial:"Частично",gsReleaseToday:"Релиз сегодня",gsUnknown:"Неизвестно",gsNotInDatabase:"Нет в базе",reviews:"Отзывы",price:"Цена",free:"Бесплатно",discount:"-{n}%",discountEnds:"до {date}",steamUsFallback:"Найдено через магазин US (в {cc} ничего не нашлось)",recommendations:"{n} рекомендаций",links:"Ссылки",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",players:"Игроки",playersOnline:"{n} в игре",franchise:"Франшиза",supportedSystems:"Поддерживаемые системы",technologies:"Технологии",lastRecordUpdate:"Последнее обновление записи",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB недоступен",openCritic:"OpenCritic",hltb:"HLTB",hltbMain:"Основной {n}ч",hltbExtra:"С дополнениями {n}ч",hltbComplete:"100% {n}ч",deckProton:"Deck / Proton",deckVerified:"Проверено",deckPlayable:"Играбельно",deckUnsupported:"Не поддерживается",deckUnknown:"Неизвестно",protonTier:"ProtonDB {tier}",unifiedRatingTitle:"Рейтинг Plus",unifiedRatingHint:"Среднее Steam, Metacritic, OpenCritic и Backloggd",unifiedRatingOutOf:"из 5",unifiedRatingSources:"{n} источников",unifiedRatingLoading:"Собираем оценки…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"Экспорт",exportTitle:"Экспорт игры",exportHint:"Экспорт игры в CSV, Markdown или JSON для Notion.",exportFormats:"Формат экспорта",exportAdvanced:"Дополнительные настройки",exportRatingFormat:"Формат оценки",exportRatingText:"Текст",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"Число",exportRatingNumericHint:"Звёзды из 5 (например 4.5)",exportStatusFormat:"Формат статуса",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Колонки как в Notion-базе игр.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Страница Notion: заголовок + свойства.",exportFormatJson:"JSON",exportFormatJsonHint:"Те же поля, что в CSV, в JSON.",exportDownload:"Скачать",exportCopy:"Скопировать",exportSoon:"Скоро",exportNoRating:"Без оценки",exportPreviewTitle:"Превью",exportPreviewDeveloper:"Разработчик",exportPreviewRelease:"Релиз",exportPreviewTime:"Время",exportPreviewFavorite:"Избранное",exportPreviewTags:"Теги",exportPreviewSource:"Источник",exportPreviewRating:"Оценка",exportPreviewStatus:"Статус",exportPreviewPlatform:"Платформа",exportPreviewDlc:"DLC",exportPreviewDates:"Даты",exportFormatUnavailable:"Этот формат пока недоступен",exportFormatUnavailableTitle:"Недоступно",toastExportDoneTitle:"Экспортировано",toastExportDone:"{name}",toastExportCopiedTitle:"Скопировано",toastExportCopied:"Содержимое скопировано в буфер обмена",toastExportCopyFailedTitle:"Не удалось скопировать",toastExportCopyFailed:"Не получилось записать в буфер обмена",toastExportFailedTitle:"Ошибка экспорта",toastExportFailed:"Не удалось создать файл",toastGameIdCopiedTitle:"ID скопирован",toastGameIdCopied:"{id} скопирован в буфер обмена"},zh:{menuSettings:"Backloggd Plus — 设置",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · 评分 · Deck/Proton · HLTB · 列表徽章 · 链接",close:"关闭",cancel:"取消",save:"保存",saveReload:"保存并刷新页面",resetSettings:"重置",resetSettingsConfirmTitle:"重置设置?",resetSettingsConfirm:"所有偏好将恢复为默认值。页面将刷新。查找缓存不会被清除。",resetSettingsConfirmAction:"重置",toastSettingsResetTitle:"设置已重置",toastSettingsReset:"已恢复默认值。页面即将刷新。",repoLink:"GitHub",repoAbout:"源码、更新与问题反馈",sectionGame:"游戏页",sectionLists:"游戏卡片",sectionListsHint:"浏览、搜索、日志以及「相似游戏」封面卡片上的徽章。",sectionGeneral:"通用",sectionProfile:"资料",sectionUi:"UI",generalGroupLanguage:"语言",generalGroupLanguageHint:"Plus 菜单、设置与提示的语言。",generalGroupInterface:"界面",generalGroupInterfaceHint:"可选的 Backloggd 页面外观调整。",generalGroupBackup:"备份",generalGroupBackupHint:"导出或恢复 Plus 偏好设置。查找缓存不包含在内。",settingsExport:"导出",settingsExportHint:"下载包含当前设置的 JSON 文件。",settingsImport:"导入",settingsImportHint:"从先前导出的 JSON 文件恢复设置。",settingsImportConfirmTitle:"导入设置?",settingsImportConfirm:"当前偏好将被替换。页面将刷新。查找缓存不会更改。",settingsImportConfirmAction:"导入",toastSettingsExportedTitle:"设置已导出",toastSettingsExported:"备份文件已下载。",toastSettingsExportFailedTitle:"导出失败",toastSettingsExportFailed:"无法创建备份文件。",toastSettingsImportedTitle:"设置已导入",toastSettingsImported:"偏好已恢复。页面将刷新。",toastSettingsImportFailedTitle:"导入失败",toastSettingsImportInvalid:"该文件不是有效的设置备份。",toastSettingsImportEmpty:"文件中未找到设置。",toastSettingsImportTooLarge:"文件过大,无法导入。",toastSettingsImportReadFailed:"无法读取该文件。",profileGroupHover:"悬停卡片",profileGroupHoverHint:"悬停用户头像时显示简明资料卡。",profileGroupPage:"资料页",profileGroupPageHint:"为 /u/… 资料页应用与迷你资料相同的等级样式。",profileGroupBlocks:"页面区块",profileGroupBlocksHint:"启用资料页美化时,分别控制各区块样式。",sectionCache:"缓存",sectionDebug:"调试",sectionAbout:"关于",sectionTranslate:"翻译",aboutDescription:"Backloggd Plus 是一款 userscript,为 Backloggd 补充 Steam 数据、评分、Deck/Proton、HLTB、GameStatus、封面徽章、截图、相似游戏与实用工具,并在 Steam / SteamDB 游戏页加入 Backloggd 按钮。",aboutLicense:"MIT 许可证",aboutRepo:"GitHub 仓库",aboutAuthor:"作者",aboutContributors:"贡献者",aboutContributorsThanks:"感谢所有帮助改进 Backloggd Plus 的人。",aboutBackloggd:"Backloggd 主页",aboutBackloggdHint:"Backloggd 上的 @{user}",aboutBackloggdNote:"欢迎加我好友、打个招呼或分享反馈——很乐意交流。",aboutContribute:"参与贡献",aboutContributeHint:"开源项目——任何人都能让 Backloggd 变得更好。",aboutContributeBody:"欢迎提出想法、报告问题、翻译或提交 PR。每一份贡献都惠及社区。",aboutContributeCta:"打开仓库",aboutContributeCtaHint:"在 GitHub 上提 Issue、PR 与讨论",enhanceHeader:"浮动顶栏",enhanceHeaderHint:"粘性毛玻璃导航栏,随页面滚动略微收紧。",hideHomepageFuse:"隐藏 Fuse 广告位",hideHomepageFuseHint:"隐藏空的 Fuse / incontent 广告行(首页、游戏评论区等)。",showUserMiniProfile:"用户迷你资料卡",showUserMiniProfileHint:"悬停头像时显示简明资料。等级随游玩数量提升(25+ 青铜 … 1000+ 传奇)。",preloadUserMiniProfile:"进入视口时预加载",preloadUserMiniProfileHint:"头像进入视口时预取迷你资料数据,悬停时可立即打开卡片。",showProfilePage:"美化资料页",showProfilePageHint:"为资料页应用等级样式。可在下方单独关闭各区块。",showProfileHeader:"顶部与头像",showProfileHeaderHint:"顶部渐变背景与彩色头像边框。",showProfileTierChip:"等级徽章",showProfileTierChipHint:"用户名旁显示等级与到下一阶的进度。",showProfileStats:"统计行",showProfileStatsHint:"为 Games Played / Backlog 等统计添加等级强调色。",showProfileNav:"资料导航",showProfileNavHint:"将 Profile / Games 等标签显示为等级色药丸栏。",showProfileFavorites:"最爱游戏",showProfileFavoritesHint:"最爱游戏封面的等级边框与悬停抬起效果。",showProfileMenuSettings:"在个人菜单中显示 Plus 设置",showProfileMenuSettingsHint:"在账号下拉菜单中靠近 Settings 处添加 Plus 项,并隐藏顶栏 Plus 按钮。",miniProfilePlayed:"已玩",miniProfileBacklog:"待玩",miniProfileThisYear:"今年",miniProfileFavorites:"最爱",miniProfileRecent:"最近",miniProfileBadges:"徽章",miniProfileAvgRating:"平均评分",miniProfileViewProfile:"查看资料",miniProfileLoading:"正在加载资料…",miniProfileError:"无法加载资料",miniProfileTierSub:"已玩 {count} 款",miniProfileTierRookie:"新秀",miniProfileTierBronze:"青铜",miniProfileTierSilver:"白银",miniProfileTierGold:"黄金",miniProfileTierPlatinum:"铂金",miniProfileTierDiamond:"钻石",miniProfileTierMaster:"大师",miniProfileTierLegend:"传奇",profileTierProgress:"距{tier}还差 {n}",profileTierMax:"已满级",debugMode:"调试模式",debugModeHint:"在游戏页显示调试面板与完整响应。各增强行带斜线底纹和缓存/网络徽章。",debugCacheHit:"缓存",debugCacheMiss:"网络",debugCacheMixed:"混合",debugCacheNa:"派生",debugReason:"原因",debugResponse:"响应",debugPanelTitle:"调试",debugSources:"来源",debugDump:"完整转储",debugSectionPage:"页面",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / 玩家",debugSectionGameStatus:"GameStatus",debugOwned:"已拥有",debugSrcRequest:"请求",debugSrcBackloggd:"当前 Backloggd 游戏页",debugSrcIgdb:"游戏 slug / Links 行(IGDB)",debugSrcMetacritic:"Links 行 — Metacritic URL(按 slug 猜测)",debugSrcSteamStore:"Steam 商店页 — Links + Steam 行链接",debugSrcSteamDb:"Links 行 — SteamDB 应用页",debugSrcSteamDbCharts:"SteamDB charts(参考;不抓取)",debugSrcSteamDbInfo:"SteamDB info(参考;不抓取)",debugSrcSteamTiny:"小胶囊图 — 图标回退",debugSrcSteamHeader:"来自 appdetails 的 header 图",debugSrcSteamSearch:"storesearch — 解析 Steam App ID",debugSrcSteamDetails:"appdetails — 价格、免费、Metacritic、header",debugSrcSteamReviews:"appreviews — Steam 行评价摘要",debugSrcSteamTags:"GetItems — Steam 行热门标签",debugSrcSteamTagMap:"populartags — 标签 id → 名称",debugSrcSteamOwned:"dynamicstore/userdata — 库拥有检查",debugSrcSteamDbPage:"SteamDB HTML — icon、logo、玩家数",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — 玩家数回退",debugSrcIcon:"标题图标(SteamDB / CDN)",debugSrcLogo:"Change cover 下的封面 logo",debugSrcGameStatusApi:"GameStatus API — 状态",debugSrcGameStatusPage:"匹配 slug 的 GameStatus 页面",uiLanguage:"界面语言",uiLanguageHint:"自动跟随浏览器语言。保存后刷新生效。",uiLanguageAuto:"自动(浏览器)",steamCountry:"Steam 商店地区",steamCountryHint:"影响 Steam Store API 返回的货币。",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"显示 Steam 价格与评价",showMetacritic:"显示 Metacritic 分数",showOpenCritic:"显示 OpenCritic 分数",showOpenCriticHint:"来自 OpenCritic 的 Tier 徽章(按标题搜索)。",showHltb:"显示 HowLongToBeat 时长",showHltbHint:"来自 HowLongToBeat 的 Main / Extra / Complete 小时数。",showDeckProton:"显示 Steam Deck 与 ProtonDB",showDeckProtonHint:"Steam Deck Verified/Playable 与 ProtonDB 等级(需要 Steam App ID)。",showGameStatus:"显示 GameStatus",showGameStatusHint:"来自 GameStatus.info 的状态(需要匹配到 Steam)。",showLinks:"显示快捷链接行",showSteamOwned:"显示 Steam 已拥有状态",showSteamOwnedHint:"若游戏在您的 Steam 库中则显示“已拥有”。需要在此浏览器登录 Steam。",showSteamWishlist:"显示 Steam 愿望单状态",showSteamWishlistHint:"若游戏在您的 Steam 愿望单中则显示“愿望单”(已拥有时隐藏)。需要在此浏览器登录 Steam。",showSteamTags:"显示 Steam 标签",showSteamTagsHint:"来自 Steam 商店的热门社区标签(Open World、RPG 等)。",showSteamCategories:"显示 Steam 类别",showSteamCategoriesHint:"来自 Steam 应用详情的商店类别(单人、多人、Steam 成就等)。",showSteamPageLink:"在 Steam 显示 Backloggd 按钮",showSteamPageLinkHint:"在 Steam 游戏页 Other site info 中添加类似 SteamDB 的按钮。",showSteamDbPageLink:"在 SteamDB 显示 Backloggd 按钮",showSteamDbPageLinkHint:"在 SteamDB app-links 中、Store / IGDB 旁添加 Backloggd 按钮。",showSteamDbIcon:"在标题前显示 SteamDB 图标",showSteamDbIconHint:"来自 SteamDB 页面标题的应用图标,失败时回退到 Steam 胶囊图。",showSteamDbCover:"在 Change cover 下显示 SteamDB Logo",showSteamDbCoverHint:"在封面 / Change cover 下方显示 SteamDB 封面图。",showSteamDbGallery:"显示 Steam 截图库",showSteamDbGalleryHint:"在游戏统计下方显示横向截图条(Steam 商店资源,与 SteamDB 相同)。点击放大。",steamGalleryTitle:"截图",steamGalleryOpen:"打开截图",steamGalleryClose:"关闭",steamGalleryPrev:"上一张",steamGalleryNext:"下一张",showSimilarGames:"显示相似游戏",showSimilarGamesHint:"在截图下方显示相似游戏条(Steam More Like This + 标签匹配百分比)。卡片链接到 Backloggd。",similarGamesTitle:"相似游戏",similarGamesMatch:"匹配",similarGamesOpenSteam:"在 Steam 打开",showGameStats:"显示游戏统计块",showGameStatsHint:"Backloggd 原生 Plays / Playing / Backlogs / Wishlists / Ratings 区块(#game-stats)。",viewerZoomIn:"放大",viewerZoomOut:"缩小",viewerZoomReset:"重置缩放",viewerOf:"{current} / {total}",viewerOpenCover:"打开封面",showSteamPlayers:"显示在线玩家数",showSteamPlayersHint:"当前玩家来自 Steam GetNumberOfCurrentPlayers。",showSteamDbDetails:"显示 SteamDB 详情",showSteamDbDetailsHint:"系列与支持系统来自 Steam;技术与最后记录更新在可访问时来自 SteamDB。",showExport:"显示导出按钮",showExportHint:"在游戏页和日志编辑器中显示导出(CSV / Markdown / JSON,用于 Notion)。默认关闭。",showGameId:"显示游戏 ID",showGameIdHint:"在标题后显示 Backloggd 游戏 ID(#…)。点击复制数字 ID。",gameIdCopyLabel:"复制游戏 ID",showTranslate:"启用翻译",showTranslateHint:"在游戏简介和评论上显示“翻译”按钮(Google 翻译)。",translateTargetLocale:"目标语言",translateTargetLocaleHint:"翻译成的语言。“与界面相同”跟随 通用 → 界面语言。",translateAsUi:"与界面相同",translateDisplayMode:"显示方式",translateDisplayModeHint:"按下“翻译”后如何显示译文。",translateModeReplace:"替换原文(可切换回原文)",translateModeBelow:"在原文下方显示译文",translateDescription:"翻译游戏简介",translateDescriptionHint:"游戏页简介旁的按钮。",translateReviews:"翻译评论",translateReviewsHint:"每条评论卡片上的按钮。",translateReviewsAuto:"自动翻译评论",translateReviewsAutoHint:"评论进入可视区域时自动翻译。默认关闭。",translateButton:"翻译",translateShowOriginal:"显示原文",translateHide:"隐藏译文",translateLoading:"翻译中…",translateError:"无法翻译",translateResultLabel:"译文",showCardBadges:"显示封面徽章",showCardBadgesHint:"封面卡片徽章总开关。关闭后隐藏全部徽章。",cardGroupTypes:"徽章类型",cardGroupTypesHint:"启用封面徽章时显示哪些芯片。",showCardBadgePrice:"价格",showCardBadgePriceHint:"您所在地区的 Steam 商店价格(打折时为特价)。",showCardBadgeReview:"Steam 好评%",showCardBadgeReviewHint:"Steam 好评价百分比。",showCardBadgeOwned:"已拥有",showCardBadgeOwnedHint:"游戏在您的 Steam 库中时显示。需要在此浏览器登录 Steam。",showCardBadgeWishlist:"愿望单",showCardBadgeWishlistHint:"游戏在愿望单中时显示(已拥有则隐藏)。需要登录 Steam。",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"有 Steam 匹配时显示 GameStatus.info 的状态芯片。",steamBackloggdTooltip:"在 Backloggd 查看",steamDbBackloggdLabel:"Backloggd",steamOwned:"已拥有",steamWishlist:"愿望单",steamFixMatch:"修正匹配",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"覆盖此 Backloggd 页面的自动 Steam 商店搜索。粘贴 Steam 商店 URL 中的数字 App ID。",steamFixMatchPlaceholder:"例如 1245620",steamFixMatchClear:"使用自动匹配",steamFixMatchInvalid:"请输入有效的数字 Steam App ID",steamMatchManual:"手动",steamMatchAuto:"自动",steamMatchLabel:"App {id} · {source}",sectionLinks:"快捷链接",sectionLinksHint:"选择游戏页 Links 行中显示的站点。",gameGroupSteam:"Steam",gameGroupScores:"评分与时长",gameGroupCompat:"兼容性与状态",gameGroupMedia:"媒体与布局",gameGroupTools:"工具",gameGroupHosts:"其他站点",gameGroupHostsHint:"在 Steam 和 SteamDB 游戏页显示 Backloggd 按钮。",navSettings:"Plus",navSettingsTitle:"Backloggd Plus 设置",sectionCacheHint:"此浏览器配置相对 5 MB 软上限当前占用的查询数据量。",sectionCacheDuration:"时长",sectionCacheSources:"缓存内容",sectionCacheSourcesHint:"关闭某来源即不再写入;保存时会删除该来源的已有条目。",sectionCacheClear:"清除",cacheHours:"缓存时长(小时)",cacheHoursHint:"游戏查询(Steam、GameStatus、评分、媒体、相似游戏)的复用时长。0 禁用该类别。开启对应开关时,资料、翻译与汇率仍使用各自 TTL。在线玩家数不缓存。",cacheGameData:"游戏数据",cacheGameDataHint:"Steam、SteamDB、GameStatus、OpenCritic、HLTB、ProtonDB、截图、相似游戏。",cacheUserProfiles:"用户迷你资料",cacheUserProfilesHint:"悬停卡片与 Backloggd 用户页增强。",cacheTranslations:"翻译",cacheTranslationsHint:"描述与评论的 Google 翻译结果。",cacheFx:"汇率",cacheFxHint:"用于大致价格换算的 FX 汇率。",cacheCatGame:"游戏",cacheCatProfiles:"资料",cacheCatTranslations:"翻译",cacheCatFx:"货币",cacheCatSystem:"系统",cacheCatOff:"关",cacheBarCatCount:"{count}",cacheBarEntries:"{count} 条",clearCache:"清除缓存",cacheCleared:"已清除 {count} 条记录",cacheEmpty:"无需清理 — 缓存已为空",cacheBarFull:"完整",cacheBarPartial:"部分",cacheBarFree:"可用",cacheBarLegend:"{label}:{count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"已用",cacheBarHint:"按类别的软性存储上限。系统(库/愿望单 + 标签表)始终开启。颜色与下方开关对应。",cacheBarAriaCats:"缓存已用 {pct}% — {detail}",cacheBarAria:"缓存已用 {pct}% — 完整 {full},部分 {partial},可用 {free}",cacheTabFillAria:"缓存已用 {pct}%",cacheClearHint:"清除此浏览器配置中的全部查询条目(不改变开关)。",toastSettingsSaved:"偏好设置将在页面刷新后生效。",toastCacheClearedOnUpdate:"v{version} — 查询缓存已清空",toastSteamMatchSaved:"Steam App ID 已设为 {id}",toastSteamMatchCleared:"已恢复自动 Steam 搜索",toastTitleSuccess:"成功",toastTitleError:"错误",toastTitleInfo:"提示",toastTitleWarning:"注意",toastDismiss:"关闭",toastSettingsSavedTitle:"设置已保存",toastCacheClearedTitle:"缓存已清除",cacheEmptyTitle:"缓存",toastCacheClearedOnUpdateTitle:"已更新",toastSteamMatchSavedTitle:"匹配已保存",toastSteamMatchClearedTitle:"匹配已重置",steamFixMatchInvalidTitle:"无效 App ID",exportFormatUnavailableTitle:"不可用",toastExportDoneTitle:"已导出",toastExportCopiedTitle:"已复制",toastExportCopyFailedTitle:"复制失败",toastExportFailedTitle:"导出失败",toastGameIdCopiedTitle:"游戏 ID 已复制",toastGameIdCopied:"{id} 已复制到剪贴板",on:"开",off:"关",loading:"加载中…",notOnSteam:"在 Steam 未找到",loadError:"无法加载 Steam 数据",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"就绪",gsPending:"待定",gsPartial:"部分",gsReleaseToday:"今日发售",gsUnknown:"未知",gsNotInDatabase:"不在数据库",reviews:"评价",price:"价格",free:"免费",discount:"-{n}%",steamUsFallback:"通过 US 商店找到({cc} 搜索无结果)",recommendations:"{n} 条推荐",links:"链接",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"至 {date}",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}小时",hltbExtra:"Extra {n}小时",hltbComplete:"Complete {n}小时",players:"玩家",playersOnline:"{n} 在玩",franchise:"系列",supportedSystems:"支持的系统",technologies:"技术",lastRecordUpdate:"最后记录更新",steamDeckStatus:"Steam Deck:{status}",steamDbBlocked:"SteamDB 被拦截",unifiedRatingTitle:"Plus 评分",unifiedRatingHint:"Steam、Metacritic、OpenCritic 与 Backloggd 的平均分",unifiedRatingOutOf:"/ 5",unifiedRatingSources:"{n} 个来源",unifiedRatingLoading:"正在汇总评分…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"导出",exportTitle:"导出游戏",exportHint:"将游戏导出为 CSV、Markdown 或 JSON(适用于 Notion)。",exportFormats:"导出格式",exportAdvanced:"其他设置",exportRatingFormat:"评分格式",exportRatingText:"文本",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"数字",exportRatingNumericHint:"5 星制(如 4.5)",exportStatusFormat:"状态格式",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"列与 Notion 游戏数据库一致。",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Notion 风格页面:标题 + 属性行。",exportFormatJson:"JSON",exportFormatJsonHint:"与 CSV 相同字段的 JSON。",exportDownload:"下载",exportCopy:"复制",exportSoon:"即将推出",exportNoRating:"无评分",exportPreviewTitle:"预览",exportPreviewDeveloper:"开发商",exportPreviewRelease:"发行",exportPreviewTime:"时长",exportPreviewFavorite:"收藏",exportPreviewTags:"标签",exportPreviewSource:"来源",exportPreviewRating:"评分",exportPreviewStatus:"状态",exportPreviewPlatform:"平台",exportPreviewDlc:"DLC",exportPreviewDates:"日期",exportFormatUnavailable:"该格式尚不可用",toastExportDone:"{name}",toastExportCopied:"内容已复制到剪贴板",toastExportCopyFailed:"无法写入剪贴板",toastExportFailed:"无法创建文件"},es:{menuSettings:"Backloggd Plus — Ajustes",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · notas · Deck/Proton · HLTB · insignias · enlaces",close:"Cerrar",cancel:"Cancelar",save:"Guardar",saveReload:"Guardar y recargar",resetSettings:"Restablecer",resetSettingsConfirmTitle:"¿Restablecer ajustes?",resetSettingsConfirm:"Todas las preferencias volverán a los valores predeterminados. La página se recargará. La caché de consultas no se borra.",resetSettingsConfirmAction:"Restablecer",toastSettingsResetTitle:"Ajustes restablecidos",toastSettingsReset:"Valores predeterminados restaurados. La página se recargará.",repoLink:"GitHub",repoAbout:"Código, actualizaciones e informes",sectionGame:"Página del juego",sectionLists:"Tarjeta de juego",sectionListsHint:"Insignias en portadas de browse, búsqueda, journal y Juegos similares.",sectionGeneral:"General",sectionProfile:"Perfil",sectionUi:"UI",generalGroupLanguage:"Idioma",generalGroupLanguageHint:"Idioma de menús, ajustes y toasts de Plus.",generalGroupInterface:"Interfaz",generalGroupInterfaceHint:"Ajustes opcionales del aspecto en páginas de Backloggd.",generalGroupBackup:"Copia de seguridad",generalGroupBackupHint:"Exporta o restaura tus preferencias de Plus. La caché de consultas no se incluye.",settingsExport:"Exportar",settingsExportHint:"Descarga un archivo JSON con tus ajustes actuales.",settingsImport:"Importar",settingsImportHint:"Restaura ajustes desde un JSON exportado anteriormente.",settingsImportConfirmTitle:"¿Importar ajustes?",settingsImportConfirm:"Tus preferencias actuales se reemplazarán. La página se recargará. La caché de consultas no cambia.",settingsImportConfirmAction:"Importar",toastSettingsExportedTitle:"Ajustes exportados",toastSettingsExported:"Archivo de copia descargado.",toastSettingsExportFailedTitle:"Error al exportar",toastSettingsExportFailed:"No se pudo crear el archivo de copia.",toastSettingsImportedTitle:"Ajustes importados",toastSettingsImported:"Preferencias restauradas. La página se recargará.",toastSettingsImportFailedTitle:"Error al importar",toastSettingsImportInvalid:"Ese archivo no es una copia de ajustes válida.",toastSettingsImportEmpty:"No se encontraron ajustes en ese archivo.",toastSettingsImportTooLarge:"El archivo es demasiado grande para importar.",toastSettingsImportReadFailed:"No se pudo leer ese archivo.",profileGroupHover:"Tarjetas al pasar el cursor",profileGroupHoverHint:"Mini perfil con información breve al pasar el cursor sobre avatares.",profileGroupPage:"Página de perfil",profileGroupPageHint:"Estilo por nivel en páginas /u/… (mismos rangos que las tarjetas).",profileGroupBlocks:"Bloques de la página",profileGroupBlocksHint:"Qué partes del perfil se estilizan cuando la mejora está activa.",sectionCache:"Caché",sectionDebug:"Depuración",sectionAbout:"Acerca de",sectionTranslate:"Traducción",aboutDescription:"Backloggd Plus es un userscript que enriquece Backloggd con datos de Steam, puntuaciones, Deck/Proton, HLTB, GameStatus, insignias en portadas, capturas, juegos similares y herramientas de uso diario. También añade un botón de Backloggd en páginas de Steam y SteamDB.",aboutLicense:"Licencia MIT",aboutRepo:"Repositorio en GitHub",aboutAuthor:"Autor",aboutContributors:"Colaboradores",aboutContributorsThanks:"Gracias a todos los que ayudan a mejorar Backloggd Plus.",aboutBackloggd:"Perfil en Backloggd",aboutBackloggdHint:"@{user} en Backloggd",aboutBackloggdNote:"Si quieres, agrégame como amigo, saluda o comparte ideas — siempre encantado de charlar.",aboutContribute:"Contribuir",aboutContributeHint:"Código abierto: cualquiera puede ayudar a mejorar Backloggd.",aboutContributeBody:"Ideas, reportes de errores, traducciones y pull requests son bienvenidos. Cada aporte ayuda a la comunidad.",aboutContributeCta:"Abrir el repositorio",aboutContributeCtaHint:"Issues, PR y debates en GitHub",enhanceHeader:"Cabecera flotante",enhanceHeaderHint:"Barra de navegación de cristal adhesiva sobre la página; se compacta un poco al desplazarse.",hideHomepageFuse:"Ocultar espacios publicitarios Fuse",hideHomepageFuseHint:"Oculta filas vacías de Fuse / incontent (inicio, reseñas del juego, etc.).",showUserMiniProfile:"Mini perfil de usuario",showUserMiniProfileHint:"Muestra una carta con información breve al pasar el cursor sobre avatares. El nivel sube con juegos jugados (25+ bronce … 1000+ leyenda).",preloadUserMiniProfile:"Precargar en el viewport",preloadUserMiniProfileHint:"Obtiene los datos del miniperfil de los avatares al entrar en el viewport para abrir la carta al instante.",showProfilePage:"Mejorar página de perfil",showProfilePageHint:"Aplica el estilo por nivel a la página de perfil. Desactiva bloques abajo si quieres.",showProfileHeader:"Cabecera y avatar",showProfileHeaderHint:"Degradado de cabecera y marco de avatar por nivel.",showProfileTierChip:"Chip de nivel",showProfileTierChipHint:"Pastilla junto al nombre con progreso al siguiente nivel.",showProfileStats:"Fila de estadísticas",showProfileStatsHint:"Acento de nivel en Games Played / Backlog / This Year.",showProfileNav:"Navegación del perfil",showProfileNavHint:"Pestañas Profile / Games / … como barra de pastillas por nivel.",showProfileFavorites:"Juegos favoritos",showProfileFavoritesHint:"Marcos de rango y elevación al pasar el cursor en Favorite Games.",showProfileMenuSettings:"Ajustes Plus en el menú de perfil",showProfileMenuSettingsHint:"Añade una entrada Plus al menú de la cuenta (junto a Settings) y oculta el botón Plus del encabezado.",miniProfilePlayed:"Jugados",miniProfileBacklog:"Backlog",miniProfileThisYear:"Este año",miniProfileFavorites:"Favoritos",miniProfileRecent:"Recientes",miniProfileBadges:"Insignias",miniProfileAvgRating:"Nota media",miniProfileViewProfile:"Ver perfil",miniProfileLoading:"Cargando perfil…",miniProfileError:"No se pudo cargar el perfil",miniProfileTierSub:"{count} juegos jugados",miniProfileTierRookie:"Novato",miniProfileTierBronze:"Bronce",miniProfileTierSilver:"Plata",miniProfileTierGold:"Oro",miniProfileTierPlatinum:"Platino",miniProfileTierDiamond:"Diamante",miniProfileTierMaster:"Maestro",miniProfileTierLegend:"Leyenda",profileTierProgress:"{n} para {tier}",profileTierMax:"Nivel máximo",debugMode:"Modo depuración",debugModeHint:"Panel de depuración con fuentes y volcado. Filas enriquecidas: tramado + insignia Caché/Red.",debugCacheHit:"Caché",debugCacheMiss:"Red",debugCacheMixed:"Mixto",debugCacheNa:"Derivado",debugReason:"Motivo",debugResponse:"Respuesta",debugPanelTitle:"Depuración",debugSources:"Fuentes",debugDump:"Volcado completo",debugSectionPage:"Página",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / jugadores",debugSectionGameStatus:"GameStatus",debugOwned:"En biblioteca",debugSrcRequest:"petición",debugSrcBackloggd:"Página actual del juego en Backloggd",debugSrcIgdb:"Slug del juego / fila Links (IGDB)",debugSrcMetacritic:"Fila Links — URL Metacritic (por slug)",debugSrcSteamStore:"Página Steam — Links + enlace en la fila Steam",debugSrcSteamDb:"Fila Links — página de app SteamDB",debugSrcSteamDbCharts:"SteamDB charts (referencia; no se scrapea)",debugSrcSteamDbInfo:"SteamDB info (referencia; no se scrapea)",debugSrcSteamTiny:"Cápsula pequeña — fallback de icono",debugSrcSteamHeader:"Imagen header de appdetails",debugSrcSteamSearch:"storesearch — resolver Steam App ID",debugSrcSteamDetails:"appdetails — precio, free, Metacritic, header",debugSrcSteamReviews:"appreviews — resumen de reseñas para Steam",debugSrcSteamTags:"GetItems — etiquetas populares para Steam",debugSrcSteamTagMap:"populartags — mapa id → nombre",debugSrcSteamOwned:"dynamicstore/userdata — comprobar biblioteca",debugSrcSteamDbPage:"HTML SteamDB — icono, logo, jugadores",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — fallback de jugadores",debugSrcIcon:"Icono del título (SteamDB / CDN)",debugSrcLogo:"Logo de portada bajo Change cover",debugSrcGameStatusApi:"API GameStatus — estado",debugSrcGameStatusPage:"Página GameStatus del slug encontrado",uiLanguage:"Idioma de la interfaz",uiLanguageHint:"Auto sigue el idioma del navegador. Se aplica al recargar.",uiLanguageAuto:"Auto (navegador)",steamCountry:"Región de Steam Store",steamCountryHint:"Afecta la moneda del precio de la API de Steam.",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Mostrar precio y reseñas de Steam",showMetacritic:"Mostrar puntuación de Metacritic",showOpenCritic:"Mostrar puntuación de OpenCritic",showOpenCriticHint:"Insignia de tier de OpenCritic (búsqueda por título).",showHltb:"Mostrar tiempos de HowLongToBeat",showHltbHint:"Horas Main / Extra / Complete de HowLongToBeat.",showDeckProton:"Mostrar Steam Deck y ProtonDB",showDeckProtonHint:"Verified/Playable de Steam Deck y nivel ProtonDB (hace falta un Steam App ID).",showGameStatus:"Mostrar estado GameStatus",showGameStatusHint:"Estado de GameStatus.info (requiere coincidencia con Steam).",showLinks:"Mostrar fila de enlaces",showSteamOwned:"Mostrar si está en tu biblioteca Steam",showSteamOwnedHint:"Muestra “En propiedad” si el juego está en tu biblioteca de Steam. Requiere estar conectado a Steam en este navegador.",showSteamWishlist:"Mostrar estado de wishlist de Steam",showSteamWishlistHint:"Muestra “Wishlist” si el juego está en tu lista de deseos de Steam (oculto si ya lo tienes). Requiere sesión de Steam.",showSteamTags:"Mostrar etiquetas de Steam",showSteamTagsHint:"Etiquetas populares de la tienda Steam (Open World, RPG, …).",showSteamCategories:"Mostrar categorías de Steam",showSteamCategoriesHint:"Categorías de la ficha de Steam (Single-player, Multi-player, Steam Achievements, …).",showSteamPageLink:"Botón Backloggd en Steam",showSteamPageLinkHint:"Añade un botón estilo SteamDB en Other site info en páginas de Steam.",showSteamDbPageLink:"Botón Backloggd en SteamDB",showSteamDbPageLinkHint:"Añade un botón junto a Store / IGDB en app-links de SteamDB.",showSteamDbIcon:"Icono SteamDB antes del título",showSteamDbIconHint:"Icono de la app desde la cabecera de SteamDB; reserva: cápsula de Steam.",showSteamDbCover:"Logo SteamDB bajo Change cover",showSteamDbCoverHint:"Portada de SteamDB debajo de la portada / Change cover.",showSteamDbGallery:"Galería de capturas de Steam",showSteamDbGalleryHint:"Franja horizontal de capturas tras las estadísticas (assets de Steam Store, como SteamDB). Clic para ampliar.",steamGalleryTitle:"Capturas",steamGalleryOpen:"Abrir captura",steamGalleryClose:"Cerrar",steamGalleryPrev:"Anterior",steamGalleryNext:"Siguiente",showSimilarGames:"Mostrar juegos similares",showSimilarGamesHint:"Franja de juegos similares bajo las capturas (Steam More Like This + % de coincidencia de etiquetas). Las tarjetas enlazan a Backloggd.",similarGamesTitle:"Juegos similares",similarGamesMatch:"Afinidad",similarGamesOpenSteam:"Abrir en Steam",showGameStats:"Mostrar bloque de estadísticas",showGameStatsHint:"Bloque nativo de Backloggd: Plays, Playing, Backlogs, Wishlists y Ratings (#game-stats).",viewerZoomIn:"Acercar",viewerZoomOut:"Alejar",viewerZoomReset:"Restablecer zoom",viewerOf:"{current} / {total}",viewerOpenCover:"Abrir portada",showSteamPlayers:"Mostrar jugadores en línea",showSteamPlayersHint:"Jugadores actuales desde Steam GetNumberOfCurrentPlayers.",showSteamDbDetails:"Mostrar detalles de SteamDB",showSteamDbDetailsHint:"Franquicia y sistemas desde Steam; tecnologías y última actualización desde SteamDB si es accesible.",showExport:"Mostrar botón de exportación",showExportHint:"Añade Exportar en la página del juego y en el editor de log (CSV / Markdown / JSON para Notion). Desactivado por defecto.",showGameId:"Mostrar ID del juego",showGameIdHint:"Muestra el ID de Backloggd (#…) después del título. Clic para copiar el ID numérico.",gameIdCopyLabel:"Copiar ID del juego",showTranslate:"Activar traducción",showTranslateHint:"Mostrar botones Traducir en descripciones y reseñas (Google Translate).",translateTargetLocale:"Idioma de destino",translateTargetLocaleHint:"Idioma al que traducir. “Igual que la interfaz” sigue General → Idioma de la interfaz.",translateAsUi:"Igual que la interfaz",translateDisplayMode:"Modo de visualización",translateDisplayModeHint:"Cómo se muestra el texto traducido al pulsar Traducir.",translateModeReplace:"Reemplazar texto (alternar original)",translateModeBelow:"Mostrar traducción bajo el original",translateDescription:"Traducir descripción del juego",translateDescriptionHint:"Botón junto al resumen en la página del juego.",translateReviews:"Traducir reseñas",translateReviewsHint:"Botón en cada tarjeta de reseña.",translateReviewsAuto:"Traducir reseñas automáticamente",translateReviewsAutoHint:"Cuando una reseña entra en la vista, traducirla automáticamente. Desactivado por defecto.",translateButton:"Traducir",translateShowOriginal:"Mostrar original",translateHide:"Ocultar traducción",translateLoading:"Traduciendo…",translateError:"No se pudo traducir",translateResultLabel:"Traducción",showCardBadges:"Mostrar insignias en portadas",showCardBadgesHint:"Interruptor principal de chips en tarjetas de portada. Off oculta todas.",cardGroupTypes:"Tipos de insignia",cardGroupTypesHint:"Qué chips aparecen cuando las insignias están activadas.",showCardBadgePrice:"Precio",showCardBadgePriceHint:"Precio de Steam Store de tu región (precio de oferta si hay descuento).",showCardBadgeReview:"% de reseñas Steam",showCardBadgeReviewHint:"Porcentaje de reseñas positivas en Steam.",showCardBadgeOwned:"En propiedad",showCardBadgeOwnedHint:"Se muestra si el juego está en tu biblioteca de Steam. Requiere sesión de Steam.",showCardBadgeWishlist:"Wishlist",showCardBadgeWishlistHint:"Se muestra si está en tu wishlist de Steam (oculto si ya lo tienes). Requiere sesión de Steam.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Chip de estado de GameStatus.info cuando hay coincidencia de Steam.",steamBackloggdTooltip:"Ver en Backloggd",steamDbBackloggdLabel:"Backloggd",steamOwned:"En propiedad",steamWishlist:"Wishlist",steamFixMatch:"Corregir coincidencia",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"Anula la búsqueda automática en Steam Store para esta página de Backloggd. Pega el App ID numérico de la URL de Steam.",steamFixMatchPlaceholder:"p. ej. 1245620",steamFixMatchClear:"Usar coincidencia automática",steamFixMatchInvalid:"Introduce un Steam App ID numérico válido",steamMatchManual:"manual",steamMatchAuto:"auto",steamMatchLabel:"App {id} · {source}",sectionLinks:"Enlaces rápidos",sectionLinksHint:"Elige qué sitios aparecen en la fila Links.",gameGroupSteam:"Steam",gameGroupScores:"Puntuaciones y duración",gameGroupCompat:"Compatibilidad y estado",gameGroupMedia:"Medios y diseño",gameGroupTools:"Herramientas",gameGroupHosts:"Otros sitios",gameGroupHostsHint:"Botones de Backloggd en páginas de Steam y SteamDB.",navSettings:"Plus",navSettingsTitle:"Ajustes de Backloggd Plus",sectionCacheHint:"Cuántos datos de consultas guarda este perfil frente al presupuesto suave de 5 MB.",sectionCacheDuration:"Duración",sectionCacheSources:"Qué cachear",sectionCacheSourcesHint:"Desactiva una fuente para dejar de guardarla. Al guardar se eliminan las entradas de esa fuente.",sectionCacheClear:"Vaciar",cacheHours:"Duración de caché (horas)",cacheHoursHint:"Cuánto reutilizar consultas de juegos (Steam, GameStatus, puntuaciones, medios, similares). 0 desactiva esa categoría. Perfiles, traducciones y FX conservan sus TTL si los interruptores están activos. Los jugadores online no se cachean.",cacheGameData:"Datos de juegos",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, capturas, juegos similares.",cacheUserProfiles:"Mini-perfiles",cacheUserProfilesHint:"Tarjetas al pasar el cursor y enriquecimiento de páginas de usuario.",cacheTranslations:"Traducciones",cacheTranslationsHint:"Resultados de Google Translate para descripciones y reseñas.",cacheFx:"Tipos de cambio",cacheFxHint:"Tipos FX para conversión aproximada de precios.",cacheCatGame:"Juegos",cacheCatProfiles:"Perfiles",cacheCatTranslations:"Traducciones",cacheCatFx:"Moneda",cacheCatSystem:"Sistema",cacheCatOff:"Off",cacheBarCatCount:"{count}",cacheBarEntries:"{count} entradas",clearCache:"Vaciar caché",cacheCleared:"{count} entradas eliminadas",cacheEmpty:"Nada que borrar — ya está vacía",cacheBarFull:"Completo",cacheBarPartial:"Parcial",cacheBarFree:"Libre",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"ocupado",cacheBarHint:"Presupuesto suave por categoría. Sistema (biblioteca/wishlist + mapa de tags) siempre activo. Los colores coinciden con los interruptores.",cacheBarAriaCats:"Caché al {pct}% — {detail}",cacheBarAria:"Caché al {pct}% — {full} completo, {partial} parcial, {free} libre",cacheTabFillAria:"Caché al {pct}%",cacheClearHint:"Elimina todas las entradas de este perfil del navegador (no cambia los interruptores).",toastSettingsSaved:"Tus preferencias se aplicarán al recargar la página.",toastCacheClearedOnUpdate:"v{version} — caché de consultas vaciada",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Se usa de nuevo la búsqueda automática de Steam",toastTitleSuccess:"Listo",toastTitleError:"Error",toastTitleInfo:"Info",toastTitleWarning:"Aviso",toastDismiss:"Cerrar",toastSettingsSavedTitle:"Ajustes guardados",toastCacheClearedTitle:"Caché vaciada",cacheEmptyTitle:"Caché",toastCacheClearedOnUpdateTitle:"Actualizado",toastSteamMatchSavedTitle:"Coincidencia guardada",toastSteamMatchClearedTitle:"Coincidencia restablecida",steamFixMatchInvalidTitle:"App ID no válido",exportFormatUnavailableTitle:"No disponible",toastExportDoneTitle:"Exportado",toastExportCopiedTitle:"Copiado",toastExportCopyFailedTitle:"Error al copiar",toastExportFailedTitle:"Error al exportar",toastGameIdCopiedTitle:"ID copiado",toastGameIdCopied:"{id} copiado al portapapeles",on:"ON",off:"OFF",loading:"Cargando…",notOnSteam:"No encontrado en Steam",loadError:"No se pudieron cargar datos de Steam",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"Listo",gsPending:"Pendiente",gsPartial:"Parcial",gsReleaseToday:"Lanzamiento hoy",gsUnknown:"Desconocido",gsNotInDatabase:"No está en la base",reviews:"Reseñas",price:"Precio",free:"Gratis",discount:"-{n}%",steamUsFallback:"Encontrado en tienda US (la búsqueda en {cc} no dio resultados)",recommendations:"{n} recomendaciones",links:"Enlaces",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"hasta {date}",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}h",hltbExtra:"Extra {n}h",hltbComplete:"Complete {n}h",players:"Jugadores",playersOnline:"{n} jugando",franchise:"Franquicia",supportedSystems:"Sistemas compatibles",technologies:"Tecnologías",lastRecordUpdate:"Última actualización del registro",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB bloqueado",unifiedRatingTitle:"Nota Plus",unifiedRatingHint:"Media de Steam, Metacritic, OpenCritic y Backloggd",unifiedRatingOutOf:"de 5",unifiedRatingSources:"{n} fuentes",unifiedRatingLoading:"Recopilando notas…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"Exportar",exportTitle:"Exportar juego",exportHint:"Exporta este juego como CSV, Markdown o JSON para Notion.",exportFormats:"Formato de exportación",exportAdvanced:"Ajustes adicionales",exportRatingFormat:"Formato de valoración",exportRatingText:"Texto",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"Numérico",exportRatingNumericHint:"Estrellas sobre 5 (p. ej. 4.5)",exportStatusFormat:"Formato de estado",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Columnas como en una base Notion.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Página Notion: título + propiedades.",exportFormatJson:"JSON",exportFormatJsonHint:"Los mismos campos que el CSV, en JSON.",exportDownload:"Descargar",exportCopy:"Copiar",exportSoon:"Pronto",exportNoRating:"Sin valoración",exportPreviewTitle:"Vista previa",exportPreviewDeveloper:"Desarrollador",exportPreviewRelease:"Lanzamiento",exportPreviewTime:"Tiempo",exportPreviewFavorite:"Favorito",exportPreviewTags:"Etiquetas",exportPreviewSource:"Fuente",exportPreviewRating:"Valoración",exportPreviewStatus:"Estado",exportPreviewPlatform:"Plataforma",exportPreviewDlc:"DLC",exportPreviewDates:"Fechas",exportFormatUnavailable:"Ese formato aún no está disponible",toastExportDone:"{name}",toastExportCopied:"Contenido copiado al portapapeles",toastExportCopyFailed:"No se pudo copiar al portapapeles",toastExportFailed:"No se pudo crear el archivo"},pt:{menuSettings:"Backloggd Plus — Configurações",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · notas · Deck/Proton · HLTB · badges · links",close:"Fechar",cancel:"Cancelar",save:"Salvar",saveReload:"Salvar e recarregar",resetSettings:"Redefinir",resetSettingsConfirmTitle:"Redefinir configurações?",resetSettingsConfirm:"Todas as preferências voltarão aos valores padrão. A página será recarregada. O cache de consultas não é limpo.",resetSettingsConfirmAction:"Redefinir",toastSettingsResetTitle:"Configurações redefinidas",toastSettingsReset:"Padrões restaurados. A página será recarregada.",repoLink:"GitHub",repoAbout:"Código, atualizações e relatórios",sectionGame:"Página do jogo",sectionLists:"Cartão do jogo",sectionListsHint:"Badges nas capas em browse, busca, journal e Jogos semelhantes.",sectionGeneral:"Geral",sectionProfile:"Perfil",sectionUi:"UI",generalGroupLanguage:"Idioma",generalGroupLanguageHint:"Idioma dos menus, configurações e toasts do Plus.",generalGroupInterface:"Interface",generalGroupInterfaceHint:"Ajustes opcionais de aparência nas páginas do Backloggd.",generalGroupBackup:"Cópia de segurança",generalGroupBackupHint:"Exporte ou restaure as preferências do Plus. O cache de consultas não é incluído.",settingsExport:"Exportar",settingsExportHint:"Baixe um arquivo JSON com as configurações atuais.",settingsImport:"Importar",settingsImportHint:"Restaure configurações a partir de um JSON exportado anteriormente.",settingsImportConfirmTitle:"Importar configurações?",settingsImportConfirm:"Suas preferências atuais serão substituídas. A página será recarregada. O cache de consultas não muda.",settingsImportConfirmAction:"Importar",toastSettingsExportedTitle:"Configurações exportadas",toastSettingsExported:"Arquivo de backup baixado.",toastSettingsExportFailedTitle:"Falha na exportação",toastSettingsExportFailed:"Não foi possível criar o arquivo de backup.",toastSettingsImportedTitle:"Configurações importadas",toastSettingsImported:"Preferências restauradas. A página será recarregada.",toastSettingsImportFailedTitle:"Falha na importação",toastSettingsImportInvalid:"Esse arquivo não é um backup de configurações válido.",toastSettingsImportEmpty:"Nenhuma configuração foi encontrada nesse arquivo.",toastSettingsImportTooLarge:"O arquivo é grande demais para importar.",toastSettingsImportReadFailed:"Não foi possível ler esse arquivo.",profileGroupHover:"Cards ao passar o mouse",profileGroupHoverHint:"Mini perfil com informações resumidas ao passar o mouse sobre avatares.",profileGroupPage:"Página de perfil",profileGroupPageHint:"Visual por nível nas páginas /u/… (mesmos ranks dos cards).",profileGroupBlocks:"Blocos da página",profileGroupBlocksHint:"Quais partes do perfil estilizar quando a melhoria está ativa.",sectionCache:"Cache",sectionDebug:"Depuração",sectionAbout:"Sobre",sectionTranslate:"Tradução",aboutDescription:"Backloggd Plus é um userscript que enriquece o Backloggd com dados da Steam, notas, Deck/Proton, HLTB, GameStatus, badges nas capas, capturas, jogos semelhantes e ferramentas de QoL. Também adiciona um botão Backloggd nas páginas da Steam e do SteamDB.",aboutLicense:"Licença MIT",aboutRepo:"Repositório no GitHub",aboutAuthor:"Autor",aboutContributors:"Colaboradores",aboutContributorsThanks:"Obrigado a todos que ajudam a melhorar o Backloggd Plus.",aboutBackloggd:"Perfil no Backloggd",aboutBackloggdHint:"@{user} no Backloggd",aboutBackloggdNote:"Sinta-se à vontade para me adicionar como amigo, dizer oi ou enviar feedback — adoro conversar.",aboutContribute:"Contribuir",aboutContributeHint:"Código aberto — qualquer um pode ajudar a melhorar o Backloggd.",aboutContributeBody:"Ideias, relatos de bugs, traduções e pull requests são bem-vindos. Cada contribuição ajuda a comunidade.",aboutContributeCta:"Abrir o repositório",aboutContributeCtaHint:"Issues, PRs e discussões no GitHub",enhanceHeader:"Cabeçalho flutuante",enhanceHeaderHint:"Barra de navegação em vidro adesiva sobre a página; fica um pouco mais compacta ao rolar.",hideHomepageFuse:"Ocultar espaços de anúncio Fuse",hideHomepageFuseHint:"Oculta linhas vazias Fuse / incontent (página inicial, análises do jogo, etc.).",showUserMiniProfile:"Mini perfil do usuário",showUserMiniProfileHint:"Mostra um card com informações resumidas ao passar o mouse sobre avatares. O nível sobe com jogos jogados (25+ bronze … 1000+ lenda).",preloadUserMiniProfile:"Pré-carregar na viewport",preloadUserMiniProfileHint:"Busca os dados do mini perfil dos avatares ao entrarem na viewport para o card abrir na hora.",showProfilePage:"Melhorar página de perfil",showProfilePageHint:"Aplica o visual por nível à página de perfil. Desative blocos abaixo se quiser.",showProfileHeader:"Cabeçalho e avatar",showProfileHeaderHint:"Degradê do cabeçalho e moldura colorida do avatar.",showProfileTierChip:"Chip de nível",showProfileTierChipHint:"Pílula ao lado do nome com progresso até o próximo nível.",showProfileStats:"Linha de estatísticas",showProfileStatsHint:"Destaque de nível em Games Played / Backlog / This Year.",showProfileNav:"Navegação do perfil",showProfileNavHint:"Abas Profile / Games / … como barra de pílulas por nível.",showProfileFavorites:"Jogos favoritos",showProfileFavoritesHint:"Molduras de rank e elevação no hover em Favorite Games.",showProfileMenuSettings:"Configurações Plus no menu do perfil",showProfileMenuSettingsHint:"Adiciona um item Plus ao menu da conta (ao lado de Settings) e oculta o botão Plus do cabeçalho.",miniProfilePlayed:"Jogados",miniProfileBacklog:"Backlog",miniProfileThisYear:"Este ano",miniProfileFavorites:"Favoritos",miniProfileRecent:"Recentes",miniProfileBadges:"Emblemas",miniProfileAvgRating:"Nota média",miniProfileViewProfile:"Ver perfil",miniProfileLoading:"Carregando perfil…",miniProfileError:"Não foi possível carregar o perfil",miniProfileTierSub:"{count} jogos jogados",miniProfileTierRookie:"Novato",miniProfileTierBronze:"Bronze",miniProfileTierSilver:"Prata",miniProfileTierGold:"Ouro",miniProfileTierPlatinum:"Platina",miniProfileTierDiamond:"Diamante",miniProfileTierMaster:"Mestre",miniProfileTierLegend:"Lenda",profileTierProgress:"{n} para {tier}",profileTierMax:"Nível máximo",debugMode:"Modo debug",debugModeHint:"Painel de debug com fontes e dump. Linhas de enriquecimento: hachura + badge Cache/Rede.",debugCacheHit:"Cache",debugCacheMiss:"Rede",debugCacheMixed:"Misto",debugCacheNa:"Derivado",debugReason:"Motivo",debugResponse:"Resposta",debugPanelTitle:"Debug",debugSources:"Fontes",debugDump:"Dump completo",debugSectionPage:"Página",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / jogadores",debugSectionGameStatus:"GameStatus",debugOwned:"Na biblioteca",debugSrcRequest:"requisição",debugSrcBackloggd:"Página atual do jogo no Backloggd",debugSrcIgdb:"Slug do jogo / linha Links (IGDB)",debugSrcMetacritic:"Linha Links — URL Metacritic (por slug)",debugSrcSteamStore:"Página Steam — Links + link na linha Steam",debugSrcSteamDb:"Linha Links — página do app SteamDB",debugSrcSteamDbCharts:"SteamDB charts (referência; não é scrape)",debugSrcSteamDbInfo:"SteamDB info (referência; não é scrape)",debugSrcSteamTiny:"Cápsula pequena — fallback de ícone",debugSrcSteamHeader:"Imagem header do appdetails",debugSrcSteamSearch:"storesearch — resolver Steam App ID",debugSrcSteamDetails:"appdetails — preço, free, Metacritic, header",debugSrcSteamReviews:"appreviews — resumo de reviews para Steam",debugSrcSteamTags:"GetItems — tags populares para Steam",debugSrcSteamTagMap:"populartags — mapa id → nome",debugSrcSteamOwned:"dynamicstore/userdata — checagem da biblioteca",debugSrcSteamDbPage:"HTML SteamDB — ícone, logo, jogadores",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — fallback de jogadores",debugSrcIcon:"Ícone do título (SteamDB / CDN)",debugSrcLogo:"Logo da capa sob Change cover",debugSrcGameStatusApi:"API GameStatus — status",debugSrcGameStatusPage:"Página GameStatus do slug encontrado",uiLanguage:"Idioma da interface",uiLanguageHint:"Auto segue o idioma do navegador. Aplica ao recarregar.",uiLanguageAuto:"Auto (navegador)",steamCountry:"Região da Steam Store",steamCountryHint:"Afeta a moeda do preço da API da Steam.",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Mostrar preço e avaliações Steam",showMetacritic:"Mostrar nota Metacritic",showOpenCritic:"Mostrar nota OpenCritic",showOpenCriticHint:"Badge de tier do OpenCritic (busca pelo título).",showHltb:"Mostrar tempos do HowLongToBeat",showHltbHint:"Horas Main / Extra / Complete do HowLongToBeat.",showDeckProton:"Mostrar Steam Deck e ProtonDB",showDeckProtonHint:"Verified/Playable do Steam Deck e nível ProtonDB (precisa de Steam App ID).",showGameStatus:"Mostrar status GameStatus",showGameStatusHint:"Status do GameStatus.info (precisa bater com a Steam).",showLinks:"Mostrar linha de links",showSteamOwned:"Mostrar se está na biblioteca Steam",showSteamOwnedHint:"Mostra “Possui” se o jogo estiver na sua biblioteca Steam. É preciso estar logado na Steam neste navegador.",showSteamWishlist:"Mostrar status da wishlist Steam",showSteamWishlistHint:"Mostra “Wishlist” se o jogo estiver na lista de desejos Steam (oculto se já possuir). Requer login Steam.",showSteamTags:"Mostrar tags da Steam",showSteamTagsHint:"Tags populares da Steam Store (Open World, RPG, …).",showSteamCategories:"Mostrar categorias da Steam",showSteamCategoriesHint:"Categorias da ficha Steam (Single-player, Multi-player, Steam Achievements, …).",showSteamPageLink:"Botão Backloggd no Steam",showSteamPageLinkHint:"Adiciona um botão estilo SteamDB em Other site info nas páginas da Steam.",showSteamDbPageLink:"Botão Backloggd no SteamDB",showSteamDbPageLinkHint:"Adiciona um botão ao lado de Store / IGDB em app-links do SteamDB.",showSteamDbIcon:"Ícone SteamDB antes do título",showSteamDbIconHint:"Ícone do app no cabeçalho do SteamDB; fallback: cápsula da Steam.",showSteamDbCover:"Logo SteamDB sob Change cover",showSteamDbCoverHint:"Capa do SteamDB abaixo da capa / Change cover.",showSteamDbGallery:"Galeria de screenshots da Steam",showSteamDbGalleryHint:"Faixa horizontal de screenshots após as estatísticas (assets da Steam Store, como no SteamDB). Clique para ampliar.",steamGalleryTitle:"Screenshots",steamGalleryOpen:"Abrir screenshot",steamGalleryClose:"Fechar",steamGalleryPrev:"Anterior",steamGalleryNext:"Próximo",showSimilarGames:"Mostrar jogos similares",showSimilarGamesHint:"Faixa de jogos similares abaixo dos screenshots (Steam More Like This + % de coincidência de tags). Os cards levam ao Backloggd.",similarGamesTitle:"Jogos similares",similarGamesMatch:"Afinidade",similarGamesOpenSteam:"Abrir na Steam",showGameStats:"Mostrar bloco de estatísticas",showGameStatsHint:"Bloco nativo do Backloggd: Plays, Playing, Backlogs, Wishlists e Ratings (#game-stats).",viewerZoomIn:"Aumentar zoom",viewerZoomOut:"Diminuir zoom",viewerZoomReset:"Redefinir zoom",viewerOf:"{current} / {total}",viewerOpenCover:"Abrir capa",showSteamPlayers:"Mostrar jogadores online",showSteamPlayersHint:"Jogadores atuais via Steam GetNumberOfCurrentPlayers.",showSteamDbDetails:"Mostrar detalhes do SteamDB",showSteamDbDetailsHint:"Franquia e sistemas via Steam; tecnologias e última atualização via SteamDB quando acessível.",showExport:"Mostrar botão de exportação",showExportHint:"Adiciona Exportar na página do jogo e no editor de log (CSV / Markdown / JSON para Notion). Desativado por padrão.",showGameId:"Mostrar ID do jogo",showGameIdHint:"Mostra o ID do Backloggd (#…) após o título. Clique para copiar o ID numérico.",gameIdCopyLabel:"Copiar ID do jogo",showTranslate:"Ativar tradução",showTranslateHint:"Mostrar botões Traduzir em descrições e análises (Google Translate).",translateTargetLocale:"Idioma de destino",translateTargetLocaleHint:"Idioma para traduzir. “Igual à interface” segue Geral → Idioma da interface.",translateAsUi:"Igual à interface",translateDisplayMode:"Modo de exibição",translateDisplayModeHint:"Como o texto traduzido aparece após Traduzir.",translateModeReplace:"Substituir texto (alternar original)",translateModeBelow:"Mostrar tradução abaixo do original",translateDescription:"Traduzir descrição do jogo",translateDescriptionHint:"Botão junto ao resumo na página do jogo.",translateReviews:"Traduzir análises",translateReviewsHint:"Botão em cada cartão de análise.",translateReviewsAuto:"Traduzir análises automaticamente",translateReviewsAutoHint:"Quando uma análise entra na tela, traduzir automaticamente. Desligado por padrão.",translateButton:"Traduzir",translateShowOriginal:"Mostrar original",translateHide:"Ocultar tradução",translateLoading:"Traduzindo…",translateError:"Não foi possível traduzir",translateResultLabel:"Tradução",showCardBadges:"Mostrar badges nas capas",showCardBadgesHint:"Interruptor principal dos chips nas capas. Desligado oculta todos.",cardGroupTypes:"Tipos de badge",cardGroupTypesHint:"Quais chips aparecem quando os badges estão ativos.",showCardBadgePrice:"Preço",showCardBadgePriceHint:"Preço da Steam Store da sua região (preço promocional com desconto).",showCardBadgeReview:"% de avaliações Steam",showCardBadgeReviewHint:"Porcentagem de avaliações positivas no Steam.",showCardBadgeOwned:"Possui",showCardBadgeOwnedHint:"Aparece se o jogo está na sua biblioteca Steam. Requer login Steam neste navegador.",showCardBadgeWishlist:"Wishlist",showCardBadgeWishlistHint:"Aparece se está na wishlist Steam (oculto se já possuir). Requer login Steam.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Chip de status do GameStatus.info quando há correspondência Steam.",steamBackloggdTooltip:"Ver no Backloggd",steamDbBackloggdLabel:"Backloggd",steamOwned:"Possui",steamWishlist:"Wishlist",steamFixMatch:"Corrigir correspondência",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"Substitui a busca automática na Steam Store nesta página do Backloggd. Cole o App ID numérico da URL da Steam.",steamFixMatchPlaceholder:"ex. 1245620",steamFixMatchClear:"Usar correspondência automática",steamFixMatchInvalid:"Digite um Steam App ID numérico válido",steamMatchManual:"manual",steamMatchAuto:"auto",steamMatchLabel:"App {id} · {source}",sectionLinks:"Links rápidos",sectionLinksHint:"Escolha quais sites aparecem na linha Links.",gameGroupSteam:"Steam",gameGroupScores:"Notas e duração",gameGroupCompat:"Compatibilidade e status",gameGroupMedia:"Mídia e layout",gameGroupTools:"Ferramentas",gameGroupHosts:"Outros sites",gameGroupHostsHint:"Botões do Backloggd nas páginas Steam e SteamDB.",navSettings:"Plus",navSettingsTitle:"Configurações do Backloggd Plus",sectionCacheHint:"Quanto de dados de consulta este perfil guarda em relação ao orçamento suave de 5 MB.",sectionCacheDuration:"Duração",sectionCacheSources:"O que armazenar",sectionCacheSourcesHint:"Desligue uma fonte para parar de guardá-la. Ao salvar, as entradas dessa fonte são removidas.",sectionCacheClear:"Limpar",cacheHours:"Duração do cache (horas)",cacheHoursHint:"Por quanto tempo reutilizar consultas de jogos (Steam, GameStatus, notas, mídia, semelhantes). 0 desativa essa categoria. Perfis, traduções e FX mantêm seus TTLs quando os interruptores estão ligados. Jogadores online nunca são cacheados.",cacheGameData:"Dados de jogos",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, capturas, jogos semelhantes.",cacheUserProfiles:"Mini-perfis",cacheUserProfilesHint:"Cartões ao passar o mouse e enriquecimento de páginas de usuário.",cacheTranslations:"Traduções",cacheTranslationsHint:"Resultados do Google Translate para descrições e análises.",cacheFx:"Taxas de câmbio",cacheFxHint:"Taxas FX para conversão aproximada de preço.",cacheCatGame:"Jogos",cacheCatProfiles:"Perfis",cacheCatTranslations:"Traduções",cacheCatFx:"Moeda",cacheCatSystem:"Sistema",cacheCatOff:"Off",cacheBarCatCount:"{count}",cacheBarEntries:"{count} entradas",clearCache:"Limpar cache",cacheCleared:"{count} entradas removidas",cacheEmpty:"Nada para limpar — já está vazio",cacheBarFull:"Completo",cacheBarPartial:"Parcial",cacheBarFree:"Livre",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"ocupado",cacheBarHint:"Orçamento suave por categoria. Sistema (biblioteca/wishlist + mapa de tags) sempre ligado. As cores correspondem aos interruptores.",cacheBarAriaCats:"Cache em {pct}% — {detail}",cacheBarAria:"Cache em {pct}% — {full} completo, {partial} parcial, {free} livre",cacheTabFillAria:"Cache em {pct}%",cacheClearHint:"Remove todas as entradas deste perfil do navegador (não altera os interruptores).",toastSettingsSaved:"Suas preferências serão aplicadas após recarregar a página.",toastCacheClearedOnUpdate:"v{version} — cache de consultas limpo",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Busca automática do Steam restaurada",toastTitleSuccess:"Pronto",toastTitleError:"Erro",toastTitleInfo:"Info",toastTitleWarning:"Aviso",toastDismiss:"Fechar",toastSettingsSavedTitle:"Configurações salvas",toastCacheClearedTitle:"Cache limpo",cacheEmptyTitle:"Cache",toastCacheClearedOnUpdateTitle:"Atualizado",toastSteamMatchSavedTitle:"Correspondência salva",toastSteamMatchClearedTitle:"Correspondência redefinida",steamFixMatchInvalidTitle:"App ID inválido",exportFormatUnavailableTitle:"Indisponível",toastExportDoneTitle:"Exportado",toastExportCopiedTitle:"Copiado",toastExportCopyFailedTitle:"Falha ao copiar",toastExportFailedTitle:"Falha na exportação",toastGameIdCopiedTitle:"ID copiado",toastGameIdCopied:"{id} copiado para a área de transferência",on:"ON",off:"OFF",loading:"Carregando…",notOnSteam:"Não encontrado na Steam",loadError:"Falha ao carregar dados da Steam",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"Pronto",gsPending:"Pendente",gsPartial:"Parcial",gsReleaseToday:"Lançamento hoje",gsUnknown:"Desconhecido",gsNotInDatabase:"Não está na base",reviews:"Avaliações",price:"Preço",free:"Grátis",discount:"-{n}%",steamUsFallback:"Encontrado na loja US (busca em {cc} sem resultados)",recommendations:"{n} recomendações",links:"Links",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"até {date}",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}h",hltbExtra:"Extra {n}h",hltbComplete:"Complete {n}h",players:"Jogadores",playersOnline:"{n} jogando",franchise:"Franquia",supportedSystems:"Sistemas suportados",technologies:"Tecnologias",lastRecordUpdate:"Última atualização do registro",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB bloqueado",unifiedRatingTitle:"Nota Plus",unifiedRatingHint:"Média de Steam, Metacritic, OpenCritic e Backloggd",unifiedRatingOutOf:"de 5",unifiedRatingSources:"{n} fontes",unifiedRatingLoading:"Coletando notas…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"Exportar",exportTitle:"Exportar jogo",exportHint:"Exporte este jogo como CSV, Markdown ou JSON para o Notion.",exportFormats:"Formato de exportação",exportAdvanced:"Configurações adicionais",exportRatingFormat:"Formato da nota",exportRatingText:"Texto",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"Numérico",exportRatingNumericHint:"Estrelas de 5 (ex. 4.5)",exportStatusFormat:"Formato do status",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Colunas como no banco Notion.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Página Notion: título + propriedades.",exportFormatJson:"JSON",exportFormatJsonHint:"Os mesmos campos do CSV, em JSON.",exportDownload:"Baixar",exportCopy:"Copiar",exportSoon:"Em breve",exportNoRating:"Sem nota",exportPreviewTitle:"Prévia",exportPreviewDeveloper:"Desenvolvedor",exportPreviewRelease:"Lançamento",exportPreviewTime:"Tempo",exportPreviewFavorite:"Favorito",exportPreviewTags:"Tags",exportPreviewSource:"Fonte",exportPreviewRating:"Nota",exportPreviewStatus:"Status",exportPreviewPlatform:"Plataforma",exportPreviewDlc:"DLC",exportPreviewDates:"Datas",exportFormatUnavailable:"Esse formato ainda não está disponível",toastExportDone:"{name}",toastExportCopied:"Conteúdo copiado para a área de transferência",toastExportCopyFailed:"Não foi possível copiar para a área de transferência",toastExportFailed:"Não foi possível criar o arquivo"},de:{menuSettings:"Backloggd Plus — Einstellungen",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · Wertungen · Deck/Proton · HLTB · Badges · Links",close:"Schließen",cancel:"Abbrechen",save:"Speichern",saveReload:"Speichern & neu laden",resetSettings:"Zurücksetzen",resetSettingsConfirmTitle:"Einstellungen zurücksetzen?",resetSettingsConfirm:"Alle Einstellungen werden auf die Standardwerte zurückgesetzt. Die Seite wird neu geladen. Der Lookup-Cache bleibt erhalten.",resetSettingsConfirmAction:"Zurücksetzen",toastSettingsResetTitle:"Einstellungen zurückgesetzt",toastSettingsReset:"Standardwerte wiederhergestellt. Die Seite wird neu geladen.",repoLink:"GitHub",repoAbout:"Quellcode, Updates und Issue-Reports",sectionGame:"Spieleseite",sectionLists:"Spielkarte",sectionListsHint:"Badges auf Covers in Browse, Suche, Journal und Ähnliche Spiele.",sectionGeneral:"Allgemein",sectionProfile:"Profil",sectionUi:"UI",generalGroupLanguage:"Sprache",generalGroupLanguageHint:"Sprache der Plus-Menüs, Einstellungen und Toasts.",generalGroupInterface:"Oberfläche",generalGroupInterfaceHint:"Optionale Anpassungen des Backloggd-Seitenlayouts.",generalGroupBackup:"Sicherung",generalGroupBackupHint:"Plus-Einstellungen exportieren oder wiederherstellen. Der Lookup-Cache ist nicht enthalten.",settingsExport:"Exportieren",settingsExportHint:"JSON-Datei mit den aktuellen Einstellungen herunterladen.",settingsImport:"Importieren",settingsImportHint:"Einstellungen aus einer zuvor exportierten JSON-Datei wiederherstellen.",settingsImportConfirmTitle:"Einstellungen importieren?",settingsImportConfirm:"Deine aktuellen Einstellungen werden ersetzt. Die Seite wird neu geladen. Der Lookup-Cache bleibt unverändert.",settingsImportConfirmAction:"Importieren",toastSettingsExportedTitle:"Einstellungen exportiert",toastSettingsExported:"Sicherungsdatei heruntergeladen.",toastSettingsExportFailedTitle:"Export fehlgeschlagen",toastSettingsExportFailed:"Sicherungsdatei konnte nicht erstellt werden.",toastSettingsImportedTitle:"Einstellungen importiert",toastSettingsImported:"Einstellungen wiederhergestellt. Die Seite wird neu geladen.",toastSettingsImportFailedTitle:"Import fehlgeschlagen",toastSettingsImportInvalid:"Diese Datei ist keine gültige Einstellungs-Sicherung.",toastSettingsImportEmpty:"In der Datei wurden keine Einstellungen gefunden.",toastSettingsImportTooLarge:"Die Datei ist zu groß zum Importieren.",toastSettingsImportReadFailed:"Die Datei konnte nicht gelesen werden.",profileGroupHover:"Hover-Karten",profileGroupHoverHint:"Minikarte mit Kurzinfos beim Hover über Avatare.",profileGroupPage:"Profilseite",profileGroupPageHint:"Stufen-Styling auf /u/…-Seiten (gleiche Ränge wie Hover-Karten).",profileGroupBlocks:"Seitenblöcke",profileGroupBlocksHint:"Welche Profilteile gestylt werden, wenn die Aufwertung aktiv ist.",sectionCache:"Cache",sectionDebug:"Debug",sectionAbout:"Über",sectionTranslate:"Übersetzung",aboutDescription:"Backloggd Plus ist ein Userscript, das Backloggd um Steam-Daten, Wertungen, Deck/Proton, HLTB, GameStatus, Cover-Badges, Screenshots, ähnliche Spiele und QoL-Tools ergänzt. Auf Steam- und SteamDB-App-Seiten erscheint zusätzlich ein Backloggd-Button.",aboutLicense:"MIT-Lizenz",aboutRepo:"GitHub-Repository",aboutAuthor:"Autor",aboutContributors:"Mitwirkende",aboutContributorsThanks:"Danke an alle, die Backloggd Plus mitverbessern.",aboutBackloggd:"Backloggd-Profil",aboutBackloggdHint:"@{user} auf Backloggd",aboutBackloggdNote:"Gerne als Freund hinzufügen, Hallo sagen oder Feedback teilen — ich freue mich über Austausch.",aboutContribute:"Mitmachen",aboutContributeHint:"Open Source — jeder kann helfen, Backloggd besser zu machen.",aboutContributeBody:"Ideen, Fehlermeldungen, Übersetzungen und Pull Requests sind willkommen. Jeder Beitrag hilft der Community.",aboutContributeCta:"Repository öffnen",aboutContributeCtaHint:"Issues, PRs und Diskussionen auf GitHub",enhanceHeader:"Schwebender Header",enhanceHeaderHint:"Klebende Glas-Navigation über der Seite; wird beim Scrollen etwas kompakter.",hideHomepageFuse:"Fuse-Werbeplätze ausblenden",hideHomepageFuseHint:"Blendet leere Fuse-/incontent-Werbezeilen aus (Startseite, Spielrezensionen usw.).",showUserMiniProfile:"Mini-Profilkarten",showUserMiniProfileHint:"Minikarte mit Kurzinfos beim Hover über Avatare. Stufe steigt mit gespielten Spielen (25+ Bronze … 1000+ Legende).",preloadUserMiniProfile:"Im Sichtbereich vorladen",preloadUserMiniProfileHint:"Lädt Miniprofil-Daten für Avatare im Sichtbereich vor, damit die Karte sofort öffnet.",showProfilePage:"Profilseite aufwerten",showProfilePageHint:"Wendet Stufen-Styling auf die Profilseite an. Einzelne Blöcke unten abschaltbar.",showProfileHeader:"Kopfbereich & Avatar",showProfileHeaderHint:"Stufen-Verlauf hinter dem Header und farbiger Avatar-Rahmen.",showProfileTierChip:"Stufen-Chip",showProfileTierChipHint:"Rang-Pille neben dem Namen mit Fortschritt zur nächsten Stufe.",showProfileStats:"Statistikzeile",showProfileStatsHint:"Stufen-Akzent bei Games Played / Backlog / This Year.",showProfileNav:"Profilnavigation",showProfileNavHint:"Profile / Games / …-Tabs als stufenfarbige Pillenleiste.",showProfileFavorites:"Lieblingsspiele",showProfileFavoritesHint:"Rang-Rahmen und Hover-Lift bei Favorite Games.",showProfileMenuSettings:"Plus-Einstellungen im Profilmenü",showProfileMenuSettingsHint:"Fügt einen Plus-Eintrag im Kontomenü (neben Settings) hinzu und blendet den Plus-Button im Header aus.",miniProfilePlayed:"Gespielt",miniProfileBacklog:"Backlog",miniProfileThisYear:"Dieses Jahr",miniProfileFavorites:"Favoriten",miniProfileRecent:"Zuletzt",miniProfileBadges:"Abzeichen",miniProfileAvgRating:"Durchschnittswertung",miniProfileViewProfile:"Profil öffnen",miniProfileLoading:"Profil wird geladen…",miniProfileError:"Profil konnte nicht geladen werden",miniProfileTierSub:"{count} Spiele gespielt",miniProfileTierRookie:"Anfänger",miniProfileTierBronze:"Bronze",miniProfileTierSilver:"Silber",miniProfileTierGold:"Gold",miniProfileTierPlatinum:"Platin",miniProfileTierDiamond:"Diamant",miniProfileTierMaster:"Meister",miniProfileTierLegend:"Legende",profileTierProgress:"{n} bis {tier}",profileTierMax:"Maximalstufe",debugMode:"Debug-Modus",debugModeHint:"Debug-Panel mit Quellen und Dump. Anreicherungszeilen: Schraffur + Cache/Netz-Badge.",debugCacheHit:"Cache",debugCacheMiss:"Netz",debugCacheMixed:"Gemischt",debugCacheNa:"Abgeleitet",debugReason:"Grund",debugResponse:"Antwort",debugPanelTitle:"Debug",debugSources:"Quellen",debugDump:"Vollständiger Dump",debugSectionPage:"Seite",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / Spieler",debugSectionGameStatus:"GameStatus",debugOwned:"Im Besitz",debugSrcRequest:"Anfrage",debugSrcBackloggd:"Aktuelle Backloggd-Spieleseite",debugSrcIgdb:"Spiel-Slug / Links-Zeile (IGDB)",debugSrcMetacritic:"Links-Zeile — Metacritic-URL (Slug-Schätzung)",debugSrcSteamStore:"Steam-Store-Seite — Links + Steam-Zeilenlink",debugSrcSteamDb:"Links-Zeile — SteamDB-App-Seite",debugSrcSteamDbCharts:"SteamDB charts (Referenz; kein Scraping)",debugSrcSteamDbInfo:"SteamDB info (Referenz; kein Scraping)",debugSrcSteamTiny:"Kleine Capsule — Icon-Fallback",debugSrcSteamHeader:"Header-Bild aus appdetails",debugSrcSteamSearch:"storesearch — Steam App ID auflösen",debugSrcSteamDetails:"appdetails — Preis, free, Metacritic, Header",debugSrcSteamReviews:"appreviews — Review-Zusammenfassung für Steam",debugSrcSteamTags:"GetItems — beliebte Tags für Steam",debugSrcSteamTagMap:"populartags — Tag-id → Name",debugSrcSteamOwned:"dynamicstore/userdata — Bibliotheksprüfung",debugSrcSteamDbPage:"SteamDB-HTML — Icon, Logo, Spieler",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — Spieler-Fallback",debugSrcIcon:"Titel-Icon (SteamDB / CDN)",debugSrcLogo:"Cover-Logo unter Change cover",debugSrcGameStatusApi:"GameStatus-API — Status",debugSrcGameStatusPage:"GameStatus-Seite für gefundenen Slug",uiLanguage:"Oberflächensprache",uiLanguageHint:"Auto folgt der Browsersprache. Gilt nach dem Neuladen.",uiLanguageAuto:"Auto (Browser)",steamCountry:"Steam-Store-Region",steamCountryHint:"Beeinflusst die Währung der Steam-Store-API.",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Steam-Preis & Bewertungen anzeigen",showMetacritic:"Metacritic-Wertung anzeigen",showOpenCritic:"OpenCritic-Wertung anzeigen",showOpenCriticHint:"OpenCritic-Tier-Badge (Suche nach Titel).",showHltb:"HowLongToBeat-Zeiten anzeigen",showHltbHint:"Main / Extra / Complete in Stunden von HowLongToBeat.",showDeckProton:"Steam Deck & ProtonDB anzeigen",showDeckProtonHint:"Steam Deck Verified/Playable plus ProtonDB-Stufe (braucht eine Steam App ID).",showGameStatus:"GameStatus-Status anzeigen",showGameStatusHint:"Status von GameStatus.info (Steam-Treffer erforderlich).",showLinks:"Link-Zeile anzeigen",showSteamOwned:"Steam-Besitz anzeigen",showSteamOwnedHint:"Zeigt „Im Besitz“, wenn das Spiel in Ihrer Steam-Bibliothek ist. Erfordert eine Steam-Anmeldung in diesem Browser.",showSteamWishlist:"Steam-Wunschliste anzeigen",showSteamWishlistHint:"Zeigt „Wunschliste“, wenn das Spiel auf Ihrer Steam-Wunschliste steht (ausgeblendet bei Besitz). Steam-Login nötig.",showSteamTags:"Steam-Tags anzeigen",showSteamTagsHint:"Beliebte Community-Tags aus dem Steam Store (Open World, RPG, …).",showSteamCategories:"Steam-Kategorien anzeigen",showSteamCategoriesHint:"Store-Kategorien aus den Steam-Appdetails (Single-player, Multi-player, Steam Achievements, …).",showSteamPageLink:"Backloggd-Button auf Steam",showSteamPageLinkHint:"SteamDB-ähnlicher Button in Other site info auf Steam-Spieleseiten.",showSteamDbPageLink:"Backloggd-Button auf SteamDB",showSteamDbPageLinkHint:"Button neben Store / IGDB in den SteamDB app-links.",showSteamDbIcon:"SteamDB-Icon vor dem Titel",showSteamDbIconHint:"App-Icon aus dem SteamDB-Seitenkopf, Fallback: Steam-Kapsel.",showSteamDbCover:"SteamDB-Logo unter Change cover",showSteamDbCoverHint:"Cover-Bild von SteamDB unter Cover / Change cover.",showSteamDbGallery:"Steam-Screenshot-Galerie zeigen",showSteamDbGalleryHint:"Horizontale Screenshot-Leiste nach den Spielstatistiken (Steam-Store-Assets wie bei SteamDB). Klick zum Vergrößern.",steamGalleryTitle:"Screenshots",steamGalleryOpen:"Screenshot öffnen",steamGalleryClose:"Schließen",steamGalleryPrev:"Zurück",steamGalleryNext:"Weiter",showSimilarGames:"Ähnliche Spiele anzeigen",showSimilarGamesHint:"Leiste ähnlicher Spiele unter den Screenshots (Steam More Like This + Tag-Übereinstimmung %). Karten führen zu Backloggd.",similarGamesTitle:"Ähnliche Spiele",similarGamesMatch:"Ähnlichkeit",similarGamesOpenSteam:"Auf Steam öffnen",showGameStats:"Spielstatistiken-Block anzeigen",showGameStatsHint:"Nativer Backloggd-Block: Plays, Playing, Backlogs, Wishlists und Ratings (#game-stats).",viewerZoomIn:"Vergrößern",viewerZoomOut:"Verkleinern",viewerZoomReset:"Zoom zurücksetzen",viewerOf:"{current} / {total}",viewerOpenCover:"Cover öffnen",showSteamPlayers:"Online-Spieler anzeigen",showSteamPlayersHint:"Aktuelle Spieler über Steam GetNumberOfCurrentPlayers.",showSteamDbDetails:"SteamDB-Details anzeigen",showSteamDbDetailsHint:"Franchise und Systeme von Steam; Technologien und letzte Datensatzaktualisierung von SteamDB, wenn erreichbar.",showExport:"Export-Schaltfläche anzeigen",showExportHint:"Export auf der Spieleite und im Log-Editor (CSV / Markdown / JSON für Notion). Standardmäßig aus.",showGameId:"Spiel-ID anzeigen",showGameIdHint:"Zeigt die Backloggd-Spiel-ID (#…) nach dem Titel. Klick kopiert die numerische ID.",gameIdCopyLabel:"Spiel-ID kopieren",showTranslate:"Übersetzung aktivieren",showTranslateHint:"Übersetzen-Buttons bei Spielbeschreibungen und Reviews (Google Translate).",translateTargetLocale:"Zielsprache",translateTargetLocaleHint:"Sprache der Übersetzung. „Wie Oberfläche“ folgt Allgemein → Sprache der Oberfläche.",translateAsUi:"Wie Oberfläche",translateDisplayMode:"Anzeigemodus",translateDisplayModeHint:"Wie der übersetzte Text nach Übersetzen angezeigt wird.",translateModeReplace:"Text ersetzen (Original umschalten)",translateModeBelow:"Übersetzung unter dem Original zeigen",translateDescription:"Spielbeschreibung übersetzen",translateDescriptionHint:"Button neben der Kurzbeschreibung auf der Spieleseite.",translateReviews:"Reviews übersetzen",translateReviewsHint:"Button auf jeder Review-Karte.",translateReviewsAuto:"Reviews automatisch übersetzen",translateReviewsAutoHint:"Wenn ein Review in den sichtbaren Bereich kommt, automatisch übersetzen. Standardmäßig aus.",translateButton:"Übersetzen",translateShowOriginal:"Original anzeigen",translateHide:"Übersetzung ausblenden",translateLoading:"Übersetze…",translateError:"Übersetzung fehlgeschlagen",translateResultLabel:"Übersetzung",showCardBadges:"Cover-Badges anzeigen",showCardBadgesHint:"Hauptschalter für Chips auf Cover-Karten. Aus blendet alle Badges.",cardGroupTypes:"Badge-Typen",cardGroupTypesHint:"Welche Chips erscheinen, wenn Cover-Badges aktiv sind.",showCardBadgePrice:"Preis",showCardBadgePriceHint:"Steam-Store-Preis Ihrer Region (Angebotspreis bei Rabatt).",showCardBadgeReview:"Steam-Bewertung %",showCardBadgeReviewHint:"Anteil positiver Steam-Bewertungen.",showCardBadgeOwned:"Besitz",showCardBadgeOwnedHint:"Zeigt an, wenn das Spiel in Ihrer Steam-Bibliothek ist. Steam-Login in diesem Browser nötig.",showCardBadgeWishlist:"Wunschliste",showCardBadgeWishlistHint:"Zeigt an, wenn das Spiel auf der Steam-Wunschliste steht (ausgeblendet bei Besitz). Steam-Login nötig.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Status-Chip von GameStatus.info bei vorhandenem Steam-Match.",steamBackloggdTooltip:"Auf Backloggd ansehen",steamDbBackloggdLabel:"Backloggd",steamOwned:"Im Besitz",steamWishlist:"Wunschliste",steamFixMatch:"Treffer korrigieren",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"Überschreibt die automatische Steam-Store-Suche für diese Backloggd-Seite. Numerische App-ID aus der Steam-URL einfügen.",steamFixMatchPlaceholder:"z. B. 1245620",steamFixMatchClear:"Automatischen Treffer verwenden",steamFixMatchInvalid:"Gültige numerische Steam App ID eingeben",steamMatchManual:"manuell",steamMatchAuto:"auto",steamMatchLabel:"App {id} · {source}",sectionLinks:"Schnelllinks",sectionLinksHint:"Welche Seiten in der Links-Zeile erscheinen.",gameGroupSteam:"Steam",gameGroupScores:"Wertungen & Spielzeit",gameGroupCompat:"Kompatibilität & Status",gameGroupMedia:"Medien & Layout",gameGroupTools:"Werkzeuge",gameGroupHosts:"Andere Seiten",gameGroupHostsHint:"Backloggd-Buttons auf Steam- und SteamDB-Spielseiten.",navSettings:"Plus",navSettingsTitle:"Backloggd Plus Einstellungen",sectionCacheHint:"Wie viel Lookup-Daten dieses Browserprofil gegen das weiche 5-MB-Budget speichert.",sectionCacheDuration:"Dauer",sectionCacheSources:"Was cachen",sectionCacheSourcesHint:"Quelle ausschalten, um sie nicht mehr zu speichern. Vorhandene Einträge werden beim Speichern entfernt.",sectionCacheClear:"Leeren",cacheHours:"Cache-Dauer (Stunden)",cacheHoursHint:"Wie lange Spiel-Lookups (Steam, GameStatus, Scores, Medien, Similar) wiederverwendet werden. 0 deaktiviert diese Kategorie. Profile, Übersetzungen und FX behalten eigene TTLs, wenn die Schalter an sind. Online-Spieler werden nicht gecacht.",cacheGameData:"Spieldaten",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, Screenshots, ähnliche Spiele.",cacheUserProfiles:"User-Mini-Profile",cacheUserProfilesHint:"Hover-Karten und Profilseiten-Anreicherung für Backloggd-Nutzer.",cacheTranslations:"Übersetzungen",cacheTranslationsHint:"Zwischengespeicherte Google-Translate-Ergebnisse für Beschreibungen und Reviews.",cacheFx:"Wechselkurse",cacheFxHint:"FX-Kurse für ungefähre Preisumrechnung.",cacheCatGame:"Spieldaten",cacheCatProfiles:"Profile",cacheCatTranslations:"Übersetzungen",cacheCatFx:"Währung",cacheCatSystem:"System",cacheCatOff:"Aus",cacheBarCatCount:"{count}",cacheBarEntries:"{count} Einträge",clearCache:"Cache leeren",cacheCleared:"{count} Einträge entfernt",cacheEmpty:"Nichts zu löschen — Cache ist schon leer",cacheBarFull:"Voll",cacheBarPartial:"Teilweise",cacheBarFree:"Frei",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"belegt",cacheBarHint:"Weiches Speicherbudget nach Kategorie. System (Bibliothek/Wunschliste + Tag-Map) bleibt an. Farben entsprechen den Schaltern unten.",cacheBarAriaCats:"Cache zu {pct}% voll — {detail}",cacheBarAria:"Cache zu {pct}% voll — {full} voll, {partial} teilweise, {free} frei",cacheTabFillAria:"Cache zu {pct}% voll",cacheClearHint:"Entfernt alle Lookup-Einträge aus diesem Browserprofil (ändert die Schalter nicht).",toastSettingsSaved:"Deine Einstellungen greifen nach dem Neuladen der Seite.",toastCacheClearedOnUpdate:"v{version} — Abfrage-Cache geleert",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Automatische Steam-Suche wird wieder verwendet",toastTitleSuccess:"Erfolg",toastTitleError:"Fehler",toastTitleInfo:"Info",toastTitleWarning:"Hinweis",toastDismiss:"Schließen",toastSettingsSavedTitle:"Einstellungen gespeichert",toastCacheClearedTitle:"Cache geleert",cacheEmptyTitle:"Cache",toastCacheClearedOnUpdateTitle:"Aktualisiert",toastSteamMatchSavedTitle:"Treffer gespeichert",toastSteamMatchClearedTitle:"Treffer zurückgesetzt",steamFixMatchInvalidTitle:"Ungültige App ID",exportFormatUnavailableTitle:"Nicht verfügbar",toastExportDoneTitle:"Exportiert",toastExportCopiedTitle:"Kopiert",toastExportCopyFailedTitle:"Kopieren fehlgeschlagen",toastExportFailedTitle:"Export fehlgeschlagen",toastGameIdCopiedTitle:"Spiel-ID kopiert",toastGameIdCopied:"{id} in die Zwischenablage kopiert",on:"AN",off:"AUS",loading:"Lädt…",notOnSteam:"Nicht auf Steam gefunden",loadError:"Steam-Daten konnten nicht geladen werden",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"Bereit",gsPending:"Ausstehend",gsPartial:"Eingeschränkt",gsReleaseToday:"Release heute",gsUnknown:"Unbekannt",gsNotInDatabase:"Nicht in der Datenbank",reviews:"Bewertungen",price:"Preis",free:"Kostenlos",discount:"-{n}%",steamUsFallback:"Über US-Store gefunden (Suche in {cc} ohne Treffer)",recommendations:"{n} Empfehlungen",links:"Links",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"bis {date}",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}h",hltbExtra:"Extra {n}h",hltbComplete:"Complete {n}h",players:"Spieler",playersOnline:"{n} spielen",franchise:"Franchise",supportedSystems:"Unterstützte Systeme",technologies:"Technologien",lastRecordUpdate:"Letzte Datensatzaktualisierung",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB blockiert",unifiedRatingTitle:"Plus-Wertung",unifiedRatingHint:"Durchschnitt aus Steam, Metacritic, OpenCritic & Backloggd",unifiedRatingOutOf:"von 5",unifiedRatingSources:"{n} Quellen",unifiedRatingLoading:"Wertungen werden geladen…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"Export",exportTitle:"Spiel exportieren",exportHint:"Dieses Spiel als CSV, Markdown oder JSON für Notion exportieren.",exportFormats:"Exportformat",exportAdvanced:"Weitere Einstellungen",exportRatingFormat:"Bewertungsformat",exportRatingText:"Text",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"Numerisch",exportRatingNumericHint:"Sterne von 5 (z. B. 4.5)",exportStatusFormat:"Statusformat",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Spalten wie in einer Notion-Spieldatenbank.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Notion-Seite: Titel + Eigenschaften.",exportFormatJson:"JSON",exportFormatJsonHint:"Dieselben Felder wie CSV, als JSON.",exportDownload:"Herunterladen",exportCopy:"Kopieren",exportSoon:"Bald",exportNoRating:"Keine Bewertung",exportPreviewTitle:"Vorschau",exportPreviewDeveloper:"Entwickler",exportPreviewRelease:"Release",exportPreviewTime:"Zeit",exportPreviewFavorite:"Favorit",exportPreviewTags:"Tags",exportPreviewSource:"Quelle",exportPreviewRating:"Bewertung",exportPreviewStatus:"Status",exportPreviewPlatform:"Plattform",exportPreviewDlc:"DLC",exportPreviewDates:"Daten",exportFormatUnavailable:"Dieses Format ist noch nicht verfügbar",toastExportDone:"{name}",toastExportCopied:"Inhalt in die Zwischenablage kopiert",toastExportCopyFailed:"Konnte nicht in die Zwischenablage kopieren",toastExportFailed:"Datei konnte nicht erstellt werden"},fr:{menuSettings:"Backloggd Plus — Réglages",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · notes · Deck/Proton · HLTB · badges · liens",close:"Fermer",cancel:"Annuler",save:"Enregistrer",saveReload:"Enregistrer et recharger",resetSettings:"Réinitialiser",resetSettingsConfirmTitle:"Réinitialiser les réglages ?",resetSettingsConfirm:"Toutes les préférences seront restaurées aux valeurs par défaut. La page sera rechargée. Le cache de recherche n’est pas effacé.",resetSettingsConfirmAction:"Réinitialiser",toastSettingsResetTitle:"Réglages réinitialisés",toastSettingsReset:"Valeurs par défaut restaurées. La page va se recharger.",repoLink:"GitHub",repoAbout:"Code source, mises à jour et signalements",sectionGame:"Page jeu",sectionLists:"Fiche jeu",sectionListsHint:"Badges sur les jaquettes en browse, recherche, journal et Jeux similaires.",sectionGeneral:"Général",sectionProfile:"Profil",sectionUi:"UI",generalGroupLanguage:"Langue",generalGroupLanguageHint:"Langue des menus, réglages et toasts de Plus.",generalGroupInterface:"Interface",generalGroupInterfaceHint:"Ajustements optionnels de l’apparence sur Backloggd.",generalGroupBackup:"Sauvegarde",generalGroupBackupHint:"Exportez ou restaurez vos préférences Plus. Le cache de recherche n’est pas inclus.",settingsExport:"Exporter",settingsExportHint:"Télécharger un fichier JSON avec vos réglages actuels.",settingsImport:"Importer",settingsImportHint:"Restaurer les réglages depuis un JSON exporté précédemment.",settingsImportConfirmTitle:"Importer les réglages ?",settingsImportConfirm:"Vos préférences actuelles seront remplacées. La page sera rechargée. Le cache de recherche ne change pas.",settingsImportConfirmAction:"Importer",toastSettingsExportedTitle:"Réglages exportés",toastSettingsExported:"Fichier de sauvegarde téléchargé.",toastSettingsExportFailedTitle:"Échec de l’export",toastSettingsExportFailed:"Impossible de créer le fichier de sauvegarde.",toastSettingsImportedTitle:"Réglages importés",toastSettingsImported:"Préférences restaurées. La page va se recharger.",toastSettingsImportFailedTitle:"Échec de l’import",toastSettingsImportInvalid:"Ce fichier n’est pas une sauvegarde de réglages valide.",toastSettingsImportEmpty:"Aucun réglage trouvé dans ce fichier.",toastSettingsImportTooLarge:"Le fichier est trop volumineux pour être importé.",toastSettingsImportReadFailed:"Impossible de lire ce fichier.",profileGroupHover:"Cartes au survol",profileGroupHoverHint:"Mini-profil avec un aperçu au survol des avatars.",profileGroupPage:"Page de profil",profileGroupPageHint:"Style par palier sur les pages /u/… (mêmes rangs que les cartes).",profileGroupBlocks:"Blocs de la page",profileGroupBlocksHint:"Quelles parties du profil styliser lorsque l’amélioration est active.",sectionCache:"Cache",sectionDebug:"Débogage",sectionAbout:"À propos",sectionTranslate:"Traduction",aboutDescription:"Backloggd Plus est un userscript qui enrichit Backloggd avec des données Steam, des notes, Deck/Proton, HLTB, GameStatus, des badges de couverture, des captures, des jeux similaires et des outils QoL. Il ajoute aussi un bouton Backloggd sur les pages Steam et SteamDB.",aboutLicense:"Licence MIT",aboutRepo:"Dépôt GitHub",aboutAuthor:"Auteur",aboutContributors:"Contributeurs",aboutContributorsThanks:"Merci à toutes les personnes qui aident à améliorer Backloggd Plus.",aboutBackloggd:"Profil Backloggd",aboutBackloggdHint:"@{user} sur Backloggd",aboutBackloggdNote:"N’hésitez pas à m’ajouter en ami, à dire bonjour ou à partager vos retours — toujours content d’échanger.",aboutContribute:"Contribuer",aboutContributeHint:"Open source — chacun peut aider à améliorer Backloggd.",aboutContributeBody:"Idées, rapports de bugs, traductions et pull requests sont les bienvenus. Chaque contribution aide la communauté.",aboutContributeCta:"Ouvrir le dépôt",aboutContributeCtaHint:"Issues, PR et discussions sur GitHub",enhanceHeader:"En-tête flottant",enhanceHeaderHint:"Barre de navigation en verre collante au-dessus de la page ; se compacte un peu au défilement.",hideHomepageFuse:"Masquer les emplacements pub Fuse",hideHomepageFuseHint:"Masque les rangées Fuse / incontent vides (accueil, avis de jeu, etc.).",showUserMiniProfile:"Mini-profil utilisateur",showUserMiniProfileHint:"Carte avec un aperçu au survol des avatars. Le palier monte avec les jeux joués (25+ bronze … 1000+ légende).",preloadUserMiniProfile:"Précharger dans le viewport",preloadUserMiniProfileHint:"Récupère les données du mini-profil pour les avatars visibles afin d’ouvrir la carte immédiatement.",showProfilePage:"Améliorer la page de profil",showProfilePageHint:"Applique le style par palier à la page de profil. Désactivez des blocs ci-dessous si besoin.",showProfileHeader:"En-tête et avatar",showProfileHeaderHint:"Dégradé d’en-tête et cadre d’avatar coloré selon le palier.",showProfileTierChip:"Pastille de palier",showProfileTierChipHint:"Pastille à côté du nom avec progression vers le palier suivant.",showProfileStats:"Ligne de stats",showProfileStatsHint:"Accent de palier sur Games Played / Backlog / This Year.",showProfileNav:"Navigation du profil",showProfileNavHint:"Onglets Profile / Games / … en barre de pastilles teintée.",showProfileFavorites:"Jeux favoris",showProfileFavoritesHint:"Cadres de rang et soulèvement au survol sur Favorite Games.",showProfileMenuSettings:"Réglages Plus dans le menu profil",showProfileMenuSettingsHint:"Ajoute une entrée Plus au menu du compte (à côté de Settings) et masque le bouton Plus de l’en-tête.",miniProfilePlayed:"Joués",miniProfileBacklog:"Backlog",miniProfileThisYear:"Cette année",miniProfileFavorites:"Favoris",miniProfileRecent:"Récents",miniProfileBadges:"Badges",miniProfileAvgRating:"Note moyenne",miniProfileViewProfile:"Voir le profil",miniProfileLoading:"Chargement du profil…",miniProfileError:"Impossible de charger le profil",miniProfileTierSub:"{count} jeux joués",miniProfileTierRookie:"Débutant",miniProfileTierBronze:"Bronze",miniProfileTierSilver:"Argent",miniProfileTierGold:"Or",miniProfileTierPlatinum:"Platine",miniProfileTierDiamond:"Diamant",miniProfileTierMaster:"Maître",miniProfileTierLegend:"Légende",profileTierProgress:"{n} avant {tier}",profileTierMax:"Palier max",debugMode:"Mode debug",debugModeHint:"Panneau debug avec sources et dump. Lignes d’enrichissement : hachures + badge Cache/Réseau.",debugCacheHit:"Cache",debugCacheMiss:"Réseau",debugCacheMixed:"Mixte",debugCacheNa:"Dérivé",debugReason:"Raison",debugResponse:"Réponse",debugPanelTitle:"Debug",debugSources:"Sources",debugDump:"Dump complet",debugSectionPage:"Page",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / joueurs",debugSectionGameStatus:"GameStatus",debugOwned:"Possédé",debugSrcRequest:"requête",debugSrcBackloggd:"Page jeu Backloggd actuelle",debugSrcIgdb:"Slug du jeu / rangée Links (IGDB)",debugSrcMetacritic:"Rangée Links — URL Metacritic (slug)",debugSrcSteamStore:"Page Steam — Links + lien rangée Steam",debugSrcSteamDb:"Rangée Links — page app SteamDB",debugSrcSteamDbCharts:"SteamDB charts (référence ; non scrapé)",debugSrcSteamDbInfo:"SteamDB info (référence ; non scrapé)",debugSrcSteamTiny:"Petite capsule — fallback icône",debugSrcSteamHeader:"Image header depuis appdetails",debugSrcSteamSearch:"storesearch — résoudre le Steam App ID",debugSrcSteamDetails:"appdetails — prix, free, Metacritic, header",debugSrcSteamReviews:"appreviews — résumé des avis pour Steam",debugSrcSteamTags:"GetItems — tags populaires pour Steam",debugSrcSteamTagMap:"populartags — carte id → nom",debugSrcSteamOwned:"dynamicstore/userdata — contrôle bibliothèque",debugSrcSteamDbPage:"HTML SteamDB — icône, logo, joueurs",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — fallback joueurs",debugSrcIcon:"Icône du titre (SteamDB / CDN)",debugSrcLogo:"Logo couverture sous Change cover",debugSrcGameStatusApi:"API GameStatus — statut",debugSrcGameStatusPage:"Page GameStatus du slug trouvé",uiLanguage:"Langue de l’interface",uiLanguageHint:"Auto suit la langue du navigateur. Appliqué après rechargement.",uiLanguageAuto:"Auto (navigateur)",steamCountry:"Région Steam Store",steamCountryHint:"Affecte la devise du prix via l’API Steam Store.",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Afficher prix et avis Steam",showMetacritic:"Afficher le score Metacritic",showOpenCritic:"Afficher le score OpenCritic",showOpenCriticHint:"Badge de tier OpenCritic (recherche par titre).",showHltb:"Afficher les temps HowLongToBeat",showHltbHint:"Heures Main / Extra / Complete depuis HowLongToBeat.",showDeckProton:"Afficher Steam Deck et ProtonDB",showDeckProtonHint:"Verified/Playable Steam Deck et palier ProtonDB (nécessite un Steam App ID).",showGameStatus:"Afficher le statut GameStatus",showGameStatusHint:"Statut via GameStatus.info (correspondance Steam requise).",showLinks:"Afficher la rangée de liens",showSteamOwned:"Afficher le statut possédé Steam",showSteamOwnedHint:"Affiche « Possédé » si le jeu est dans votre bibliothèque Steam. Connexion Steam requise dans ce navigateur.",showSteamWishlist:"Afficher le statut wishlist Steam",showSteamWishlistHint:"Affiche « Wishlist » si le jeu est dans votre liste de souhaits Steam (masqué si déjà possédé). Connexion Steam requise.",showSteamTags:"Afficher les tags Steam",showSteamTagsHint:"Tags communautaires populaires du Steam Store (Open World, RPG, …).",showSteamCategories:"Afficher les catégories Steam",showSteamCategoriesHint:"Catégories de la fiche Steam (Single-player, Multi-player, Steam Achievements, …).",showSteamPageLink:"Bouton Backloggd sur Steam",showSteamPageLinkHint:"Ajoute un bouton style SteamDB dans Other site info sur les pages Steam.",showSteamDbPageLink:"Bouton Backloggd sur SteamDB",showSteamDbPageLinkHint:"Ajoute un bouton à côté de Store / IGDB dans app-links SteamDB.",showSteamDbIcon:"Icône SteamDB avant le titre",showSteamDbIconHint:"Icône app dans l’en-tête SteamDB, repli : capsule Steam.",showSteamDbCover:"Logo SteamDB sous Change cover",showSteamDbCoverHint:"Jaquette SteamDB sous la jaquette / Change cover.",showSteamDbGallery:"Galerie de captures Steam",showSteamDbGalleryHint:"Bandeau horizontal de captures après les stats (assets Steam Store, comme SteamDB). Clic pour agrandir.",steamGalleryTitle:"Captures",steamGalleryOpen:"Ouvrir la capture",steamGalleryClose:"Fermer",steamGalleryPrev:"Précédente",steamGalleryNext:"Suivante",showSimilarGames:"Afficher les jeux similaires",showSimilarGamesHint:"Bandeau de jeux similaires sous les captures (Steam More Like This + % de correspondance des tags). Les cartes mènent à Backloggd.",similarGamesTitle:"Jeux similaires",similarGamesMatch:"Affinité",similarGamesOpenSteam:"Ouvrir sur Steam",showGameStats:"Afficher le bloc de stats",showGameStatsHint:"Bloc natif Backloggd : Plays, Playing, Backlogs, Wishlists et Ratings (#game-stats).",viewerZoomIn:"Zoom avant",viewerZoomOut:"Zoom arrière",viewerZoomReset:"Réinitialiser le zoom",viewerOf:"{current} / {total}",viewerOpenCover:"Ouvrir la jaquette",showSteamPlayers:"Afficher les joueurs en ligne",showSteamPlayersHint:"Joueurs actuels via Steam GetNumberOfCurrentPlayers.",showSteamDbDetails:"Afficher les détails SteamDB",showSteamDbDetailsHint:"Franchise et systèmes via Steam ; technologies et dernière mise à jour via SteamDB si accessible.",showExport:"Afficher le bouton d’export",showExportHint:"Ajoute Exporter sur la page du jeu et dans l’éditeur de log (CSV / Markdown / JSON pour Notion). Désactivé par défaut.",showGameId:"Afficher l’ID du jeu",showGameIdHint:"Affiche l’ID Backloggd (#…) après le titre. Clic pour copier l’ID numérique.",gameIdCopyLabel:"Copier l’ID du jeu",showTranslate:"Activer la traduction",showTranslateHint:"Afficher les boutons Traduire sur les descriptions et critiques (Google Traduction).",translateTargetLocale:"Langue cible",translateTargetLocaleHint:"Langue de traduction. « Comme l’interface » suit Général → Langue de l’interface.",translateAsUi:"Comme l’interface",translateDisplayMode:"Mode d’affichage",translateDisplayModeHint:"Comment le texte traduit s’affiche après Traduire.",translateModeReplace:"Remplacer le texte (basculer l’original)",translateModeBelow:"Afficher la traduction sous l’original",translateDescription:"Traduire la description du jeu",translateDescriptionHint:"Bouton près du résumé sur la page du jeu.",translateReviews:"Traduire les critiques",translateReviewsHint:"Bouton sur chaque carte de critique.",translateReviewsAuto:"Traduire les critiques automatiquement",translateReviewsAutoHint:"Quand une critique entre dans le champ de vision, la traduire automatiquement. Désactivé par défaut.",translateButton:"Traduire",translateShowOriginal:"Afficher l’original",translateHide:"Masquer la traduction",translateLoading:"Traduction…",translateError:"Échec de la traduction",translateResultLabel:"Traduction",showCardBadges:"Afficher les badges sur les jaquettes",showCardBadgesHint:"Interrupteur principal des chips sur les cartes. Off masque tous les badges.",cardGroupTypes:"Types de badge",cardGroupTypesHint:"Quels chips apparaissent lorsque les badges sont activés.",showCardBadgePrice:"Prix",showCardBadgePriceHint:"Prix Steam Store de votre région (prix promo en solde).",showCardBadgeReview:"% d’avis Steam",showCardBadgeReviewHint:"Pourcentage d’avis positifs sur Steam.",showCardBadgeOwned:"Possédé",showCardBadgeOwnedHint:"Affiché si le jeu est dans votre bibliothèque Steam. Connexion Steam requise.",showCardBadgeWishlist:"Wishlist",showCardBadgeWishlistHint:"Affiché si le jeu est dans votre wishlist Steam (masqué si déjà possédé). Connexion Steam requise.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Chip de statut GameStatus.info lorsqu’une correspondance Steam existe.",steamBackloggdTooltip:"Voir sur Backloggd",steamDbBackloggdLabel:"Backloggd",steamOwned:"Possédé",steamWishlist:"Wishlist",steamFixMatch:"Corriger la correspondance",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"Remplace la recherche automatique Steam Store pour cette page Backloggd. Collez l’App ID numérique de l’URL Steam.",steamFixMatchPlaceholder:"ex. 1245620",steamFixMatchClear:"Utiliser la correspondance auto",steamFixMatchInvalid:"Entrez un Steam App ID numérique valide",steamMatchManual:"manuel",steamMatchAuto:"auto",steamMatchLabel:"App {id} · {source}",sectionLinks:"Liens rapides",sectionLinksHint:"Choisissez les sites affichés dans la rangée Links.",gameGroupSteam:"Steam",gameGroupScores:"Notes et durée",gameGroupCompat:"Compatibilité et statut",gameGroupMedia:"Médias et mise en page",gameGroupTools:"Outils",gameGroupHosts:"Autres sites",gameGroupHostsHint:"Boutons Backloggd sur les pages Steam et SteamDB.",navSettings:"Plus",navSettingsTitle:"Réglages Backloggd Plus",sectionCacheHint:"Volume de données de requêtes stockées dans ce profil par rapport au budget souple de 5 Mo.",sectionCacheDuration:"Durée",sectionCacheSources:"Quoi mettre en cache",sectionCacheSourcesHint:"Désactivez une source pour ne plus la stocker. Les entrées existantes sont supprimées à l’enregistrement.",sectionCacheClear:"Vider",cacheHours:"Durée du cache (heures)",cacheHoursHint:"Durée de réutilisation des requêtes jeu (Steam, GameStatus, scores, médias, similaires). 0 désactive cette catégorie. Profils, traductions et FX gardent leurs TTL si les interrupteurs sont actifs. Les joueurs en ligne ne sont jamais mis en cache.",cacheGameData:"Données de jeu",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, captures, jeux similaires.",cacheUserProfiles:"Mini-profils",cacheUserProfilesHint:"Cartes au survol et enrichissement des pages utilisateur Backloggd.",cacheTranslations:"Traductions",cacheTranslationsHint:"Résultats Google Translate pour descriptions et critiques.",cacheFx:"Taux de change",cacheFxHint:"Taux FX pour une conversion approximative des prix.",cacheCatGame:"Jeux",cacheCatProfiles:"Profils",cacheCatTranslations:"Traductions",cacheCatFx:"Devise",cacheCatSystem:"Système",cacheCatOff:"Off",cacheBarCatCount:"{count}",cacheBarEntries:"{count} entrées",clearCache:"Vider le cache",cacheCleared:"{count} entrées supprimées",cacheEmpty:"Rien à effacer — déjà vide",cacheBarFull:"Complet",cacheBarPartial:"Partiel",cacheBarFree:"Libre",cacheBarLegend:"{label} : {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"utilisé",cacheBarHint:"Budget souple par catégorie. Système (bibliothèque/wishlist + carte de tags) toujours actif. Les couleurs correspondent aux interrupteurs.",cacheBarAriaCats:"Cache rempli à {pct}% — {detail}",cacheBarAria:"Cache rempli à {pct}% — {full} complet, {partial} partiel, {free} libre",cacheTabFillAria:"Cache rempli à {pct}%",cacheClearHint:"Supprime toutes les entrées de ce profil navigateur (ne change pas les interrupteurs).",toastSettingsSaved:"Vos préférences s'appliqueront après le rechargement de la page.",toastCacheClearedOnUpdate:"v{version} — cache de requêtes vidé",toastSteamMatchSaved:"Steam App ID : {id}",toastSteamMatchCleared:"Recherche Steam automatique rétablie",toastTitleSuccess:"Succès",toastTitleError:"Erreur",toastTitleInfo:"Info",toastTitleWarning:"Attention",toastDismiss:"Fermer",toastSettingsSavedTitle:"Réglages enregistrés",toastCacheClearedTitle:"Cache vidé",cacheEmptyTitle:"Cache",toastCacheClearedOnUpdateTitle:"Mis à jour",toastSteamMatchSavedTitle:"Correspondance enregistrée",toastSteamMatchClearedTitle:"Correspondance réinitialisée",steamFixMatchInvalidTitle:"App ID invalide",exportFormatUnavailableTitle:"Indisponible",toastExportDoneTitle:"Exporté",toastExportCopiedTitle:"Copié",toastExportCopyFailedTitle:"Échec de la copie",toastExportFailedTitle:"Échec de l'export",toastGameIdCopiedTitle:"ID copié",toastGameIdCopied:"{id} copié dans le presse-papiers",on:"ON",off:"OFF",loading:"Chargement…",notOnSteam:"Introuvable sur Steam",loadError:"Impossible de charger les données Steam",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"Prêt",gsPending:"En attente",gsPartial:"Partiel",gsReleaseToday:"Sortie aujourd’hui",gsUnknown:"Inconnu",gsNotInDatabase:"Absent de la base",reviews:"Avis",price:"Prix",free:"Gratuit",discount:"-{n}%",steamUsFallback:"Trouvé via le magasin US (aucune réponse pour {cc})",recommendations:"{n} recommandations",links:"Liens",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"jusqu’au {date}",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}h",hltbExtra:"Extra {n}h",hltbComplete:"Complete {n}h",players:"Joueurs",playersOnline:"{n} en jeu",franchise:"Franchise",supportedSystems:"Systèmes pris en charge",technologies:"Technologies",lastRecordUpdate:"Dernière mise à jour de l'enregistrement",steamDeckStatus:"Steam Deck : {status}",steamDbBlocked:"SteamDB bloqué",unifiedRatingTitle:"Note Plus",unifiedRatingHint:"Moyenne Steam, Metacritic, OpenCritic et Backloggd",unifiedRatingOutOf:"sur 5",unifiedRatingSources:"{n} sources",unifiedRatingLoading:"Collecte des notes…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"Exporter",exportTitle:"Exporter le jeu",exportHint:"Exporter ce jeu en CSV, Markdown ou JSON pour Notion.",exportFormats:"Format d’export",exportAdvanced:"Paramètres supplémentaires",exportRatingFormat:"Format de la note",exportRatingText:"Texte",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"Numérique",exportRatingNumericHint:"Étoiles sur 5 (ex. 4.5)",exportStatusFormat:"Format du statut",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Colonnes comme une base Notion.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Page Notion : titre + propriétés.",exportFormatJson:"JSON",exportFormatJsonHint:"Mêmes champs que le CSV, en JSON.",exportDownload:"Télécharger",exportCopy:"Copier",exportSoon:"Bientôt",exportNoRating:"Sans note",exportPreviewTitle:"Aperçu",exportPreviewDeveloper:"Développeur",exportPreviewRelease:"Sortie",exportPreviewTime:"Temps",exportPreviewFavorite:"Favori",exportPreviewTags:"Tags",exportPreviewSource:"Source",exportPreviewRating:"Note",exportPreviewStatus:"Statut",exportPreviewPlatform:"Plateforme",exportPreviewDlc:"DLC",exportPreviewDates:"Dates",exportFormatUnavailable:"Ce format n’est pas encore disponible",toastExportDone:"{name}",toastExportCopied:"Contenu copié dans le presse-papiers",toastExportCopyFailed:"Impossible de copier dans le presse-papiers",toastExportFailed:"Impossible de créer le fichier"},ja:{menuSettings:"Backloggd Plus — 設定",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · スコア · Deck/Proton · HLTB · バッジ · リンク",close:"閉じる",cancel:"キャンセル",save:"保存",saveReload:"保存して再読み込み",resetSettings:"リセット",resetSettingsConfirmTitle:"設定をリセットしますか?",resetSettingsConfirm:"すべての設定が初期値に戻ります。ページが再読み込みされます。検索キャッシュは消えません。",resetSettingsConfirmAction:"リセット",toastSettingsResetTitle:"設定をリセットしました",toastSettingsReset:"初期値に戻しました。ページを再読み込みします。",repoLink:"GitHub",repoAbout:"ソースコード、更新、Issue報告",sectionGame:"ゲームページ",sectionLists:"ゲームカード",sectionListsHint:"browse / 検索 / journal と「似ているゲーム」のカバーに出すバッジ。",sectionGeneral:"一般",sectionProfile:"プロフィール",sectionUi:"UI",generalGroupLanguage:"言語",generalGroupLanguageHint:"Plus のメニュー・設定・トーストの言語。",generalGroupInterface:"インターフェース",generalGroupInterfaceHint:"Backloggd ページの任意の見た目調整。",generalGroupBackup:"バックアップ",generalGroupBackupHint:"Plus の設定を書き出し/復元します。検索キャッシュは含まれません。",settingsExport:"エクスポート",settingsExportHint:"現在の設定を JSON ファイルでダウンロードします。",settingsImport:"インポート",settingsImportHint:"以前エクスポートした JSON から設定を復元します。",settingsImportConfirmTitle:"設定をインポートしますか?",settingsImportConfirm:"現在の設定が置き換えられます。ページが再読み込みされます。検索キャッシュは変更されません。",settingsImportConfirmAction:"インポート",toastSettingsExportedTitle:"設定をエクスポートしました",toastSettingsExported:"バックアップファイルをダウンロードしました。",toastSettingsExportFailedTitle:"エクスポート失敗",toastSettingsExportFailed:"バックアップファイルを作成できませんでした。",toastSettingsImportedTitle:"設定をインポートしました",toastSettingsImported:"設定を復元しました。ページを再読み込みします。",toastSettingsImportFailedTitle:"インポート失敗",toastSettingsImportInvalid:"有効な設定バックアップではありません。",toastSettingsImportEmpty:"ファイルに設定が見つかりませんでした。",toastSettingsImportTooLarge:"ファイルが大きすぎてインポートできません。",toastSettingsImportReadFailed:"ファイルを読み取れませんでした。",profileGroupHover:"ホバーカード",profileGroupHoverHint:"アバターにホバーすると簡易プロフィールを表示。",profileGroupPage:"プロフィールページ",profileGroupPageHint:"/u/… ページにホバーカードと同じティア装飾を適用。",profileGroupBlocks:"ページブロック",profileGroupBlocksHint:"装飾が有効なとき、どの部分をスタイリングするか。",sectionCache:"キャッシュ",sectionDebug:"デバッグ",sectionAbout:"このスクリプトについて",sectionTranslate:"翻訳",aboutDescription:"Backloggd Plus は、Steam データ、スコア、Deck/Proton、HLTB、GameStatus、カバーバッジ、スクリーンショット、類似ゲーム、QoL 機能で Backloggd を拡張する userscript です。Steam / SteamDB のゲームページには Backloggd ボタンも追加します。",aboutLicense:"MIT ライセンス",aboutRepo:"GitHub リポジトリ",aboutAuthor:"作者",aboutContributors:"貢献者",aboutContributorsThanks:"Backloggd Plus の改善に協力してくださる皆さんに感謝します。",aboutBackloggd:"Backloggd プロフィール",aboutBackloggdHint:"Backloggd の @{user}",aboutBackloggdNote:"フレンド追加やあいさつ、フィードバックも大歓迎です。気軽にどうぞ。",aboutContribute:"コントリビュート",aboutContributeHint:"オープンソース — 誰でも Backloggd をより良くできます。",aboutContributeBody:"アイデア、バグ報告、翻訳、プルリクエストを歓迎します。すべての貢献がコミュニティの助けになります。",aboutContributeCta:"リポジトリを開く",aboutContributeCtaHint:"GitHub の Issue・PR・議論",enhanceHeader:"フローティングヘッダー",enhanceHeaderHint:"ページ上に浮かぶガラス風の固定ナビ。スクロールすると少しコンパクトになります。",hideHomepageFuse:"Fuse広告枠を非表示",hideHomepageFuseHint:"空の Fuse / incontent 広告行を非表示にします(ホーム、ゲームレビューなど)。",showUserMiniProfile:"ユーザーミニプロフィール",showUserMiniProfileHint:"アバターにホバーすると簡易カードを表示。プレイ数が増えるほどティアが上がります(25+ ブロンズ … 1000+ レジェンド)。",preloadUserMiniProfile:"表示領域で事前読込",preloadUserMiniProfileHint:"表示領域に入ったアバターのミニプロフィールを先読みし、ホバーですぐ開けます。",showProfilePage:"プロフィールページを装飾",showProfilePageHint:"プロフィールページにティア装飾を適用。下でブロック単位にオフにできます。",showProfileHeader:"ヘッダーとアバター",showProfileHeaderHint:"ヘッダーのグラデーションと色付きアバター枠。",showProfileTierChip:"ティアチップ",showProfileTierChipHint:"ユーザー名の横にティアと次ランクまでの進捗。",showProfileStats:"統計行",showProfileStatsHint:"Games Played / Backlog などにティアのアクセント。",showProfileNav:"プロフィールナビ",showProfileNavHint:"Profile / Games などのタブをティア色のピルバーに。",showProfileFavorites:"お気に入りゲーム",showProfileFavoritesHint:"Favorite Games カバーのランク枠とホバー浮き。",showProfileMenuSettings:"プロフィールメニューに Plus 設定",showProfileMenuSettingsHint:"アカウントのドロップダウン(Settings の近く)に Plus を追加し、ヘッダーの Plus ボタンを非表示にします。",miniProfilePlayed:"プレイ済み",miniProfileBacklog:"バックログ",miniProfileThisYear:"今年",miniProfileFavorites:"お気に入り",miniProfileRecent:"最近",miniProfileBadges:"バッジ",miniProfileAvgRating:"平均評価",miniProfileViewProfile:"プロフィールを見る",miniProfileLoading:"プロフィールを読み込み中…",miniProfileError:"プロフィールを読み込めませんでした",miniProfileTierSub:"{count} 本プレイ",miniProfileTierRookie:"ルーキー",miniProfileTierBronze:"ブロンズ",miniProfileTierSilver:"シルバー",miniProfileTierGold:"ゴールド",miniProfileTierPlatinum:"プラチナ",miniProfileTierDiamond:"ダイヤモンド",miniProfileTierMaster:"マスター",miniProfileTierLegend:"レジェンド",profileTierProgress:"{tier}まであと {n}",profileTierMax:"最高ティア",debugMode:"デバッグモード",debugModeHint:"デバッグパネルと応答ダンプ。各行に斜線ハッチとキャッシュ/ネットワークバッジ。",debugCacheHit:"キャッシュ",debugCacheMiss:"ネットワーク",debugCacheMixed:"混在",debugCacheNa:"派生",debugReason:"理由",debugResponse:"レスポンス",debugPanelTitle:"デバッグ",debugSources:"ソース",debugDump:"完全ダンプ",debugSectionPage:"ページ",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / プレイヤー",debugSectionGameStatus:"GameStatus",debugOwned:"所持",debugSrcRequest:"リクエスト",debugSrcBackloggd:"現在の Backloggd ゲームページ",debugSrcIgdb:"ゲーム slug / Links 行(IGDB)",debugSrcMetacritic:"Links 行 — Metacritic URL(slug 推定)",debugSrcSteamStore:"Steam ストアページ — Links + Steam 行リンク",debugSrcSteamDb:"Links 行 — SteamDB アプリページ",debugSrcSteamDbCharts:"SteamDB charts(参考;スクレイプしない)",debugSrcSteamDbInfo:"SteamDB info(参考;スクレイプしない)",debugSrcSteamTiny:"小さいカプセル — アイコン用フォールバック",debugSrcSteamHeader:"appdetails のヘッダー画像",debugSrcSteamSearch:"storesearch — Steam App ID の解決",debugSrcSteamDetails:"appdetails — 価格・無料・Metacritic・header",debugSrcSteamReviews:"appreviews — Steam 行のレビュー概要",debugSrcSteamTags:"GetItems — Steam 行の人気タグ",debugSrcSteamTagMap:"populartags — タグ id → 名前",debugSrcSteamOwned:"dynamicstore/userdata — ライブラリ所持確認",debugSrcSteamDbPage:"SteamDB HTML — icon / logo / プレイヤー",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — プレイヤー数フォールバック",debugSrcIcon:"タイトル横アイコン(SteamDB / CDN)",debugSrcLogo:"Change cover 下のカバー logo",debugSrcGameStatusApi:"GameStatus API — 状態",debugSrcGameStatusPage:"一致した slug の GameStatus ページ",uiLanguage:"表示言語",uiLanguageHint:"自動はブラウザ言語に従います。保存後の再読み込みで反映。",uiLanguageAuto:"自動(ブラウザ)",steamCountry:"Steamストア地域",steamCountryHint:"Steam Store APIの価格通貨に影響します。",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Steamの価格とレビューを表示",showMetacritic:"Metacriticスコアを表示",showOpenCritic:"OpenCriticスコアを表示",showOpenCriticHint:"OpenCriticのTierバッジ(タイトル検索)。",showHltb:"HowLongToBeatの時間を表示",showHltbHint:"HowLongToBeatのMain / Extra / Complete時間。",showDeckProton:"Steam DeckとProtonDBを表示",showDeckProtonHint:"Steam DeckのVerified/PlayableとProtonDBティア(Steam App IDが必要)。",showGameStatus:"GameStatusの状態を表示",showGameStatusHint:"GameStatus.info の状態(Steam一致が必要)。",showLinks:"リンク行を表示",showSteamOwned:"Steam所持を表示",showSteamOwnedHint:"ライブラリにある場合「所持」を表示します。このブラウザでSteamにログインしている必要があります。",showSteamWishlist:"Steamウィッシュリストを表示",showSteamWishlistHint:"ウィッシュリストにある場合「ウィッシュリスト」を表示(所持中は非表示)。このブラウザでSteamログインが必要です。",showSteamTags:"Steamタグを表示",showSteamTagsHint:"Steamストアの人気コミュニティタグ(Open World、RPG など)。",showSteamCategories:"Steamカテゴリを表示",showSteamCategoriesHint:"Steamアプリ詳細のストアカテゴリ(シングルプレイヤー、マルチプレイヤー、Steam実績など)。",showSteamPageLink:"SteamにBackloggdボタン",showSteamPageLinkHint:"Steamのゲームページ Other site info にSteamDB風ボタンを追加します。",showSteamDbPageLink:"SteamDBにBackloggdボタン",showSteamDbPageLinkHint:"SteamDBのapp-linksでStore / IGDBの横にボタンを追加します。",showSteamDbIcon:"タイトル前に SteamDB アイコン",showSteamDbIconHint:"SteamDB ページ見出しのアプリアイコン。失敗時は Steam カプセル。",showSteamDbCover:"Change cover の下に SteamDB ロゴ",showSteamDbCoverHint:"カバー / Change cover の下に SteamDB のカバー画像。",showSteamDbGallery:"Steam スクリーンショットギャラリー",showSteamDbGalleryHint:"統計ブロックの下に横スクロールのスクショ(Steam Store アセット、SteamDB と同じ)。クリックで拡大。",steamGalleryTitle:"スクリーンショット",steamGalleryOpen:"スクリーンショットを開く",steamGalleryClose:"閉じる",steamGalleryPrev:"前へ",steamGalleryNext:"次へ",showSimilarGames:"類似ゲームを表示",showSimilarGamesHint:"スクリーンショット下の類似ゲーム帯(Steam More Like This + タグ一致率)。カードは Backloggd へ。",similarGamesTitle:"類似ゲーム",similarGamesMatch:"一致",similarGamesOpenSteam:"Steam で開く",showGameStats:"ゲーム統計ブロックを表示",showGameStatsHint:"Backloggd 本体の Plays / Playing / Backlogs / Wishlists / Ratings ブロック(#game-stats)。",viewerZoomIn:"拡大",viewerZoomOut:"縮小",viewerZoomReset:"ズームをリセット",viewerOf:"{current} / {total}",viewerOpenCover:"カバーを開く",showSteamPlayers:"オンラインプレイヤー数を表示",showSteamPlayersHint:"Steam GetNumberOfCurrentPlayers の現在のプレイヤー数。",showSteamDbDetails:"SteamDBの詳細を表示",showSteamDbDetailsHint:"フランチャイズと対応システムはSteamから。技術と最終レコード更新はSteamDBが届く場合。",showExport:"エクスポートボタンを表示",showExportHint:"ゲームページとログ編集にエクスポートを追加(Notion 向け CSV / Markdown / JSON)。既定はオフ。",showGameId:"ゲーム ID を表示",showGameIdHint:"タイトルの後に Backloggd のゲーム ID(#…)を表示。クリックで数値 ID をコピー。",gameIdCopyLabel:"ゲーム ID をコピー",showTranslate:"翻訳を有効にする",showTranslateHint:"ゲーム説明とレビューに「翻訳」ボタンを表示(Google 翻訳)。",translateTargetLocale:"翻訳先の言語",translateTargetLocaleHint:"翻訳する言語。「インターフェースと同じ」は 一般 → インターフェース言語 に従います。",translateAsUi:"インターフェースと同じ",translateDisplayMode:"表示モード",translateDisplayModeHint:"「翻訳」後の表示方法。",translateModeReplace:"テキストを置換(原文と切替)",translateModeBelow:"原文の下に翻訳を表示",translateDescription:"ゲーム説明を翻訳",translateDescriptionHint:"ゲームページの概要横のボタン。",translateReviews:"レビューを翻訳",translateReviewsHint:"各レビューカードのボタン。",translateReviewsAuto:"レビューを自動翻訳",translateReviewsAutoHint:"レビューが画面に入ったら自動で翻訳します。デフォルトはオフ。",translateButton:"翻訳",translateShowOriginal:"原文を表示",translateHide:"翻訳を隠す",translateLoading:"翻訳中…",translateError:"翻訳できませんでした",translateResultLabel:"翻訳",showCardBadges:"カバーにバッジを表示",showCardBadgesHint:"カバーカードのバッジ総スイッチ。オフですべて非表示。",cardGroupTypes:"バッジの種類",cardGroupTypesHint:"カバーバッジが有効なときに表示するチップ。",showCardBadgePrice:"価格",showCardBadgePriceHint:"地域の Steam ストア価格(割引時はセール価格)。",showCardBadgeReview:"Steam評価%",showCardBadgeReviewHint:"Steam の好評率。",showCardBadgeOwned:"所持",showCardBadgeOwnedHint:"Steam ライブラリにある場合に表示。このブラウザで Steam ログインが必要。",showCardBadgeWishlist:"ウィッシュリスト",showCardBadgeWishlistHint:"Steam ウィッシュリストにある場合に表示(所持時は非表示)。Steam ログインが必要。",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Steam マッチがあるときの GameStatus.info ステータスチップ。",steamBackloggdTooltip:"Backloggdで見る",steamDbBackloggdLabel:"Backloggd",steamOwned:"所持",steamWishlist:"ウィッシュリスト",steamFixMatch:"一致を修正",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"このBackloggdページの自動Steamストア検索を上書きします。Steam URLの数字App IDを貼り付けてください。",steamFixMatchPlaceholder:"例: 1245620",steamFixMatchClear:"自動一致を使う",steamFixMatchInvalid:"有効な数字のSteam App IDを入力してください",steamMatchManual:"手動",steamMatchAuto:"自動",steamMatchLabel:"App {id} · {source}",sectionLinks:"クイックリンク",sectionLinksHint:"Links行に表示するサイトを選択します。",gameGroupSteam:"Steam",gameGroupScores:"スコアとプレイ時間",gameGroupCompat:"互換性とステータス",gameGroupMedia:"メディアとレイアウト",gameGroupTools:"ツール",gameGroupHosts:"その他のサイト",gameGroupHostsHint:"Steam / SteamDB のゲームページに Backloggd ボタンを表示します。",navSettings:"Plus",navSettingsTitle:"Backloggd Plus 設定",sectionCacheHint:"このブラウザプロファイルがソフト上限5MBに対して保持している照会データの量。",sectionCacheDuration:"保持期間",sectionCacheSources:"キャッシュする内容",sectionCacheSourcesHint:"ソースをオフにすると保存を止めます。保存時にそのソースの既存エントリは削除されます。",sectionCacheClear:"消去",cacheHours:"キャッシュ時間(時間)",cacheHoursHint:"ゲーム照会(Steam・GameStatus・スコア・メディア・類似)の再利用時間。0でそのカテゴリを無効。プロフィール・翻訳・FXは各トグルがオンなら独自TTLを維持。オンラインプレイヤー数はキャッシュしない。",cacheGameData:"ゲームデータ",cacheGameDataHint:"Steam、SteamDB、GameStatus、OpenCritic、HLTB、ProtonDB、スクリーンショット、類似ゲーム。",cacheUserProfiles:"ユーザーミニプロフィール",cacheUserProfilesHint:"ホバーカードとBackloggdユーザーページの装飾。",cacheTranslations:"翻訳",cacheTranslationsHint:"説明文・レビューのGoogle翻訳結果。",cacheFx:"為替レート",cacheFxHint:"おおよその価格換算に使うFXレート。",cacheCatGame:"ゲーム",cacheCatProfiles:"プロフィール",cacheCatTranslations:"翻訳",cacheCatFx:"通貨",cacheCatSystem:"システム",cacheCatOff:"オフ",cacheBarCatCount:"{count}",cacheBarEntries:"{count} 件",clearCache:"キャッシュを消去",cacheCleared:"{count} 件を削除しました",cacheEmpty:"クリアするものはありません — すでに空です",cacheBarFull:"完全",cacheBarPartial:"部分",cacheBarFree:"空き",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"使用中",cacheBarHint:"カテゴリ別の目安容量。システム(ライブラリ/ウィッシュリスト+タグマップ)は常にオン。色は下のトグルと対応。",cacheBarAriaCats:"キャッシュ使用率 {pct}% — {detail}",cacheBarAria:"キャッシュ使用率 {pct}% — 完全 {full}、部分 {partial}、空き {free}",cacheTabFillAria:"キャッシュ使用率 {pct}%",cacheClearHint:"このブラウザプロファイルの照会エントリをすべて削除(トグルは変更しません)。",toastSettingsSaved:"ページを再読み込みすると設定が反映されます。",toastCacheClearedOnUpdate:"v{version} — 照会キャッシュをクリアしました",toastSteamMatchSaved:"Steam App ID を {id} に設定",toastSteamMatchCleared:"自動 Steam 検索に戻しました",toastTitleSuccess:"成功",toastTitleError:"エラー",toastTitleInfo:"情報",toastTitleWarning:"注意",toastDismiss:"閉じる",toastSettingsSavedTitle:"設定を保存しました",toastCacheClearedTitle:"キャッシュをクリア",cacheEmptyTitle:"キャッシュ",toastCacheClearedOnUpdateTitle:"更新しました",toastSteamMatchSavedTitle:"マッチを保存",toastSteamMatchClearedTitle:"マッチをリセット",steamFixMatchInvalidTitle:"無効な App ID",exportFormatUnavailableTitle:"利用不可",toastExportDoneTitle:"エクスポート完了",toastExportCopiedTitle:"コピーしました",toastExportCopyFailedTitle:"コピー失敗",toastExportFailedTitle:"エクスポート失敗",toastGameIdCopiedTitle:"ゲーム ID をコピー",toastGameIdCopied:"{id} をクリップボードにコピーしました",on:"ON",off:"OFF",loading:"読み込み中…",notOnSteam:"Steamで見つかりません",loadError:"Steamデータを読み込めませんでした",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"対応済み",gsPending:"未対応",gsPartial:"一部対応",gsReleaseToday:"本日リリース",gsUnknown:"不明",gsNotInDatabase:"データベースになし",reviews:"レビュー",price:"価格",free:"無料",discount:"-{n}%",steamUsFallback:"USストア経由で検出({cc} の検索は結果なし)",recommendations:"おすすめ {n}",links:"リンク",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"{date}まで",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}時間",hltbExtra:"Extra {n}時間",hltbComplete:"Complete {n}時間",players:"プレイヤー",playersOnline:"{n} 人がプレイ中",franchise:"フランチャイズ",supportedSystems:"対応システム",technologies:"テクノロジー",lastRecordUpdate:"最終レコード更新",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDBがブロックされています",unifiedRatingTitle:"Plusスコア",unifiedRatingHint:"Steam・Metacritic・OpenCritic・Backloggdの平均",unifiedRatingOutOf:"/ 5",unifiedRatingSources:"{n}件のソース",unifiedRatingLoading:"スコアを集計中…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"エクスポート",exportTitle:"ゲームをエクスポート",exportHint:"このゲームを CSV / Markdown / JSON で Notion 向けに書き出します。",exportFormats:"エクスポート形式",exportAdvanced:"詳細設定",exportRatingFormat:"評価の形式",exportRatingText:"テキスト",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"数値",exportRatingNumericHint:"5 点満点(例: 4.5)",exportStatusFormat:"ステータス形式",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Notion のゲーム DB と同じ列。",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Notion 形式: タイトル + プロパティ行。",exportFormatJson:"JSON",exportFormatJsonHint:"CSV と同じフィールドの JSON。",exportDownload:"ダウンロード",exportCopy:"コピー",exportSoon:"近日",exportNoRating:"未評価",exportPreviewTitle:"プレビュー",exportPreviewDeveloper:"開発元",exportPreviewRelease:"発売",exportPreviewTime:"時間",exportPreviewFavorite:"お気に入り",exportPreviewTags:"タグ",exportPreviewSource:"ソース",exportPreviewRating:"評価",exportPreviewStatus:"ステータス",exportPreviewPlatform:"プラットフォーム",exportPreviewDlc:"DLC",exportPreviewDates:"日付",exportFormatUnavailable:"この形式はまだ利用できません",toastExportDone:"{name}",toastExportCopied:"クリップボードにコピーしました",toastExportCopyFailed:"クリップボードにコピーできませんでした",toastExportFailed:"ファイルを作成できませんでした"},ko:{menuSettings:"Backloggd Plus — 설정",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · 점수 · Deck/Proton · HLTB · 배지 · 링크",close:"닫기",cancel:"취소",save:"저장",saveReload:"저장 후 새로고침",resetSettings:"초기화",resetSettingsConfirmTitle:"설정을 초기화할까요?",resetSettingsConfirm:"모든 설정이 기본값으로 돌아갑니다. 페이지가 새로고침됩니다. 조회 캐시는 지워지지 않습니다.",resetSettingsConfirmAction:"초기화",toastSettingsResetTitle:"설정 초기화됨",toastSettingsReset:"기본값이 복원되었습니다. 페이지를 새로고침합니다.",repoLink:"GitHub",repoAbout:"소스 코드, 업데이트, 이슈 보고",sectionGame:"게임 페이지",sectionLists:"게임 카드",sectionListsHint:"browse / 검색 / journal 및 비슷한 게임 커버의 배지.",sectionGeneral:"일반",sectionProfile:"프로필",sectionUi:"UI",generalGroupLanguage:"언어",generalGroupLanguageHint:"Plus 메뉴, 설정, 토스트 언어.",generalGroupInterface:"인터페이스",generalGroupInterfaceHint:"Backloggd 페이지의 선택적 화면 조정.",generalGroupBackup:"백업",generalGroupBackupHint:"Plus 설정을 내보내거나 복원합니다. 조회 캐시는 포함되지 않습니다.",settingsExport:"내보내기",settingsExportHint:"현재 설정이 담긴 JSON 파일을 다운로드합니다.",settingsImport:"가져오기",settingsImportHint:"이전에 내보낸 JSON 파일에서 설정을 복원합니다.",settingsImportConfirmTitle:"설정을 가져올까요?",settingsImportConfirm:"현재 설정이 교체됩니다. 페이지가 새로고침됩니다. 조회 캐시는 변경되지 않습니다.",settingsImportConfirmAction:"가져오기",toastSettingsExportedTitle:"설정 내보내기 완료",toastSettingsExported:"백업 파일을 다운로드했습니다.",toastSettingsExportFailedTitle:"내보내기 실패",toastSettingsExportFailed:"백업 파일을 만들 수 없습니다.",toastSettingsImportedTitle:"설정 가져오기 완료",toastSettingsImported:"설정을 복원했습니다. 페이지가 새로고침됩니다.",toastSettingsImportFailedTitle:"가져오기 실패",toastSettingsImportInvalid:"유효한 설정 백업 파일이 아닙니다.",toastSettingsImportEmpty:"파일에서 설정을 찾지 못했습니다.",toastSettingsImportTooLarge:"파일이 너무 커서 가져올 수 없습니다.",toastSettingsImportReadFailed:"파일을 읽을 수 없습니다.",profileGroupHover:"호버 카드",profileGroupHoverHint:"아바타에 마우스를 올리면 요약 미니 프로필을 표시합니다.",profileGroupPage:"프로필 페이지",profileGroupPageHint:"/u/… 페이지에 호버 카드와 같은 티어 스타일을 적용합니다.",profileGroupBlocks:"페이지 블록",profileGroupBlocksHint:"꾸미기가 켜져 있을 때 스타일을 적용할 프로필 구역입니다.",sectionCache:"캐시",sectionDebug:"디버그",sectionAbout:"정보",sectionTranslate:"번역",aboutDescription:"Backloggd Plus는 Steam 데이터, 점수, Deck/Proton, HLTB, GameStatus, 커버 배지, 스크린샷, 유사 게임, QoL 도구로 Backloggd를 확장하는 userscript입니다. Steam / SteamDB 게임 페이지에 Backloggd 버튼도 추가합니다.",aboutLicense:"MIT 라이선스",aboutRepo:"GitHub 저장소",aboutAuthor:"제작자",aboutContributors:"기여자",aboutContributorsThanks:"Backloggd Plus 개선에 도움을 주시는 모든 분께 감사드립니다.",aboutBackloggd:"Backloggd 프로필",aboutBackloggdHint:"Backloggd의 @{user}",aboutBackloggdNote:"친구 추가, 인사, 피드백 모두 환영합니다. 편하게 연락해 주세요.",aboutContribute:"기여하기",aboutContributeHint:"오픈 소스 — 누구나 Backloggd를 더 좋게 만들 수 있습니다.",aboutContributeBody:"아이디어, 버그 제보, 번역, PR을 환영합니다. 모든 기여가 커뮤니티에 도움이 됩니다.",aboutContributeCta:"저장소 열기",aboutContributeCtaHint:"GitHub의 Issue, PR, 토론",enhanceHeader:"플로팅 헤더",enhanceHeaderHint:"페이지 위에 떠 있는 글래스 스타일 고정 내비. 스크롤 시 조금 더 컴팩트해집니다.",hideHomepageFuse:"Fuse 광고 슬롯 숨기기",hideHomepageFuseHint:"빈 Fuse / incontent 광고 행을 숨깁니다(홈, 게임 리뷰 등).",showUserMiniProfile:"사용자 미니 프로필",showUserMiniProfileHint:"아바타에 마우스를 올리면 요약 미니 카드를 표시합니다. 플레이 수에 따라 티어가 올라갑니다(25+ 브론즈 … 1000+ 레전드).",preloadUserMiniProfile:"화면에 보이면 미리 불러오기",preloadUserMiniProfileHint:"아바타가 화면에 들어오면 미니 프로필을 미리 받아 호버 시 바로 열리게 합니다.",showProfilePage:"프로필 페이지 꾸미기",showProfilePageHint:"프로필 페이지에 티어 스타일을 적용합니다. 아래에서 구역별로 끌 수 있습니다.",showProfileHeader:"헤더와 아바타",showProfileHeaderHint:"헤더 그라데이션과 티어 색 아바타 테두리.",showProfileTierChip:"티어 칩",showProfileTierChipHint:"이름 옆에 티어와 다음 등급까지 진행도.",showProfileStats:"통계 행",showProfileStatsHint:"Games Played / Backlog 등에 티어 강조.",showProfileNav:"프로필 탐색",showProfileNavHint:"Profile / Games 탭을 티어 색 필 바로 표시.",showProfileFavorites:"즐겨찾기 게임",showProfileFavoritesHint:"Favorite Games 커버의 랭크 프레임과 호버 효과.",showProfileMenuSettings:"프로필 메뉴에 Plus 설정",showProfileMenuSettingsHint:"계정 드롭다운의 Settings 옆에 Plus 항목을 추가하고 헤더 Plus 버튼을 숨깁니다.",miniProfilePlayed:"플레이",miniProfileBacklog:"백로그",miniProfileThisYear:"올해",miniProfileFavorites:"즐겨찾기",miniProfileRecent:"최근",miniProfileBadges:"배지",miniProfileAvgRating:"평균 평점",miniProfileViewProfile:"프로필 보기",miniProfileLoading:"프로필 불러오는 중…",miniProfileError:"프로필을 불러오지 못했습니다",miniProfileTierSub:"{count}개 플레이",miniProfileTierRookie:"루키",miniProfileTierBronze:"브론즈",miniProfileTierSilver:"실버",miniProfileTierGold:"골드",miniProfileTierPlatinum:"플래티넘",miniProfileTierDiamond:"다이아몬드",miniProfileTierMaster:"마스터",miniProfileTierLegend:"레전드",profileTierProgress:"{tier}까지 {n}",profileTierMax:"최고 티어",debugMode:"디버그 모드",debugModeHint:"디버그 패널과 응답 덤프. 각 보강 행에 빗금 + 캐시/네트워크 배지.",debugCacheHit:"캐시",debugCacheMiss:"네트워크",debugCacheMixed:"혼합",debugCacheNa:"파생",debugReason:"이유",debugResponse:"응답",debugPanelTitle:"디버그",debugSources:"소스",debugDump:"전체 덤프",debugSectionPage:"페이지",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / 플레이어",debugSectionGameStatus:"GameStatus",debugOwned:"보유",debugSrcRequest:"요청",debugSrcBackloggd:"현재 Backloggd 게임 페이지",debugSrcIgdb:"게임 slug / Links 행 (IGDB)",debugSrcMetacritic:"Links 행 — Metacritic URL (slug 추정)",debugSrcSteamStore:"Steam 스토어 페이지 — Links + Steam 행 링크",debugSrcSteamDb:"Links 행 — SteamDB 앱 페이지",debugSrcSteamDbCharts:"SteamDB charts (참고; 스크래핑 안 함)",debugSrcSteamDbInfo:"SteamDB info (참고; 스크래핑 안 함)",debugSrcSteamTiny:"작은 캡슐 — 아이콘 폴백",debugSrcSteamHeader:"appdetails 헤더 이미지",debugSrcSteamSearch:"storesearch — Steam App ID 해석",debugSrcSteamDetails:"appdetails — 가격, 무료, Metacritic, header",debugSrcSteamReviews:"appreviews — Steam 행 리뷰 요약",debugSrcSteamTags:"GetItems — Steam 행 인기 태그",debugSrcSteamTagMap:"populartags — 태그 id → 이름",debugSrcSteamOwned:"dynamicstore/userdata — 라이브러리 보유 확인",debugSrcSteamDbPage:"SteamDB HTML — icon, logo, 플레이어",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — 플레이어 폴백",debugSrcIcon:"제목 아이콘 (SteamDB / CDN)",debugSrcLogo:"Change cover 아래 커버 logo",debugSrcGameStatusApi:"GameStatus API — 상태",debugSrcGameStatusPage:"일치한 slug의 GameStatus 페이지",uiLanguage:"인터페이스 언어",uiLanguageHint:"자동은 브라우저 언어를 따릅니다. 저장 후 새로고침 시 적용.",uiLanguageAuto:"자동 (브라우저)",steamCountry:"Steam 스토어 지역",steamCountryHint:"Steam Store API 가격 통화에 영향을 줍니다.",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Steam 가격 및 리뷰 표시",showMetacritic:"Metacritic 점수 표시",showOpenCritic:"OpenCritic 점수 표시",showOpenCriticHint:"OpenCritic Tier 배지(제목 검색).",showHltb:"HowLongToBeat 시간 표시",showHltbHint:"HowLongToBeat의 Main / Extra / Complete 시간.",showDeckProton:"Steam Deck 및 ProtonDB 표시",showDeckProtonHint:"Steam Deck Verified/Playable과 ProtonDB 등급(Steam App ID 필요).",showGameStatus:"GameStatus 상태 표시",showGameStatusHint:"GameStatus.info의 상태(Steam 일치 필요).",showLinks:"링크 행 표시",showSteamOwned:"Steam 보유 표시",showSteamOwnedHint:"라이브러리에 있으면 “보유”를 표시합니다. 이 브라우저에서 Steam 로그인이 필요합니다.",showSteamWishlist:"Steam 위시리스트 상태 표시",showSteamWishlistHint:"위시리스트에 있으면 “위시리스트”를 표시합니다(보유 중이면 숨김). 이 브라우저에서 Steam 로그인이 필요합니다.",showSteamTags:"Steam 태그 표시",showSteamTagsHint:"Steam 스토어의 인기 커뮤니티 태그(Open World, RPG 등).",showSteamCategories:"Steam 카테고리 표시",showSteamCategoriesHint:"Steam 앱 상세의 스토어 카테고리(싱글플레이어, 멀티플레이어, Steam 도전 과제 등).",showSteamPageLink:"Steam에 Backloggd 버튼",showSteamPageLinkHint:"Steam 게임 페이지 Other site info에 SteamDB 스타일 버튼을 추가합니다.",showSteamDbPageLink:"SteamDB에 Backloggd 버튼",showSteamDbPageLinkHint:"SteamDB app-links에서 Store / IGDB 옆에 버튼을 추가합니다.",showSteamDbIcon:"제목 앞에 SteamDB 아이콘",showSteamDbIconHint:"SteamDB 페이지 헤더 앱 아이콘. 실패 시 Steam 캡슐.",showSteamDbCover:"Change cover 아래 SteamDB 로고",showSteamDbCoverHint:"커버 / Change cover 아래 SteamDB 커버 이미지.",showSteamDbGallery:"Steam 스크린샷 갤러리",showSteamDbGalleryHint:"통계 블록 아래 가로 스크린샷 스트립(Steam 스토어 에셋, SteamDB와 동일). 클릭하면 확대.",steamGalleryTitle:"스크린샷",steamGalleryOpen:"스크린샷 열기",steamGalleryClose:"닫기",steamGalleryPrev:"이전",steamGalleryNext:"다음",showSimilarGames:"유사 게임 표시",showSimilarGamesHint:"스크린샷 아래 유사 게임 스트립(Steam More Like This + 태그 일치 %). 카드는 Backloggd로 이동.",similarGamesTitle:"유사 게임",similarGamesMatch:"일치",similarGamesOpenSteam:"Steam에서 열기",showGameStats:"게임 통계 블록 표시",showGameStatsHint:"Backloggd 기본 Plays / Playing / Backlogs / Wishlists / Ratings 블록(#game-stats).",viewerZoomIn:"확대",viewerZoomOut:"축소",viewerZoomReset:"줌 초기화",viewerOf:"{current} / {total}",viewerOpenCover:"커버 열기",showSteamPlayers:"온라인 플레이어 수 표시",showSteamPlayersHint:"Steam GetNumberOfCurrentPlayers의 현재 플레이어 수.",showSteamDbDetails:"SteamDB 세부정보 표시",showSteamDbDetailsHint:"프랜차이즈와 지원 시스템은 Steam에서; 기술과 마지막 기록 업데이트는 SteamDB 접근 가능할 때.",showExport:"내보내기 버튼 표시",showExportHint:"게임 페이지와 로그 편집기에 내보내기 추가(Notion용 CSV / Markdown / JSON). 기본값은 끔.",showGameId:"게임 ID 표시",showGameIdHint:"제목 뒤에 Backloggd 게임 ID(#…)를 표시합니다. 클릭하면 숫자 ID를 복사합니다.",gameIdCopyLabel:"게임 ID 복사",showTranslate:"번역 사용",showTranslateHint:"게임 설명과 리뷰에 번역 버튼 표시(Google 번역).",translateTargetLocale:"대상 언어",translateTargetLocaleHint:'번역할 언어. "인터페이스와 동일"은 일반 → 인터페이스 언어를 따릅니다.',translateAsUi:"인터페이스와 동일",translateDisplayMode:"표시 모드",translateDisplayModeHint:"번역 버튼을 누른 뒤 표시 방식.",translateModeReplace:"텍스트 교체(원문 전환)",translateModeBelow:"원문 아래에 번역 표시",translateDescription:"게임 설명 번역",translateDescriptionHint:"게임 페이지 요약 옆 버튼.",translateReviews:"리뷰 번역",translateReviewsHint:"각 리뷰 카드의 버튼.",translateReviewsAuto:"리뷰 자동 번역",translateReviewsAutoHint:"리뷰가 화면에 보이면 자동으로 번역합니다. 기본값은 꺼짐.",translateButton:"번역",translateShowOriginal:"원문 보기",translateHide:"번역 숨기기",translateLoading:"번역 중…",translateError:"번역할 수 없음",translateResultLabel:"번역",showCardBadges:"커버 배지 표시",showCardBadgesHint:"커버 카드 배지 마스터 스위치. 끄면 모든 배지가 숨겨집니다.",cardGroupTypes:"배지 유형",cardGroupTypesHint:"커버 배지가 켜져 있을 때 표시할 칩.",showCardBadgePrice:"가격",showCardBadgePriceHint:"지역 Steam 스토어 가격(할인 시 특가).",showCardBadgeReview:"Steam 평가 %",showCardBadgeReviewHint:"Steam 긍정 평가 비율.",showCardBadgeOwned:"보유",showCardBadgeOwnedHint:"Steam 라이브러리에 있을 때 표시. 이 브라우저에서 Steam 로그인 필요.",showCardBadgeWishlist:"위시리스트",showCardBadgeWishlistHint:"Steam 위시리스트에 있을 때 표시(보유 시 숨김). Steam 로그인 필요.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Steam 매치가 있을 때 GameStatus.info 상태 칩.",steamBackloggdTooltip:"Backloggd에서 보기",steamDbBackloggdLabel:"Backloggd",steamOwned:"보유",steamWishlist:"위시리스트",steamFixMatch:"매치 수정",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"이 Backloggd 페이지의 자동 Steam 스토어 검색을 덮어씁니다. Steam URL의 숫자 App ID를 붙여넣으세요.",steamFixMatchPlaceholder:"예: 1245620",steamFixMatchClear:"자동 매치 사용",steamFixMatchInvalid:"유효한 숫자 Steam App ID를 입력하세요",steamMatchManual:"수동",steamMatchAuto:"자동",steamMatchLabel:"App {id} · {source}",sectionLinks:"빠른 링크",sectionLinksHint:"Links 행에 표시할 사이트를 선택합니다.",gameGroupSteam:"Steam",gameGroupScores:"점수 및 플레이 시간",gameGroupCompat:"호환성 및 상태",gameGroupMedia:"미디어 및 레이아웃",gameGroupTools:"도구",gameGroupHosts:"다른 사이트",gameGroupHostsHint:"Steam 및 SteamDB 게임 페이지의 Backloggd 버튼.",navSettings:"Plus",navSettingsTitle:"Backloggd Plus 설정",sectionCacheHint:"이 브라우저 프로필이 소프트 한도 5MB 기준으로 보관 중인 조회 데이터 양.",sectionCacheDuration:"보관 시간",sectionCacheSources:"캐시할 항목",sectionCacheSourcesHint:"소스를 끄면 더 이상 저장하지 않습니다. 저장 시 해당 소스의 기존 항목이 삭제됩니다.",sectionCacheClear:"비우기",cacheHours:"캐시 시간(시간)",cacheHoursHint:"게임 조회(Steam, GameStatus, 점수, 미디어, 유사 게임) 재사용 시간. 0은 해당 카테고리 비활성. 프로필·번역·FX는 토글이 켜져 있으면 자체 TTL 유지. 온라인 플레이어 수는 캐시하지 않음.",cacheGameData:"게임 데이터",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, 스크린샷, 유사 게임.",cacheUserProfiles:"유저 미니 프로필",cacheUserProfilesHint:"호버 카드와 Backloggd 유저 페이지 꾸밈.",cacheTranslations:"번역",cacheTranslationsHint:"설명·리뷰용 Google Translate 결과.",cacheFx:"환율",cacheFxHint:"대략적인 가격 환산에 쓰는 FX 환율.",cacheCatGame:"게임",cacheCatProfiles:"프로필",cacheCatTranslations:"번역",cacheCatFx:"통화",cacheCatSystem:"시스템",cacheCatOff:"끔",cacheBarCatCount:"{count}",cacheBarEntries:"{count}개 항목",clearCache:"캐시 비우기",cacheCleared:"{count}개 항목 삭제됨",cacheEmpty:"지울 항목 없음 — 이미 비어 있음",cacheBarFull:"완전",cacheBarPartial:"부분",cacheBarFree:"여유",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"사용 중",cacheBarHint:"카테고리별 소프트 한도. 시스템(라이브러리/위시리스트 + 태그 맵)은 항상 켜짐. 색은 아래 토글과 일치.",cacheBarAriaCats:"캐시 {pct}% 사용 — {detail}",cacheBarAria:"캐시 {pct}% 사용 — 완전 {full}, 부분 {partial}, 여유 {free}",cacheTabFillAria:"캐시 {pct}% 사용",cacheClearHint:"이 브라우저 프로필의 모든 조회 항목을 삭제합니다(토글은 바꾸지 않음).",toastSettingsSaved:"페이지를 새로고침하면 설정이 적용됩니다.",toastCacheClearedOnUpdate:"v{version} — 조회 캐시가 지워짐",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"자동 Steam 검색으로 복원됨",toastTitleSuccess:"성공",toastTitleError:"오류",toastTitleInfo:"정보",toastTitleWarning:"주의",toastDismiss:"닫기",toastSettingsSavedTitle:"설정 저장됨",toastCacheClearedTitle:"캐시 지움",cacheEmptyTitle:"캐시",toastCacheClearedOnUpdateTitle:"업데이트됨",toastSteamMatchSavedTitle:"매치 저장됨",toastSteamMatchClearedTitle:"매치 재설정",steamFixMatchInvalidTitle:"잘못된 App ID",exportFormatUnavailableTitle:"사용할 수 없음",toastExportDoneTitle:"내보내기 완료",toastExportCopiedTitle:"복사됨",toastExportCopyFailedTitle:"복사 실패",toastExportFailedTitle:"내보내기 실패",toastGameIdCopiedTitle:"게임 ID 복사됨",toastGameIdCopied:"{id}가 클립보드에 복사됨",on:"켜짐",off:"꺼짐",loading:"로딩 중…",notOnSteam:"Steam에서 찾을 수 없음",loadError:"Steam 데이터를 불러오지 못함",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"준비됨",gsPending:"대기",gsPartial:"부분",gsReleaseToday:"오늘 출시",gsUnknown:"알 수 없음",gsNotInDatabase:"데이터베이스 없음",reviews:"리뷰",price:"가격",free:"무료",discount:"-{n}%",steamUsFallback:"US 스토어로 찾음 ({cc} 검색 결과 없음)",recommendations:"추천 {n}",links:"링크",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"{date}까지",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}시간",hltbExtra:"Extra {n}시간",hltbComplete:"Complete {n}시간",players:"플레이어",playersOnline:"{n}명 플레이 중",franchise:"프랜차이즈",supportedSystems:"지원 시스템",technologies:"기술",lastRecordUpdate:"마지막 기록 업데이트",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB 차단됨",unifiedRatingTitle:"Plus 평점",unifiedRatingHint:"Steam, Metacritic, OpenCritic, Backloggd 평균",unifiedRatingOutOf:"/ 5",unifiedRatingSources:"출처 {n}개",unifiedRatingLoading:"평점 집계 중…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"내보내기",exportTitle:"게임 내보내기",exportHint:"이 게임을 Notion용 CSV, Markdown 또는 JSON으로 내보냅니다.",exportFormats:"내보내기 형식",exportAdvanced:"추가 설정",exportRatingFormat:"평점 형식",exportRatingText:"텍스트",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"숫자",exportRatingNumericHint:"5점 만점 (예: 4.5)",exportStatusFormat:"상태 형식",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Notion 게임 DB와 같은 열.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Notion 스타일: 제목 + 속성 줄.",exportFormatJson:"JSON",exportFormatJsonHint:"CSV와 같은 필드의 JSON.",exportDownload:"다운로드",exportCopy:"복사",exportSoon:"곧",exportNoRating:"평점 없음",exportPreviewTitle:"미리보기",exportPreviewDeveloper:"개발사",exportPreviewRelease:"출시",exportPreviewTime:"시간",exportPreviewFavorite:"즐겨찾기",exportPreviewTags:"태그",exportPreviewSource:"출처",exportPreviewRating:"평점",exportPreviewStatus:"상태",exportPreviewPlatform:"플랫폼",exportPreviewDlc:"DLC",exportPreviewDates:"날짜",exportFormatUnavailable:"아직 사용할 수 없는 형식입니다",toastExportDone:"{name}",toastExportCopied:"클립보드에 복사됨",toastExportCopyFailed:"클립보드에 복사할 수 없음",toastExportFailed:"파일을 만들 수 없음"},pl:{menuSettings:"Backloggd Plus — Ustawienia",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · oceny · Deck/Proton · HLTB · odznaki · linki",close:"Zamknij",cancel:"Anuluj",save:"Zapisz",saveReload:"Zapisz i przeładuj",resetSettings:"Resetuj",resetSettingsConfirmTitle:"Zresetować ustawienia?",resetSettingsConfirm:"Wszystkie preferencje wrócą do wartości domyślnych. Strona zostanie przeładowana. Cache wyszukiwań nie jest czyszczony.",resetSettingsConfirmAction:"Resetuj",toastSettingsResetTitle:"Ustawienia zresetowane",toastSettingsReset:"Przywrócono domyślne wartości. Strona zostanie przeładowana.",repoLink:"GitHub",repoAbout:"Kod źródłowy, aktualizacje i zgłoszenia",sectionGame:"Strona gry",sectionLists:"Karta gry",sectionListsHint:"Odznaki na okładkach w browse, wyszukiwaniu, journal i Podobnych grach.",sectionGeneral:"Ogólne",sectionProfile:"Profil",sectionUi:"UI",generalGroupLanguage:"Język",generalGroupLanguageHint:"Język menu, ustawień i toastów Plus.",generalGroupInterface:"Interfejs",generalGroupInterfaceHint:"Opcjonalne poprawki wyglądu stron Backloggd.",generalGroupBackup:"Kopia zapasowa",generalGroupBackupHint:"Eksportuj lub przywróć ustawienia Plus. Pamięć podręczna zapytań nie jest dołączana.",settingsExport:"Eksportuj",settingsExportHint:"Pobierz plik JSON z bieżącymi ustawieniami.",settingsImport:"Importuj",settingsImportHint:"Przywróć ustawienia z wcześniej wyeksportowanego pliku JSON.",settingsImportConfirmTitle:"Zaimportować ustawienia?",settingsImportConfirm:"Bieżące preferencje zostaną zastąpione. Strona się przeładuje. Pamięć podręczna zapytań się nie zmieni.",settingsImportConfirmAction:"Importuj",toastSettingsExportedTitle:"Ustawienia wyeksportowane",toastSettingsExported:"Pobrano plik kopii zapasowej.",toastSettingsExportFailedTitle:"Eksport nieudany",toastSettingsExportFailed:"Nie udało się utworzyć pliku kopii zapasowej.",toastSettingsImportedTitle:"Ustawienia zaimportowane",toastSettingsImported:"Preferencje przywrócone. Strona zostanie przeładowana.",toastSettingsImportFailedTitle:"Import nieudany",toastSettingsImportInvalid:"Ten plik nie jest prawidłową kopią ustawień.",toastSettingsImportEmpty:"W pliku nie znaleziono ustawień.",toastSettingsImportTooLarge:"Plik jest zbyt duży, by go zaimportować.",toastSettingsImportReadFailed:"Nie udało się odczytać pliku.",profileGroupHover:"Karty po najechaniu",profileGroupHoverHint:"Mini profil z krótkimi informacjami po najechaniu na awatar.",profileGroupPage:"Strona profilu",profileGroupPageHint:"Styl według poziomu na stronach /u/… (te same rangi co karty).",profileGroupBlocks:"Bloki strony",profileGroupBlocksHint:"Które części profilu stylizować, gdy ulepszenie jest włączone.",sectionCache:"Cache",sectionDebug:"Debug",sectionAbout:"O skrypcie",sectionTranslate:"Tłumaczenie",aboutDescription:"Backloggd Plus to userscript, który wzbogaca Backloggd o dane Steam, oceny, Deck/Proton, HLTB, GameStatus, odznaki na okładkach, zrzuty ekranu, podobne gry i narzędzia QoL. Dodaje też przycisk Backloggd na stronach Steam i SteamDB.",aboutLicense:"Licencja MIT",aboutRepo:"Repozytorium GitHub",aboutAuthor:"Autor",aboutContributors:"Współtwórcy",aboutContributorsThanks:"Dziękujemy wszystkim, którzy pomagają ulepszać Backloggd Plus.",aboutBackloggd:"Profil Backloggd",aboutBackloggdHint:"@{user} na Backloggd",aboutBackloggdNote:"Śmiało dodaj mnie do znajomych, napisz lub podziel się opinią — zawsze chętnie pogadam.",aboutContribute:"Współtwórz",aboutContributeHint:"Open source — każdy może pomóc ulepszyć Backloggd.",aboutContributeBody:"Pomysły, zgłoszenia błędów, tłumaczenia i pull requesty są mile widziane. Każdy wkład pomaga społeczności.",aboutContributeCta:"Otwórz repozytorium",aboutContributeCtaHint:"Issues, PR i dyskusje na GitHubie",enhanceHeader:"Pływający nagłówek",enhanceHeaderHint:"Przyklejony szklany pasek nawigacji nad stroną; przy przewijaniu lekko się zagęszcza.",hideHomepageFuse:"Ukryj sloty reklamowe Fuse",hideHomepageFuseHint:"Ukrywa puste wiersze Fuse / incontent (strona główna, recenzje gry itd.).",showUserMiniProfile:"Mini profil użytkownika",showUserMiniProfileHint:"Karta z krótkimi informacjami po najechaniu na awatar. Poziom rośnie wraz z liczbą gier (25+ brąz … 1000+ legenda).",preloadUserMiniProfile:"Wczytuj w obszarze widoczności",preloadUserMiniProfileHint:"Pobiera dane mini profilu awatarów w polu widzenia, by karta otwierała się od razu.",showProfilePage:"Ulepsz stronę profilu",showProfilePageHint:"Stosuje styl poziomu do strony profilu. Poszczególne bloki można wyłączyć poniżej.",showProfileHeader:"Nagłówek i awatar",showProfileHeaderHint:"Gradient nagłówka i kolorowa ramka awatara według poziomu.",showProfileTierChip:"Chip poziomu",showProfileTierChipHint:"Pastylka przy nazwie z postępem do kolejnego poziomu.",showProfileStats:"Wiersz statystyk",showProfileStatsHint:"Akcent poziomu przy Games Played / Backlog / This Year.",showProfileNav:"Nawigacja profilu",showProfileNavHint:"Zakładki Profile / Games / … jako pasek pastylek poziomu.",showProfileFavorites:"Ulubione gry",showProfileFavoritesHint:"Ramki rang i unoszenie przy najechaniu na Favorite Games.",showProfileMenuSettings:"Ustawienia Plus w menu profilu",showProfileMenuSettingsHint:"Dodaje pozycję Plus w menu konta (obok Settings) i ukrywa przycisk Plus w nagłówku.",miniProfilePlayed:"Zagrane",miniProfileBacklog:"Backlog",miniProfileThisYear:"W tym roku",miniProfileFavorites:"Ulubione",miniProfileRecent:"Ostatnie",miniProfileBadges:"Odznaki",miniProfileAvgRating:"Średnia ocena",miniProfileViewProfile:"Zobacz profil",miniProfileLoading:"Ładowanie profilu…",miniProfileError:"Nie udało się wczytać profilu",miniProfileTierSub:"{count} gier zagranych",miniProfileTierRookie:"Nowicjusz",miniProfileTierBronze:"Brąz",miniProfileTierSilver:"Srebro",miniProfileTierGold:"Złoto",miniProfileTierPlatinum:"Platyna",miniProfileTierDiamond:"Diament",miniProfileTierMaster:"Mistrz",miniProfileTierLegend:"Legenda",profileTierProgress:"{n} do {tier}",profileTierMax:"Maksymalny poziom",debugMode:"Tryb debug",debugModeHint:"Panel debug ze źródłami i dumpem. Wiersze wzbogacenia: kreskowanie + badge Cache/Sieć.",debugCacheHit:"Cache",debugCacheMiss:"Sieć",debugCacheMixed:"Mieszane",debugCacheNa:"Pochodne",debugReason:"Powód",debugResponse:"Odpowiedź",debugPanelTitle:"Debug",debugSources:"Źródła",debugDump:"Pełny dump",debugSectionPage:"Strona",debugSectionSteam:"Steam",debugSectionSteamDb:"SteamDB / gracze",debugSectionGameStatus:"GameStatus",debugOwned:"Posiadane",debugSrcRequest:"żądanie",debugSrcBackloggd:"Bieżąca strona gry na Backloggd",debugSrcIgdb:"Slug gry / wiersz Links (IGDB)",debugSrcMetacritic:"Wiersz Links — URL Metacritic (po slugu)",debugSrcSteamStore:"Strona Steam — Links + link w wierszu Steam",debugSrcSteamDb:"Wiersz Links — strona aplikacji SteamDB",debugSrcSteamDbCharts:"SteamDB charts (referencja; bez scrapowania)",debugSrcSteamDbInfo:"SteamDB info (referencja; bez scrapowania)",debugSrcSteamTiny:"Mała kapsuła — fallback ikony",debugSrcSteamHeader:"Obraz header z appdetails",debugSrcSteamSearch:"storesearch — rozwiązanie Steam App ID",debugSrcSteamDetails:"appdetails — cena, free, Metacritic, header",debugSrcSteamReviews:"appreviews — podsumowanie recenzji dla Steam",debugSrcSteamTags:"GetItems — popularne tagi dla Steam",debugSrcSteamTagMap:"populartags — mapa id → nazwa",debugSrcSteamOwned:"dynamicstore/userdata — sprawdzenie biblioteki",debugSrcSteamDbPage:"HTML SteamDB — ikona, logo, gracze",debugSrcSteamPlayersApi:"GetNumberOfCurrentPlayers — fallback graczy",debugSrcIcon:"Ikona tytułu (SteamDB / CDN)",debugSrcLogo:"Logo okładki pod Change cover",debugSrcGameStatusApi:"API GameStatus — status",debugSrcGameStatusPage:"Strona GameStatus dla znalezionego sluga",uiLanguage:"Język interfejsu",uiLanguageHint:"Auto podąża za językiem przeglądarki. Działa po przeładowaniu.",uiLanguageAuto:"Auto (przeglądarka)",steamCountry:"Region Steam Store",steamCountryHint:"Wpływa na walutę ceny z API Steam Store.",showPriceConvert:"Show converted price",showPriceConvertHint:"After the Steam store price, show an approximate amount in another currency (mid-market FX, not a second Steam region). Example: 1 400 ₸ ~ 560 ₽. On sale, a smaller strikethrough amount to the right is the pre-discount convert.",convertCurrency:"Convert prices to",convertCurrencyHint:"Used only when “Show converted price” is on and the store currency differs from the target.",showSteam:"Pokaż cenę i opinie Steam",showMetacritic:"Pokaż wynik Metacritic",showOpenCritic:"Pokaż wynik OpenCritic",showOpenCriticHint:"Odznaka tier OpenCritic (wyszukiwanie po tytule).",showHltb:"Pokaż czasy HowLongToBeat",showHltbHint:"Godziny Main / Extra / Complete z HowLongToBeat.",showDeckProton:"Pokaż Steam Deck i ProtonDB",showDeckProtonHint:"Verified/Playable Steam Deck oraz poziom ProtonDB (wymaga Steam App ID).",showGameStatus:"Pokaż status GameStatus",showGameStatusHint:"Status z GameStatus.info (wymaga dopasowania Steam).",showLinks:"Pokaż wiersz linków",showSteamOwned:"Pokaż status posiadania Steam",showSteamOwnedHint:"Pokazuje „Posiadane”, jeśli gra jest w bibliotece Steam. Wymaga zalogowania do Steam w tej przeglądarce.",showSteamWishlist:"Pokaż status wishlisty Steam",showSteamWishlistHint:"Pokazuje „Wishlist”, jeśli gra jest na liście życzeń Steam (ukryte, gdy już posiadane). Wymaga logowania Steam.",showSteamTags:"Pokaż tagi Steam",showSteamTagsHint:"Popularne tagi społeczności ze Steam Store (Open World, RPG, …).",showSteamCategories:"Pokaż kategorie Steam",showSteamCategoriesHint:"Kategorie ze szczegółów aplikacji Steam (Single-player, Multi-player, Steam Achievements, …).",showSteamPageLink:"Przycisk Backloggd na Steam",showSteamPageLinkHint:"Dodaje przycisk w stylu SteamDB w Other site info na stronach Steam.",showSteamDbPageLink:"Przycisk Backloggd na SteamDB",showSteamDbPageLinkHint:"Dodaje przycisk obok Store / IGDB w app-links na SteamDB.",showSteamDbIcon:"Ikona SteamDB przed tytułem",showSteamDbIconHint:"Ikona aplikacji z nagłówka SteamDB; zapasowo kapsuła Steam.",showSteamDbCover:"Logo SteamDB pod Change cover",showSteamDbCoverHint:"Okładka ze SteamDB pod okładką / Change cover.",showSteamDbGallery:"Galeria screenshotów Steam",showSteamDbGalleryHint:"Poziomy pasek screenshotów po statystykach (assetty Steam Store, jak na SteamDB). Kliknij, by powiększyć.",steamGalleryTitle:"Screenshoty",steamGalleryOpen:"Otwórz screenshot",steamGalleryClose:"Zamknij",steamGalleryPrev:"Poprzedni",steamGalleryNext:"Następny",showSimilarGames:"Pokaż podobne gry",showSimilarGamesHint:"Pasek podobnych gier pod screenshotami (Steam More Like This + % zgodności tagów). Karty prowadzą do Backloggd.",similarGamesTitle:"Podobne gry",similarGamesMatch:"Podobieństwo",similarGamesOpenSteam:"Otwórz w Steam",showGameStats:"Pokaż blok statystyk gry",showGameStatsHint:"Natywny blok Backloggd: Plays, Playing, Backlogs, Wishlists i Ratings (#game-stats).",viewerZoomIn:"Powiększ",viewerZoomOut:"Pomniejsz",viewerZoomReset:"Resetuj zoom",viewerOf:"{current} / {total}",viewerOpenCover:"Otwórz okładkę",showSteamPlayers:"Pokaż graczy online",showSteamPlayersHint:"Bieżąca liczba graczy z Steam GetNumberOfCurrentPlayers.",showSteamDbDetails:"Pokaż szczegóły SteamDB",showSteamDbDetailsHint:"Franczyza i systemy ze Steam; technologie i ostatnia aktualizacja rekordu ze SteamDB, gdy dostępne.",showExport:"Pokaż przycisk eksportu",showExportHint:"Dodaje Eksport na stronie gry i w edytorze logu (CSV / Markdown / JSON do Notion). Domyślnie wyłączone.",showGameId:"Pokaż ID gry",showGameIdHint:"Pokazuje ID gry Backloggd (#…) po tytule. Kliknięcie kopiuje numeryczne ID.",gameIdCopyLabel:"Kopiuj ID gry",showTranslate:"Włącz tłumaczenie",showTranslateHint:"Przyciski „Przetłumacz” przy opisach i recenzjach (Google Translate).",translateTargetLocale:"Język docelowy",translateTargetLocaleHint:"Język tłumaczenia. „Jak interfejs” podąża za Ogólne → Język interfejsu.",translateAsUi:"Jak interfejs",translateDisplayMode:"Tryb wyświetlania",translateDisplayModeHint:"Jak pokazać tłumaczenie po kliknięciu Przetłumacz.",translateModeReplace:"Zastąp tekst (przełącz oryginał)",translateModeBelow:"Pokaż tłumaczenie pod oryginałem",translateDescription:"Tłumacz opis gry",translateDescriptionHint:"Przycisk obok opisu na stronie gry.",translateReviews:"Tłumacz recenzje",translateReviewsHint:"Przycisk na każdej karcie recenzji.",translateReviewsAuto:"Automatyczne tłumaczenie recenzji",translateReviewsAutoHint:"Gdy recenzja wejdzie w pole widzenia, tłumacz ją automatycznie. Domyślnie wyłączone.",translateButton:"Przetłumacz",translateShowOriginal:"Pokaż oryginał",translateHide:"Ukryj tłumaczenie",translateLoading:"Tłumaczenie…",translateError:"Nie udało się przetłumaczyć",translateResultLabel:"Tłumaczenie",showCardBadges:"Pokaż odznaki na okładkach",showCardBadgesHint:"Główny przełącznik chipów na kartach okładek. Off ukrywa wszystkie.",cardGroupTypes:"Typy odznak",cardGroupTypesHint:"Które chipy widać, gdy odznaki na okładkach są włączone.",showCardBadgePrice:"Cena",showCardBadgePriceHint:"Cena Steam Store w Twoim regionie (cena promocyjna przy zniżce).",showCardBadgeReview:"% recenzji Steam",showCardBadgeReviewHint:"Procent pozytywnych recenzji na Steam.",showCardBadgeOwned:"Posiadane",showCardBadgeOwnedHint:"Pokazuje, gdy gra jest w bibliotece Steam. Wymaga logowania Steam w tej przeglądarce.",showCardBadgeWishlist:"Wishlist",showCardBadgeWishlistHint:"Pokazuje, gdy gra jest na wishlist Steam (ukryte, jeśli już posiadana). Wymaga logowania Steam.",showCardBadgeGameStatus:"GameStatus",showCardBadgeGameStatusHint:"Chip statusu z GameStatus.info przy dopasowaniu Steam.",steamBackloggdTooltip:"Zobacz na Backloggd",steamDbBackloggdLabel:"Backloggd",steamOwned:"Posiadane",steamWishlist:"Wishlist",steamFixMatch:"Popraw dopasowanie",steamFixMatchTitle:"Steam App ID",steamFixMatchHint:"Nadpisuje automatyczne wyszukiwanie Steam Store dla tej strony Backloggd. Wklej liczbowe App ID z URL Steam.",steamFixMatchPlaceholder:"np. 1245620",steamFixMatchClear:"Użyj automatycznego dopasowania",steamFixMatchInvalid:"Podaj prawidłowe liczbowe Steam App ID",steamMatchManual:"ręcznie",steamMatchAuto:"auto",steamMatchLabel:"App {id} · {source}",sectionLinks:"Szybkie linki",sectionLinksHint:"Wybierz witryny widoczne w wierszu Links.",gameGroupSteam:"Steam",gameGroupScores:"Oceny i czas gry",gameGroupCompat:"Kompatybilność i status",gameGroupMedia:"Media i układ",gameGroupTools:"Narzędzia",gameGroupHosts:"Inne strony",gameGroupHostsHint:"Przyciski Backloggd na stronach Steam i SteamDB.",navSettings:"Plus",navSettingsTitle:"Ustawienia Backloggd Plus",sectionCacheHint:"Ile danych zapytań ten profil przeglądarki trzyma względem miękkiego limitu 5 MB.",sectionCacheDuration:"Czas przechowywania",sectionCacheSources:"Co cache’ować",sectionCacheSourcesHint:"Wyłącz źródło, aby go nie zapisywać. Przy zapisie wpisy tego typu zostaną usunięte.",sectionCacheClear:"Czyszczenie",cacheHours:"Czas cache (godziny)",cacheHoursHint:"Jak długo ponownie używać zapytań o gry (Steam, GameStatus, oceny, media, podobne). 0 wyłącza tę kategorię. Profile, tłumaczenia i FX zachowują własne TTL, gdy przełączniki są włączone. Gracze online nigdy nie są cache’owani.",cacheGameData:"Dane gier",cacheGameDataHint:"Steam, SteamDB, GameStatus, OpenCritic, HLTB, ProtonDB, zrzuty, podobne gry.",cacheUserProfiles:"Mini-profile",cacheUserProfilesHint:"Karty po najechaniu i wzbogacenie stron użytkowników Backloggd.",cacheTranslations:"Tłumaczenia",cacheTranslationsHint:"Wyniki Google Translate dla opisów i recenzji.",cacheFx:"Kursy walut",cacheFxHint:"Kursy FX do przybliżonej konwersji ceny.",cacheCatGame:"Gry",cacheCatProfiles:"Profile",cacheCatTranslations:"Tłumaczenia",cacheCatFx:"Waluta",cacheCatSystem:"System",cacheCatOff:"Wył.",cacheBarCatCount:"{count}",cacheBarEntries:"wpisów: {count}",clearCache:"Wyczyść cache",cacheCleared:"Usunięto wpisów: {count}",cacheEmpty:"Nie ma czego czyścić — cache jest pusty",cacheBarFull:"Pełny",cacheBarPartial:"Częściowy",cacheBarFree:"Wolne",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarPct:"{pct}%",cacheBarFilled:"zajęte",cacheBarHint:"Miękki limit według kategorii. System (biblioteka/wishlist + mapa tagów) zawsze włączony. Kolory odpowiadają przełącznikom poniżej.",cacheBarAriaCats:"Cache zapełniony w {pct}% — {detail}",cacheBarAria:"Cache zapełniony w {pct}% — {full} pełny, {partial} częściowy, {free} wolne",cacheTabFillAria:"Cache zapełniony w {pct}%",cacheClearHint:"Usuwa wszystkie wpisy z tego profilu przeglądarki (nie zmienia przełączników).",toastSettingsSaved:"Preferencje zostaną zastosowane po przeładowaniu strony.",toastCacheClearedOnUpdate:"v{version} — cache zapytań wyczyszczony",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Ponownie używane jest automatyczne wyszukiwanie Steam",toastTitleSuccess:"Gotowe",toastTitleError:"Błąd",toastTitleInfo:"Info",toastTitleWarning:"Uwaga",toastDismiss:"Zamknij",toastSettingsSavedTitle:"Ustawienia zapisane",toastCacheClearedTitle:"Cache wyczyszczony",cacheEmptyTitle:"Cache",toastCacheClearedOnUpdateTitle:"Zaktualizowano",toastSteamMatchSavedTitle:"Dopasowanie zapisane",toastSteamMatchClearedTitle:"Dopasowanie zresetowane",steamFixMatchInvalidTitle:"Nieprawidłowe App ID",exportFormatUnavailableTitle:"Niedostępne",toastExportDoneTitle:"Wyeksportowano",toastExportCopiedTitle:"Skopiowano",toastExportCopyFailedTitle:"Kopiowanie nieudane",toastExportFailedTitle:"Eksport nieudany",toastGameIdCopiedTitle:"ID skopiowane",toastGameIdCopied:"{id} skopiowane do schowka",on:"WŁ",off:"WYŁ",loading:"Ładowanie…",notOnSteam:"Nie znaleziono na Steam",loadError:"Nie udało się wczytać danych Steam",steam:"Steam",metacritic:"Metacritic",gameStatus:"GameStatus",gsReady:"Gotowe",gsPending:"Oczekuje",gsPartial:"Częściowo",gsReleaseToday:"Premiera dziś",gsUnknown:"Nieznany",gsNotInDatabase:"Brak w bazie",reviews:"Opinie",price:"Cena",free:"Za darmo",discount:"-{n}%",steamUsFallback:"Znaleziono przez sklep US (wyszukiwanie {cc} bez wyników)",recommendations:"{n} rekomendacji",links:"Linki",linkIgdb:"IGDB",linkSteam:"Steam",linkSteamDb:"SteamDB",linkMetacritic:"Metacritic",linkOpencritic:"OpenCritic",linkHltb:"HLTB",discountEnds:"do {date}",linkPcgamingwiki:"PCGamingWiki",linkItad:"IsThereAnyDeal",linkGogdb:"GOG DB",linkGameslike:"GamesLike",openCritic:"OpenCritic",hltb:"HLTB",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",protonTier:"ProtonDB {tier}",hltbMain:"Main {n}h",hltbExtra:"Extra {n}h",hltbComplete:"Complete {n}h",players:"Gracze",playersOnline:"{n} gra",franchise:"Franczyza",supportedSystems:"Obsługiwane systemy",technologies:"Technologie",lastRecordUpdate:"Ostatnia aktualizacja rekordu",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB zablokowane",unifiedRatingTitle:"Ocena Plus",unifiedRatingHint:"Średnia Steam, Metacritic, OpenCritic i Backloggd",unifiedRatingOutOf:"z 5",unifiedRatingSources:"{n} źródeł",unifiedRatingLoading:"Zbieranie ocen…",unifiedRatingSteam:"Steam",unifiedRatingMetacritic:"Metacritic",unifiedRatingOpenCritic:"OpenCritic",unifiedRatingBackloggd:"Backloggd",unifiedRatingMissing:"—",exportButton:"Eksport",exportTitle:"Eksportuj grę",exportHint:"Eksportuj tę grę jako CSV, Markdown lub JSON do Notion.",exportFormats:"Format eksportu",exportAdvanced:"Dodatkowe ustawienia",exportRatingFormat:"Format oceny",exportRatingText:"Tekst",exportRatingTextHint:"2.5★ Normal · 3★ Good · 3.5★ Great · 4★ Excellent · 5★ Amazing",exportRatingNumeric:"Liczba",exportRatingNumericHint:"Gwiazdki na 5 (np. 4.5)",exportStatusFormat:"Format statusu",exportStatusNotion:"Notion",exportStatusNotionHint:"Not started · Planned · Deferred · In progress · Dropped · Tried · Done",exportStatusOriginal:"Backloggd",exportStatusOriginalHint:"Wishlist · Backlog · Playing · Played · Shelved · Abandoned · Retired",exportFormatCsv:"CSV",exportFormatCsvHint:"Kolumny jak w bazie Notion.",exportFormatMarkdown:"Markdown",exportFormatMarkdownHint:"Strona Notion: tytuł + właściwości.",exportFormatJson:"JSON",exportFormatJsonHint:"Te same pola co CSV, w JSON.",exportDownload:"Pobierz",exportCopy:"Kopiuj",exportSoon:"Wkrótce",exportNoRating:"Brak oceny",exportPreviewTitle:"Podgląd",exportPreviewDeveloper:"Deweloper",exportPreviewRelease:"Premiera",exportPreviewTime:"Czas",exportPreviewFavorite:"Ulubione",exportPreviewTags:"Tagi",exportPreviewSource:"Źródło",exportPreviewRating:"Ocena",exportPreviewStatus:"Status",exportPreviewPlatform:"Platforma",exportPreviewDlc:"DLC",exportPreviewDates:"Daty",exportFormatUnavailable:"Ten format nie jest jeszcze dostępny",toastExportDone:"{name}",toastExportCopied:"Treść skopiowana do schowka",toastExportCopyFailed:"Nie udało się skopiować do schowka",toastExportFailed:"Nie udało się utworzyć pliku"}},V=["en","ru","zh","es","pt","de","fr","ja","ko","pl"],K={en:"English",ru:"Русский",zh:"中文",es:"Español",pt:"Português",de:"Deutsch",fr:"Français",ja:"日本語",ko:"한국어",pl:"Polski"},Z={en:"🇺🇸",ru:"🇷🇺",zh:"🇨🇳",es:"🇪🇸",pt:"🇧🇷",de:"🇩🇪",fr:"🇫🇷",ja:"🇯🇵",ko:"🇰🇷",pl:"🇵🇱"};function Y(e){const t=e||"auto";return "auto"!==t&&V.includes(t)?t:function(){const e=String(navigator.language||"en").toLowerCase().slice(0,2);return V.includes(e)?e:"en"}()}function X(e,t){return String(e).replace(/\{(\w+)\}/g,(e,a)=>null==t[a]?"":String(t[a]))}const Q="backloggd-plus-settings",ee=262144,te=new Set(["RUB","USD","EUR","KZT","UAH","GBP","TRY","CNY","PLN","BRL","JPY","KRW"]),ae=new Set(j),ne=new Set(U),re=Object.keys(W).filter(e=>"links"!==e&&"boolean"==typeof W[e]),ie=["showProfilePage","showProfileHeader","showProfileTierChip","showProfileStats","showProfileNav","showProfileFavorites"];function oe(e,t){if(!("showProfilePage"in e)&&false===e.showUserMiniProfile)for(const a of ie)t[a]=false;return t}function se(){return {...W,links:{...W.links}}}function le(){try{const t=e(s,null);return t&&"object"==typeof t?oe(t,{...W,...t,links:{...W.links,...t.links||{}}}):se()}catch(t){return se()}}function ce(e){const t={...W,...e,links:{...W.links,...e.links||{}}};a(s,t);}function ue(e,t){return "boolean"==typeof e?e:1===e||"1"===e||"true"===e||0!==e&&"0"!==e&&"false"!==e&&t}function de(e,t){const a=String(null!=e?e:"").trim();return a&&("auto"===a||V.includes(a))?a:t}function pe(e){const t=se();if(!e||"object"!=typeof e||Array.isArray(e))return {settings:t,appliedKeys:[],ignoredKeys:[]};const a=[],n=[],r={...t};for(const i of Object.keys(e))"links"!==i&&(i in W||n.push(i));for(const i of re)i in e&&(r[i]=ue(e[i],t[i]),a.push(i));if("cacheHours"in e&&(r.cacheHours=function(e,t){const a="number"==typeof e?e:Number(String(null!=e?e:"").trim());return Number.isFinite(a)?Math.max(0,Math.min(168,Math.round(a))):t}(e.cacheHours,t.cacheHours),a.push("cacheHours")),"uiLocale"in e&&(r.uiLocale=de(e.uiLocale,t.uiLocale),a.push("uiLocale")),"translateTargetLocale"in e&&(r.translateTargetLocale=de(e.translateTargetLocale,t.translateTargetLocale),a.push("translateTargetLocale")),"steamCountry"in e&&(r.steamCountry=function(e,t){const a=String(null!=e?e:"").trim().toUpperCase();return ae.has(a)?a:t}(e.steamCountry,t.steamCountry),a.push("steamCountry")),"convertCurrency"in e&&(r.convertCurrency=function(e,t){const a=String(null!=e?e:"").trim().toUpperCase();return te.has(a)?a:t}(e.convertCurrency,t.convertCurrency),a.push("convertCurrency")),"translateDisplayMode"in e&&(r.translateDisplayMode=function(e,t){const a=String(null!=e?e:"").trim().toLowerCase();return "replace"===a||"below"===a?a:t}(e.translateDisplayMode,t.translateDisplayMode),a.push("translateDisplayMode")),"links"in e){const{links:i,applied:o,ignored:s}=function(e,t){const a={...t};if(!e||"object"!=typeof e||Array.isArray(e))return {links:a,applied:0,ignored:0};let n=0,r=0;for(const[i,o]of Object.entries(e))ne.has(i)?(a[i]=ue(o,false!==a[i]),n+=1):r+=1;return {links:a,applied:n,ignored:r}}(e.links,t.links);r.links=i,(o>0||s>0||e.links&&"object"==typeof e.links)&&a.push("links"),s>0&&n.push("links.*");}return oe(e,r),{settings:r,appliedKeys:[...new Set(a)],ignoredKeys:[...new Set(n)]}}let me=le(),ge=Y(me.uiLocale),he=J[ge]||J.en,be=null,fe=0;const Se=new Map,ve=new Set;function we(){me=le(),ge=Y(me.uiLocale),he=J[ge]||J.en;}function ye(e){be=e;}function ke(e){fe=e;}function Ce(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Pe(e){return Ce(e)}const Be=new Set([F,O]),xe=[{id:"game",settingKey:"cacheGameData",labelKey:"cacheCatGame",swatch:"game"},{id:"profiles",settingKey:"cacheUserProfiles",labelKey:"cacheCatProfiles",swatch:"profiles"},{id:"translations",settingKey:"cacheTranslations",labelKey:"cacheCatTranslations",swatch:"translations"},{id:"fx",settingKey:"cacheFx",labelKey:"cacheCatFx",swatch:"fx"},{id:"system",settingKey:null,labelKey:"cacheCatSystem",swatch:"system"}];let De=0,Te=false;function He(e){const t=String(e||"");return t===F||t===O?"system":t.startsWith("user:profile:")?"profiles":t.startsWith("gtx:")?"translations":t.startsWith("fx:")?"fx":"game"}function Ae(e){return "system"===e||("game"===e?false!==me.cacheGameData:"profiles"===e?false!==me.cacheUserProfiles:"translations"===e?false!==me.cacheTranslations:"fx"!==e||false!==me.cacheFx)}function Ge(){if(be)return be;try{const t=e(l,null);ye(t&&"object"==typeof t?t:{});}catch(t){ye({});}return be}function Le(){clearTimeout(fe),ke(setTimeout(()=>{ke(0);try{Ze(),Ye(),a(l,Ge());}catch(e){}},400));}function _e(){const e=Number(me.cacheHours);return !Number.isFinite(e)||e<=0?0:3600*Math.min(e,168)*1e3}function Me(e){return e===O||e===F}function $e(e,t){if(!(null==t?void 0:t.ts))return  true;const a=function(e,t){if(Number(null==t?void 0:t.ttlMs)>0)return Number(t.ttlMs);if(e===O)return N;if(e===F){const e=null==t?void 0:t.data;return function(e){if(e)return 3e5;const t=_e();return t>0?t:36e5}(!(e&&(Array.isArray(e.appIds)&&0!==e.appIds.length||Array.isArray(e.wishlistAppIds)&&0!==e.wishlistAppIds.length)))}return _e()}(e,t);return !a||Date.now()-t.ts>a}function Ie(e){if(!e||"object"!=typeof e)return;e.at=Date.now();const t=Date.now();t-De<5e3||(De=t,Le());}function Ee(e){if(!Ae(He(e)))return null;const t=Ge()[e];return (null==t?void 0:t.ts)&&(Me(e)||Number(t.ttlMs)>0||_e())?$e(e,t)?null:(Ie(t),t.data):null}function Re(e,t,a){if(!Ae(He(e)))return;const n=Number(null==a?void 0:a.ttlMs),r=Number.isFinite(n)&&n>0;if(!Me(e)&&!r&&!_e())return;const i=Date.now(),o={ts:i,at:i,data:t};r?o.ttlMs=n:e===O&&(o.ttlMs=N),Ge()[e]=o,Le();}function Fe(e){return null==e||"object"!=typeof e?e:Array.isArray(e)?Object.assign(e.slice(),{_cache:"hit"}):{...e,_cache:"hit"}}function Oe(e){return null==e||"object"!=typeof e?e:Array.isArray(e)?Object.assign(e.slice(),{_cache:"miss"}):{...e,_cache:"miss"}}function Ne(e){const t=null==e?void 0:e._cache;return "hit"===t||"miss"===t||"mixed"===t||"na"===t?t:null}function ze(...e){const t=e.map(e=>"string"==typeof e?e:Ne(e)).filter(e=>e&&"na"!==e);if(!t.length)return "na";const a=t.some(e=>"hit"===e||"mixed"===e),n=t.some(e=>"miss"===e||"mixed"===e);return a&&n||t.includes("mixed")?"mixed":a?"hit":"miss"}function Ue(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const{_debug:t,_cache:a,...n}=e;return n}function qe(){const e=Ge()[F];return (null==e?void 0:e.ts)&&e.data&&Array.isArray(e.data.appIds)&&Array.isArray(e.data.wishlistAppIds)?$e(F,e)?null:(Ie(e),e.data):null}function je(){try{const t=e(u,null);return t&&"object"==typeof t?t:{}}catch(t){return {}}}function We(e){const t=String(e||"").toLowerCase().replace(/^\/+|\/+$/g,"");if(!t)return null;const a=Number(je()[t]);return Number.isFinite(a)&&a>0?a:null}function Je(e,t){const n=String(e||"").toLowerCase().replace(/^\/+|\/+$/g,"");if(!n)return;const r=Number(t),i=je();Number.isFinite(r)&&r>0?i[n]=r:delete i[n],function(e){try{a(u,e&&"object"==typeof e?e:{});}catch(t){}}(i),ve.clear();}function Ve(e,t){if($e(e,t))return  true;if(!function(e){return e.startsWith("steam:id:")||/^steam:[A-Z]{2}:/.test(e)}(e))return  false;const a=null==t?void 0:t.data;return !(null==a?void 0:a.found)||true!==a.tagsLoaded}function Ke(e,t){try{const a=JSON.stringify(t);if("undefined"!=typeof TextEncoder){const t=new TextEncoder;return t.encode(String(e)).length+t.encode(a).length}return String(e).length+String(a).length}catch(a){return 0}}function Ze(){const e=Ge();let t=0;for(const a of Object.keys(e))$e(a,e[a])&&(delete e[a],t+=1);return t}function Ye(){const e=Ge();let t=0;const a=[];for(const r of Object.keys(e)){const n=e[r],i=Ke(r,n);t+=i,Be.has(r)||a.push({key:r,bytes:i,at:Number((null==n?void 0:n.at)||(null==n?void 0:n.ts))||0});}if(t<=k)return 0;a.sort((e,t)=>e.at-t.at);let n=0;for(const r of a){if(t<=k)break;delete e[r.key],t-=r.bytes,n+=1;}return n}function Xe(e){const t=Math.max(0,Number(e)||0);return t<1024?`${Math.round(t)} B`:t<1048576?`${(t/1024).toFixed(1)} KB`:`${(t/1048576).toFixed(2)} MB`}function Qe(){const e=Ge(),t=Object.fromEntries(xe.map(e=>[e.id,{bytes:0,count:0,partialCount:0}]));let a=0,n=0,r=0,i=0;for(const l of Object.keys(e)){const o=e[l],s=Ke(l,o),c=He(l),u=t[c]||t.game;u.bytes+=s,u.count+=1,Ve(l,o)?(n+=s,i+=1,u.partialCount+=1):(a+=s,r+=1);}const o=a+n,s=k;return {fullBytes:a,partialBytes:n,freeBytes:Math.max(0,s-o),usedBytes:o,limitBytes:s,fullCount:r,partialCount:i,totalCount:r+i,categories:xe.map(e=>{const a=t[e.id]||{bytes:0,count:0,partialCount:0};return {id:e.id,labelKey:e.labelKey,swatch:e.swatch,settingKey:e.settingKey,bytes:a.bytes,count:a.count,partialCount:a.partialCount,enabled:Ae(e.id)}})}}function et(){const e=Ge();let t=0;for(const a of Object.keys(e))Ae(He(a))||(delete e[a],t+=1);return t&&Le(),t}function tt(e,t){return t?Math.max(0,Math.min(100,e/t*100)):0}function at(e){const t=e||Qe();return Math.round(tt(t.usedBytes,t.limitBytes))}function nt(e){const t=Math.max(0,Math.min(100,Number(e)||0));return t>=90?"high":t>=70?"mid":"low"}function rt(e){const t=at(e||Qe()),a=nt(t),n=X(he.cacheBarPct,{pct:t});return `<span class="blp-settings__tab-badge blp-settings__tab-badge--${a}" data-blp-cache-tab-badge aria-label="${Pe(X(he.cacheTabFillAria,{pct:t}))}">${Ce(n)}</span>`}function it(e){const t=e||Qe(),a=Math.max(t.usedBytes,t.limitBytes,1),n=at(t),r=nt(n),i=X(he.cacheBarPct,{pct:n}),o=tt(t.freeBytes,a),s=t.categories.filter(e=>e.bytes>0),l=s.map(e=>`${he[e.labelKey]||e.id} ${Xe(e.bytes)}`).concat([`${he.cacheBarFree} ${Xe(t.freeBytes)}`]),c=X(he.cacheBarAriaCats,{pct:n,detail:l.join(", ")}),u=s.map(e=>{const t=tt(e.bytes,a);return t<=0?"":`<span class="blp-cache-meter__seg blp-cache-meter__seg--${Pe(e.swatch)}" style="width:${t}%" title="${Pe(`${he[e.labelKey]||e.id}: ${Xe(e.bytes)}`)}"></span>`}).join(""),d=t.categories.map(e=>{const t=he[e.labelKey]||e.id,a=e.enabled?"":" is-off",n=Xe(e.bytes),r=X(he.cacheBarCatCount,{count:e.count}),i=e.enabled?"":`<span class="blp-cache-meter__off">${Ce(he.cacheCatOff)}</span>`;return `\n        <li class="blp-cache-meter__row${a}">\n          <span class="blp-cache-meter__swatch blp-cache-meter__swatch--${Pe(e.swatch)}"></span>\n          <span class="blp-cache-meter__name">${Ce(t)}${i}</span>\n          <span class="blp-cache-meter__meta">\n            <span class="blp-cache-meter__count">${Ce(r)}</span>\n            <span class="blp-cache-meter__size">${Ce(n)}</span>\n          </span>\n        </li>`}).join(""),p=`\n    <li class="blp-cache-meter__row blp-cache-meter__row--free">\n      <span class="blp-cache-meter__swatch blp-cache-meter__swatch--free"></span>\n      <span class="blp-cache-meter__name">${Ce(he.cacheBarFree)}</span>\n      <span class="blp-cache-meter__meta">\n        <span class="blp-cache-meter__size">${Ce(Xe(t.freeBytes))}</span>\n      </span>\n    </li>`;return `\n    <div class="blp-cache-meter" data-blp-cache-meter>\n      <div class="blp-cache-meter__head">\n        <div class="blp-cache-meter__pct blp-cache-meter__pct--${r}">\n          <span class="blp-cache-meter__pct-value">${Ce(i)}</span>\n          <span class="blp-cache-meter__pct-caption">${Ce(he.cacheBarFilled)}</span>\n        </div>\n        <div class="blp-cache-meter__used-wrap">\n          <span class="blp-cache-meter__used">${Ce(X(he.cacheBarUsed,{used:Xe(t.usedBytes),limit:Xe(t.limitBytes)}))}</span>\n          <span class="blp-cache-meter__entries">${Ce(X(he.cacheBarEntries,{count:t.totalCount}))}</span>\n        </div>\n      </div>\n      <div class="blp-cache-meter__bar" role="img" aria-label="${Pe(c)}">\n        ${u}\n        <span class="blp-cache-meter__seg blp-cache-meter__seg--free" style="width:${o}%"></span>\n      </div>\n      <ul class="blp-cache-meter__legend">\n        ${d}\n        ${p}\n      </ul>\n      <p class="blp-hint">${Ce(he.cacheBarHint)}</p>\n    </div>\n  `}function ot(e){var t;const a=Qe(),n=null==(t=null==e?void 0:e.querySelector)?void 0:t.call(e,"[data-blp-cache-meter]");if(n){const e=document.createElement("div");e.innerHTML=it(a).trim();const t=e.firstElementChild;t&&n.replaceWith(t);}!function(e,t){var a;const n=null==(a=null==e?void 0:e.querySelector)?void 0:a.call(e,"[data-blp-cache-tab-badge]");if(!n)return;const r=document.createElement("div");r.innerHTML=rt(t).trim();const i=r.firstElementChild;i&&n.replaceWith(i);}(e,a);}function st(){const e=Qe().totalCount;clearTimeout(fe),ke(0),ye({});try{a(l,{});}catch(t){}return e}function lt(e){return new Promise((t,a)=>{const r={method:e.method||"GET",url:e.url,headers:e.headers||{},responseType:e.responseType||"json",timeout:e.timeout||2e4,onload(n){if(e.allow404&&404===n.status)t(null);else if(n.status>=200&&n.status<300){const a=e.responseType||"json";if("text"===a)t(null!=n.responseText&&""!==n.responseText?n.responseText:n.response);else if("json"===a){if(null!=n.response&&"object"==typeof n.response)return void t(n.response);const e=n.responseText;if("string"==typeof e&&e.trim())try{return void t(JSON.parse(e))}catch(r){}t(n.response);}else t(n.response);}else a(new Error(`HTTP ${n.status}`));},onerror:()=>a(new Error("Network error")),ontimeout:()=>a(new Error("Timeout"))};"boolean"==typeof e.anonymous&&(r.anonymous=e.anonymous),null!=e.data&&(r.data="string"==typeof e.data?e.data:JSON.stringify(e.data)),n(r);})}const ct=["RUB","USD","EUR","KZT","UAH","GBP","TRY","CNY","PLN","BRL","JPY","KRW"],ut=["https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies","https://latest.currency-api.pages.dev/v1/currencies"],dt={KZT:"₸",RUB:"₽",USD:"$",EUR:"€",UAH:"₴",GBP:"£",TRY:"₺",CNY:"¥",PLN:"zł",BRL:"R$",JPY:"¥",KRW:"₩"};function pt(e){return String(e||"").trim().toUpperCase()}async function mt(e,t,a){const n=pt(t),r=pt(a);if(!n||!r||n===r)return null;if(!Number.isFinite(Number(e)))return null;const i=await async function(e,t){const a=pt(e),n=pt(t);if(!a||!n)return null;if(a===n)return 1;const r=function(e,t){return `fx:${pt(e)}:${pt(t)}`}(a,n),i=Ee(r);if(i&&Number.isFinite(Number(i.rate))&&Number(i.rate)>0)return Number(i.rate);if(Se.has(r))return Se.get(r);const o=(async()=>{var e;const t=a.toLowerCase(),i=n.toLowerCase();let o=null;for(const l of ut)try{const s=`${l}/${t}.min.json`,c=await lt({url:s,responseType:"json",timeout:15e3,anonymous:!0}),u=c&&(c[t]||c[a]||c),d=u&&(null!=(e=u[i])?e:u[n]);if(Number.isFinite(Number(d))&&Number(d)>0){const e=Number(d);return Re(r,{rate:e,date:(null==c?void 0:c.date)||null,from:a,to:n},{ttlMs:432e5}),e}o=new Error(`No rate ${a}->${n}`);}catch(s){o=s;}return o&&console.warn("BLP FX:",o.message||o),null})();Se.set(r,o);try{return await o}finally{Se.delete(r);}}(n,r);return i?function(e,t){const a=pt(t);if(!Number.isFinite(e)||!a)return null;const n=new Set(["JPY","KRW","VND","CLP"]),r=n.has(a)?0:2;let i;try{i=new Intl.NumberFormat(void 0,{maximumFractionDigits:r,minimumFractionDigits:0}).format(n.has(a)?Math.round(e):e);}catch(s){i=n.has(a)?String(Math.round(e)):e.toFixed(2);}const o=dt[a]||a;return "$"===o||"€"===o||"£"===o||"¥"===o||"₩"===o?`${o}${i}`:`${i} ${o}`}(Number(e)/100*i,r):null}async function gt(e,t){if(!e)return null;const a=await mt(e.final,e.currency,t);if(!a)return null;let n=null;return Number(e.discount_percent)>0&&Number.isFinite(Number(e.initial))&&Number(e.initial)>Number(e.final)&&(n=await mt(e.initial,e.currency,t)),{now:a,was:n}}function ht(e){return String(e||"").toLowerCase().normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[™®©'’":]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")}function bt(e){return `https://gamestatus.info/back/api/gameinfo/game/${encodeURIComponent(e)}/`}async function ft(e,t){var a;const n=await lt({url:bt(e),allow404:true,headers:{Accept:"application/json","Accept-Language":"zh"===ge?"zh-CN":"pt"===ge?"pt-BR":"en"===ge?"en-US":ge||"en-US"},timeout:15e3});if(!n)return {data:null,match:false,outcome:"404"};const r=function(e,t){return !(!e||e.steam_prod_id&&String(e.steam_prod_id)!==String(t))}(n,t);return {data:n,match:r,outcome:r?"match":"steam_prod_id_mismatch",steam_prod_id:null!=(a=n.steam_prod_id)?a:null,readable_status:n.readable_status||null,title:n.title||null,slug:n.slug||e}}async function St({appId:e,storeUrl:t,name:a,title:n,pageSlug:r}){if(!e)return {missing:true,data:null,slug:null,_debug:{reason:"No Steam appId — GameStatus skipped",appId:null},_cache:"na"};const i=`gs:${e}`,o=Ee(i);if(o)return Fe(o);if(Se.has(i))return Se.get(i);const s=(async()=>{var o;const s=function({storeUrl:e,name:t,title:a,pageSlug:n}){const r=[],i=e=>{e&&function(e){if(!e||e.length<2)return  false;if(!/[a-z]/.test(e))return  false;if(z.test(e))return  false;if(/^\d+(-\d+)+$/.test(e))return  false;const t=e.split("-").filter(Boolean);return !!t.length&&!t.every(e=>/^\d+$/.test(e))&&t.filter(e=>/^\d+$/.test(e)).length/t.length<=.5}(e)&&!r.includes(e)&&r.push(e);},o=e=>{const t=String(e||"").replace(/\s+/g," ").trim();t&&(i(ht(t)),i(ht(t.replace(/\s*[-–—:|].*$/,""))));};return i(function(e){const t=String(e||"").replace(/^\/+|\/+$/g,"");return /--1$/i.test(t)?ht(t.replace(/--1$/i,"-remake")):null}(n)),i(function(e){const t=String(e||"").match(/\/app\/\d+\/([^/?#]+)/i);return t?ht(t[1].replace(/_/g,"-")):null}(e)),o(t),o(a),i(ht(n)),r}({storeUrl:t,name:a,title:n,pageSlug:r}),l=s.slice(0,2),c={appId:e,cacheKey:i,cacheSkipped:false,candidates:s,tried:l,attempts:[]};for(const t of l)try{const a=await ft(t,e);if(c.attempts.push({slug:t,url:bt(t),outcome:a.outcome,steam_prod_id:a.steam_prod_id,title:a.title,readable_status:a.readable_status}),a.match&&a.data){c.reason=`Matched slug "${a.slug||t}" (steam_prod_id=${null!=(o=a.steam_prod_id)?o:"empty"})`;const e={missing:!1,data:a.data,slug:a.data.slug||t,_debug:c};return Re(i,Ue(e)),Oe(e)}}catch(u){c.attempts.push({slug:t,url:bt(t),outcome:"error",error:String((null==u?void 0:u.message)||u)});}return c.reason=l.length?"No GameStatus match for tried slugs":"No valid GameStatus slug candidates",Oe({missing:true,data:null,slug:l[0]||null,_debug:c})})();Se.set(i,s);try{return await s}finally{Se.delete(i);}}function vt(e){if(!e)return "missing";const t=String(e.readable_status||"").toLowerCase(),a=String(e.hacked_groups_en||e.hacked_groups||"").toLowerCase();return /release today|релиз сегодня|выходит сегодня/.test(t)?"release-today":/bypass|обход|hypervisor/.test(a)||/bypass|обход/.test(t)?"partial":/not cracked|не взлом|не взломан|unbroken|unreleased crack/.test(t)?function(e){const t=function(e){if(!e)return null;const t=new Date(e);return Number.isNaN(t.getTime())?null:t}(e.release_date);if(!t)return "pending-recent";const a=new Date;return a.setMonth(a.getMonth()-1),t>a?"pending-recent":"pending-old"}(e):e.crack_date||/cracked|взлом/.test(t)?"ready":"unknown"}function wt(e,t){return e?e.readable_status?e.readable_status:"ready"===t?he.gsReady:"pending-recent"===t||"pending-old"===t?he.gsPending:"partial"===t?he.gsPartial:"release-today"===t?he.gsReleaseToday:he.gsUnknown:he.gsNotInDatabase}function yt(e){return String(e||"").replace(/^[\s\[\(\{"'`]+|[\]\)\}"'`\s]+$/g,"").replace(/^["'`]+|["'`]+$/g,"").trim()}function kt(e){if(null==e||""===e)return [];if(Array.isArray(e))return e.map(yt).filter(Boolean);const t=String(e).trim();if(!t)return [];if(/^[\[{"]/.test(t))try{const e=JSON.parse(t);if(Array.isArray(e))return e.map(yt).filter(Boolean);if("string"==typeof e)return [yt(e)].filter(Boolean)}catch(a){}return t.split(/[,;/|]+/).map(yt).filter(Boolean)}function Ct(e){return /denuvo/i.test(e)?"blp-gs-chip--highlight":"blp-gs-chip--protection"}function Pt(e){return String(e||"").toLowerCase().normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/&/g," and ").replace(/(?<=[a-z])\.(?=[a-z])/g,"").replace(/[^a-z0-9]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function Bt(e,t){const a=String(t||"").replace(/^\/+|\/+$/g,"").replace(/--\d+$/i,"")||String(e||"").toLowerCase().normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[''`´]/g,"").replace(/&/g," and ").replace(/(?<=[a-z])\.(?=[a-z])/g,"").replace(/[^a-z0-9]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");return a?`https://www.metacritic.com/game/${encodeURIComponent(a)}/`:""}const xt=/^(?=.*[ivxlcdm])(?=[mdclxvi]+$)m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$/;function Dt(e){const t=String(e||"").toLowerCase().replace(/[™®©]/g,"").replace(/(?<=[a-z])\.(?=[a-z])/g,"").replace(/[^a-z0-9]+/g," ").trim();return t?t.split(/\s+/).filter(Boolean).map((e,t)=>{const a=function(e,{allowLoneI:t=false}={}){const a=String(e||"").toLowerCase();if(!xt.test(a))return null;if("i"===a&&!t)return null;const n={i:1,v:5,x:10,l:50,c:100,d:500,m:1e3};let r=0;for(let i=0;i<a.length;i+=1){const e=n[a[i]];r+=n[a[i+1]]>e?-e:e;}return r>0?r:null}(e,{allowLoneI:t>0});return null!=a?String(a):e}).join(" "):""}function Tt(e){return Dt(e).split(/\s+/).filter(Boolean)}function Ht(e){return /^(the|a|an|official|new)$/i.test(e)}const At=/^(game of the year|goty|definitive( edition)?|complete( edition)?|remastered|remake|deluxe( edition)?|ultimate( edition)?|gold( edition)?|standard( edition)?|premium( edition)?|collector'?s?( edition)?|anniversary( edition)?|enhanced( edition)?|director'?s cut|redux|legacy( edition)?|hd|vr|launcher|for windows( 10)?|pc( edition)?|windows|edition|collection)$/i;function Gt(e){const t=Dt(e);if(!t)return  true;if(At.test(t))return  true;const a=t.split(/\s+/);let n=0;for(;n<a.length;){let e=false;for(let t=Math.min(4,a.length-n);t>=1;t-=1){const r=a.slice(n,n+t).join(" ");if(At.test(r)){n+=t,e=true;break}}if(!e)return  false}return  true}function Lt(e){const t=String(e||"").split(/\s+/).filter(Boolean);for(;t.length;){let e=false;for(let a=Math.min(4,t.length);a>=1;a-=1){const n=t.slice(t.length-a).join(" ");if(At.test(n)){t.splice(t.length-a,a),e=true;break}}if(!e)break}return t.join(" ")}function _t(e,t){const a=Dt(e),n=Dt(t);if(!a||!n)return 0;if(a===n)return 100;const r=Lt(a),i=Lt(n);if(r&&i&&r===i)return 95;if(a.startsWith(`${n} `)&&Gt(a.slice(n.length).trim()))return 90;if(r&&i&&r.startsWith(`${i} `)&&Gt(r.slice(i.length).trim()))return 88;const o=Tt(r||a),s=Tt(i||n);if(s.length>=2){const e=function(e,t){if(!t.length||t.length>e.length)return  -1;for(let a=0;a<=e.length-t.length;a+=1){let n=true;for(let r=0;r<t.length;r+=1)if(e[a+r]!==t[r]){n=false;break}if(n)return a}return  -1}(o,s);if(e>=0){const t=o.slice(0,e),a=o.slice(e+s.length);if(t.every(Ht)&&Gt(a.join(" ")))return 85}}return 0}function Mt(e){return String((null==e?void 0:e.textContent)||"").replace(/\s+/g," ").trim().toLowerCase()}function $t(e){const t=String(e||"").trim();return t?/^https?:\/\//i.test(t)?t:t.startsWith("/")?`${I}${t}`:`${I}/${t}`:""}function It(e){const t=String(e||"").trim();return t?`${I}/franchise/${encodeURIComponent(t).replace(/%20/g,"+")}/`:""}function Et(e){return `steamdb:meta:${Number(e)}`}function Rt(e){const t=e.querySelectorAll(":scope > td");return t.length>=2?t:e.querySelectorAll("td")}function Ft(e){var t,a;if(!(null==e?void 0:e.querySelectorAll))return null;const n={franchise:null,systems:null,technologies:[],lastRecordUpdate:null,source:"steamdb",blocked:false},r=e.querySelectorAll(".span8 table.table tbody tr, table.table-bordered tbody tr, table.table tbody tr");for(const i of r){const e=Rt(i);if(e.length<2)continue;const r=Mt(e[0]),o=e[1];if(r.startsWith("franchise")){const e=o.querySelector('a[href*="/franchise/"]'),t=String((null==e?void 0:e.textContent)||o.textContent||"").replace(/\s+/g," ").trim();t&&(n.franchise={name:t,url:$t(null==e?void 0:e.getAttribute("href"))||It(t)});continue}if(r.startsWith("supported systems")){const e=o.querySelector('meta[itemprop="operatingSystem"]');let t=String((null==e?void 0:e.getAttribute("content"))||"").split(",").map(e=>e.trim()).filter(Boolean);if(!t.length){const e=String(o.textContent||"").replace(/\s+/g," ").trim();t=[],/\bwindows\b/i.test(e)&&t.push("Windows"),/\bmac\s*os\b|\bmacos\b/i.test(e)&&t.push("macOS"),/\blinux\b/i.test(e)&&t.push("Linux");}let a=null;const r=o.querySelector('[aria-label*="Steam Deck"]')||o.querySelector('[aria-label*="steam deck"]'),i=String((null==r?void 0:r.getAttribute("aria-label"))||"");/verified/i.test(i)?a=3:/playable/i.test(i)?a=2:/unsupported/i.test(i)?a=1:/unknown/i.test(i)&&(a=0),(t.length||null!=a)&&(n.systems={list:t,deckCompat:a});continue}if(r.startsWith("technologies")){const e=[];o.querySelectorAll('a[href*="/tech/"]').forEach(t=>{const a=String(t.textContent||"").replace(/\s+/g," ").trim(),n=$t(t.getAttribute("href"));a&&n&&e.push({name:a,url:n});}),n.technologies=e;continue}if(r.startsWith("last record update")){const e=o.querySelector("relative-time[datetime], relative-time[content]"),r=(null==e?void 0:e.getAttribute("datetime"))||(null==e?void 0:e.getAttribute("content"))||"";let i=String((null==(a=null==(t=o.childNodes)?void 0:t[0])?void 0:a.textContent)||o.textContent||"").replace(/\s+/g," ").trim();i=i.replace(/\([^)]*\)\s*$/,"").trim(),(r||i)&&(n.lastRecordUpdate={iso:r||null,label:i||r});}}return n.franchise||n.systems||n.technologies.length||n.lastRecordUpdate?n:null}function Ot(e,t,{pageUrl:a=""}={}){const n=Number(e);return {franchise:(null==t?void 0:t.franchise)||null,systems:(null==t?void 0:t.systems)||null,technologies:Array.isArray(null==t?void 0:t.technologies)?t.technologies:[],lastRecordUpdate:(null==t?void 0:t.lastRecordUpdate)||null,source:(null==t?void 0:t.source)||"steamdb",pageUrl:a||`${E}/${n}/`}}async function Nt(){const e=Ee(O);if(e&&"object"==typeof e)return e;if(Se.has(O))return Se.get(O);const t=(async()=>{const e=await lt({url:B}),t={};if(Array.isArray(e))for(const a of e)null!=(null==a?void 0:a.tagid)&&a.name&&(t[a.tagid]=a.name);return Re(O,t,{ttlMs:N}),t})();Se.set(O,t);try{return await t}finally{Se.delete(O);}}function zt(e){var t;const a=Number(null==(t=null==e?void 0:e.platforms)?void 0:t.steam_deck_compat_category);return Number.isFinite(a)?a:null}function Ut(e){const t=String(e||"").trim();return t?`https://steamdb.info/franchise/${encodeURIComponent(t).replace(/%20/g,"+")}/`:""}function qt(e){var t,a;const n=null==(t=null==e?void 0:e.basic_info)?void 0:t.franchises;if(!Array.isArray(n)||!n.length)return null;const r=String((null==(a=n[0])?void 0:a.name)||"").trim();return r?{name:r,url:Ut(r)}:null}function jt(e){const t=null==e?void 0:e.platforms;if(!t||"object"!=typeof t)return null;const a=[];t.windows&&a.push("Windows"),t.mac&&a.push("macOS"),(t.steamos_linux||t.linux)&&a.push("Linux");const n=zt(e);return a.length||null!=n?{list:a,deckCompat:n}:null}async function Wt(e,t){const a=Number(e),n=String(t||"US").toUpperCase(),r=`steam:storeitem:${a}:${n}`,i=`steam:tags:${a}`,o=`steam:assets:${a}`,s=`steam:extras:${a}:${n}`,l=Ee(i),c=Ee(o),u=Ee(s),d=null!=c;if(l&&d&&u)return {tags:l,assets:c.empty?null:c,extras:u,_cache:"hit"};if(Se.has(r))return Se.get(r);const p=(async()=>{var e,t;try{const r=JSON.stringify({ids:[{appid:a}],context:{language:"english",country_code:n,steam_realm:1},data_request:{include_tag_count:12,include_assets:!0,include_platforms:!0,include_basic_info:!0,include_all_purchase_options:!0}}),[p,m]=await Promise.all([lt({url:`${x}?input_json=${encodeURIComponent(r)}`}),Nt()]),g=null==(t=null==(e=null==p?void 0:p.response)?void 0:e.store_items)?void 0:t[0],h=(Array.isArray(null==g?void 0:g.tags)?g.tags:[]).slice().sort((e,t)=>(t.weight||0)-(e.weight||0)).map(e=>({id:e.tagid,name:m[e.tagid]||null,weight:e.weight||0})).filter(e=>e.name).slice(0,12),b=function(e,t){if(!t||"object"!=typeof t)return null;const a=Number(e),n=String(t.community_icon||"").trim(),r=n?`https://shared.fastly.steamstatic.com/community_assets/images/apps/${a}/${n}.jpg`:"",i=String(t.header||"header.jpg").trim();let o="";return t.asset_url_format&&i&&(o=`${$}/${String(t.asset_url_format).replace("${FILENAME}",i)}`),!o&&i&&(o=na(a,i)),r||o?{iconUrl:r,logoUrl:o,source:"steam-assets"}:null}(a,null==g?void 0:g.assets),f=function(e){const t=(null==e?void 0:e.best_purchase_option)||null;if(!t||"object"!=typeof t)return {discountEndDate:null};let a=null;const n=Array.isArray(t.active_discounts)?t.active_discounts:[];for(const r of n){const e=Number(null==r?void 0:r.discount_end_date);if(Number.isFinite(e)&&e>0){a=e;break}}return {discountEndDate:a}}(g),S={deckCompat:zt(g),franchise:qt(g),systems:jt(g),...f};Re(i,h),Re(o,b||{empty:!0}),Re(s,S);const v=Boolean(l||d||u);return {tags:h.length?h:l||[],assets:b||(c&&!c.empty?c:null)||null,extras:S||u||null,_cache:v?"mixed":"miss"}}catch(r){return {tags:l||[],assets:c&&!c.empty?c:null,extras:u||null,_cache:l||d||u?"hit":"miss"}}})();Se.set(r,p);try{return await p}finally{Se.delete(r);}}async function Jt(e,t){const{tags:a}=await Wt(e,t);return a}function Vt(e,t){const a=String(t||"").trim();if(!a)return "";const n=String((null==e?void 0:e.asset_url_format)||"").trim();return n?`${$}/${n.replace("${FILENAME}",a)}`:""}function Kt(e){var t;const a=new Map;if(!Array.isArray(e))return a;for(const n of e){const e=Number(null!=(t=null==n?void 0:n.id)?t:null==n?void 0:n.tagid);if(!Number.isFinite(e)||e<=0)continue;const r=Number(null==n?void 0:n.weight);a.set(e,Number.isFinite(r)&&r>0?r:1);}return a}function Zt(e){return Array.isArray(null==e?void 0:e.categories)?e.categories.map(e=>({id:Number(e.id),description:String(e.description||"").trim()})).filter(e=>e.description&&Number.isFinite(e.id)&&e.id>0):[]}function Yt(e){return (Array.isArray(e)?e:[]).map(Number).filter(e=>Number.isFinite(e)&&e>0)}async function Xt(){const e=qe();if(e)return {owned:new Set(e.appIds),wishlist:new Set(e.wishlistAppIds)};if(Se.has(F))return Se.get(F);const t=(async()=>{try{const e=await lt({url:`${P}?t=${Date.now()}`,anonymous:!1,headers:{"Cache-Control":"no-cache"}}),t=Yt(null==e?void 0:e.rgOwnedApps),a=Yt(null==e?void 0:e.rgWishlist);return function(e){const t=Date.now();Ge()[F]={ts:t,at:t,data:e},Le();}({appIds:t,wishlistAppIds:a}),{owned:new Set(t),wishlist:new Set(a)}}catch(e){return {owned:new Set,wishlist:new Set}}})();Se.set(F,t);try{return await t}finally{Se.delete(F);}}async function Qt({appId:e,country:t,hit:a=null,anonymous:n=true,usedUsFallback:r=false,requestedCountry:i,onPartial:o,includeTags:s=true,debugBase:l=null,cacheKey:c="",manualOverride:u=false}){var d;const p=Number(e),m=String(t||"US").toUpperCase(),g=String(i||m).toUpperCase(),h=l||{appId:p,country:g,cacheKey:c,cacheSkipped:false,manualOverride:u},b=`${C}?appids=${p}&cc=${encodeURIComponent(m)}&l=english`,f=`https://store.steampowered.com/appreviews/${p}?json=1&language=all&purchase_type=all&num_per_page=0`;h.detailsUrl=b,h.reviewsUrl=f,h.manualOverride=Boolean(u);const S=s&&false!==me.showSteamTags,v=s;if(S||v){const e=JSON.stringify({ids:[{appid:p}],context:{language:"english",country_code:m,steam_realm:1},data_request:{include_tag_count:12,include_assets:true,include_platforms:true,include_basic_info:true,include_all_purchase_options:true}});h.tagsUrl=`${x}?input_json=${encodeURIComponent(e)}`,h.tagMapUrl=B;}const w=lt({url:b,anonymous:n}),y=lt({url:f,anonymous:n}).catch(e=>(h.reviewsError=String((null==e?void 0:e.message)||e),null)),k=S||v?Wt(p,m).catch(e=>(h.tagsError=String((null==e?void 0:e.message)||e),{tags:[],assets:null,extras:null})):Promise.resolve({tags:[],assets:null,extras:null});let P=null;try{P=await w;}catch(I){return h.reason=`Steam details failed: ${(null==I?void 0:I.message)||I}`,{found:false,manualOverride:Boolean(u),_debug:h}}let D=null,T=[],H=null,A=false;const G=()=>{var e,t,i,o,s;const l=(null==(e=null==P?void 0:P[p])?void 0:e.success)?P[p].data:null;h.reason=l?`Matched Steam app ${p} (${(u?["manual App ID",m]:[n?"guest items":"session items",r?`US fallback (requested ${g})`:m]).join(", ")})`:`App ${p} resolved, but appdetails success=false`,h.detailsSuccess=Boolean(null==(t=null==P?void 0:P[p])?void 0:t.success),h.detailsCountry=m,h.reviews=(null==D?void 0:D.query_summary)||null,h.tags=T,h.categories=Zt(l),h.extras=H;const c=(null==H?void 0:H.franchise)||null,d=(null==H?void 0:H.systems)||function(e){const t=null==e?void 0:e.platforms;if(!t||"object"!=typeof t)return null;const a=[];return t.windows&&a.push("Windows"),t.mac&&a.push("macOS"),t.linux&&a.push("Linux"),a.length?{list:a,deckCompat:null}:null}(l)||null;return {found:Boolean(l)||Boolean(a),appId:p,name:(null==l?void 0:l.name)||(null==a?void 0:a.name)||`App ${p}`,storeUrl:`https://store.steampowered.com/app/${p}/`,isFree:Boolean(null==l?void 0:l.is_free),price:(null==l?void 0:l.price_overview)||(null==a?void 0:a.price)||null,metacritic:(null==l?void 0:l.metacritic)||((null==a?void 0:a.metascore)?{score:Number(a.metascore)}:null),recommendations:(null==(i=null==l?void 0:l.recommendations)?void 0:i.total)||null,reviews:(null==D?void 0:D.query_summary)||null,tags:T,categories:Zt(l),deckCompat:null!=(o=null==H?void 0:H.deckCompat)?o:null,franchise:c,systems:d,discountEndDate:null!=(s=null==H?void 0:H.discountEndDate)?s:null,tinyImage:(null==a?void 0:a.tiny_image)||(null==a?void 0:a.small_capsule)||null,headerImage:(null==l?void 0:l.header_image)||null,usedUsFallback:Boolean(r),requestedCountry:g,searchCountry:m,manualOverride:Boolean(u),_debug:h}},L=()=>{A&&"function"==typeof o&&o(G());},_=y.then(e=>(D=e,L(),e)),M=k.then(e=>(T=S&&(null==e?void 0:e.tags)||[],H=(null==e?void 0:e.extras)||null,L(),e));A=true,L(),await Promise.all([_,M]);const $=G();return (null==(d=null==P?void 0:P[p])?void 0:d.success)||a||($.found=false),c&&$.found&&function(e,t,a){var n;if(!e||!(null==t?void 0:t.found)||!_e())return;const r=Ue(t);if(a)return r.tagsLoaded=true,void Re(e,r);r.tagsLoaded=false;const i=Ge()[e];(null==(n=null==i?void 0:i.data)?void 0:n.found)&&true===i.data.tagsLoaded&&!$e(e,i)||Re(e,r);}(c,$,s),Oe($)}async function ea(e,{includeTags:t,country:a,manualOverride:n}){const r=Ee(e);if(!r)return null;let i={...r,manualOverride:Boolean(n||r.manualOverride)},o=false;return function(e,t){return !(!t||false===me.showSteamTags||!(null==e?void 0:e.found)||null==e.appId||true===e.tagsLoaded)}(i,t)&&(i=await async function(e,t){const a=await Jt(e.appId,t).catch(()=>[]);return {...e,tags:Array.isArray(a)?a:[],tagsLoaded:true}}(i,a),Re(e,Ue(i)),o=true),o?null==(s=i)||"object"!=typeof s?s:{...s,_cache:"mixed"}:Fe(i);var s;}async function ta(e,t,{onPartial:a,includeTags:n=true,manualOverride:r=false}={}){const i=Number(e);if(!Number.isFinite(i)||i<=0)return {found:false,_debug:{reason:"Invalid Steam App ID"},_cache:"na"};const o=String(t||"US").toUpperCase(),s=`steam:id:${o}:${i}`,l=n?s:`${s}:lite`,c=await ea(s,{includeTags:n,country:o,manualOverride:r});if(c)return c;if(Se.has(l))return Se.get(l);const u=Qt({appId:i,country:o,requestedCountry:o,anonymous:true,onPartial:a,includeTags:n,cacheKey:s,manualOverride:r,debugBase:{appId:i,country:o,cacheKey:s,cacheSkipped:false,manualOverride:Boolean(r),searches:[]}});Se.set(l,u);try{return await u}finally{Se.delete(l);}}async function aa({title:e,slug:t,country:a,onPartial:n,includeTags:r=true}){const i=function(e,t,a){const n=String(a||"US").toUpperCase(),r=We(t);return r?`id:${n}:${r}`:`title:${n}:${Dt(e)}`}(e,t,a);if(ve.has(i))return {found:false,_debug:{reason:"Steam miss (session memory)",missKey:i}};const o=We(t);let s;return s=o?await ta(o,a,{onPartial:n,includeTags:r,manualOverride:true}):await async function(e,t,{onPartial:a,includeTags:n=true}={}){const r=String(t||"US").toUpperCase(),i=`steam:${r}:${Dt(e)}`,o=n?i:`${i}:lite`,s=await ea(i,{includeTags:n,country:r,manualOverride:false});if(s)return s;if(Se.has(o))return Se.get(o);const l=(async()=>{const t={title:e,country:r,cacheKey:i,cacheSkipped:false,searches:[]},o=async(t,a)=>{var n,r;const i=(t=>`https://store.steampowered.com/api/storesearch/?term=${encodeURIComponent(e)}&l=english&cc=${encodeURIComponent(t)}`)(t);try{const e=await lt({url:i,anonymous:a}),o=Array.isArray(null==e?void 0:e.items)?e.items:[];return {ok:!0,anonymous:a,country:t,url:i,total:null!=(n=null==e?void 0:e.total)?n:o.length,items:o,summary:{anonymous:a,country:t,url:i,total:null!=(r=null==e?void 0:e.total)?r:o.length,items:o.slice(0,8).map(e=>({id:e.id,name:e.name,type:e.type}))}}}catch(o){return {ok:false,anonymous:a,country:t,url:i,items:[],summary:{anonymous:a,country:t,url:i,error:String((null==o?void 0:o.message)||o)}}}},s=(t,a)=>{const n=new Map;for(const e of [...t.items||[],...a.items||[]])(null==e?void 0:e.id)&&(n.has(e.id)||n.set(e.id,e));const r=[...n.values()],i=function(e,t){const a=(e||[]).filter(e=>e&&"app"===e.type&&e.id);if(!a.length)return null;const n=a.filter(e=>!/\b(dlc|soundtrack|ost|bundle|pack|edition upgrade|cosmetic)\b/i.test(e.name)),r=n.length?n:a;let i=null,o=0;for(const s of r){const e=_t(s.name,t);e>o&&(o=e,i=s);}return o>=85?i:null}(r,e)||null,o=new Set((t.items||[]).map(e=>null==e?void 0:e.id).filter(Boolean));return {hit:i,mergedItems:r,anonymous:i?!o.has(i.id):Boolean(a.ok&&!t.ok)}},l=async e=>{const[a,n]=await Promise.all([o(e,false),o(e,true)]);return t.searches.push(a.summary,n.summary),{...s(a,n),sessionResult:a,guestResult:n,country:e}};let c=r,u=false,d=await l(c);d.hit||"US"===c||(u=true,c="US",t.usFallback={from:r,to:"US",reason:`No matches for ${r}; retrying US`},d=await l("US"));const{hit:p,anonymous:m}=d;return t.searchCountry=c,t.usedUsFallback=u,t.anonymous=m,p?(t.picked={id:p.id,name:p.name,type:p.type},Qt({appId:p.id,country:c,hit:p,anonymous:m,usedUsFallback:u,requestedCountry:r,onPartial:a,includeTags:n,debugBase:t,cacheKey:i,manualOverride:false})):(t.reason=u?`No Steam search match for ${r} or US (session + guest, parallel)`:"No Steam search match (session + guest, parallel)",{found:false,_debug:t})})();Se.set(o,l);try{return await l}finally{Se.delete(o);}}(e,a,{onPartial:n,includeTags:r}),(null==s?void 0:s.found)?ve.delete(i):ve.add(i),s}function na(e,t){return `https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/${Number(e)}/${t}`}async function ra(e,{onPartial:t,country:a}={}){const n=Number(e);if(!Number.isFinite(n)||n<=0)return null;const r=me.showSteamDbIcon||me.showSteamDbCover,i=me.showSteamDbGallery,o=me.showSteamPlayers,s=false!==me.showSteamDbDetails;if(!(r||i||o||s))return null;const l=`steamdb:media:${n}`,c=`steam:screenshots:${n}`,u=Boolean(me.debugMode);let d=Ee(l),p=Boolean(d),m=i?Ee(c):null,g=Array.isArray(m);m&&!Array.isArray(m)&&(m=null,g=false);let h=null,b=null,f=null,S=null,v=false;const w=a||me.steamCountry||"US",y=e=>{"function"==typeof t&&t(e);},k=()=>{const{iconUrl:e,logoUrl:t,logoIsPortrait:a}=(()=>{const e=(null==d?void 0:d.iconUrl)||"",t=(null==d?void 0:d.logoUrl)||na(n,"header.jpg")||na(n,"library_600x900.jpg");return {iconUrl:e,logoUrl:t,logoIsPortrait:Boolean(t&&/library_600x900/i.test(t)&&!(null==d?void 0:d.logoUrl))}})(),l=null!=h?"miss":"na",c=r?p?"hit":d?"miss":"na":"na",w=i?g?"hit":Array.isArray(m)?"miss":"na":"na",y=s?v?"hit":S?"miss":"na":"na",k=Array.isArray(null==S?void 0:S.technologies)?S.technologies:[];return {appId:n,iconUrl:r&&me.showSteamDbIcon?e:"",logoUrl:r&&me.showSteamDbCover?t:"",logoIsPortrait:Boolean(a),screenshots:i&&Array.isArray(m)?m:null,players:o?h:null,franchise:s&&(null==S?void 0:S.franchise)||null,systems:s&&(null==S?void 0:S.systems)||null,technologies:s?k:[],lastRecordUpdate:s&&(null==S?void 0:S.lastRecordUpdate)||null,metaBlocked:Boolean(null==S?void 0:S.blocked),source:(null==d?void 0:d.source)||(null==S?void 0:S.source)||"steam",_cache:ze(c,w,y),_cacheMedia:c,_cacheShots:w,_cachePlayers:l,_cacheMeta:y,_debug:u?{reason:["steam-assets"===(null==d?void 0:d.source)?"Steam GetItems (community_icon + header)":(null==d?void 0:d.source)?`Media: ${d.source}`:r?"Waiting for Steam assets":null,i?Array.isArray(m)?`Screenshots: ${m.length} from appdetails`:"Screenshots pending":null,"steam-api"===b?"Players from GetNumberOfCurrentPlayers (live, not cached)":o?"Players pending":null,s?(null==S?void 0:S.blocked)?"SteamDB HTML blocked (Cloudflare)":"steamdb"===(null==S?void 0:S.source)?"SteamDB app table parsed":(null==S?void 0:S.error)?`SteamDB meta error: ${S.error}`:"SteamDB meta pending":null].filter(Boolean).join(" · "),chartsUrl:`${E}/${n}/charts/`,pageUrl:`${E}/${n}/`,playersApiUrl:f,playersSource:b,media:d,screenshots:m,players:h,pageMeta:S,iconUrl:e,logoUrl:t}:void 0}};r&&!d?(d={iconUrl:"",logoUrl:na(n,"header.jpg"),source:"steam-cdn-early"},y(k())):(r||i||s)&&y(k());const P=r&&!p?async function(e,t){const{assets:a}=await Wt(e,t);return a}(n,w).catch(()=>null):Promise.resolve(null),B=i&&!Array.isArray(m)?async function(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return Oe([]);const a=`steam:screenshots:${t}`,n=Ee(a);if(Array.isArray(n))return Fe(n);if(Se.has(a))return Se.get(a);const r=(async()=>{var e;try{const n=`${C}?appids=${encodeURIComponent(t)}&filters=screenshots&l=english`,r=await lt({url:n,anonymous:!0}),i=function(e){const t=Array.isArray(null==e?void 0:e.screenshots)?e.screenshots:[],a=[];for(const n of t){const e=String((null==n?void 0:n.path_thumbnail)||"").trim(),t=String((null==n?void 0:n.path_full)||e).trim();(e||t)&&a.push({id:null!=(null==n?void 0:n.id)?Number(n.id):a.length,thumb:e||t,full:t||e});}return a}((null==(e=null==r?void 0:r[t])?void 0:e.success)?r[t].data:null);return i.length&&Re(a,i),Oe(i)}catch(n){return Oe([])}})();Se.set(a,r);try{return await r}finally{Se.delete(a);}}(n).then(e=>(m=Array.isArray(e)?e:[],g="hit"===Ne(e),y(k()),m)):Promise.resolve(m),x=o&&null==h?(async()=>{f=`${D}?appid=${encodeURIComponent(n)}`;const e=await async function(e){var t;try{const a=await lt({url:`${D}?appid=${encodeURIComponent(e)}`,anonymous:!0}),n=Number(null==(t=null==a?void 0:a.response)?void 0:t.player_count);return Number.isFinite(n)?n:null}catch(a){return null}}(n);null!=e&&(h=e,b="steam-api",y(k()));})():Promise.resolve(),T=s?async function(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return Oe(null);const a=Et(t),n=Ee(a);if(n&&"object"==typeof n&&!n.blocked)return Fe(n);if(Se.has(a))return Se.get(a);const r=`${E}/${t}/`,i=(async()=>{try{const e=function(e){if(!e||"string"!=typeof e)return null;if(/just a moment|cf-browser-verification|challenge-platform|cdn-cgi\/challenge/i.test(e))return {blocked:!0,source:"steamdb-cf"};let t;try{t=(new DOMParser).parseFromString(e,"text/html");}catch(a){return null}return Ft(t)}(await lt({url:r,responseType:"text",timeout:2e4,anonymous:!1}));if(!e||e.blocked)return Oe(e||{blocked:!0,source:"steamdb-cf"});const n=Ot(t,e,{pageUrl:r});return Re(a,n),Oe(n)}catch(e){return Oe({blocked:false,source:"steamdb-error",error:String((null==e?void 0:e.message)||e),pageUrl:r})}})();Se.set(a,i);try{return await i}finally{Se.delete(a);}}(n).then(e=>(S=e&&"object"==typeof e?Ue(e)||e:null,v="hit"===Ne(e),y(k()),S)):Promise.resolve(null),[H]=await Promise.all([P,B,x,T]);H&&(H.iconUrl||H.logoUrl)&&(d={iconUrl:H.iconUrl||(null==d?void 0:d.iconUrl)||"",logoUrl:H.logoUrl||(null==d?void 0:d.logoUrl)||"",source:"steam-assets"},p||Re(l,d),y(k())),r&&me.showSteamDbIcon&&d&&!d.iconUrl&&(d={...d,iconUrl:na(n,"capsule_sm_120.jpg")}),i&&!Array.isArray(m)&&(m=[]);const A=k();return y(A),A}const ia=function(){const e="undefined"!=typeof document&&document.createElement("link").relList;return e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}(),oa={},sa="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";let la=null;function ca(e){if(!Number.isFinite(e)||e<=0)return null;const t=Math.round(10*e)/10;return Number.isInteger(t)?String(t):t.toFixed(1)}function ua(e){const t=Number(e);return !Number.isFinite(t)||t<=0?null:t/3600}function da(e,t){return {searchType:"games",searchTerms:String(e||"").trim().split(/\s+/).filter(Boolean),searchPage:1,size:10,searchOptions:{games:{userId:0,platform:"",sortCategory:"popular",rangeCategory:"main",rangeTime:{min:null,max:null},gameplay:{perspective:"",flow:"",genre:"",difficulty:""},rangeYear:{min:"",max:""},modifier:""},users:{sortCategory:"postcount"},lists:{sortCategory:"follows"},filter:"",sort:0,randomizer:0},useCache:true,[t.hpKey]:t.hpVal}}function pa(e,t){if(!Array.isArray(e)||!e.length)return null;const a=e.map(e=>({item:e,titleScore:_t((null==e?void 0:e.name)||(null==e?void 0:e.distilledName)||"",t),dist:Number(null==e?void 0:e.dist)})).filter(e=>{var t;return null!=(null==(t=e.item)?void 0:t.id)});if(!a.length)return null;a.sort((e,t)=>t.titleScore-e.titleScore||(Number.isFinite(e.dist)?e.dist:99)-(Number.isFinite(t.dist)?t.dist:99));const n=a[0];return n.titleScore>=TITLE_MATCH_MIN_SCORE?{item:n.item,score:n.titleScore}:Number.isFinite(n.dist)&&n.dist<=.12?{item:n.item,score:Math.max(n.titleScore,80)}:null}function ma(...e){for(const t of e){if(null==t||""===t)continue;const e="number"==typeof t?t:Number(String(t).trim().replace(",","."));if(!(!Number.isFinite(e)||e<=0||e>100))return Math.round(e)}return null}function ga(){const e=location.pathname||"/",t=e.match(/^\/games\/([^/]+)\/?/i);return {path:e,isGamePage:Boolean(t)&&!!document.getElementById("game-body"),slug:t?t[1].toLowerCase():"",isProfile:/^\/u\/[^/]+\/?/.test(e),isSearch:e.startsWith("/search")}}function ha(){const e=document.querySelector("#game-profile h1, #center-content h1, main h1");if(!e)return "";const t=e.cloneNode(true);return t.querySelectorAll("[data-blp-game-id], .blp-title-icon-wrap").forEach(e=>e.remove()),(t.textContent||"").trim()}function ba(e){const t=document.querySelector('a[href*="igdb.com/games/"]');return (null==t?void 0:t.href)?t.href.split("?")[0]:e?`https://www.igdb.com/games/${encodeURIComponent(e)}`:""}let fa=[];function Sa(e){fa=e;}function va(e){const t=document.querySelector(`[${m}="cover"]`);if(!t)return;const a=Array.isArray(e)?e.findIndex(e=>"cover"===e.kind):-1;if(!me.showSteamDbCover||a<0||!e.length)return t.classList.remove("is-gallery"),t.removeAttribute("role"),t.removeAttribute("tabindex"),t.removeAttribute("aria-label"),t.onclick=null,void(t.onkeydown=null);t.classList.add("is-gallery"),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.setAttribute("aria-label",he.steamGalleryOpen);const n=()=>xa(e,a);t.onclick=e=>{e.preventDefault(),n();},t.onkeydown=e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),n());};}const wa="data-blp-cover-viewer";function ya(e){e.preventDefault(),e.stopPropagation();const t=e.currentTarget;t instanceof HTMLImageElement&&function(e){const t=function(e){if(!e)return "";const t=String(e.getAttribute("data-src")||"").trim(),a=String(e.currentSrc||e.getAttribute("src")||"").trim();return t||a}(e),a=String(e.currentSrc||e.getAttribute("src")||t).trim();if(!t&&!a)return;const n={src:t||a,thumb:a||t,kind:"cover",alt:e.getAttribute("alt")||""},r=new Set([n.src,n.thumb].filter(Boolean)),i=[];for(const o of fa||[]){const e=String(o.full||o.src||o.thumb||"").trim(),t=String(o.thumb||o.full||o.src||"").trim();e&&!r.has(e)&&(r.add(e),i.push({src:e,thumb:t||e,kind:o.kind||"screenshot",alt:o.alt||""}));}Ba({items:[n,...i],index:0,title:ha()||he.viewerOpenCover});}(t);}function ka(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),ya(e));}function Ca(){const e=document.querySelector("#interaction-sidebar > div > div.col.col-cover.px-sm-0.my-auto.mx-auto.mb-0.mb-2.mb-mb-0 > div > div > img")||document.querySelector("#interaction-sidebar .col-cover .game-cover img")||document.querySelector("#interaction-sidebar .col-cover img");e&&"1"!==e.getAttribute(wa)&&(e.setAttribute(wa,"1"),e.classList.add("blp-cover-zoomable"),e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",he.viewerOpenCover),e.addEventListener("click",ya),e.addEventListener("keydown",ka));}const Pa=(()=>{const e=1.25;let t=null;function a(e,t,a){return Math.min(a,Math.max(t,e))}function n(){if(!t)return;const{root:e,onKeyDown:a,onClose:n,prevOverflow:r}=t;if(document.removeEventListener("keydown",a,true),null==e||e.remove(),null!=r&&(document.documentElement.style.overflow=r),t=null,"function"==typeof n)try{n();}catch(i){}}function r(){if(!t)return;const{frame:e,scale:a,tx:n,ty:r}=t;e.style.transform=`translate(${n}px, ${r}px) scale(${a})`,t.zoomOutBtn&&(t.zoomOutBtn.disabled=a<=1.001),t.zoomInBtn&&(t.zoomInBtn.disabled=a>=4.999),t.resetBtn&&(t.resetBtn.disabled=a<=1.001&&Math.abs(n)<1&&Math.abs(r)<1);}function i(){t&&(t.scale=1,t.tx=0,t.ty=0,r());}function o(e,n,i){if(!t)return;const o=t.stage.getBoundingClientRect(),s=(null==n?o.left+o.width/2:n)-o.left-o.width/2,l=(null==i?o.top+o.height/2:i)-o.top-o.height/2,c=t.scale,u=a(e,1,5);u!==c?(t.tx=s-(s-t.tx)*u/c,t.ty=l-(l-t.ty)*u/c,t.scale=u,u<=1.001&&(t.tx=0,t.ty=0,t.scale=1),r()):r();}function s(e,a,n){t&&o(t.scale*e,a,n);}function l(e){var a,n;t&&(null==(a=t.stage)||a.classList.toggle("is-loading",Boolean(e)),null==(n=t.root)||n.setAttribute("aria-busy",e?"true":"false"),t.spinner&&t.spinner.setAttribute("aria-hidden",e?"false":"true"));}function c(e,{keepZoom:a=false}={}){if(!t)return;const{items:n,img:r}=t,o=(e%n.length+n.length)%n.length;t.index=o;const s=n[o];if(!s||!r)return;const c=++t.loadGen;r.alt=s.alt||"",a||i(),function(){if(!t)return;const{film:e,index:a,items:n}=t;e.querySelectorAll("[data-blp-viewer-thumb]").forEach(e=>{const t=Number(e.getAttribute("data-blp-viewer-thumb"));e.classList.toggle("is-active",t===a),e.classList.toggle("is-near",1===Math.abs(t-a)),e.setAttribute("aria-current",t===a?"true":"false");});const r=e.querySelector(`[data-blp-viewer-thumb="${a}"]`);null==r||r.scrollIntoView({behavior:"smooth",inline:"center",block:"nearest"}),t.counter&&(t.counter.textContent=X(he.viewerOf,{current:a+1,total:n.length}));const i=n.length>1;t.prevBtn&&(t.prevBtn.hidden=!i),t.nextBtn&&(t.nextBtn.hidden=!i);}(),function(e){if(!t)return;const{items:a}=t;if(!(a.length<2))for(const n of [-1,1,2]){const r=a[((e+n)%a.length+a.length)%a.length],i=null==r?void 0:r.src;if(!i||t.prefetched.has(i))continue;t.prefetched.add(i);const o=new Image;o.decoding="async",o.referrerPolicy="no-referrer",o.src=i;}}(o);const u=s.src;if((r.getAttribute("src")||"")===u&&r.complete&&r.naturalWidth>0)return void l(false);l(true);const d=()=>{t&&t.loadGen===c&&l(false);};r.addEventListener("load",d,{once:true}),r.addEventListener("error",d,{once:true}),r.src=u,r.complete&&r.naturalWidth>0&&d();}function u(e){t&&c(t.index+e);}return {open:function(l={}){var d,p,m,g,h;const b=function(e){const t=[];for(const a of e||[]){if(!a)continue;if("string"==typeof a){const e=a.trim();e&&t.push({src:e,thumb:e,alt:"",kind:""});continue}const e=String(a.src||a.full||a.url||"").trim(),n=String(a.thumb||a.thumbnail||e).trim();(e||n)&&t.push({src:e||n,thumb:n||e,alt:String(a.alt||""),kind:String(a.kind||"")});}return t}(l.items);if(!b.length)return null;n();let f=Number(l.index);Number.isFinite(f)||(f=0),f=a(0|f,0,b.length-1);const S=l.title||he.steamGalleryTitle||"",v=document.createElement("div");v.className="blp-viewer",v.setAttribute("role","dialog"),v.setAttribute("aria-modal","true"),v.setAttribute("aria-label",S||"Image viewer"),v.innerHTML=`\n      <div class="blp-viewer__chrome">\n        <div class="blp-viewer__chrome-left">\n          <span class="blp-viewer__title">${Ce(S)}</span>\n          <span class="blp-viewer__counter" data-blp-viewer-counter></span>\n        </div>\n        <div class="blp-viewer__chrome-right">\n          <button type="button" class="blp-viewer__tool" data-blp-viewer-zoom-out aria-label="${Pe(he.viewerZoomOut)}">−</button>\n          <button type="button" class="blp-viewer__tool" data-blp-viewer-zoom-reset aria-label="${Pe(he.viewerZoomReset)}">⟲</button>\n          <button type="button" class="blp-viewer__tool" data-blp-viewer-zoom-in aria-label="${Pe(he.viewerZoomIn)}">+</button>\n          <button type="button" class="blp-viewer__tool" data-blp-viewer-close aria-label="${Pe(he.steamGalleryClose)}">×</button>\n        </div>\n      </div>\n      <div class="blp-viewer__body">\n        <button type="button" class="blp-viewer__nav" data-blp-viewer-prev aria-label="${Pe(he.steamGalleryPrev)}">‹</button>\n        <div class="blp-viewer__stage" data-blp-viewer-stage>\n          <div class="blp-viewer__spinner" data-blp-viewer-spinner aria-hidden="true" aria-label="${Pe(he.loading)}"></div>\n          <div class="blp-viewer__frame" data-blp-viewer-frame>\n            <img class="blp-viewer__img" alt="" decoding="async" referrerpolicy="no-referrer" draggable="false" />\n          </div>\n        </div>\n        <button type="button" class="blp-viewer__nav" data-blp-viewer-next aria-label="${Pe(he.steamGalleryNext)}">›</button>\n      </div>\n      <div class="blp-viewer__film" data-blp-viewer-film></div>\n    `;const w=v.querySelector("[data-blp-viewer-film]");w.innerHTML=b.map((e,t)=>`\n          <button type="button" class="blp-viewer__thumb${"cover"===e.kind?" blp-viewer__thumb--cover":""}" data-blp-viewer-thumb="${t}" aria-label="${Pe(he.steamGalleryOpen)}">\n            <img src="${Pe(e.thumb||e.src)}" alt="" loading="lazy" decoding="async" referrerpolicy="no-referrer" draggable="false" />\n          </button>\n        `).join("");const y=a=>{if(t)return "Escape"===a.key?(a.preventDefault(),void n()):"ArrowLeft"===a.key?(a.preventDefault(),void u(-1)):"ArrowRight"===a.key?(a.preventDefault(),void u(1)):"Home"===a.key?(a.preventDefault(),void c(0)):"End"===a.key?(a.preventDefault(),void c(b.length-1)):"+"===a.key||"="===a.key?(a.preventDefault(),void s(e)):"-"===a.key||"_"===a.key?(a.preventDefault(),void s(.8)):void("0"===a.key&&(a.preventDefault(),i()))};return t={root:v,items:b,index:f,scale:1,tx:0,ty:0,loadGen:0,prefetched:new Set,prevOverflow:document.documentElement.style.overflow,img:v.querySelector(".blp-viewer__img"),frame:v.querySelector("[data-blp-viewer-frame]"),stage:v.querySelector("[data-blp-viewer-stage]"),spinner:v.querySelector("[data-blp-viewer-spinner]"),film:w,counter:v.querySelector("[data-blp-viewer-counter]"),prevBtn:v.querySelector("[data-blp-viewer-prev]"),nextBtn:v.querySelector("[data-blp-viewer-next]"),zoomInBtn:v.querySelector("[data-blp-viewer-zoom-in]"),zoomOutBtn:v.querySelector("[data-blp-viewer-zoom-out]"),resetBtn:v.querySelector("[data-blp-viewer-zoom-reset]"),onKeyDown:y,onClose:l.onClose},document.documentElement.style.overflow="hidden",null==(d=t.prevBtn)||d.addEventListener("click",e=>{e.stopPropagation(),u(-1);}),null==(p=t.nextBtn)||p.addEventListener("click",e=>{e.stopPropagation(),u(1);}),null==(m=t.zoomInBtn)||m.addEventListener("click",t=>{t.stopPropagation(),s(e);}),null==(g=t.zoomOutBtn)||g.addEventListener("click",e=>{e.stopPropagation(),s(.8);}),null==(h=t.resetBtn)||h.addEventListener("click",e=>{e.stopPropagation(),i();}),w.querySelectorAll("[data-blp-viewer-thumb]").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation(),c(Number(e.getAttribute("data-blp-viewer-thumb")));});}),function(){const{stage:a,root:l}=t;let c=false,u=false,d=0,p=0,m=new Map,g=0,h=1;const b=(e,a)=>{const n=t.img;if(!n)return  false;const r=n.getBoundingClientRect();return e>=r.left&&e<=r.right&&a>=r.top&&a<=r.bottom},f=e=>{var t;m.delete(e.pointerId),m.size<2&&(g=0),c&&(c=false,a.classList.remove("is-dragging"),null==(t=a.releasePointerCapture)||t.call(a,e.pointerId));};a.addEventListener("wheel",t=>{t.preventDefault(),s(t.deltaY<0?e:.8,t.clientX,t.clientY);},{passive:false}),a.addEventListener("pointerdown",e=>{var n,r;if(null==e.button||0===e.button){if(m.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===m.size){const r=[...m.values()];return g=Math.hypot(r[0].x-r[1].x,r[0].y-r[1].y)||1,h=t.scale,c=false,void(null==(n=a.setPointerCapture)||n.call(a,e.pointerId))}b(e.clientX,e.clientY)&&(null==(r=a.setPointerCapture)||r.call(a,e.pointerId),c=true,u=false,d=e.clientX,p=e.clientY,a.classList.add("is-dragging"));}}),a.addEventListener("pointermove",e=>{if(m.has(e.pointerId)&&m.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===m.size){const e=[...m.values()],t=Math.hypot(e[0].x-e[1].x,e[0].y-e[1].y)||1;return void o(h*(t/g),(e[0].x+e[1].x)/2,(e[0].y+e[1].y)/2)}if(!c)return;const a=e.clientX-d,n=e.clientY-p;(Math.abs(a)>1||Math.abs(n)>1)&&(u=true),d=e.clientX,p=e.clientY,t.tx+=a,t.ty+=n,r();}),a.addEventListener("pointerup",f),a.addEventListener("pointercancel",f),a.addEventListener("dblclick",e=>{e.preventDefault(),t.scale>1.01||Math.abs(t.tx)>1||Math.abs(t.ty)>1?i():o(2.5,e.clientX,e.clientY);}),l.addEventListener("click",e=>{e.target.closest("[data-blp-viewer-close]")?n():e.target.closest(".blp-viewer__tool, .blp-viewer__nav, .blp-viewer__film, .blp-viewer__chrome, .blp-viewer__counter, .blp-viewer__title")||(u?u=false:b(e.clientX,e.clientY)||n());});}(),document.body.appendChild(v),document.addEventListener("keydown",y,true),c(f),t},close:n,isOpen:function(){var e;return Boolean(null==(e=null==t?void 0:t.root)?void 0:e.isConnected)},go:u,show:c,zoomBy:s,resetTransform:i}})();function Ba(e){return Pa.open(e)}function xa(e,t){Ba({items:e,index:t,title:he.steamGalleryTitle});}function Da(e){return "hit"===e?he.debugCacheHit:"miss"===e?he.debugCacheMiss:"mixed"===e?he.debugCacheMixed:he.debugCacheNa}function Ta(e,t,{titleSelector:a=".game-details-header"}={}){var n;if(!e)return;const r=["hit","miss","mixed","na"];e.classList.remove("blp-debug-cache",...r.map(e=>`blp-debug-cache--${e}`));const i=e.querySelector(a);if(null==(n=null==i?void 0:i.querySelector(".blp-cache-badge"))||n.remove(),!me.debugMode)return;const o=r.includes(t)?t:"na";if(e.classList.add("blp-debug-cache",`blp-debug-cache--${o}`),!i)return;const s=document.createElement("span");s.className=`blp-cache-badge blp-cache-badge--${o}`,s.textContent=Da(o),s.title=Da(o),i.appendChild(s);}function Ha(e,t){let a=0;return function(...n){clearTimeout(a),a=setTimeout(()=>e.apply(this,n),t);}}const Aa="blp-toast-host",Ga="blp_toast_queue",La={success:'<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"><path d="M5 10.5 8.2 13.7 15 6.5" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"/></svg>',info:'<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"><circle cx="10" cy="10" r="7.25" stroke="currentColor" stroke-width="1.8"/><path d="M10 9v4.5M10 6.5h.01" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',warning:'<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"><path d="M10 3.5 17.5 16H2.5L10 3.5Z" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round"/><path d="M10 8v4M10 14h.01" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>',error:'<svg viewBox="0 0 20 20" fill="none" aria-hidden="true"><circle cx="10" cy="10" r="7.25" stroke="currentColor" stroke-width="1.8"/><path d="m7.2 7.2 5.6 5.6M12.8 7.2l-5.6 5.6" stroke="currentColor" stroke-width="1.9" stroke-linecap="round"/></svg>'};function _a(e){if(!e||"1"===e.dataset.blpLeaving)return;e.dataset.blpLeaving="1",e.classList.add("is-leaving");const t=()=>e.remove();e.addEventListener("transitionend",t,{once:true}),setTimeout(t,320);}function Ma(e,t={}){let a="",n="",r=t;e&&"object"==typeof e&&!Array.isArray(e)?(r={...e,...t},a=r.title||"",n=r.message||r.description||""):(n=String(e||""),a=t.title||"");const i=function(e){return ["info","success","warning","error"].includes(e)?e:"info"}(r.type);return a=String(a||"").trim()||function(e){return "success"===e?he.toastTitleSuccess||"Success":"warning"===e?he.toastTitleWarning||"Notice":"error"===e?he.toastTitleError||"Error":he.toastTitleInfo||"Info"}(i),n=String(n||"").trim(),{title:a,message:n,type:i,duration:Number.isFinite(r.duration)&&r.duration>0?r.duration:4200}}function $a(e,t={}){const{title:a,message:n,type:r,duration:i}=Ma(e,t);if(!a&&!n)return null;const o=function(){let e=document.getElementById(Aa);return (null==e?void 0:e.isConnected)||(e=document.createElement("div"),e.id=Aa,e.className="blp-toast-host",e.setAttribute("aria-live","polite"),e.setAttribute("aria-relevant","additions"),(document.body||document.documentElement).appendChild(e)),e}();for(;o.children.length>=4;)_a(o.firstElementChild);const s=he.toastDismiss||"Dismiss",l=document.createElement("div");l.className=`blp-toast blp-toast--${r}`,l.setAttribute("role","status"),l.innerHTML=`<span class="blp-toast__icon" aria-hidden="true">${La[r]}</span><span class="blp-toast__body">`+(a?`<span class="blp-toast__title">${Ce(a)}</span>`:"")+(n?`<span class="blp-toast__text">${Ce(n)}</span>`:"")+`</span><button type="button" class="blp-toast__close" aria-label="${Pe(s)}"><svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="m4 4 8 8M12 4 4 12" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg></button>`+(i<1/0?`<span class="blp-toast__progress" style="--blp-toast-ms:${i}ms"></span>`:"");const c=l.querySelector(".blp-toast__close");if(null==c||c.addEventListener("click",e=>{e.stopPropagation(),_a(l);}),l.addEventListener("click",e=>{e.target.closest(".blp-toast__close")||_a(l);}),o.appendChild(l),requestAnimationFrame(()=>{l.classList.add("is-in");}),i<1/0){let e=i,t=Date.now(),a=setTimeout(()=>_a(l),e);const n=l.querySelector(".blp-toast__progress");l.addEventListener("mouseenter",()=>{clearTimeout(a),e-=Date.now()-t,n&&(n.style.animationPlayState="paused");}),l.addEventListener("mouseleave",()=>{"1"!==l.dataset.blpLeaving&&(t=Date.now(),a=setTimeout(()=>_a(l),Math.max(0,e)),n&&(n.style.animationPlayState="running"));});}return l}function Ia(e,t={}){const{title:a,message:n,type:r,duration:i}=Ma(e,t);if(a||n)try{const e=sessionStorage.getItem(Ga),t=e?JSON.parse(e):[],o=Array.isArray(t)?t:[];o.push({title:a,message:n,type:r,duration:i}),sessionStorage.setItem(Ga,JSON.stringify(o.slice(-5)));}catch(o){}}function Ea(){return  true===me.showExport}const Ra=["Name","Favorite","Status","Rating","Expected Rating","Difficulty","Received","Platform","Date start","Date end","Time to Complete","Developer","Release date","Franchise","Is DLC","Tags","Advantages","Disadvantages","Passing","Source"],Fa="data-blp-export",Oa="blp-export-backdrop";function Na(e,t="text"){return null==e?"":"numeric"===t?function(e){const t=Math.round(Number(e));if(!Number.isFinite(t)||t<1)return "";const a=Math.min(10,Math.max(1,t))/2;return Number.isInteger(a)?String(a):a.toFixed(1)}(e):function(e){const t=Math.round(Number(e));if(!Number.isFinite(t)||t<1)return "";switch(Math.min(10,Math.max(1,t))){case 1:return "Terrible";case 2:return "Bad";case 3:case 4:return "Mediocre";case 5:return "Normal";case 6:return "Good";case 7:return "Great";case 8:case 9:return "Excellent";case 10:return "Amazing";default:return ""}}(e)}function za(e){const t=null==e?"":String(e);return /[",\r\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}function Ua(e){if(!e)return  false;if(String(e.getAttribute("play_type")||"").trim().toLowerCase())return  true;if(e.classList.contains("active")||e.classList.contains("selected"))return  true;if("true"===e.getAttribute("aria-pressed"))return  true;const t=e.closest('[class*="-btn-container"]');return !(!(null==t?void 0:t.classList.contains("active"))&&!(null==t?void 0:t.classList.contains("selected")))}function qa(e){const t=String(e||"").trim();return t?/^windows\s*pc$/i.test(t)?"PC":t:""}function ja(){return document.querySelector("#log-editor-full")||document.querySelector("#journal-game-modal .modal-content #log-editor-full")||document.querySelector("#journal-game-modal .modal-body")}function Wa(e){const t=String(e||"").trim().toLowerCase().replace(/\s+/g," ");return t?"completed"===t||"played"===t||"done"===t?"played":"playing"===t||"in progress"===t?"playing":"backlog"===t?"backlog":"wishlist"===t?"wishlist":"retired"===t?"retired":"shelved"===t?"shelved":"abandoned"===t?"abandoned":"":""}const Ja={wishlist:"Planned",backlog:"Planned",playing:"In progress",shelved:"Deferred",abandoned:"Dropped",retired:"Tried",played:"Done"},Va={wishlist:"Wishlist",backlog:"Backlog",playing:"Playing",shelved:"Shelved",abandoned:"Abandoned",retired:"Retired",played:"Played"};function Ka(e,t="notion"){const a=Wa(e);return "original"===t?a&&Va[a]||"":a?Ja[a]||"":"Not started"}function Za(){var e,t;const a=ja();if(a){if(a.querySelector("#playing_toggle_checkbox:checked"))return "playing";if(a.querySelector("#backlog_toggle_checkbox:checked"))return "backlog";if(a.querySelector("#wishlist_toggle_checkbox:checked"))return "wishlist";const n=Wa(null==(e=a.querySelector("#status"))?void 0:e.value);return n||Wa(((null==(t=a.querySelector("#play-label-title"))?void 0:t.textContent)||"").trim())}const n=[[".played-btn-container .btn-play, .played-btn-container button","played"],[".playing-btn-container .btn-play, .playing-btn-container button","playing"],[".backlog-btn-container .btn-play, .backlog-btn-container button","backlog"],[".wishlist-btn-container .btn-play, .wishlist-btn-container button","wishlist"]];for(const[r,i]of n){const e=document.querySelectorAll(`#logging-sidebar-section ${r}`);for(const t of e)if(Ua(t))return i}return ""}function Ya(){const e=ja();if(e){const t=e.querySelector("#log_liked_checkbox");if(t)return t.checked?"Yes":"No"}const t=document.querySelector("#logging-sidebar-section .like-game-btn, .like-game-btn");return t?t.classList.contains("active")||t.classList.contains("liked")||t.querySelector(".fa-solid.fa-heart, i.fa-heart.fa-solid")?"Yes":t.querySelector(".fa-regular.fa-heart")?"No":"":""}function Xa(e){const t=String(e||"").trim();if(!t)return "";const a=new Date(t);if(!Number.isNaN(a.getTime()))try{return a.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}catch(n){}return t}function Qa(){const e=document.querySelector(".game-parent-category");if(!e)return "No";const t=(e.textContent||"").replace(/\s+/g," ").trim();return /DLC/i.test(t)?"Yes":"No"}function en(){const e=[...document.querySelectorAll('#game-body .game-title-section a[href*="/company/"], #interaction-sidebar .game-subtitle a[href*="/company/"]')],t=[];for(const a of e){const e=(a.textContent||"").trim();e&&!t.includes(e)&&t.push(e);}return t.join(", ")}function tn(){const e=document.querySelector('#game-body a[href*="release_year:"], #game_detail_section a[href*="release_year:"], a.game-year'),t=[...document.querySelectorAll('#game-body a[href*="release_year:"], #game_detail_section a[href*="release_year:"]')].map(e=>(e.textContent||"").trim()).filter(e=>/\d/.test(e)&&/[a-z]/i.test(e));return t.length?t[0]:((null==e?void 0:e.textContent)||"").trim()}function an(){const e=function(){var e;const t=ja();if(!t)return "";const a=function(e,t=document){var a;const n=t.querySelector(`button[data-id="${e}"]`),r=((null==(a=null==n?void 0:n.querySelector(".filter-option-inner-inner"))?void 0:a.textContent)||(null==n?void 0:n.getAttribute("title"))||"").trim();if(r&&!/select|choose|ex:/i.test(r))return r;const i=t.querySelector(`#${e}`);if(!i)return "";const o=i.querySelector("option:checked")||[...i.selectedOptions||[]][0];return ((null==o?void 0:o.textContent)||"").trim()}("playthrough_platform",t);return qa(a||((null==(e=t.querySelector("#playthrough-container .btn-nav.current .playthrough-option-title"))?void 0:e.textContent)||"").trim())}();if(e)return e;const t=document.querySelector("#game-body #game-page-platforms, #game-page-platforms")||document.querySelector("#game_detail_section");if(!t)return "";const a=[...t.querySelectorAll('a[href*="release_platform:"]')].map(e=>(e.textContent||"").trim()).filter(Boolean);return [...new Set(a)].map(e=>qa(e)).join(", ")}function nn(){const e=[...document.querySelectorAll('[data-blp-enrich="steam"] .blp-steam-tag')].map(e=>(e.textContent||"").trim()).filter(Boolean);return [...new Set(e)].join(", ")}function rn(){const e=document.querySelector('[data-blp-enrich="steamdb"] [data-blp-sdb="franchise"] .blp-sdb-fact__value');return String((null==e?void 0:e.textContent)||"").replace(/\s+/g," ").trim()}function on(){var e,t,a;const n=(null==(e=document.querySelector(`[${m}="cover"]`))?void 0:e.getAttribute("data-blp-appid"))||(null==(t=document.querySelector(`[${m}="icon"]`))?void 0:t.getAttribute("data-blp-appid"))||"";if(n)return `https://store.steampowered.com/app/${n}/`;const r=document.querySelector('[data-blp-enrich="links"] a[href*="store.steampowered.com/app/"]');return (null==(a=null==r?void 0:r.href)?void 0:a.split("?")[0])||""}function sn(e,{ratingStyle:t="text",statusStyle:a="notion"}={}){var n;const r={};for(const i of Ra)r[i]=null!=(n=e[i])?n:"";return r.Rating=Na(e._ratingScore10,t),r.Status=Ka(e._statusKey,a),r}const ln={csv:{ext:"csv",mime:"text/csv;charset=utf-8",bom:true,build:function(e,t={}){return function(e,t=Ra){const a=[t.map(za).join(",")];for(const n of e)a.push(t.map(e=>{var t;return za(null!=(t=n[e])?t:"")}).join(","));return `${a.join("\r\n")}\r\n`}([sn(e,t)])}},markdown:{ext:"md",mime:"text/markdown;charset=utf-8",bom:false,build:function(e,t={}){var a;const n=sn(e,t),r=[`# ${n.Name||"Untitled"}`,""];for(const i of Ra)"Name"!==i&&r.push(`${i}: ${null!=(a=n[i])?a:""}`);return `${r.join("\n")}\n`}},json:{ext:"json",mime:"application/json;charset=utf-8",bom:false,build:function(e,t={}){return `${JSON.stringify(sn(e,t),null,2)}\n`}}};function cn(e,t,a={}){const n=ln[e];if(!n)return null;const r=n.build(t,a);return {ext:n.ext,mime:n.mime,text:n.bom?`\ufeff${r}`:r,copyText:r}}function un({includeLogEditor:e=true}={}){document.querySelectorAll(`[${Fa}="btn"]`).forEach(e=>e.remove()),e&&document.querySelectorAll(`[${Fa}="log-btn"]`).forEach(e=>e.remove()),document.querySelectorAll(`.${Oa}`).forEach(e=>e.remove());}function dn(e){e&&"1"!==e.dataset.blpExportBound&&(e.dataset.blpExportBound="1",e.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),function(){var e,t,a,n;if(!Ea())return;if(document.querySelector(`.${Oa}`))return;if(!ga().isGamePage&&!ja())return;const r=function(){const e=function(){var e,t;const a=ja();if(!a)return {start:"",end:""};const n=((null==(e=a.querySelector("#started-on-datepicker"))?void 0:e.value)||"").trim(),r=((null==(t=a.querySelector("#finished-on-datepicker"))?void 0:t.value)||"").trim();return {start:Xa(n),end:Xa(r)}}(),t=function(){const e=ja();if(!e)return "";const t=e.querySelector("h2.main-header");if(!t)return "";const a=t.cloneNode(true);return a.querySelectorAll("small").forEach(e=>e.remove()),(a.textContent||"").trim()}()||ha(),a=function(){const e=ja();if(e){const t=e.querySelector('#modal-rating input[name="rating_modal"]:checked');if(t){const e=Number(t.value);if(Number.isFinite(e)&&e>=1&&e<=10)return e}}const t=document.querySelector("#logging-sidebar-section .star-rating-game input.star-radio:checked, .star-rating-game input.star-radio:checked");if(t){const e=Number(t.value);if(Number.isFinite(e)&&e>=1&&e<=10)return e}return null}(),n=function(){const e=ja();if(!e)return "";const t=(t,a)=>{var n,r;const i=Number(null==(n=e.querySelector(t))?void 0:n.value),o=Number(null==(r=e.querySelector(a))?void 0:r.value),s=Number.isFinite(i)?i:0,l=Number.isFinite(o)?o:0;if(s<=0&&l<=0)return "";const c=s+l/60;return Number.isInteger(c)?String(c):String(Math.round(10*c)/10)};return t("#playthrough-time-finished-hours","#playthrough-time-finished-minutes")||t("#playthrough-time-played-hours","#playthrough-time-played-minutes")||""}()||function(){const e=document.querySelector('[data-blp-enrich="hltb"]');if(!e)return "";const t=e.textContent||"",a=t.match(/Main\s+([\d.]+)\s*h/i)||t.match(/([\d.]+)\s*h/);return a?a[1]:""}();return {Name:t,Favorite:Ya(),Status:"",Rating:"","Expected Rating":"",Difficulty:"",Received:"",Platform:an(),"Date start":e.start,"Date end":e.end,"Time to Complete":n,Developer:en(),"Release date":tn(),Franchise:rn(),"Is DLC":Qa(),Tags:nn(),Advantages:"",Disadvantages:"",Passing:"",Source:on(),_ratingScore10:a,_statusKey:Za()}}(),i=document.createElement("div");i.className=Oa,i.innerHTML=`\n    <div class="blp-export-dialog" role="dialog" aria-modal="true" aria-label="${Pe(he.exportTitle)}">\n      <div class="blp-export-dialog__head">\n        <h3>${Ce(he.exportTitle)}</h3>\n        <p class="blp-hint">${Ce(he.exportHint)}</p>\n      </div>\n      <div class="blp-export-layout">\n        <div class="blp-export-main">\n          <p class="blp-export-section-label">${Ce(he.exportFormats)}</p>\n          <div class="blp-export-formats" role="radiogroup" aria-label="${Pe(he.exportFormats)}">\n            ${gn("blp-export-format","csv",he.exportFormatCsv,he.exportFormatCsvHint,{enabled:true,checked:true})}\n            ${gn("blp-export-format","markdown",he.exportFormatMarkdown,he.exportFormatMarkdownHint,{enabled:true})}\n            ${gn("blp-export-format","json",he.exportFormatJson,he.exportFormatJsonHint,{enabled:true})}\n          </div>\n          <details class="blp-export-advanced">\n            <summary class="blp-export-advanced__summary">${Ce(he.exportAdvanced)}</summary>\n            <div class="blp-export-advanced__body">\n              <p class="blp-export-section-label">${Ce(he.exportRatingFormat)}</p>\n              <div class="blp-export-formats" role="radiogroup" aria-label="${Pe(he.exportRatingFormat)}">\n                ${gn("blp-export-rating","text",he.exportRatingText,he.exportRatingTextHint,{enabled:true,checked:true})}\n                ${gn("blp-export-rating","numeric",he.exportRatingNumeric,he.exportRatingNumericHint,{enabled:true})}\n              </div>\n              <p class="blp-export-section-label">${Ce(he.exportStatusFormat)}</p>\n              <div class="blp-export-formats" role="radiogroup" aria-label="${Pe(he.exportStatusFormat)}">\n                ${gn("blp-export-status","notion",he.exportStatusNotion,he.exportStatusNotionHint,{enabled:true,checked:true})}\n                ${gn("blp-export-status","original",he.exportStatusOriginal,he.exportStatusOriginalHint,{enabled:true})}\n              </div>\n            </div>\n          </details>\n          <div class="blp-actions">\n            <button type="button" class="blp-btn" data-blp-export-cancel>${Ce(he.cancel)}</button>\n            <button type="button" class="blp-btn" data-blp-export-copy>${Ce(he.exportCopy)}</button>\n            <button type="button" class="blp-btn blp-primary" data-blp-export-run>${Ce(he.exportDownload)}</button>\n          </div>\n        </div>\n        ${bn(r,"text","notion","csv")}\n      </div>\n    </div>\n  `;const o=document.documentElement.style.overflow;document.documentElement.style.overflow="hidden";const s=()=>{document.documentElement.style.overflow=o,i.remove();},l=()=>{var e;return (null==(e=i.querySelector('input[name="blp-export-rating"]:checked'))?void 0:e.value)||"text"},c=()=>{var e;return (null==(e=i.querySelector('input[name="blp-export-status"]:checked'))?void 0:e.value)||"notion"},u=()=>{var e;return (null==(e=i.querySelector('input[name="blp-export-format"]:checked'))?void 0:e.value)||"csv"},d=()=>{const e=i.querySelector("[data-blp-export-preview]");if(!e)return;const t=document.createElement("div");t.innerHTML=bn(r,l(),c(),u());const a=t.firstElementChild;a&&e.replaceWith(a);};i.addEventListener("click",e=>{e.target===i&&s();}),null==(e=i.querySelector("[data-blp-export-cancel]"))||e.addEventListener("click",s),i.addEventListener("keydown",e=>{"Escape"===e.key&&(e.preventDefault(),s());}),i.querySelectorAll('input[name="blp-export-format"]').forEach(e=>{e.addEventListener("change",d);}),i.querySelectorAll('input[name="blp-export-rating"]').forEach(e=>{e.addEventListener("change",d);}),i.querySelectorAll('input[name="blp-export-status"]').forEach(e=>{e.addEventListener("change",d);}),null==(t=i.querySelector("[data-blp-export-run]"))||t.addEventListener("click",()=>{const e=u(),t={ratingStyle:l(),statusStyle:c()};try{const n=cn(e,r,t);if(!n)return void $a(he.exportFormatUnavailable,{type:"error",title:he.exportFormatUnavailableTitle});!function(e,t,a="text/csv;charset=utf-8"){const n=new Blob([t],{type:a}),r=URL.createObjectURL(n),i=document.createElement("a");i.href=r,i.download=e,i.rel="noopener",document.body.appendChild(i),i.click(),i.remove(),window.setTimeout(()=>URL.revokeObjectURL(r),2e3);}(`${a=r.Name,String(a||"game").trim().replace(/[<>:"/\\|?*\u0000-\u001f]+/g,"").replace(/\s+/g," ").slice(0,80)||"game"}.${n.ext}`,n.text,n.mime),$a(X(he.toastExportDone,{name:r.Name||n.ext.toUpperCase()}),{type:"success",title:he.toastExportDoneTitle}),s();}catch(n){$a(he.toastExportFailed,{type:"error",title:he.toastExportFailedTitle});}var a;}),null==(a=i.querySelector("[data-blp-export-copy]"))||a.addEventListener("click",async()=>{const e=u(),t={ratingStyle:l(),statusStyle:c()};try{const a=cn(e,r,t);if(!a)return void $a(he.exportFormatUnavailable,{type:"error",title:he.exportFormatUnavailableTitle});await async function(e){var t;if(null==(t=navigator.clipboard)?void 0:t.writeText)return void(await navigator.clipboard.writeText(e));const a=document.createElement("textarea");a.value=e,a.setAttribute("readonly",""),a.style.cssText="position:fixed;left:-9999px;top:0",document.body.appendChild(a),a.select();const n=document.execCommand("copy");if(a.remove(),!n)throw new Error("copy failed")}(a.copyText),$a(he.toastExportCopied,{type:"success",title:he.toastExportCopiedTitle});}catch(a){$a(he.toastExportCopyFailed,{type:"error",title:he.toastExportCopyFailedTitle});}}),document.body.appendChild(i),null==(n=i.querySelector("[data-blp-export-run]"))||n.focus();}();}));}function pn(){var e;if(!Ea())return document.querySelectorAll(`[${Fa}="log-btn"]`).forEach(e=>e.remove()),null;const t=document.querySelector("#log-editor-footer");if(!t)return null;let a=t.querySelector(`[${Fa}="log-btn"]`);if(a)return a;a=document.createElement("div"),a.setAttribute(Fa,"log-btn"),a.className="blp-export-log-wrap col-auto my-auto pr-0",a.innerHTML=`\n    <button type="button" class="btn btn-main blp-export-log-btn" data-blp-export-open>\n      ${Ce(he.exportButton)}\n    </button>\n  `,dn(a.querySelector("[data-blp-export-open]"));const n=(null==(e=t.querySelector('[data-dismiss="modal"]'))?void 0:e.closest(".col-auto"))||t.querySelector("#btn-save-log");return n?n.insertAdjacentElement("beforebegin",a):t.appendChild(a),a}let mn=null;function gn(e,t,a,n,{enabled:r=true,checked:i=false}={}){return `\n    <label class="blp-export-option${r?"":" is-disabled"}">\n      <input type="radio" name="${Pe(e)}" value="${Pe(t)}" ${r?"":"disabled"} ${i&&r?"checked":""} />\n      <span class="blp-export-option__body">\n        <span class="blp-export-option__label">${Ce(a)}${r?"":` <em>${Ce(he.exportSoon)}</em>`}</span>\n        <span class="blp-export-option__hint">${Ce(n)}</span>\n      </span>\n    </label>\n  `}function hn(e){if(null==e)return  true;const t=String(e).trim();return !t||"—"===t||t===he.exportNoRating}function bn(e,t="text",a="notion",n="csv"){if("json"===n){const n=sn(e,{ratingStyle:t,statusStyle:a}),r=Object.fromEntries(Object.entries(n).filter(([,e])=>!hn(e)));return `\n      <div class="blp-export-preview" data-blp-export-preview data-format="json">\n        <p class="blp-export-section-label">${Ce(he.exportPreviewTitle)}</p>\n        <pre class="blp-export-preview__json">${Ce(JSON.stringify(r,null,2))}</pre>\n      </div>\n    `}const r=function(e,t="text",a="notion"){var n;const r={};for(const i of Ra)r[i]=null!=(n=e[i])?n:"";return r.Rating=null==e._ratingScore10?"":Na(e._ratingScore10,t)||"",r.Status=function(e,t){return Ka(e,t)||""}(e._statusKey,a),r}(e,t,a),i=Ra.map(e=>{let t="";return "Rating"===e?t="data-blp-export-rating-row":"Status"===e&&(t="data-blp-export-status-row"),function(e,t,a=""){return hn(t)?"":`\n    <div class="blp-export-preview__row" ${a}>\n      <span class="blp-export-preview__key">${Ce(e)}</span>\n      <span class="blp-export-preview__val">${Ce(t)}</span>\n    </div>\n  `}(e,r[e],t)}).join("");return `\n    <div class="blp-export-preview" data-blp-export-preview data-format="${Pe(n)}">\n      <p class="blp-export-section-label">${Ce(he.exportPreviewTitle)}</p>\n      <div class="blp-export-preview__fields">\n        ${i}\n      </div>\n    </div>\n  `}function fn(e=""){Ea()?ga().isGamePage?(function(e=""){if(!Ea()||!ga().isGamePage)return document.querySelectorAll(`[${Fa}="btn"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${Fa}="btn"]`);const a=document.querySelector(`[${m}="cover"]`),n=(null==a?void 0:a.parentElement)||document.querySelector("#logging-sidebar-section > div > div")||document.querySelector("#logging-sidebar-section .col.col-md-5")||document.querySelector("#logging-sidebar-section .col-md-5")||document.querySelector("#logging-sidebar-section .col");n&&(t||(t=document.createElement("div"),t.setAttribute(Fa,"btn"),t.className="blp-export-wrap",t.innerHTML=`\n      <button type="button" class="btn btn-main blp-export-btn" data-blp-export-open>\n        ${Ce(he.exportButton)}\n      </button>\n    `,dn(t.querySelector("[data-blp-export-open]"))),e&&t.setAttribute("data-blp-token",e),a?t.previousElementSibling!==a&&a.insertAdjacentElement("afterend",t):t.parentElement!==n&&n.appendChild(t));}(e),pn()):document.querySelectorAll(`[${Fa}="btn"]`).forEach(e=>e.remove()):un();}function Sn(){Pa.close(),Sa([]),document.querySelectorAll(`[${m}]`).forEach(e=>e.remove());}function vn(e){return /(?:^|\/)logo\.(png|jpe?g)(?:$|\?)/i.test(String(e||""))}function wn(e,t,a){if(!e||!t||!a)return;const n=t.getAttribute("src")||"";if(n===a&&t.classList.contains("is-ready")&&t.complete&&t.naturalWidth)return void e.classList.remove("is-loading");const r=()=>{(t.getAttribute("src")||"")===a&&(t.classList.add("is-ready"),e.classList.remove("is-loading"));};if(n===a)return t.addEventListener("load",r,{once:true}),void(t.complete&&t.naturalWidth&&r());const i=t.classList.contains("is-ready")&&Boolean(n),o=String((Number(t.dataset.blpRevealGen||"0")||0)+1);t.dataset.blpRevealGen=o;const s=()=>{t.dataset.blpRevealGen===o&&r();};if(i)return t.classList.remove("is-ready"),void window.setTimeout(()=>{t.dataset.blpRevealGen===o&&(t.addEventListener("load",s,{once:true}),t.src=a,t.complete&&t.naturalWidth&&s());},160);t.classList.remove("is-ready"),e.classList.add("is-loading"),t.addEventListener("load",s,{once:true}),t.src=a,t.complete&&t.naturalWidth&&s();}function yn(e=""){if(!me.showSteamDbIcon)return document.querySelectorAll(`[${m}="icon"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${m}="icon"]`);if(t)return e&&t.setAttribute("data-blp-token",e),t;const a=document.querySelector("#game-body > div:nth-child(2) > div.row.d-none.d-sm-flex.mx-n1.game-title-section h1")||document.querySelector("#game-body .row.d-none.d-sm-flex.game-title-section h1")||document.querySelector("#game-body .game-title-section.d-none.d-sm-flex h1");if(!a)return null;t=document.createElement("span"),t.setAttribute(m,"icon"),t.className="blp-title-icon-wrap is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML='<span class="blp-title-icon-skel" aria-hidden="true"></span><img class="blp-title-icon" alt="" width="32" height="32" decoding="async" referrerpolicy="no-referrer" />';const n=t.querySelector("img");return n&&n.addEventListener("error",()=>{if("1"===n.dataset.blpFallback)return void t.remove();n.dataset.blpFallback="1";const e=t.getAttribute("data-blp-appid");e?wn(t,n,na(e,"capsule_sm_120.jpg")):t.remove();}),a.insertAdjacentElement("afterbegin",t),t}function kn(e=""){if(!me.showSteamDbCover)return document.querySelectorAll(`[${m}="cover"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${m}="cover"]`);if(t)return e&&t.setAttribute("data-blp-token",e),t;const a=document.querySelector("#logging-sidebar-section > div > div")||document.querySelector("#logging-sidebar-section .col.col-md-5")||document.querySelector("#logging-sidebar-section .col-md-5")||document.querySelector("#logging-sidebar-section .col");if(!a)return null;t=document.createElement("div"),t.setAttribute(m,"cover"),t.className="blp-steamdb-cover is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML='<span class="blp-steamdb-cover-skel" aria-hidden="true"></span><img alt="" decoding="async" referrerpolicy="no-referrer" />';const n=t.querySelector("img");return n&&n.addEventListener("error",()=>{const e=String(t.dataset.blpFallbacks||"").split("\n").filter(Boolean);let a=Number(t.dataset.blpFallbackIdx||"0")+1;if(t.dataset.blpFallbackIdx=String(a),a<e.length){const r=e[a];return n.classList.toggle("blp-steamdb-cover__logo",vn(r)),void wn(t,n,r)}t.remove();}),a.appendChild(t),t}function Cn(){return document.querySelector("turbo-frame#game-stats")}function Pn(){const e=Cn();e&&(false===me.showGameStats?e.setAttribute("data-blp-hide-game-stats","1"):e.removeAttribute("data-blp-hide-game-stats"));}function Bn(e){e&&"1"!==e.dataset.blpHScroll&&(e.dataset.blpHScroll="1",e.addEventListener("wheel",t=>{if(t.ctrlKey||t.metaKey)return;if(e.scrollWidth<=e.clientWidth+1)return;const a=t.deltaY;if(Math.abs(t.deltaX)>Math.abs(a))return;if(!a)return;const n=Math.max(0,Math.min(e.scrollWidth-e.clientWidth,e.scrollLeft+a));n!==e.scrollLeft&&(t.preventDefault(),e.scrollLeft=n);},{passive:false}));}function xn(e=""){if(!me.showSteamDbGallery)return document.querySelectorAll(`[${m}="gallery"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${m}="gallery"]`);if(t)return e&&t.setAttribute("data-blp-token",e),t;const a=Cn();return a?(t=document.createElement("section"),t.setAttribute(m,"gallery"),t.className="blp-steam-gallery is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML=`\n    <div class="blp-steam-gallery__head">\n      <span class="blp-steam-gallery__title">${Ce(he.steamGalleryTitle)}</span>\n    </div>\n    <div class="blp-steam-gallery__track" data-blp-gallery-track>\n      <span class="blp-steam-gallery__skel" aria-hidden="true"></span>\n      <span class="blp-steam-gallery__skel" aria-hidden="true"></span>\n      <span class="blp-steam-gallery__skel" aria-hidden="true"></span>\n      <span class="blp-steam-gallery__skel" aria-hidden="true"></span>\n    </div>\n  `,a.insertAdjacentElement("afterend",t),Bn(t.querySelector("[data-blp-gallery-track]")),t):null}function Dn(e,t="",{final:a=false}={}){var n;e?(me.showSteamDbIcon&&yn(t),me.showSteamDbCover&&kn(t),function(e,t,a=""){if(!me.showSteamDbIcon)return void document.querySelectorAll(`[${m}="icon"]`).forEach(e=>e.remove());if(!e)return;const n=yn(a);if(!n)return;t&&n.setAttribute("data-blp-appid",String(t));const r=n.querySelector("img.blp-title-icon");r&&(delete r.dataset.blpFallback,wn(n,r,e));}(e.iconUrl,e.appId,t),function(e,t,{logoIsPortrait:a=false,token:n=""}={}){if(!me.showSteamDbCover)return void document.querySelectorAll(`[${m}="cover"]`).forEach(e=>e.remove());if(!e)return;const r=kn(n);if(!r)return;const i=[],o=e=>{e&&!i.includes(e)&&i.push(e);};o(e),o(na(t,"header.jpg")),o(na(t,"library_600x900.jpg")),o(na(t,"logo.png")),r.dataset.blpFallbacks=i.join("\n"),r.dataset.blpFallbackIdx="0",t&&r.setAttribute("data-blp-appid",String(t));const s=r.querySelector("img");if(!s)return;const l=vn(i[0])&&!a;s.classList.toggle("blp-steamdb-cover__logo",l),wn(r,s,i[0]);}(e.logoUrl,e.appId,{logoIsPortrait:Boolean(e.logoIsPortrait),token:t}),fn(t),function(e,t,a="",{final:n=false,coverUrl:r=""}={}){var i;if(!me.showSteamDbGallery)return Sa([]),document.querySelectorAll(`[${m}="gallery"]`).forEach(e=>e.remove()),void va([]);const o=!Array.isArray(e),s=function(e,t){const a=[],n=String(t||"").trim();if(n&&a.push({thumb:n,full:n,kind:"cover"}),Array.isArray(e))for(const r of e){const e=String((null==r?void 0:r.thumb)||"").trim(),t=String((null==r?void 0:r.full)||e).trim();(e||t)&&a.push({id:null==r?void 0:r.id,thumb:e||t,full:t||e,kind:"screenshot"});}return a}(o?[]:e,r);if(o&&!r)return void xn(a);if(!s.length)return Sa([]),n?document.querySelectorAll(`[${m}="gallery"]`).forEach(e=>e.remove()):xn(a),void va([]);const l=xn(a);if(!l)return;const c=`${t||""}|${s.length}|${(null==(i=s[0])?void 0:i.full)||""}|${o?"p":"d"}`;if("1"===l.dataset.blpGalleryReady&&l.dataset.blpGalleryKey===c)return a&&l.setAttribute("data-blp-token",a),Sa(s),void va(s);t&&l.setAttribute("data-blp-appid",String(t)),a&&l.setAttribute("data-blp-token",a),l.dataset.blpGalleryReady="1",l.dataset.blpGalleryKey=c,l.dataset.blpGalleryCount=String(s.length),Sa(s);const u=t?`${E}/${t}/screenshots/`:`${E}/`,d=s.map((e,t)=>{const a=Pe(e.thumb||e.full);return `\n        <button type="button" class="blp-steam-gallery__item${"cover"===e.kind?" blp-steam-gallery__item--cover":""}" data-blp-gallery-index="${t}" aria-label="${Pe(he.steamGalleryOpen)}">\n          <img src="${a}" alt="" loading="lazy" decoding="async" referrerpolicy="no-referrer" />\n        </button>\n      `}).join("");l.classList.remove("is-loading"),l.innerHTML=`\n    <div class="blp-steam-gallery__head">\n      <span class="blp-steam-gallery__title">${Ce(he.steamGalleryTitle)}</span>\n      <a class="blp-steam-gallery__link" href="${Pe(u)}" target="_blank" rel="noopener noreferrer">SteamDB</a>\n    </div>\n    <div class="blp-steam-gallery__track" data-blp-gallery-track>${d}</div>\n  `,l.querySelectorAll(".blp-steam-gallery__item img").forEach(e=>{const t=()=>e.classList.add("is-ready");e.addEventListener("load",t,{once:true}),e.complete&&e.naturalWidth&&t();}),l.querySelectorAll("[data-blp-gallery-index]").forEach(e=>{e.addEventListener("click",()=>{const t=Number(e.getAttribute("data-blp-gallery-index"));xa(s,t);});}),Bn(l.querySelector("[data-blp-gallery-track]")),va(s);}(e.screenshots,e.appId,t,{final:a,coverUrl:e.logoUrl||""}),"steamdb"===e.source&&e.logoUrl&&vn(e.logoUrl)&&(null==(n=document.querySelector(`[${m}="cover"] img`))||n.classList.add("blp-steamdb-cover__logo")),t&&document.querySelectorAll(`[${m}]`).forEach(e=>{e.setAttribute("data-blp-token",t);})):Sn();}function Tn(){document.querySelectorAll(`[${g}]`).forEach(e=>e.remove());}function Hn(e=""){if(!me.showSimilarGames)return Tn(),null;let t=document.querySelector(`[${g}]`);if(t)return e&&t.setAttribute("data-blp-token",e),t;const a=document.querySelector(`[${m}="gallery"]`)||Cn();return a?(t=document.createElement("section"),t.setAttribute(g,"1"),t.className="blp-similar is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML=`\n    <div class="blp-similar__head">\n      <span class="blp-similar__title">${Ce(he.similarGamesTitle)}</span>\n    </div>\n    <div class="blp-similar__track" data-blp-similar-track>\n      <span class="blp-similar__skel" aria-hidden="true"></span>\n      <span class="blp-similar__skel" aria-hidden="true"></span>\n      <span class="blp-similar__skel" aria-hidden="true"></span>\n      <span class="blp-similar__skel" aria-hidden="true"></span>\n      <span class="blp-similar__skel" aria-hidden="true"></span>\n    </div>\n  `,a.insertAdjacentElement("afterend",t),Bn(t.querySelector("[data-blp-similar-track]")),t):null}function An(e,t,a="",{final:n=false}={}){if(!me.showSimilarGames)return void Tn();if(!Array.isArray(e)||!e.length)return void(n?Tn():Hn(a));const r=Hn(a);if(!r)return;const i=`${t||""}|${e.map(e=>`${e.appId}:${e.matchPct}`).join(",")}`;if("1"===r.dataset.blpSimilarReady&&r.dataset.blpSimilarKey===i)return a&&r.setAttribute("data-blp-token",a),void Ta(r,Ne(e)||"miss",{titleSelector:".blp-similar__title"});t&&r.setAttribute("data-blp-appid",String(t)),a&&r.setAttribute("data-blp-token",a),r.dataset.blpSimilarReady="1",r.dataset.blpSimilarKey=i,Ta(r,Ne(e)||"miss",{titleSelector:".blp-similar__title"});const o=t?`https://store.steampowered.com/app/${t}/`:"https://store.steampowered.com/",s=e.map(e=>{var t;const a=Pe(e.backloggdUrl||e.storeUrl||"#"),n=Pe(e.coverUrl||""),r=Ce(e.name),i=Math.max(0,Math.min(100,Number(e.matchPct)||0)),o=Array.isArray(e.sharedTags)?e.sharedTags.filter(Boolean):[],s=o.length?`<span class="blp-similar__tags">${Ce(o.join(" · "))}</span>`:"",l=Pe(e.storeUrl||""),c=l?`<a class="blp-similar__steam" href="${l}" target="_blank" rel="noopener noreferrer" aria-label="${Pe(he.similarGamesOpenSteam)}">\n            <img src="${Pe(w.replace("{domain}",encodeURIComponent("store.steampowered.com")))}" alt="" width="14" height="14" loading="lazy" referrerpolicy="no-referrer" />\n          </a>`:"";const u=Number(e.appId),d=Number.isFinite(u)&&u>0?` ${f}="${Pe(String(u))}"`:"",p=e.backloggdUrl&&(null==(t=e.backloggdUrl.match(/\/games\/([^/?#]+)/i))?void 0:t[1])||Pt(e.name)||"";return `\n        <div class="blp-similar__card">\n          <div class="blp-similar__cover"${d}${p?` ${S}="${Pe(p)}"`:""}${e.name?` ${v}="${Pe(e.name)}"`:""}>\n            <span class="blp-similar__badge">\n              <span class="blp-similar__pct">${i}%</span>\n              <span class="blp-similar__match">${Ce(he.similarGamesMatch)}</span>\n            </span>\n            ${c}\n            <a class="blp-similar__hit" href="${a}" title="${Pe(e.name)}" aria-label="${Pe(e.name)}">\n              ${n?`<img src="${n}" alt="" loading="lazy" decoding="async" referrerpolicy="no-referrer" />`:""}\n            </a>\n          </div>\n          <a class="blp-similar__meta" href="${a}" title="${Pe(e.name)}">\n            <span class="blp-similar__name">${r}</span>\n            ${s}\n          </a>\n        </div>\n      `}).join("");r.classList.remove("is-loading"),r.innerHTML=`\n    <div class="blp-similar__head">\n      <span class="blp-similar__title">${Ce(he.similarGamesTitle)}</span>\n      <a class="blp-similar__link" href="${Pe(o)}" target="_blank" rel="noopener noreferrer">Steam</a>\n    </div>\n    <div class="blp-similar__track" data-blp-similar-track>${s}</div>\n  `,r.querySelectorAll(".blp-similar__cover img").forEach(e=>{const t=()=>e.classList.add("is-ready");e.complete&&e.naturalWidth?t():(e.addEventListener("load",t,{once:true}),e.addEventListener("error",t,{once:true}));}),Bn(r.querySelector("[data-blp-similar-track]"));}const Gn="data-blp-game-id";function Ln(){document.querySelectorAll(`[${Gn}]`).forEach(e=>e.remove());}function _n(e,t){let a=e.querySelector(`[${Gn}]`);if(a){if(a.getAttribute(Gn)===t)return a;a.remove();}return a=document.createElement("button"),a.type="button",a.setAttribute(Gn,t),a.className="blp-game-id",a.textContent=`#${t}`,a.title=he.gameIdCopyLabel||"",a.setAttribute("aria-label",he.gameIdCopyLabel||`Copy ${t}`),a.addEventListener("click",async e=>{e.preventDefault(),e.stopPropagation();try{await async function(e){var t;if(null==(t=navigator.clipboard)?void 0:t.writeText)return void(await navigator.clipboard.writeText(e));const a=document.createElement("textarea");a.value=e,a.setAttribute("readonly",""),a.style.position="fixed",a.style.left="-9999px",document.body.appendChild(a),a.select();const n=document.execCommand("copy");if(a.remove(),!n)throw new Error("copy failed")}(t),$a(X(he.toastGameIdCopied,{id:t}),{type:"success",title:he.toastGameIdCopiedTitle});}catch(a){$a(he.toastExportCopyFailed,{type:"error",title:he.toastExportCopyFailedTitle});}}),e.appendChild(a),a}function Mn(){if(!me.showGameId)return void Ln();const e=function(){const e=document.getElementById("game-page-meta"),t=(null==e?void 0:e.getAttribute("data-game-id"))||"",a=String(t).trim();return /^\d+$/.test(a)?a:""}();if(!e)return void Ln();const t=function(){const e=new Set,t=[];for(const a of document.querySelectorAll("#game-body .game-title-section h1"))a.closest("#game-rating, #ratings-bars-height, .game-rating")||e.has(a)||(e.add(a),t.push(a));return t}();if(!t.length)return void Ln();const a=new Set;for(const n of t)a.add(_n(n,e));document.querySelectorAll(`[${Gn}]`).forEach(e=>{a.has(e)||e.remove();});}function $n(e=""){document.querySelectorAll(`#game-rating [${p}="unified-rating"]`).forEach(e=>e.remove());const t=Cn();if(!t)return null;let a=document.querySelector(`.blp-unified-rating-row[${p}="unified-rating"]`);if(a)return e&&a.setAttribute("data-blp-token",e),a.nextElementSibling!==t&&t.insertAdjacentElement("beforebegin",a),a;const n=[["steam",he.unifiedRatingSteam],["metacritic",he.unifiedRatingMetacritic],["opencritic",he.unifiedRatingOpenCritic],["backloggd",he.unifiedRatingBackloggd]].map(([e,t])=>`<div class="blp-unified-rating__cell is-loading" data-blp-provider="${e}" data-blp-status="loading">\n        <span class="blp-unified-rating__cell-label">${Ce(t)}</span>\n        <span class="blp-skeleton blp-unified-rating__skel-value"></span>\n        <span class="blp-skeleton blp-unified-rating__skel-sub"></span>\n      </div>`).join("");return a=document.createElement("div"),a.className="row blp-unified-rating-row",a.setAttribute(p,"unified-rating"),e&&a.setAttribute("data-blp-token",e),a.innerHTML=`\n    <div class="col">\n      <div class="backloggd-container center-container blp-unified-rating is-loading" data-grade="mid">\n        <div class="blp-unified-rating__layout">\n          <div class="blp-unified-rating__score-block">\n            <p class="blp-unified-rating__label">${Ce(he.unifiedRatingTitle)}</p>\n            <p class="blp-unified-rating__num is-skel"><span class="blp-skeleton blp-unified-rating__skel-num"></span></p>\n            <span class="blp-unified-rating__denom"><span class="blp-skeleton blp-unified-rating__skel-denom"></span></span>\n          </div>\n          <div class="blp-unified-rating__main">\n            <div class="blp-unified-rating__head">\n              <p class="blp-unified-rating__title">${Ce(he.unifiedRatingHint)}</p>\n              <p class="blp-unified-rating__hint">${Ce(he.unifiedRatingLoading)}</p>\n            </div>\n            <div class="blp-unified-rating__meter blp-unified-rating__meter--loading">\n              <div class="blp-unified-rating__meter-fill"></div>\n            </div>\n            <div class="blp-unified-rating__grid">${n}</div>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,t.insertAdjacentElement("beforebegin",a),a}function In(e){const t=Number(e);return !Number.isFinite(t)||t<0||t>100?null:t}function En(e){return (Math.round(10*e)/10).toFixed(1)}function Rn(){var e,t;try{return Boolean(null==(t=null==(e=window.matchMedia)?void 0:e.call(window,"(prefers-reduced-motion: reduce)"))?void 0:t.matches)}catch(a){return  false}}let Fn=0;function On(e,t,a,{indeterminate:n}){if(!e||!t)return;if(n)return e.classList.add("blp-unified-rating__meter--loading"),void(t.style.width="36%");const r=e.classList.contains("blp-unified-rating__meter--loading");e.classList.remove("blp-unified-rating__meter--loading");const i=`${Math.max(0,Math.min(100,a))}%`;!r&&t.style.width&&"0%"!==t.style.width&&"36%"!==t.style.width||(t.style.transition="none",t.style.width="0%",t.style.removeProperty("transition")),t.style.width=i;}function Nn(e,t){var a;if(!e)return;const n=e.dataset.blpStatus||"",r=t.status;if(e.classList.toggle("is-loading","loading"===r),e.classList.toggle("is-missing","missing"===r),"loading"===r)return void("loading"!==n&&(e.dataset.blpStatus=r,e.innerHTML=`\n        <span class="blp-unified-rating__cell-label">${Ce(t.label)}</span>\n        <span class="blp-skeleton blp-unified-rating__skel-value"></span>\n        <span class="blp-skeleton blp-unified-rating__skel-sub"></span>\n      `));const i=`${r}|${t.display||""}|${null!=(a=t.score5)?a:""}`;if(n===r&&e.dataset.blpDisplay===i)return;e.dataset.blpStatus=r,e.dataset.blpDisplay=i;const o="missing"===r?he.unifiedRatingMissing:Ce(t.display),s="missing"===r?"":`<span class="blp-unified-rating__cell-sub">${Ce(En(t.score5))} ★</span>`;e.innerHTML=`\n    <span class="blp-unified-rating__cell-label">${Ce(t.label)}</span>\n    <span class="blp-unified-rating__cell-value">${o}</span>\n    ${s}\n  `,"ready"!==r||"loading"!==n||Rn()||(e.classList.remove("is-reveal"),e.classList.add("is-reveal"));}function zn(e){var t,a,n,r;const i=document.querySelector(`.blp-unified-rating-row[${p}="unified-rating"]`);if(!i)return;const o=i.querySelector(".blp-unified-rating");if(!o)return;const s=null!=(null==e?void 0:e.steam),l=!(false!==me.showOpenCritic)||null!=(null==e?void 0:e.opencritic),c=function(){const e=document.querySelectorAll("#game-rating h1, .game-rating h1");for(const t of e){const e=((null==t?void 0:t.textContent)||"").trim().replace(",","."),a=Number(e);if(Number.isFinite(a)&&a>0)return Math.max(0,Math.min(5,a))}return null}(),u=(null==(t=null==e?void 0:e.steam)?void 0:t.reviews)?function(e){if(!e||!e.total_reviews)return null;const t=e.total_positive/e.total_reviews*100;return Number.isFinite(t)?Math.round(t):null}(e.steam.reviews):null,d=null!=(null==(n=null==(a=null==e?void 0:e.steam)?void 0:a.metacritic)?void 0:n.score)?In(e.steam.metacritic.score):null,m=null!=(null==(r=null==e?void 0:e.opencritic)?void 0:r.score)?In(e.opencritic.score):null,g=[{key:"steam",label:he.unifiedRatingSteam,display:null!=u?`${u}%`:null,score5:null!=u?u/20:null,status:s?null!=u?"ready":"missing":"loading"},{key:"metacritic",label:he.unifiedRatingMetacritic,display:null!=d?String(d):null,score5:null!=d?d/20:null,status:s?null!=d?"ready":"missing":"loading"},{key:"opencritic",label:he.unifiedRatingOpenCritic,display:null!=m?String(m):null,score5:null!=m?m/20:null,status:l?null!=m?"ready":"missing":"loading"},{key:"backloggd",label:he.unifiedRatingBackloggd,display:null!=c?En(c):null,score5:c,status:null!=c?"ready":"missing"}],h=g.filter(e=>"ready"===e.status),b=h.filter(e=>"backloggd"!==e.key),f=g.some(e=>"loading"===e.status);if(b.length)i.style.display="";else {if(s&&l)return void(i.style.display="none");i.style.display="";}const S=h.length>0&&b.length>0,v=S?h.reduce((e,t)=>e+t.score5,0)/h.length:null,w=null!=v?Math.round(10*v)/10:null,y=null==w?"mid":w>=4?"high":w>=3?"mid":"low",k=null!=w?Math.max(0,Math.min(100,w/5*100)):0;o.classList.toggle("is-loading",f&&!S),o.setAttribute("data-grade",y);const C=o.querySelector(".blp-unified-rating__num"),P=o.querySelector(".blp-unified-rating__denom"),B=o.querySelector(".blp-unified-rating__hint"),x=o.querySelector(".blp-unified-rating__meter"),D=o.querySelector(".blp-unified-rating__meter-fill");S&&null!=w?(function(e,t){if(!e)return;const a=Number(t);if(!Number.isFinite(a))return;const n=Rn(),r=e.dataset.blpNum,i=null!=r&&""!==r?Number(r):NaN;e.dataset.blpNum=String(a),e.classList.remove("is-skel");const o=t=>{e.textContent=En(t),n||(e.classList.remove("is-pulse"),e.classList.add("is-pulse"));};if(n||!Number.isFinite(i)||Math.abs(i-a)<.05)return void o(a);const s=++Fn,l=performance.now(),c=i,u=t=>{if(s!==Fn)return;const n=Math.min(1,(t-l)/480),r=1-Math.pow(1-n,3);e.textContent=En(c+(a-c)*r),n<1?requestAnimationFrame(u):o(a);};requestAnimationFrame(u);}(C,w),P&&(P.textContent=he.unifiedRatingOutOf),B&&(B.textContent=f?he.unifiedRatingLoading:X(he.unifiedRatingSources,{n:h.length})),On(x,D,k,{indeterminate:false})):(C&&(C.classList.add("is-skel"),C.classList.remove("is-pulse"),delete C.dataset.blpNum,C.innerHTML='<span class="blp-skeleton blp-unified-rating__skel-num"></span>'),P&&(P.innerHTML='<span class="blp-skeleton blp-unified-rating__skel-denom"></span>'),B&&(B.textContent=he.unifiedRatingLoading),On(x,D,0,{indeterminate:true}));for(const p of g)Nn(o.querySelector(`.blp-unified-rating__cell[data-blp-provider="${p.key}"]`)||null,p);}function Un(e){const t=Number(e);return Number.isFinite(t)?t>=75?"high":t>=50?"mid":"low":""}function qn(e){const t=Number(e);return 3===t?{key:"verified",label:he.deckVerified,cls:"blp-deck-badge--verified"}:2===t?{key:"playable",label:he.deckPlayable,cls:"blp-deck-badge--playable"}:1===t?{key:"unsupported",label:he.deckUnsupported,cls:"blp-deck-badge--unsupported"}:0===t?{key:"unknown",label:he.deckUnknown,cls:"blp-deck-badge--unknown"}:null}function jn(e,t){return (null==e?void 0:e.franchise)||(null==t?void 0:t.franchise)||null}function Wn(e,t){return (null==e?void 0:e.systems)||(null==t?void 0:t.systems)||null}function Jn(e,{appId:t=null}={}){if(!e)return "";const a=[],n=Array.isArray(e.list)?e.list.filter(Boolean):[],r=t?`${E}/${t}/`:`${E}/`;for(const o of n)a.push(`<a class="blp-sdb-os" href="${Pe(r)}" target="_blank" rel="noopener noreferrer">${Ce(o)}</a>`);const i=qn(e.deckCompat);return i&&a.push(`<a class="blp-deck-badge ${i.cls} blp-ext-link" href="${Pe(r)}" target="_blank" rel="noopener noreferrer" title="Steam Deck">${Ce(X(he.steamDeckStatus,{status:i.label}))}</a>`),a.length?`<span class="blp-sdb-value-row">${a.join("")}</span>`:""}function Vn(e){const t=Array.isArray(e)?e.filter(e=>null==e?void 0:e.name):[];return t.length?`<span class="blp-sdb-value-row">${t.map(e=>`<a class="blp-sdb-tech" href="${Pe(e.url||"#")}" target="_blank" rel="noopener noreferrer">${Ce(e.name)}</a>`).join("")}</span>`:""}function Kn(e,{appId:t=null}={}){const a=function(e){if(!e)return "";const t=e.iso;if(t){const e=Date.parse(t);if(Number.isFinite(e))try{return new Date(e).toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",timeZoneName:"short"})}catch(a){}}return String(e.label||"").trim()}(e);return a?`<a class="blp-sdb-link blp-sdb-link--muted" href="${Pe(t?`${E}/${t}/`:`${E}/`)}" target="_blank" rel="noopener noreferrer">${Ce(a)}</a>`:""}function Zn(e,t,a=""){return t?`<div class="blp-sdb-fact"${a?` data-blp-sdb="${Pe(a)}"`:""}>\n    <span class="blp-sdb-fact__label">${Ce(e)}</span>\n    <span class="blp-sdb-fact__value">${t}</span>\n  </div>`:""}function Yn(e){const t=Number(null==e?void 0:e.review_score);if(!Number.isFinite(t)||t<=0){if(!(null==e?void 0:e.total_reviews))return "";const t=e.total_positive/e.total_reviews*100;return t>=80?"blp-review--very-positive":t>=70?"blp-review--mostly-positive":t>=40?"blp-review--mixed":"blp-review--mostly-negative"}return {1:"blp-review--overwhelmingly-negative",2:"blp-review--very-negative",3:"blp-review--negative",4:"blp-review--mostly-negative",5:"blp-review--mixed",6:"blp-review--mostly-positive",7:"blp-review--positive",8:"blp-review--very-positive",9:"blp-review--overwhelming"}[t]||""}function Xn(e){if(!e||!e.total_reviews)return null;const t=Math.round(e.total_positive/e.total_reviews*100),a=e.review_score_desc||"";return a?`${a} (${t}%)`:`${t}%`}function Qn(e){if(!(null==e?void 0:e.found))return null;if(e.isFree)return he.free;if(!e.price)return null;let t=e.price.final_formatted||"";return !t&&Number.isFinite(e.price.final)&&(t=(e.price.final/100).toFixed(2),e.price.currency&&(t=`${t} ${e.price.currency}`)),t||null}function er({title:e,slug:t,igdbUrl:a,steam:n}){const r=encodeURIComponent(e||t||""),i=[];a&&i.push({key:"igdb",label:he.linkIgdb,url:a}),(null==n?void 0:n.storeUrl)?i.push({key:"steam",label:he.linkSteam,url:n.storeUrl}):r&&i.push({key:"steam",label:he.linkSteam,url:`https://store.steampowered.com/search/?term=${r}`}),(null==n?void 0:n.appId)?i.push({key:"steamdb",label:he.linkSteamDb,url:`https://steamdb.info/app/${n.appId}/`}):r&&i.push({key:"steamdb",label:he.linkSteamDb,url:`https://steamdb.info/search/?a=app&q=${r}`});const o=Bt(e,t);if(o&&i.push({key:"metacritic",label:he.linkMetacritic,url:o}),r&&(i.push({key:"opencritic",label:he.linkOpencritic,url:`https://opencritic.com/search?q=${r}`}),i.push({key:"hltb",label:he.linkHltb,url:`https://howlongtobeat.com/?q=${r}`}),i.push({key:"pcgamingwiki",label:he.linkPcgamingwiki,url:`https://www.pcgamingwiki.com/wiki/Special:Search?search=${r}`}),i.push((null==n?void 0:n.appId)?{key:"itad",label:he.linkItad,url:`${_}/steam/app/${n.appId}/`}:{key:"itad",label:he.linkItad,url:`${_}/search/?q=${r}`}),i.push({key:"gogdb",label:he.linkGogdb,url:`https://www.gogdb.org/?q=${r}`})),null==n?void 0:n.appId){const a=Pt(n.name||e)||String(t||"").replace(/^\/+|\/+$/g,"").replace(/--\d+$/i,"");i.push({key:"gameslike",label:he.linkGameslike,url:a?`${M}/app/${n.appId}/${a}`:`${M}/app/${n.appId}`});}return i.filter(e=>{return t=me,Boolean(t.showLinks&&t.links&&false!==t.links[e.key]);var t;})}function tr(){document.querySelectorAll(`[${p}]`).forEach(e=>e.remove()),document.querySelectorAll("[data-blp-debug]").forEach(e=>e.remove()),Sn(),un({includeLogEditor:false}),Ln(),Tn(),document.querySelectorAll(`img[${wa}]`).forEach(e=>{e.removeEventListener("click",ya),e.removeEventListener("keydown",ka),e.removeAttribute(wa),e.classList.remove("blp-cover-zoomable"),e.removeAttribute("role"),e.removeAttribute("tabindex"),e.removeAttribute("aria-label");}),document.querySelectorAll("[data-blp-hide-game-stats]").forEach(e=>{e.removeAttribute("data-blp-hide-game-stats");});}function ar(e,t){const a=document.createElement("div");return a.className="row mt-2",a.setAttribute(p,e),a.innerHTML=`\n    <div class="col-3 col-md-2 my-auto">\n      <p class="game-details-header">${Ce(t)}</p>\n    </div>\n    <div class="col-auto col-md ml-auto my-auto text-right text-md-left" data-blp-values></div>\n  `,a}function nr(e){return "links"===e?[0,1,2,3,4].map(()=>'<span class="blp-skeleton blp-skeleton--link"></span>').join(""):"steam"===e?'\n      <span class="blp-skeleton blp-skeleton--sm"></span>\n      <span class="blp-skeleton blp-skeleton--md"></span>\n      <span class="blp-skeleton blp-skeleton--lg"></span>\n    ':"metacritic"===e||"opencritic"===e?'<span class="blp-skeleton blp-skeleton--sm"></span>':"hltb"===e?'\n      <span class="blp-skeleton blp-skeleton--md"></span>\n      <span class="blp-skeleton blp-skeleton--md"></span>\n      <span class="blp-skeleton blp-skeleton--md"></span>\n    ':"deckproton"===e?'\n      <span class="blp-skeleton blp-skeleton--md"></span>\n      <span class="blp-skeleton blp-skeleton--md"></span>\n    ':"players"===e?'<span class="blp-skeleton blp-skeleton--sm"></span>':"steamdb"===e?'\n      <span class="blp-skeleton blp-skeleton--md"></span>\n      <span class="blp-skeleton blp-skeleton--md"></span>\n      <span class="blp-skeleton blp-skeleton--sm"></span>\n      <span class="blp-skeleton blp-skeleton--md"></span>\n    ':"gamestatus"===e?'\n      <span class="blp-skeleton blp-skeleton--md"></span>\n      <span class="blp-skeleton blp-skeleton--sm"></span>\n    ':'<span class="blp-skeleton blp-skeleton--md"></span>'}function rr(e,t){const a=null==e?void 0:e.querySelector("[data-blp-values]");a&&(a.innerHTML=t);}function ir(e){e&&(e.hidden=true);}function or(e){e&&(e.hidden=false);}function sr(e){return "owned"===e?`<span class="blp-owned-badge" title="${Pe(he.steamOwned)}"><svg class="blp-owned-badge__icon" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path fill="currentColor" d="M6.4 11.3 2.9 7.8l1.2-1.2 2.3 2.3 5-5.1 1.2 1.2z"/></svg>${Ce(he.steamOwned)}</span>`:"wishlist"===e?`<span class="blp-wishlist-badge" title="${Pe(he.steamWishlist)}"><svg class="blp-owned-badge__icon" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path fill="currentColor" d="M8 2.2 9.7 6l4 .3-3.1 2.6 1 3.9L8 10.6 4.4 12.8l1-3.9L2.3 6.3l4-.3z"/></svg>${Ce(he.steamWishlist)}</span>`:""}function lr(e,t){if(!t)return "";const a=We(t),n=(null==e?void 0:e.appId)||a||"";return n||me.showSteam?`<span class="blp-steam-match">\n    <span class="blp-steam-match__label">${Ce(n?X(he.steamMatchLabel,{id:n,source:a||(null==e?void 0:e.manualOverride)?he.steamMatchManual:he.steamMatchAuto}):he.steamFixMatch)}</span>\n    <button type="button" class="blp-steam-match__btn" data-blp-fix-match data-blp-slug="${Pe(t)}" data-blp-appid="${Pe(n||"")}">${Ce(he.steamFixMatch)}</button>\n  </span>`:""}function cr(e,{owned:t=false,wishlist:a=false,slug:n=""}={}){var r,i;const o=[];t?o.push({html:sr("owned")}):a&&o.push({html:sr("wishlist")});const s=function(e){var t;const a=Qn(e);if(!a)return "";let n;if((null==(t=e.price)?void 0:t.discount_percent)>0){const t=function(e){if(!((null==e?void 0:e.price)&&e.price.discount_percent>0))return null;let t=e.price.initial_formatted||"";if(!t&&Number.isFinite(e.price.initial)&&(t=(e.price.initial/100).toFixed(2),e.price.currency&&(t=`${t} ${e.price.currency}`)),!t)return null;const a=Qn(e);return a&&t===a?null:t}(e),r=function(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return null;try{return new Date(1e3*t).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch(a){return null}}(e.discountEndDate),i=t?`<span class="blp-price__was">${Ce(t)}</span>`:"",o=r?`<span class="blp-discount-ends">${Ce(X(he.discountEnds,{date:r}))}</span>`:"";n=`<a class="game-details-value blp-ext-link blp-price blp-price--sale" href="${Pe(e.storeUrl)}" target="_blank" rel="noopener noreferrer">\n    <span class="blp-discount">${Ce(X(he.discount,{n:e.price.discount_percent}))}</span>\n    <span class="blp-price__stack">${i}<span class="blp-price__now">${Ce(a)}</span></span>\n    ${o}\n  </a>`;}else n=`<a class="game-details-value blp-ext-link blp-price" href="${Pe(e.storeUrl)}" target="_blank" rel="noopener noreferrer">${Ce(a)}</a>`;return function(e,t){var a;if(!me.showPriceConvert||(null==t?void 0:t.isFree)||!(null==(a=null==t?void 0:t.price)?void 0:a.currency))return e;const n=String(t.price.currency).toUpperCase(),r=String(me.convertCurrency||"RUB").toUpperCase();if(!n||!r||n===r)return e;if(!Number.isFinite(Number(t.price.final)))return e;const i=Number(t.price.discount_percent)>0&&Number.isFinite(Number(t.price.initial))&&Number(t.price.initial)>Number(t.price.final)?` data-blp-fx-initial="${Pe(String(t.price.initial))}"`:"",o=`<span class="blp-price__fx" data-blp-fx data-blp-fx-from="${Pe(n)}" data-blp-fx-final="${Pe(String(t.price.final))}" data-blp-fx-to="${Pe(r)}"${i} hidden></span>`;return e.includes("</a>")?e.replace("</a>",` ${o}</a>`):`${e} ${o}`}(n,e)}(e);s&&o.push({html:s});const l=Xn(e.reviews),c=Yn(e.reviews);if(l?o.push({html:`<a class="game-details-value ${c}" href="${Pe(e.storeUrl)}#app_reviews_hash" target="_blank" rel="noopener noreferrer">${Ce(l)}</a>`}):e.recommendations&&o.push({html:`<span class="game-details-value ${c}">${Ce(X(he.recommendations,{n:e.recommendations.toLocaleString()}))}</span>`}),e.usedUsFallback&&o.push({html:`<span class="game-details-value blp-steam-note">${Ce(X(he.steamUsFallback,{cc:e.requestedCountry||""}))}</span>`}),false!==me.showSteamCategories&&(null==(r=e.categories)?void 0:r.length)){const t=e.categories.map(e=>{return `<a class="blp-gs-chip blp-steam-category" href="${Pe((t=e.id,`https://store.steampowered.com/search/?category2=${encodeURIComponent(t)}`))}" target="_blank" rel="noopener noreferrer">${Ce(e.description)}</a>`;var t;}).join("");o.push({html:`<span class="blp-steam-categories">${t}</span>`});}if(false!==me.showSteamTags&&(null==(i=e.tags)?void 0:i.length)){const t=e.tags.map(e=>{return `<a class="blp-gs-chip blp-steam-tag" href="${Pe((t=e.name,`https://store.steampowered.com/tags/en/${encodeURIComponent(t)}/`))}" target="_blank" rel="noopener noreferrer">${Ce(e.name)}</a>`;var t;}).join("");o.push({html:`<span class="blp-steam-tags">${t}</span>`});}const u=lr(e,n);return u&&o.push({html:u}),o.length?o.map(e=>`<span class="blp-steam-line">${e.html}</span>`).join(""):`<a class="game-details-value blp-ext-link" href="${Pe(e.storeUrl)}" target="_blank" rel="noopener noreferrer">${Ce(he.steam)}</a>`}function ur(e,t,a,n){if(!t)return "";const r=n?`<span class="blp-debug-panel__source-badge">${Ce(he.debugSrcRequest)}</span>`:"",i=a?`<span class="blp-debug-panel__source-purpose">${Ce(a)}</span>`:"";return `<li class="${n?"is-request":""}">\n    <div class="blp-debug-panel__source-head">\n      ${r}<strong>${Ce(e)}</strong>${i}\n    </div>\n    <a href="${Pe(t)}" target="_blank" rel="noopener noreferrer">${Ce(t)}</a>\n  </li>`}function dr(e,{steam:t,links:a,error:n,owned:r=false,wishlist:i=false,gamestatus:s=null,title:l="",slug:c="",steamDb:u=null,opencritic:d=null,hltb:m=null,proton:g=null,skipDebug:h=false}){var b;const f=Boolean(me.debugMode);if(e.steam)if(n)rr(e.steam,`<span class="game-details-value blp-empty">${Ce(he.loadError)}</span>${lr(t,c)}`),or(e.steam),Ta(e.steam,Ne(t)||"miss");else if(null==t?void 0:t.found)rr(e.steam,cr(t,{owned:r,wishlist:i,slug:c})),or(e.steam),Ta(e.steam,Ne(t)||"miss"),async function(e=document){if(!me.showPriceConvert)return;const t=((null==e?void 0:e.querySelectorAll)?e:document).querySelectorAll("[data-blp-fx]");await Promise.all([...t].map(async e=>{const t=e.getAttribute("data-blp-fx-from"),a=e.getAttribute("data-blp-fx-to"),n=Number(e.getAttribute("data-blp-fx-final")),r=e.getAttribute("data-blp-fx-initial"),i=null!=r&&""!==r?Number(r):NaN;if(!t||!a||t===a||!Number.isFinite(n))return;const o=await gt({final:n,initial:Number.isFinite(i)?i:void 0,currency:t,discount_percent:Number.isFinite(i)&&i>n?1:0},a);(null==o?void 0:o.now)&&(o.was?e.innerHTML=`<span class="blp-price__fx-now">~ ${Ce(o.now)}</span><span class="blp-price__fx-was">~ ${Ce(o.was)}</span>`:e.textContent=`~ ${o.now}`,e.hidden=false,e.removeAttribute("hidden"));}));}(e.steam);else {const a=f?`<span class="game-details-value blp-empty">${Ce(he.notOnSteam)}</span>`:"",n=lr(t,c);a||n?(rr(e.steam,`${a}${n?`<span class="blp-steam-line">${n}</span>`:""}`),or(e.steam),Ta(e.steam,Ne(t)||"miss")):ir(e.steam);}if(e.steamdb){const a=function(e,t){const a=(null==e?void 0:e.appId)||(null==t?void 0:t.appId)||null,n=[Zn(he.franchise,(r=jn(e,t),(null==r?void 0:r.name)?`<a class="blp-sdb-link" href="${Pe(r.url||"#")}" target="_blank" rel="noopener noreferrer">${Ce(r.name)}</a>`:""),"franchise"),Zn(he.supportedSystems,Jn(Wn(e,t),{appId:a}),"systems"),Zn(he.technologies,Vn(null==t?void 0:t.technologies),"technologies"),Zn(he.lastRecordUpdate,Kn(null==t?void 0:t.lastRecordUpdate,{appId:a}),"lastRecordUpdate")].filter(Boolean);var r;return n.length?`<div class="blp-sdb-facts">${n.join("")}</div>`:""}(t,u);a&&!n?(rr(e.steamdb,a),or(e.steamdb),Ta(e.steamdb,ze((null==t?void 0:t.franchise)||(null==t?void 0:t.systems)?t:null,(null==u?void 0:u._cacheMeta)||u))):null==t&&null==u?or(e.steamdb):f&&(null==t?void 0:t.found)?(rr(e.steamdb,`<span class="game-details-value blp-empty">${Ce((null==u?void 0:u.metaBlocked)?he.steamDbBlocked:"—")}</span>`),or(e.steamdb),Ta(e.steamdb,(null==u?void 0:u._cacheMeta)||"na")):ir(e.steamdb);}if(e.metacritic){const a=null==(b=null==t?void 0:t.metacritic)?void 0:b.score;null==a||n?ir(e.metacritic):(rr(e.metacritic,function(e,t){const a=Un(e),n="blp-mc-badge"+(a?` blp-mc-badge--${a}`:""),r=Ce(String(e));return t?`<a class="${n} blp-ext-link" href="${Pe(t)}" target="_blank" rel="noopener noreferrer">${r}</a>`:`<span class="${n}">${r}</span>`}(a,Bt(l,c))),or(e.metacritic),Ta(e.metacritic,Ne(t)||"miss"));}if(e.opencritic)if(null==d)or(e.opencritic);else {const t=(S=d)&&!S.missing&&S.tier?`<span class="blp-oc-chips"><a class="${`blp-oc-badge ${function(e){const t=String(e||"").toLowerCase().replace(/\s+/g,"");return "mighty"===t?"blp-oc-badge--mighty":"strong"===t?"blp-oc-badge--strong":"fair"===t?"blp-oc-badge--fair":"weak"===t?"blp-oc-badge--weak":""}(S.tier)}`.trim()} blp-ext-link" href="${Pe(S.url)}" target="_blank" rel="noopener noreferrer">${Ce(S.tier)}</a></span>`:"";t&&!n?(rr(e.opencritic,t),or(e.opencritic),Ta(e.opencritic,Ne(d)||"miss")):ir(e.opencritic);}var S;if(e.hltb)if(null==m)or(e.hltb);else {const t=function(e){if(!e||e.missing)return "";const t=[],a=ca(e.main),n=ca(e.extra),r=ca(e.complete);return a&&t.push(`<a class="blp-hltb-chip blp-ext-link" href="${Pe(e.url)}" target="_blank" rel="noopener noreferrer">${Ce(X(he.hltbMain,{n:a}))}</a>`),n&&t.push(`<a class="blp-hltb-chip blp-ext-link" href="${Pe(e.url)}" target="_blank" rel="noopener noreferrer">${Ce(X(he.hltbExtra,{n:n}))}</a>`),r&&t.push(`<a class="blp-hltb-chip blp-ext-link" href="${Pe(e.url)}" target="_blank" rel="noopener noreferrer">${Ce(X(he.hltbComplete,{n:r}))}</a>`),t.length?`<span class="blp-hltb-chips">${t.join("")}</span>`:""}(m);t&&!n?(rr(e.hltb,t),or(e.hltb),Ta(e.hltb,Ne(m)||"miss")):ir(e.hltb);}if(e.deckproton){const a=function({steam:e,proton:t}){const a=[],n=qn(null==e?void 0:e.deckCompat);if(n&&a.push(`<a class="blp-deck-badge ${n.cls} blp-ext-link" href="${Pe((null==e?void 0:e.appId)?`https://store.steampowered.com/app/${e.appId}/`:(null==e?void 0:e.storeUrl)||"#")}" target="_blank" rel="noopener noreferrer" title="Steam Deck">${Ce(n.label)}</a>`),null==t?void 0:t.tier){const e=t.tier.charAt(0).toUpperCase()+t.tier.slice(1),n=`blp-proton-badge ${function(e){const t=String(e||"").toLowerCase();return "platinum"===t?"blp-proton-badge--platinum":"gold"===t?"blp-proton-badge--gold":"silver"===t?"blp-proton-badge--silver":"bronze"===t?"blp-proton-badge--bronze":"borked"===t?"blp-proton-badge--borked":""}(t.tier)}`.trim();a.push(`<a class="${n} blp-ext-link" href="${Pe(t.url)}" target="_blank" rel="noopener noreferrer">${Ce(X(he.protonTier,{tier:e}))}</a>`);}return a.length?`<span class="blp-deck-proton-chips">${a.join("")}</span>`:""}({steam:t,proton:g});a&&!n?(rr(e.deckproton,a),or(e.deckproton),Ta(e.deckproton,ze(t,g))):f&&(null==t?void 0:t.found)?(rr(e.deckproton,'<span class="game-details-value blp-empty">—</span>'),or(e.deckproton),Ta(e.deckproton,ze(t,g))):ir(e.deckproton);}if(e.players){const t=null==u?void 0:u.players;if(null==t||n)f?(rr(e.players,'<span class="game-details-value blp-empty">—</span>'),or(e.players),Ta(e.players,"na")):ir(e.players);else {const a=(null==u?void 0:u.appId)?`${E}/${u.appId}/charts/`:`${E}/`,n=X(he.playersOnline,{n:Number(t).toLocaleString()});rr(e.players,`<a class="blp-players-badge blp-ext-link" href="${Pe(a)}" target="_blank" rel="noopener noreferrer"><span class="blp-players-badge__dot" aria-hidden="true"></span>${Ce(n)}</a>`),or(e.players),Ta(e.players,"miss");}}if(e.gamestatus&&(s&&!s.missing&&s.data?(rr(e.gamestatus,function(e){const t=null==e?void 0:e.data;if(!t)return "";const a=vt(t),n=wt(t,a),r=t.slug||e.slug,i=r?`${R}/${encodeURIComponent(r)}`:R,o=[];for(const l of kt(t.protections))o.push(`<span class="blp-gs-chip ${Ct(l)}">${Ce(l)}</span>`);for(const l of kt(t.hacked_groups_en||t.hacked_groups)){const e=/bypass|обход|hypervisor/i.test(l)?"partial":a;o.push(`<span class="blp-gs-chip blp-gs-chip--${Pe(e)}">${Ce(l)}</span>`);}t.is_AAA&&o.push('<span class="blp-gs-chip blp-gs-chip--aaa">AAA</span>');const s=[`<span class="blp-steam-line"><a class="blp-gs-badge blp-gs-badge--${Pe(a)} blp-ext-link" href="${Pe(i)}" target="_blank" rel="noopener noreferrer"><span class="blp-gs-badge__dot" aria-hidden="true"></span>${Ce(n)}</a></span>`];return o.length&&s.push(`<span class="blp-steam-line blp-gs-chips">${o.join("")}</span>`),s.join("")}(s)),or(e.gamestatus),Ta(e.gamestatus,Ne(s)||"miss")):ir(e.gamestatus)),e.links)if(null==a?void 0:a.length){const t=a.map((e,t)=>function(e,{last:t=false}={}){const a=function(e){try{const t=new URL(e).hostname.replace(/^www\./,"");return w.replace("{domain}",encodeURIComponent(t))}catch(t){return ""}}(e.url),n=a?`<img class="blp-favicon" src="${Pe(a)}" alt="" width="14" height="14" loading="lazy" decoding="async" referrerpolicy="no-referrer" />`:"",r=t?"":'<span class="separator">•</span>';return `\n    <span class="game-detail">\n      <a class="game-details-value blp-ext-link" href="${Pe(e.url)}" target="_blank" rel="noopener noreferrer">\n        ${n}${Ce(e.label)}\n      </a>${r}\n    </span>\n  `}(e,{last:t===a.length-1})).join("");rr(e.links,t),or(e.links),Ta(e.links,"na");}else ir(e.links);h||function({steam:e,steamDb:t,gamestatus:a,owned:n=false,wishlist:r=false,error:i=false,title:s="",slug:l=""}){var c,u,d,m;const g=Boolean(document.querySelector("[data-blp-debug][open]"));if(document.querySelectorAll("[data-blp-debug]").forEach(e=>e.remove()),!me.debugMode)return;const h=function({steam:e,steamDb:t,gamestatus:a,title:n,slug:r}){const i=[],o=(e,t,a,n,r=false)=>{a&&!i.some(n=>n.url===a&&n.label===t&&n.module===e)&&i.push({module:e,label:t,url:a,purpose:n||"",request:Boolean(r)});};o("page","Backloggd",location.href,he.debugSrcBackloggd),r&&o("page","IGDB",ba(r),he.debugSrcIgdb);const s=Bt(n,r);s&&o("page","Metacritic",s,he.debugSrcMetacritic),(null==e?void 0:e.storeUrl)&&o("steam","Steam Store",e.storeUrl,he.debugSrcSteamStore),(null==e?void 0:e.tinyImage)&&o("steam","Steam tiny image",e.tinyImage,he.debugSrcSteamTiny),(null==e?void 0:e.headerImage)&&o("steam","Steam header image",e.headerImage,he.debugSrcSteamHeader),(me.showSteamOwned||me.showSteamWishlist)&&o("steam","Steam userdata",P,he.debugSrcSteamOwned,true);const l=(null==e?void 0:e._debug)||{};for(const d of l.searches||[])(null==d?void 0:d.url)&&o("steam",`Steam search (${d.anonymous?"guest":"session"}, ${d.country||"?"})`,d.url,he.debugSrcSteamSearch,true);l.detailsUrl&&o("steam","Steam appdetails",l.detailsUrl,he.debugSrcSteamDetails,true),l.reviewsUrl&&o("steam","Steam appreviews",l.reviewsUrl,he.debugSrcSteamReviews,true),l.tagsUrl&&o("steam","Steam GetItems (tags)",l.tagsUrl,he.debugSrcSteamTags,true),l.tagMapUrl&&o("steam","Steam populartags",l.tagMapUrl,he.debugSrcSteamTagMap,true),(null==e?void 0:e.appId)&&(o("steamdb","SteamDB",`${E}/${e.appId}/`,he.debugSrcSteamDb),o("steamdb","SteamDB charts",`${E}/${e.appId}/charts/`,he.debugSrcSteamDbCharts),o("steamdb","SteamDB info",`${E}/${e.appId}/info/`,he.debugSrcSteamDbInfo));const c=(null==t?void 0:t._debug)||{};c.chartsUrl&&o("steamdb","SteamDB charts",c.chartsUrl,he.debugSrcSteamDbCharts),c.playersApiUrl&&o("steamdb","Steam players API",c.playersApiUrl,he.debugSrcSteamPlayersApi,true),(c.iconUrl||(null==t?void 0:t.iconUrl))&&o("steamdb","Icon URL",c.iconUrl||t.iconUrl,he.debugSrcIcon),(c.logoUrl||(null==t?void 0:t.logoUrl))&&o("steamdb","Logo URL",c.logoUrl||t.logoUrl,he.debugSrcLogo);const u=(null==a?void 0:a._debug)||{};for(const d of u.attempts||[])(null==d?void 0:d.url)&&o("gamestatus",`GameStatus API (${d.slug||"?"})`,d.url,he.debugSrcGameStatusApi,true);return (null==a?void 0:a.slug)&&o("gamestatus","GameStatus page",`${R}/${encodeURIComponent(a.slug)}`,he.debugSrcGameStatusPage),i}({steam:e,steamDb:t,gamestatus:a,title:s,slug:l}),b=function(e){const t=[{key:"page",label:he.debugSectionPage},{key:"steam",label:he.debugSectionSteam},{key:"steamdb",label:he.debugSectionSteamDb},{key:"gamestatus",label:he.debugSectionGameStatus}],a=[];for(const n of t){const t=e.filter(e=>e.module===n.key).sort((e,t)=>Number(t.request)-Number(e.request));if(!t.length)continue;const r=t.map(e=>ur(e.label,e.url,e.purpose,e.request)).join("");a.push(`\n      <div class="blp-debug-panel__source-group">\n        <div class="blp-debug-panel__source-group-title">${Ce(n.label)}</div>\n        <ul class="blp-debug-panel__source-group-list">${r}</ul>\n      </div>\n    `);}return a.join("")||`<div>${Ce("—")}</div>`}(h),f=[],S=(e,t,a)=>{let n="";try{n=JSON.stringify(a,null,2);}catch(r){n=String(a);}f.push(`\n      <div class="blp-debug-panel__section">\n        <span class="blp-debug-panel__label">${Ce(e)}</span>\n        <span class="blp-debug-panel__reason">${Ce(t||"—")}</span>\n        <pre class="blp-debug-panel__pre">${Ce(n)}</pre>\n      </div>\n    `);};S(he.debugSectionPage,`${s||"—"} / ${l||"—"}`,{href:location.href,title:s,slug:l,settings:{steamCountry:me.steamCountry,showSteam:me.showSteam,showSteamOwned:me.showSteamOwned,showSteamWishlist:me.showSteamWishlist,showSteamTags:me.showSteamTags,showSteamCategories:me.showSteamCategories,showMetacritic:me.showMetacritic,showOpenCritic:me.showOpenCritic,showHltb:me.showHltb,showDeckProton:me.showDeckProton,showGameStatus:me.showGameStatus,showSteamDbIcon:me.showSteamDbIcon,showSteamDbCover:me.showSteamDbCover,showSteamDbGallery:me.showSteamDbGallery,showSteamDbDetails:me.showSteamDbDetails,showSimilarGames:me.showSimilarGames,showGameStats:me.showGameStats,showSteamPlayers:me.showSteamPlayers,showCardBadges:me.showCardBadges,showCardBadgePrice:me.showCardBadgePrice,showCardBadgeReview:me.showCardBadgeReview,showCardBadgeOwned:me.showCardBadgeOwned,showCardBadgeWishlist:me.showCardBadgeWishlist,showCardBadgeGameStatus:me.showCardBadgeGameStatus,showLinks:me.showLinks,links:me.links,steamOverride:We(l)},owned:n,wishlist:r,error:i,SCRIPT_VERSION:o}),S(he.debugSectionSteam,(null==(c=null==e?void 0:e._debug)?void 0:c.reason)||((null==e?void 0:e.found)?`appId=${e.appId}`:he.notOnSteam),(null==e?void 0:e._debug)||e||{reason:"Steam payload missing"}),S(he.debugSectionSteamDb,(null==(u=null==t?void 0:t._debug)?void 0:u.reason)||(t?`source=${t.source}`:"SteamDB extras not fetched"),(null==t?void 0:t._debug)||t||{reason:"SteamDB payload missing"}),S(he.debugSectionGameStatus,(null==(d=null==a?void 0:a._debug)?void 0:d.reason)||(a&&!a.missing?`slug=${a.slug}`:he.gsNotInDatabase),(null==a?void 0:a._debug)||a||{reason:"GameStatus payload missing"});const v={page:{href:location.href,title:s,slug:l,owned:n,wishlist:r,error:i,SCRIPT_VERSION:o},steam:(null==e?void 0:e._debug)||e||null,steamDb:(null==t?void 0:t._debug)||t||null,gamestatus:(null==a?void 0:a._debug)||a||null,sources:h};let w="";try{w=JSON.stringify(v,null,2);}catch(x){w=String(v);}const y=document.createElement("details");y.className="blp-debug-panel",y.setAttribute("data-blp-debug","1"),g&&(y.open=true),y.innerHTML=`\n    <summary class="blp-debug-panel__summary">\n      <h3 class="blp-debug-panel__title">${Ce(he.debugPanelTitle)} · v${Ce(o)}</h3>\n    </summary>\n    <div class="blp-debug-panel__body">\n      <div class="blp-debug-panel__meta">${Ce(he.debugOwned)}: ${n?he.on:he.off}</div>\n      <div class="blp-debug-panel__section">\n        <span class="blp-debug-panel__label">${Ce(he.debugSources)}</span>\n        <div class="blp-debug-panel__sources">${b}</div>\n      </div>\n      ${f.join("")}\n      <div class="blp-debug-panel__section">\n        <span class="blp-debug-panel__label">${Ce(he.debugDump)}</span>\n        <pre class="blp-debug-panel__pre">${Ce(w)}</pre>\n      </div>\n    </div>\n  `;const k=document.querySelector(`[${p}]:last-of-type`),C=document.querySelector("#game-body #game-page-platforms, #game-page-platforms"),B=k||C;B?B.insertAdjacentElement("afterend",y):null==(m=document.querySelector("#game-body"))||m.appendChild(y);}({steam:t,steamDb:u,gamestatus:s,owned:r,wishlist:i,error:n,title:l,slug:c});}let pr=0;async function mr(){var e,t,a,n,r,i;const o=ga();if(!o.isGamePage||!o.slug)return void tr();const s=ha();if(!s)return void Mn();const l=`${o.slug}|${s}|${me.steamCountry}|${me.showSteam}|${me.showSteamOwned}|${me.showSteamWishlist}|${me.showSteamTags}|${me.showSteamCategories}|${me.showMetacritic}|${me.showOpenCritic}|${me.showHltb}|${me.showDeckProton}|${me.showGameStatus}|${me.showLinks}|${me.showSteamDbIcon}|${me.showSteamDbCover}|${me.showSteamDbGallery}|${me.showSteamDbDetails}|${me.showSimilarGames}|${me.showGameStats}|${me.showSteamPlayers}|${me.showExport}|${me.showGameId}|${We(o.slug)||""}|${me.debugMode}|${JSON.stringify(me.links)}`,c=document.querySelector(`[${p}]`);if((null==c?void 0:c.getAttribute("data-blp-token"))===l)return $n(l),Pn(),Ca(),fn(l),void Mn();tr(),Mn();const u=function(){const e=document.querySelector("#game-body #game-page-platforms, #game-page-platforms");if(!e)return null;let t=e;if(document.querySelector(`[${p}]`))return {steam:document.querySelector(`[${p}="steam"]`),steamdb:document.querySelector(`[${p}="steamdb"]`),metacritic:document.querySelector(`[${p}="metacritic"]`),opencritic:document.querySelector(`[${p}="opencritic"]`),hltb:document.querySelector(`[${p}="hltb"]`),deckproton:document.querySelector(`[${p}="deckproton"]`),players:document.querySelector(`[${p}="players"]`),gamestatus:document.querySelector(`[${p}="gamestatus"]`),links:document.querySelector(`[${p}="links"]`)};const a={},n=[];me.showSteam&&n.push(["steam",he.steam]),false!==me.showSteamDbDetails&&n.push(["steamdb",he.linkSteamDb]),me.showMetacritic&&n.push(["metacritic",he.metacritic]),me.showOpenCritic&&n.push(["opencritic",he.openCritic]),me.showHltb&&n.push(["hltb",he.hltb]),me.showDeckProton&&n.push(["deckproton",he.deckProton]),me.showSteamPlayers&&n.push(["players",he.players]),me.showGameStatus&&n.push(["gamestatus",he.gameStatus]),me.showLinks&&n.push(["links",he.links]);for(const[r,i]of n){const e=ar(r,i);e.querySelector("[data-blp-values]").innerHTML=nr(r),t.insertAdjacentElement("afterend",e),t=e,a[r]=e;}return a}();if(!u)return;Object.values(u).forEach(e=>null==e?void 0:e.setAttribute("data-blp-token",l)),$n(l),Pn(),Ca();const d=++pr,m=ba(o.slug),g=()=>d===pr&&ga().isGamePage,h=me.showSteamDbIcon||me.showSteamDbCover||me.showSteamDbGallery||me.showSteamPlayers||false!==me.showSteamDbDetails,b=me.showSteamDbIcon||me.showSteamDbCover||me.showSteamDbGallery,f=me.showSteam||me.showMetacritic||me.showDeckProton||me.showGameStatus||h||me.showSimilarGames||false!==me.showSteamDbDetails||me.showLinks&&(false!==(null==(e=me.links)?void 0:e.itad)||false!==(null==(t=me.links)?void 0:t.steamdb)||false!==(null==(a=me.links)?void 0:a.gameslike)),S=me.showSteam&&(me.showSteamOwned||me.showSteamWishlist),v=function({title:e,slug:t,country:a}={}){const n=String(a||me.steamCountry||"US").toUpperCase()||"US",r=String(e||"").trim(),i=r?Dt(r):"",o=t?We(t):null;let s=null;if(o){const e=Number(o);if(Number.isFinite(e)&&e>0){const t=Ee(`steam:id:${n}:${e}`);(null==t?void 0:t.found)&&(s=Fe({...t,manualOverride:true}));}}else if(i){const e=Ee(`steam:${n}:${i}`);(null==e?void 0:e.found)&&(s=Fe({...e,manualOverride:Boolean(e.manualOverride)}));}let l=null;if(me.showOpenCritic&&i){const e=Ee(`opencritic:${i}`);e&&(null!=e.score||e.missing||e.scoreParseV2)&&(l=Fe(e));}let c=null;if(me.showHltb&&i){const e=Ee(`hltb:${i}`);e&&(c=Fe(e));}let u=null;const d=qe();d&&(u={owned:new Set(d.appIds),wishlist:new Set(d.wishlistAppIds)});let p=null,m=null,g=null,h=null;const b=(null==s?void 0:s.found)&&null!=s.appId?Number(s.appId):NaN;if(Number.isFinite(b)&&b>0){if(me.showGameStatus){const e=Ee(`gs:${b}`);e&&(p=Fe(e));}if(me.showDeckProton){const e=Ee(`protondb:${b}`);e&&(m=Fe(e));}if(me.showSimilarGames){const e=Ee(`steam:similar:${b}`);Array.isArray(e)&&e.length&&(h=Fe(e));}g=function(e,t){const a=me.showSteamDbIcon||me.showSteamDbCover,n=me.showSteamDbGallery,r=false!==me.showSteamDbDetails;if(!(a||n||r||me.showSteamPlayers))return null;const i=a?Ee(`steamdb:media:${e}`):null;let o=n?Ee(`steam:screenshots:${e}`):null;o&&!Array.isArray(o)&&(o=null);const s=r?Ee(`steamdb:meta:${e}`):null,l=Boolean(i),c=Array.isArray(o),u=Boolean(s);if(!l&&!c&&!u)return null;const d=(null==i?void 0:i.iconUrl)||"",p=(null==i?void 0:i.logoUrl)||(a?na(e,"header.jpg")||na(e,"library_600x900.jpg"):""),m=Boolean(p&&/library_600x900/i.test(p)&&!(null==i?void 0:i.logoUrl)),g=Array.isArray(null==s?void 0:s.technologies)?s.technologies:[],h=a&&l?"hit":"na",b=n&&c?"hit":"na",f=r&&u?"hit":"na";return {appId:e,iconUrl:a&&me.showSteamDbIcon?d:"",logoUrl:a&&me.showSteamDbCover?p:"",logoIsPortrait:Boolean(m),screenshots:n&&c?o:null,players:null,franchise:r&&((null==s?void 0:s.franchise)||(null==t?void 0:t.franchise))||null,systems:r&&((null==s?void 0:s.systems)||(null==t?void 0:t.systems))||null,technologies:r?g:[],lastRecordUpdate:r&&(null==s?void 0:s.lastRecordUpdate)||null,metaBlocked:Boolean(null==s?void 0:s.blocked),source:(null==i?void 0:i.source)||(null==s?void 0:s.source)||"steam",_cache:ze(h,b,f),_cacheMedia:h,_cacheShots:b,_cachePlayers:"na",_cacheMeta:f}}(b,s);}return {steam:s,opencritic:l,hltb:c,userdata:u,gamestatus:p,proton:m,steamDb:g,similar:h}}({title:s,slug:o.slug,country:me.steamCountry||"US"});b?function(e=""){yn(e),kn(e),fn(e),xn(e);}(l):fn(l),me.showSimilarGames&&Hn(l);const w={steam:v.steam||null,owned:false,wishlist:false,userdata:v.userdata||null,gamestatus:v.gamestatus||null,steamDb:v.steamDb||null,opencritic:v.opencritic||null,hltb:v.hltb||null,proton:v.proton||null,error:false},y=e=>{if(!g()||!u.links)return;const t=er({title:s,slug:o.slug,igdbUrl:m,steam:e});dr({links:u.links},{steam:e,links:t,error:w.error,skipDebug:true});},k=()=>{var e;if(w.userdata&&(null==(e=w.steam)?void 0:e.found)&&null!=w.steam.appId){const e=Number(w.steam.appId);w.owned=false!==me.showSteamOwned&&w.userdata.owned.has(e),w.wishlist=!w.owned&&false!==me.showSteamWishlist&&w.userdata.wishlist.has(e);}else w.owned=false,w.wishlist=false;},C=()=>{g()&&null!=w.steam&&(k(),dr({steam:u.steam,steamdb:u.steamdb,metacritic:u.metacritic,deckproton:u.deckproton},{steam:w.steam,steamDb:w.steamDb,proton:w.proton,error:w.error,owned:w.owned,wishlist:w.wishlist,title:s,slug:o.slug,skipDebug:true}),y(w.steam),zn(w));},P=()=>{g()&&dr({steamdb:u.steamdb,players:u.players},{steam:w.steam,steamDb:w.steamDb,error:w.error,skipDebug:true});},B=()=>{g()&&(u.opencritic&&dr({opencritic:u.opencritic},{opencritic:w.opencritic,error:w.error,skipDebug:true}),zn(w));},x=()=>{g()&&u.hltb&&dr({hltb:u.hltb},{hltb:w.hltb,error:w.error,skipDebug:true});},D=()=>{g()&&u.deckproton&&dr({deckproton:u.deckproton},{steam:w.steam,proton:w.proton,error:w.error,skipDebug:true});},_=()=>{g()&&u.players&&dr({players:u.players},{steamDb:w.steamDb,error:w.error,skipDebug:true});},M=()=>{g()&&u.gamestatus&&dr({gamestatus:u.gamestatus},{gamestatus:w.gamestatus,skipDebug:true});};y(w.steam),w.steam&&C(),w.opencritic&&B(),w.hltb&&x(),(w.steam||w.proton)&&D(),w.gamestatus&&M(),w.steamDb&&(Dn(w.steamDb,l),P()),v.similar&&null!=(null==(n=w.steam)?void 0:n.appId)&&An(v.similar,w.steam.appId,l,{final:true});let $=false,I=Promise.resolve();const E=(e,t)=>({missing:true,data:null,slug:null,_debug:me.debugMode?{reason:t,steamFound:Boolean(null==e?void 0:e.found),steamDebug:(null==e?void 0:e._debug)||null}:void 0}),R=e=>{if($||!(null==e?void 0:e.found)||null==e.appId)return;$=true;const t=[];h&&t.push(ra(e.appId,{country:me.steamCountry||"US",onPartial:e=>{g()&&(w.steamDb=e,Dn(e,l),null!=(null==e?void 0:e.players)&&_(),P());}}).then(e=>{g()&&e&&(w.steamDb=e,Dn(e,l,{final:true}),_(),P());}).catch(t=>{g()&&(w.steamDb={appId:e.appId,iconUrl:"",logoUrl:"",players:null,technologies:[],lastRecordUpdate:null,_debug:me.debugMode?{reason:`SteamDB error: ${(null==t?void 0:t.message)||t}`}:void 0},Sn(),_(),P());})),me.showGameStatus&&t.push(St({appId:e.appId,storeUrl:e.storeUrl,name:e.name,title:s,pageSlug:o.slug}).then(e=>{g()&&(w.gamestatus=e,M());}).catch(t=>{g()&&(w.gamestatus=E(e,`GameStatus error: ${(null==t?void 0:t.message)||t}`),M());})),me.showDeckProton&&t.push(async function(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return null;const a=`protondb:${t}`,n=Ee(a);if(n)return Fe(n);if(Se.has(a))return Se.get(a);const r=(async()=>{const e=await lt({url:`https://www.protondb.com/api/v1/reports/summaries/${t}.json`,allow404:true,headers:{Accept:"application/json"},timeout:15e3});if(!e||"object"!=typeof e)return null;const n="string"==typeof e.tier?e.tier:null;if(!n)return null;const r={tier:n,bestReportedTier:e.bestReportedTier||null,confidence:e.confidence||null,score:null!=e.score?Number(e.score):null,total:null!=e.total?Number(e.total):null,url:`https://www.protondb.com/app/${t}`};return Re(a,r),Oe(r)})().catch(()=>null);Se.set(a,r);try{return await r}finally{Se.delete(a);}}(e.appId).then(e=>{g()&&(w.proton=e,D());}).catch(()=>{g()&&D();})),me.showSimilarGames&&(Hn(l),t.push(async function(e,t,a){const n=Number(e);if(!Number.isFinite(n)||n<=0)return [];const r=String(a).toUpperCase()||"US",i=`steam:similar:${n}`,o=Ee(i);if(Array.isArray(o)&&o.length)return Fe(o);const s=`similar:${n}:${r}`;if(Se.has(s))return Se.get(s);const l=(async()=>{var e;try{let a=Array.isArray(t)?t:[];a.length||(a=await Jt(n,r).catch(()=>[]));const o=JSON.stringify({item_id:{appid:n},count:12,context:{language:"english",country_code:r,steam_realm:1},data_request:{include_assets:!0,include_basic_info:!0,include_tag_count:12},filters:{type_filters:{include_games:!0,include_dlc:!1,include_demos:!1,include_software:!1,include_video:!1,include_hardware:!1}}}),[s,l]=await Promise.all([lt({url:`https://api.steampowered.com/IStoreQueryService/MoreLikeThis/v1/?input_json=${encodeURIComponent(o)}`}),Nt()]),c=(Array.isArray(null==(e=null==s?void 0:s.response)?void 0:e.store_items)?s.response.store_items:[]).map((e,t)=>function(e,t,a,n){var r;const i=Number(null!=(r=null==e?void 0:e.appid)?r:null==e?void 0:e.id);if(!Number.isFinite(i)||i<=0)return null;const o=String((null==e?void 0:e.name)||"").trim();if(!o)return null;const s=(Array.isArray(null==e?void 0:e.tags)?e.tags:[]).slice().sort((e,t)=>(t.weight||0)-(e.weight||0)).map(e=>({id:e.tagid,name:a[e.tagid]||null,weight:e.weight||0})).filter(e=>null!=e.id),{matchPct:l,sharedTagIds:c}=function(e,t){const a=Kt(e),n=Kt(t);if(!a.size||!n.size)return {matchPct:0,sharedTagIds:[]};let r=0,i=0;const o=[],s=new Set([...a.keys(),...n.keys()]);for(const l of s){const e=a.get(l)||0,t=n.get(l)||0;r+=Math.min(e,t),i+=Math.max(e,t),e>0&&t>0&&o.push({id:l,weight:Math.min(e,t)});}return o.sort((e,t)=>t.weight-e.weight),{matchPct:i>0?Math.round(100*r/i):0,sharedTagIds:o.slice(0,2).map(e=>e.id)}}(t,s),u=c.map(e=>{var t;return a[e]||(null==(t=s.find(t=>t.id===e))?void 0:t.name)}).filter(Boolean).slice(0,2),d=function(e,t){if(!t||"object"!=typeof t)return "";const a=Number(e),n=[t.library_capsule_2x,t.library_capsule,t.header_2x,t.header,t.main_capsule_2x,t.main_capsule];for(const r of n){const e=Vt(t,r);if(e)return e;const n=String(r||"").trim();if(n&&Number.isFinite(a)&&a>0)return na(a,n)}return ""}(i,null==e?void 0:e.assets),p=Pt(o);return {appId:i,name:o,coverUrl:d,matchPct:l,sharedTags:u,storeUrl:`https://store.steampowered.com/app/${i}/`,backloggdUrl:p?`https://www.backloggd.com/games/${encodeURIComponent(p)}/`:"",apiIndex:n}}(e,a,l||{},t)).filter(e=>e&&e.appId!==n).sort((e,t)=>t.matchPct!==e.matchPct?t.matchPct-e.matchPct:e.apiIndex-t.apiIndex).slice(0,10).map(({apiIndex:e,...t})=>t);return c.length&&Re(i,c),Oe(c)}catch(a){return Oe([])}})();Se.set(s,l);try{return await l}finally{Se.delete(s);}}(e.appId,e.tags,me.steamCountry||"US").then(t=>{g()&&(An(t,e.appId,l,{final:true}),function(e,t){let a=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))};document.getElementsByTagName("link");const n=document.querySelector("meta[property=csp-nonce]"),r=(null==n?void 0:n.nonce)||(null==n?void 0:n.getAttribute("nonce"));a=e(t.map(e=>{if((e=function(e){return "/"+e}(e))in oa)return;oa[e]=true;const t=e.endsWith(".css");if(document.querySelector(`link[href="${e}"]${t?'[rel="stylesheet"]':""}`))return;const a=document.createElement("link");return a.rel=t?"stylesheet":ia,t||(a.as="script"),a.crossOrigin="",a.href=e,r&&a.setAttribute("nonce",r),document.head.appendChild(a),t?new Promise((t,n)=>{a.addEventListener("load",t),a.addEventListener("error",()=>n(new Error(`Unable to preload CSS for ${e}`)));}):void 0}));}function n(e){const t=new Event("vite:preloadError",{cancelable:true});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(e=>{for(const t of e||[])"rejected"===t.status&&n(t.reason);return Promise.resolve().then(()=>_r).catch(n)})}(0,void 0).then(e=>e.scheduleCardBadges()));}).catch(()=>{g()&&Tn();}))),I=Promise.all(t);};(null==(r=w.steam)?void 0:r.found)&&R(w.steam);try{const e=[];me.showOpenCritic&&e.push(async function(e){const t=String(e||"").trim();if(!t)return null;const a=`opencritic:${Dt(t)}`,n=Ee(a);if(n&&(null!=n.score||n.missing||n.scoreParseV2))return Fe(n);if(Se.has(a))return Se.get(a);const r=(async()=>{const e=await async function(e){var t;const a=`${T}/game/search?criteria=${encodeURIComponent(e)}`,n=await lt({url:a,headers:{Accept:"application/json",Origin:H,Referer:`${H}/`},timeout:15e3}),r=pa(Array.isArray(n)?n:[],e);if(!(null==(t=null==r?void 0:r.item)?void 0:t.id))return null;const i=Number(r.item.id);let o=null;try{o=await lt({url:`${T}/game/${i}`,headers:{Accept:"application/json",Origin:H,Referer:`${H}/`},timeout:15e3});}catch(s){o=null;}return function(e,t,a,n){if(!e||"object"!=typeof e)return null;const r="string"==typeof e.tier&&e.tier||"string"==typeof(null==t?void 0:t.tier)&&t.tier||null;if(!r)return null;const i=Number(e.id||(null==t?void 0:t.id)),o=e.slug||(null==t?void 0:t.slug);return {id:i,name:e.name||(null==t?void 0:t.name)||a,tier:r,score:ma(e.topCriticScore,e.medianScore,null==t?void 0:t.topCriticScore,null==t?void 0:t.medianScore),url:o?`${H}/game/${i}/${encodeURIComponent(o)}`:Number.isFinite(i)?`${H}/game/${i}`:`${H}/search?q=${encodeURIComponent(a)}`,matchScore:n||null,source:"api",scoreParseV2:!0}}(o||r.item,r.item,e,r.score)}(t).catch(()=>null);if(e)return Re(a,e),Oe(e);const n=await async function(e){const t=await async function(e){const t=`${e} site:opencritic.com/game`,a=await lt({url:`https://html.duckduckgo.com/html/?q=${encodeURIComponent(t)}`,responseType:"text",headers:{Accept:"text/html"},timeout:15e3}),n=function(e){const t=[],a=(e,a)=>{const n=Number(e),r=String(a||"").toLowerCase().replace(/[^a-z0-9-]+/g,"").replace(/^-+|-+$/g,"");!Number.isFinite(n)||n<=0||!r||t.some(e=>e.id===n)||t.push({id:n,slug:r,url:`${H}/game/${n}/${r}`,name:r.replace(/-/g," ")});},n=/opencritic\.com\/game\/(\d+)\/([a-z0-9-]+)/gi;let r;for(;r=n.exec(e);)a(r[1],r[2]);const i=/[?&]uddg=([^&"']+)/gi;for(;r=i.exec(e);)try{const e=decodeURIComponent(r[1]).match(/opencritic\.com\/game\/(\d+)\/([a-z0-9-]+)/i);e&&a(e[1],e[2]);}catch(o){}return t}(String(a||""));if(!n.length)return null;const r=pa(n,e);if(null==r?void 0:r.item)return r.item;const i=Dt(e);return n.find(e=>{const t=Dt(e.name);return t===i||t.includes(i)||i.includes(t)})||n[0]||null}(e);if(!(null==t?void 0:t.url))return null;const a=function(e,t){const a=String(e||"");if(!a)return null;let n=null,r=null,i=null,o=null;const s=function(e){const t=e.match(/"topCriticScore"\s*:\s*([0-9]+(?:\.[0-9]+)?)/);if(t){const e=ma(t[1]);if(null!=e)return e}const a=e.match(/(\d{2,3})(?:\s*<[^>]*>|\s|&nbsp;|<!--.*?-->){0,12}\s*Top Critic Average/i);if(a){const e=ma(a[1]);if(null!=e)return e}const n=e.match(/Top Critic Average[\s\S]{0,160}?(\d{2,3})/i);if(n){const e=ma(n[1]);if(null!=e)return e}return null}(a),l=a.match(/"tier"\s*:\s*"(Mighty|Strong|Fair|Weak)"/i);l&&(n=l[1]);const c=a.match(/"name"\s*:\s*"([^"\\]+)"/);c&&(r=c[1]);const u=a.match(/"id"\s*:\s*(\d+)/);u&&(i=Number(u[1]));const d=a.match(/"slug"\s*:\s*"([a-z0-9-]+)"/i);if(d&&(o=d[1]),!n){const e=a.match(/\b(Mighty|Strong|Fair|Weak)\b/);e&&(n=e[1]);}if(!r){const e=a.match(/<title[^>]*>\s*([^|<]+?)\s*(?:Reviews)?\s*[-–|]/i);e&&(r=e[1].trim());}const p=String(t||"").match(/opencritic\.com\/game\/(\d+)\/([a-z0-9-]+)/i);return p&&(i||(i=Number(p[1])),o||(o=p[2])),n?{id:i,name:r||o||null,tier:n,score:s,url:i&&o?`${H}/game/${i}/${encodeURIComponent(o)}`:t||H,source:"html",scoreParseV2:!0}:null}(await lt({url:t.url,responseType:"text",headers:{Accept:"text/html",Referer:`${H}/`},timeout:2e4}),t.url);if(!a)return null;if(a.name){const t=_t(a.name,e);if(t>0&&t<50)return null}return a}(t).catch(()=>null);return n?(Re(a,n),Oe(n)):null})().catch(()=>null);Se.set(a,r);try{return await r}finally{Se.delete(a);}}(s).then(e=>{g()&&(w.opencritic=e||{missing:!0},B());}).catch(()=>{g()&&(w.opencritic={missing:!0},B());})),me.showHltb&&e.push(async function(e){const t=String(e||"").trim();if(!t)return null;const a=`hltb:${Dt(t)}`,n=Ee(a);if(n)return Fe(n);if(Se.has(a))return Se.get(a);const r=(async()=>{const e=async e=>{const a=await async function(e=!1){if(!e&&la&&Date.now()<la.expiresAt)return la;const t=await lt({url:`${G}?t=${Date.now()}`,headers:{Accept:"application/json","User-Agent":sa,Origin:A,Referer:`${A}/`},timeout:15e3}),a=null==t?void 0:t.token,n=null==t?void 0:t.hpKey,r=null==t?void 0:t.hpVal;if("string"!=typeof a||!a||"string"!=typeof n||!n||"string"!=typeof r||!r)throw new Error("Invalid HLTB token response");return la={token:a,hpKey:n,hpVal:r,expiresAt:Date.now()+3e6},la}(e);return lt({method:"POST",url:L,data:da(t,a),headers:{"Content-Type":"application/json",Accept:"*/*","User-Agent":sa,Origin:A,Referer:`${A}/`,"x-auth-token":a.token,"x-hp-key":a.hpKey,"x-hp-val":a.hpVal},timeout:2e4})};let n;try{n=await e(!1);}catch(l){const t=String((null==l?void 0:l.message)||l);if(!/HTTP 401|HTTP 403/.test(t))throw l;la=null,n=await e(!0);}const r=function(e,t,a){let n=null,r=0;for(const i of e||[]){const e=_t(a(i),t);e>r&&(r=e,n=i);}return !n||r<TITLE_MATCH_MIN_SCORE?null:{item:n,score:r}}(Array.isArray(null==n?void 0:n.data)?n.data:[],t,e=>e.game_name);if(!r)return null;const i=r.item,o=i.game_id,s={id:null!=o?String(o):null,name:i.game_name||t,url:o?`${A}/game/${o}`:`${A}/?q=${encodeURIComponent(t)}`,main:ua(i.comp_main),extra:ua(i.comp_plus),complete:ua(i.comp_100),matchScore:r.score};return s.main||s.extra||s.complete?(Re(a,s),Oe(s)):null})().catch(()=>null);Se.set(a,r);try{return await r}finally{Se.delete(a);}}(s).then(e=>{g()&&(w.hltb=e||{missing:!0},x());}).catch(()=>{g()&&(w.hltb={missing:!0},x());}));const t=S?Xt().then(e=>g()?(w.userdata=e,w.steam&&C(),e):null).catch(()=>null):Promise.resolve(null),a=f?aa({title:s,slug:o.slug,country:me.steamCountry||"US",onPartial:e=>{g()&&(w.steam=e,C(),R(e));}}):Promise.resolve(null),[n]=await Promise.all([a,t,...e]);if(!g())return;w.steam=n,(null==n?void 0:n.found)?(C(),R(n)):f&&(w.steam=n||{found:!1},C(),b&&Sn(),fn(l),me.showSimilarGames&&Tn()),me.showGameStatus&&!$&&(w.gamestatus=E(w.steam,(null==(i=w.steam)?void 0:i.found)?"GameStatus enabled but Steam appId missing":"GameStatus skipped — Steam app not found"),M()),await I;}catch(F){w.error=true,w.steam=w.steam||{found:false,_debug:{reason:`Enrichment error: ${(null==F?void 0:F.message)||F}`}},w.owned=false,w.wishlist=false,w.gamestatus=w.gamestatus||{missing:true,data:null,slug:null,_debug:{reason:`Enrichment error: ${(null==F?void 0:F.message)||F}`}},b&&!w.steamDb&&Sn(),fn(l),me.showSimilarGames&&Tn(),C(),B(),x(),D(),M(),_(),P();}g()&&(()=>{if(!g())return;k();const e=er({title:s,slug:o.slug,igdbUrl:m,steam:w.steam});dr(u,{steam:w.steam,links:e,error:w.error,owned:w.owned,wishlist:w.wishlist,gamestatus:w.gamestatus,title:s,slug:o.slug,steamDb:w.steamDb,opencritic:w.opencritic,hltb:w.hltb,proton:w.proton}),w.steamDb&&Dn(w.steamDb,l,{final:true}),zn(w);})();}function gr(){return [me.steamCountry||"US",me.showPriceConvert?1:0,me.convertCurrency||"RUB",me.showCardBadges?1:0,false!==me.showCardBadgePrice?1:0,false!==me.showCardBadgeReview?1:0,false!==me.showCardBadgeOwned?1:0,false!==me.showCardBadgeWishlist?1:0,false!==me.showCardBadgeGameStatus?1:0].join("|")}function hr(){return  false!==me.showCardBadgePrice||false!==me.showCardBadgeReview||false!==me.showCardBadgeOwned||false!==me.showCardBadgeWishlist||false!==me.showCardBadgeGameStatus}function br(e){var t,a,n,r;const i=null==(t=e.getAttribute)?void 0:t.call(e,S);if(i)return i.toLowerCase();const o=[e,e.parentElement,e.closest('a[href*="/games/"]'),e.closest("[game_id], .result, .col, .row")].filter(Boolean);for(const s of o){const e=(null==(a=s.matches)?void 0:a.call(s,'a[href*="/games/"]'))?s:null==(n=s.querySelector)?void 0:n.call(s,'a[href*="/games/"]'),t=((null==(r=null==e?void 0:e.getAttribute)?void 0:r.call(e,"href"))||"").match(/\/games\/([^/?#]+)/i);if(t)return t[1].toLowerCase()}return ""}function fr(e,t){var a,n;const r=null==(a=e.getAttribute)?void 0:a.call(e,v);if(r)return r.trim();const i=e.querySelector("img[alt]");if(null==i?void 0:i.alt)return i.alt.trim();const o=null==(n=e.closest(".result, .row, .col, [game_id]"))?void 0:n.querySelector(".game-name h3, h3, .game-name a");return (null==o?void 0:o.textContent)?o.textContent.replace(/\s+\d{4}\s*$/,"").trim():t?t.replace(/-/g," "):""}function Sr(e){var t;const a=null==(t=e.getAttribute)?void 0:t.call(e,f),n=Number(a);return Number.isFinite(n)&&n>0?n:null}function vr(e){let t=e.querySelector(".blp-card-badges");if(t)return t;const a=e.querySelector(".overflow-wrapper")||e;return "static"===getComputedStyle(a).position&&(a.style.position="relative"),t=document.createElement("div"),t.className="blp-card-badges is-loading",t.innerHTML='<span class="blp-card-badge"></span><span class="blp-card-badge"></span>',a.appendChild(t),t}async function wr({steam:e,owned:t,wishlist:a,gamestatus:n}){var r,i;const o=[];if(null==e?void 0:e.found){if(false!==me.showCardBadgePrice){const t=Qn(e);if(t){const a=(null==(r=e.price)?void 0:r.discount_percent)>0?` <span class="blp-card-badge--discount">${Ce(X(he.discount,{n:e.price.discount_percent}))}</span>`:"";let n="";if(me.showPriceConvert&&e.price&&!e.isFree){const t=await gt(e.price,me.convertCurrency||"RUB");(null==t?void 0:t.now)&&(n=t.was?` <span class="blp-card-badge--fx"><span class="blp-card-badge--fx-now">~ ${Ce(t.now)}</span><span class="blp-card-badge--fx-was">~ ${Ce(t.was)}</span></span>`:` <span class="blp-card-badge--fx">~ ${Ce(t.now)}</span>`);}o.push(`<a class="blp-card-badge blp-card-badge--price" href="${Pe(e.storeUrl)}" target="_blank" rel="noopener noreferrer">${Ce(t)}${a}${n}</a>`);}}if(false!==me.showCardBadgeReview){const t=(s=e.reviews)&&s.total_reviews?`${Math.round(s.total_positive/s.total_reviews*100)}%`:null,a=Xn(e.reviews),n=Yn(e.reviews);if(t)o.push(`<a class="blp-card-badge blp-card-badge--review ${Pe(n)}" href="${Pe(e.storeUrl)}#app_reviews_hash" target="_blank" rel="noopener noreferrer" title="${Pe(a||t)}">${Ce(t)}</a>`);else if(null!=(null==(i=e.metacritic)?void 0:i.score)){const t=e.metacritic.score,a=Un(t);o.push(`<a class="blp-card-badge blp-card-badge--mc${a?` blp-card-badge--mc-${a}`:""}" href="${Pe(e.storeUrl)}" target="_blank" rel="noopener noreferrer" title="${Pe(he.metacritic)}">${Ce(String(t))}</a>`);}}}var s;if(t&&false!==me.showCardBadgeOwned?o.push(`<span class="blp-card-badge blp-card-badge--owned">${Ce(he.steamOwned)}</span>`):a&&false!==me.showCardBadgeWishlist&&o.push(`<span class="blp-card-badge blp-card-badge--wishlist">${Ce(he.steamWishlist)}</span>`),false!==me.showCardBadgeGameStatus&&n&&!n.missing&&n.data){const e=vt(n.data),t=wt(n.data,e),a=n.data.slug||n.slug,r=a?`${R}/${encodeURIComponent(a)}`:R;o.push(`<a class="blp-card-badge blp-card-badge--gs blp-gs-badge--${Pe(e)}" href="${Pe(r)}" target="_blank" rel="noopener noreferrer">${Ce(t)}</a>`);}return o.join("")}const yr=[];let kr=0,Cr=null;function Pr(){for(;kr<3&&yr.length;){const e=yr.shift();kr+=1,Promise.resolve().then(e.fn).then(e.resolve,e.reject).finally(()=>{kr-=1,Pr();});}}function Br(e){return new Promise((t,a)=>{yr.push({fn:e,resolve:t,reject:a}),Pr();})}function xr(e,t){if(e.getAttribute(h)!==t)return  false;const a=e.getAttribute(b);return "done"===a||"empty"===a||"loading"===a}function Dr(e,t,a){e.setAttribute(h,t),e.setAttribute(b,a);}function Tr(e){var t;e.removeAttribute(h),e.removeAttribute(b),null==(t=e.querySelector(".blp-card-badges"))||t.remove();}function Hr(){document.querySelectorAll(".blp-card-badges").forEach(e=>e.remove()),document.querySelectorAll(`[${h}]`).forEach(e=>{e.removeAttribute(h),e.removeAttribute(b);});}async function Ar(e){const t=gr();if(xr(e,t))return;if(!hr())return Tr(e),void Dr(e,t,"empty");const a=Sr(e),n=br(e),r=fr(e,n);if(!(a||n&&r))return Tr(e),void Dr(e,t,"empty");Dr(e,t,"loading");const i=vr(e);i.classList.add("is-loading"),await Br(async()=>{if(e.getAttribute(h)!==t)return;const o=false!==me.showCardBadgeOwned||false!==me.showCardBadgeWishlist,s=false!==me.showCardBadgeGameStatus,l=me.steamCountry||"US",[c,u]=await Promise.all([a?ta(a,l,{includeTags:false}).catch(()=>({found:false})):aa({title:r,slug:n,country:l,includeTags:false}).catch(()=>({found:false})),o?Xt().catch(()=>null):Promise.resolve(null)]);let d=null;if(s&&(null==c?void 0:c.found)&&null!=c.appId&&(d=await St({appId:c.appId,storeUrl:c.storeUrl,name:c.name,title:r||c.name,pageSlug:n}).catch(()=>null)),e.getAttribute(h)!==t)return;let p=false,m=false;if(u&&(null==c?void 0:c.found)&&null!=c.appId){const e=Number(c.appId);p=false!==me.showCardBadgeOwned&&u.owned.has(e),m=!p&&false!==me.showCardBadgeWishlist&&u.wishlist.has(e);}const g=await wr({steam:c,owned:p,wishlist:m,gamestatus:d});if(i.classList.remove("is-loading"),!g)return Dr(e,t,"empty"),void i.remove();i.innerHTML=g,Dr(e,t,"done");});}function Gr(){const e=ga(),t=[];return e.isGamePage?(document.querySelectorAll(`.blp-similar__cover[${f}]`).forEach(e=>{t.push(e);}),t):(document.querySelectorAll(".game-cover").forEach(e=>{e.closest("#game-profile, #game-body, #logging-sidebar-section, .blp-settings-backdrop, .blp-fix-match-backdrop, .blp-export-backdrop")||t.push(e);}),t)}function Lr(e=false){if(!me.showCardBadges||!hr())return Hr(),null==Cr||Cr.disconnect(),void(Cr=null);const t=gr();Cr||(Cr=new IntersectionObserver(e=>{for(const t of e){if(!t.isIntersecting)continue;const e=t.target;Cr.unobserve(e),Ar(e);}},{rootMargin:"240px 0px"})),Gr().forEach(a=>{!e&&xr(a,t)||(e&&Tr(a),Cr.observe(a));});}const _r=Object.freeze(Object.defineProperty({__proto__:null,anyCardBadgeTypeEnabled:hr,get cardActive(){return kr},cardBadgeToken:gr,cardIsSettled:xr,get cardObserver(){return Cr},clearAllCardBadges:Hr,clearCardMarkers:Tr,collectCardCovers:Gr,enqueueCardJob:Br,enrichGameCard:Ar,ensureCardBadgeMount:vr,markCardState:Dr,parseCardAppId:Sr,parseCardSlug:br,parseCardTitle:fr,pumpCardQueue:Pr,renderCardBadgesHtml:wr,scheduleCardBadges:Lr},Symbol.toStringTag,{value:"Module"})),Mr=[{id:"general",labelKey:"sectionGeneral"},{id:"profile",labelKey:"sectionProfile"},{id:"game",labelKey:"sectionGame"},{id:"lists",labelKey:"sectionLists"},{id:"translate",labelKey:"sectionTranslate"},{id:"cache",labelKey:"sectionCache"},{id:"debug",labelKey:"sectionDebug"},{id:"about",labelKey:"sectionAbout"}];function $r(e,t){return `\n    <button\n      type="button"\n      role="switch"\n      aria-checked="${t?"true":"false"}"\n      class="blp-switch${t?" is-on":""}"\n      ${e}\n    ><span class="blp-switch__thumb" aria-hidden="true"></span></button>\n  `}function Ir(e,t,a){const n=a?`<span class="blp-toggle__hint">${Ce(he[a])}</span>`:"";return `\n    <div class="blp-toggle">\n      <span class="blp-toggle__text">\n        <span class="blp-toggle__label">${Ce(he[e])}</span>\n        ${n}\n      </span>\n      ${$r(`data-blp-toggle="${Pe(e)}"`,t)}\n    </div>\n  `}function Er(...e){return `<div class="blp-settings-list">${e.filter(Boolean).join("")}</div>`}function Rr(e,t,...a){const n=t?`<p class="blp-settings__intro">${Ce(he[t])}</p>`:"";return `\n    <section class="blp-settings-group">\n      <header class="blp-settings-group__head">\n        <h3>${Ce(he[e])}</h3>\n        ${n}\n      </header>\n      ${a.filter(Boolean).join("")}\n    </section>\n  `}function Fr(e,t,a,n){return `\n    <div class="blp-field">\n      <label for="${Pe(e)}">${Ce(t)}</label>\n      ${a}\n      ${n?`<p class="blp-hint">${Ce(n)}</p>`:""}\n    </div>\n  `}function Or(e,t,a){return `\n    <div class="blp-settings-backup__item">\n      <button type="button" class="blp-btn" data-blp-settings-${Pe(e)}>\n        ${Ce(he[t])}\n      </button>\n      <p class="blp-hint blp-settings-backup__hint">${Ce(he[a])}</p>\n    </div>\n  `}function Nr(e){const t=function(e){const t=e||"auto";return "auto"===t||V.includes(t)?t:"auto"}(e),a=t.toUpperCase(),n="auto"===t?he.translateAsUi:K[t]||a;return `<span class="blp-settings__tab-badge blp-settings__tab-badge--low" data-blp-translate-tab-badge title="${Pe(n)}" aria-label="${Pe(n)}">${Ce(a)}</span>`}const zr=["cacheGameData","cacheUserProfiles","cacheTranslations","cacheFx"];function Ur(e,t){const a=e===t;return `class="blp-settings__panel${a?" is-active":""}" id="blp-panel-${Pe(e)}" role="tabpanel" aria-labelledby="blp-tab-${Pe(e)}"${a?"":" hidden"}`}function qr({name:e,handle:t,url:a,avatarUrl:n,email:r}){const i=r?`<a class="blp-about__email" href="mailto:${Pe(r)}">${Ce(r)}</a>`:"";return `\n    <div class="blp-about__author-row">\n      <a\n        class="blp-about__avatar-link"\n        href="${Pe(a)}"\n        target="_blank"\n        rel="noopener noreferrer"\n        aria-label="${Pe(e)}"\n      >\n        <img\n          class="blp-about__avatar"\n          src="${Pe(n)}"\n          alt=""\n          width="56"\n          height="56"\n          loading="lazy"\n          decoding="async"\n        />\n      </a>\n      <div class="blp-about__author-info">\n        <a\n          class="blp-about__name"\n          href="${Pe(a)}"\n          target="_blank"\n          rel="noopener noreferrer"\n        >${Ce(e)}</a>\n        <span class="blp-about__handle">@${Ce(t)}</span>\n        ${i}\n      </div>\n    </div>\n  `}function jr({url:e,domain:t,label:a,hint:n}){const r=w.replace("{domain}",encodeURIComponent(t));return `\n    <a\n      class="blp-about__link"\n      href="${Pe(e)}"\n      target="_blank"\n      rel="noopener noreferrer"\n    >\n      <img class="blp-about__link-icon" src="${Pe(r)}" alt="" width="16" height="16" loading="lazy" decoding="async" />\n      <span class="blp-about__link-text">\n        <span class="blp-about__link-label">${Ce(a)}</span>\n        <span class="blp-about__link-hint">${Ce(n)}</span>\n      </span>\n    </a>\n  `}function Wr(e){const t=e.querySelector(".blp-settings__tabs"),a=e.querySelector(".blp-settings__tab-ink"),n=e.querySelector(".blp-settings__tab.is-active");t&&a&&n&&(a.style.width=`${n.offsetWidth}px`,a.style.transform=`translateX(${n.offsetLeft}px)`);}function Jr(e,t){e.classList.toggle("is-on",t),e.setAttribute("aria-checked",t?"true":"false");}function Vr(e,t){var a,n;Mr.some(e=>e.id===t)&&(e.querySelectorAll("[data-blp-tab]").forEach(e=>{const a=e.getAttribute("data-blp-tab")===t;e.classList.toggle("is-active",a),e.setAttribute("aria-selected",a?"true":"false"),e.tabIndex=a?0:-1;}),e.querySelectorAll('[role="tabpanel"]').forEach(e=>{const a=e.id===`blp-panel-${t}`;e.classList.toggle("is-active",a),e.hidden=!a;}),Wr(e),null==(n=null==(a=e.querySelector(".blp-settings__tabs"))?void 0:a.querySelector(".blp-settings__tab.is-active"))||n.scrollIntoView({inline:"nearest",block:"nearest",behavior:"smooth"}));}function Kr({title:e,message:t,confirmLabel:a,danger:n=false,onConfirm:r}){var i,o,s;if(document.querySelector(".blp-confirm-backdrop"))return;const l=document.createElement("div");l.className="blp-confirm-backdrop",l.innerHTML=`\n    <div class="blp-confirm-dialog" role="dialog" aria-modal="true" aria-label="${Pe(e)}">\n      <h3>${Ce(e)}</h3>\n      <p class="blp-hint">${Ce(t)}</p>\n      <div class="blp-actions">\n        <button type="button" class="blp-btn" data-blp-confirm-cancel>${Ce(he.cancel)}</button>\n        <button type="button" class="blp-btn ${n?"blp-danger":"blp-primary"}" data-blp-confirm-ok>${Ce(a)}</button>\n      </div>\n    </div>\n  `;const c=()=>{document.removeEventListener("keydown",u,true),l.remove();},u=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),c());};l.addEventListener("click",e=>{e.target===l&&c();}),null==(i=l.querySelector("[data-blp-confirm-cancel]"))||i.addEventListener("click",c),null==(o=l.querySelector("[data-blp-confirm-ok]"))||o.addEventListener("click",()=>{c(),null==r||r();}),document.body.appendChild(l),document.addEventListener("keydown",u,true),null==(s=l.querySelector("[data-blp-confirm-cancel]"))||s.focus();}function Zr(){var e,t,a,n,r,s,l,c,u,d;if(document.querySelector(".blp-settings-backdrop"))return;const p={...me,links:{...W.links,...me.links||{}}},m=U.map(e=>{const t=false!==p.links[e],a=he[function(e){return {igdb:"linkIgdb",steam:"linkSteam",steamdb:"linkSteamDb",metacritic:"linkMetacritic",opencritic:"linkOpencritic",hltb:"linkHltb",pcgamingwiki:"linkPcgamingwiki",itad:"linkItad",gogdb:"linkGogdb",gameslike:"linkGameslike"}[e]||e}(e)]||e;return `\n      <div class="blp-toggle">\n        <span class="blp-toggle__text">\n          <span class="blp-toggle__label">\n            <img class="blp-favicon" src="${Pe(w.replace("{domain}",encodeURIComponent(q[e]||e)))}" alt="" width="14" height="14" />\n            ${Ce(a)}\n          </span>\n        </span>\n        ${$r(`data-blp-link="${Pe(e)}"`,t)}\n      </div>\n    `}),g=`\n    <select id="blp-ui-locale">\n      <option value="auto" ${"auto"===(p.uiLocale||"auto")?"selected":""}>🌐 ${Ce(he.uiLanguageAuto)}</option>\n      ${V.map(e=>`<option value="${e}" ${p.uiLocale===e?"selected":""}>${Z[e]||""} ${Ce(K[e]||e)}</option>`).join("")}\n    </select>\n  `,h=`\n    <select id="blp-steam-cc">\n      ${j.map(e=>`<option value="${e}" ${p.steamCountry===e?"selected":""}>${e}</option>`).join("")}\n    </select>\n  `,b=`\n    <select id="blp-convert-ccy" ${p.showPriceConvert?"":"disabled"}>\n      ${ct.map(e=>`<option value="${e}" ${(p.convertCurrency||"RUB")===e?"selected":""}>${e}</option>`).join("")}\n    </select>\n  `,f=p.translateTargetLocale||"auto",S=`\n    <select id="blp-translate-locale">\n      <option value="auto" ${"auto"===f?"selected":""}>🌐 ${Ce(he.translateAsUi)}</option>\n      ${V.map(e=>`<option value="${e}" ${f===e?"selected":""}>${Z[e]||""} ${Ce(K[e]||e)}</option>`).join("")}\n    </select>\n  `,v="below"===p.translateDisplayMode?"below":"replace",y=`\n    <select id="blp-translate-mode">\n      <option value="replace" ${"replace"===v?"selected":""}>${Ce(he.translateModeReplace)}</option>\n      <option value="below" ${"below"===v?"selected":""}>${Ce(he.translateModeBelow)}</option>\n    </select>\n  `,k="general",C=document.createElement("div");C.className="blp-settings-backdrop",C.innerHTML=`\n    <div class="blp-settings" role="dialog" aria-modal="true" aria-label="${Pe(he.panelTitle)}">\n      <div class="blp-settings__head">\n        <h2>${Ce(he.panelTitle)} <span class="blp-settings__ver">v${Ce(o)}</span></h2>\n        <p class="blp-settings__sub">${Ce(he.panelSubtitle)}</p>\n      </div>\n      <div class="blp-settings__tabs" role="tablist" aria-label="${Pe(he.panelTitle)}">\n        ${function(e,t){return `<span class="blp-settings__tab-ink" aria-hidden="true"></span>${Mr.map(({id:a,labelKey:n})=>{const r=a===e;let i="";return "cache"===a?i=rt():"translate"===a&&(i=Nr((null==t?void 0:t.translateTargetLocale)||me.translateTargetLocale)),`\n      <button\n        type="button"\n        class="blp-settings__tab${r?" is-active":""}"\n        role="tab"\n        id="blp-tab-${Pe(a)}"\n        data-blp-tab="${Pe(a)}"\n        aria-selected="${r?"true":"false"}"\n        aria-controls="blp-panel-${Pe(a)}"\n        tabindex="${r?"0":"-1"}"\n      ><span class="blp-settings__tab-label">${Ce(he[n])}</span>${i}</button>\n    `}).join("")}`}(k,p)}\n      </div>\n      <div class="blp-settings__body">\n      <div ${Ur("general",k)}>\n      ${Rr("generalGroupLanguage","generalGroupLanguageHint",Er(Fr("blp-ui-locale",he.uiLanguage,g,he.uiLanguageHint)))}\n      ${Rr("generalGroupInterface","generalGroupInterfaceHint",Er(Ir("enhanceHeader",true===p.enhanceHeader,"enhanceHeaderHint"),Ir("hideHomepageFuse",false!==p.hideHomepageFuse,"hideHomepageFuseHint"),Ir("showProfileMenuSettings",true===p.showProfileMenuSettings,"showProfileMenuSettingsHint")))}\n      ${Rr("generalGroupBackup","generalGroupBackupHint",`<div class="blp-settings-list blp-settings-list--stack">\n          <div class="blp-settings-backup">\n            ${Or("export","settingsExport","settingsExportHint")}\n            ${Or("import","settingsImport","settingsImportHint")}\n          </div>\n          <input\n            type="file"\n            accept=".json,application/json,text/json"\n            hidden\n            data-blp-settings-import-file\n          />\n        </div>`)}\n      </div>\n      <div ${Ur("profile",k)}>\n      ${Rr("profileGroupHover","profileGroupHoverHint",Er(Ir("showUserMiniProfile",false!==p.showUserMiniProfile,"showUserMiniProfileHint"),Ir("preloadUserMiniProfile",true===p.preloadUserMiniProfile,"preloadUserMiniProfileHint")))}\n      ${Rr("profileGroupPage","profileGroupPageHint",Er(Ir("showProfilePage",false!==p.showProfilePage,"showProfilePageHint")))}\n      ${Rr("profileGroupBlocks","profileGroupBlocksHint",Er(Ir("showProfileHeader",false!==p.showProfileHeader,"showProfileHeaderHint"),Ir("showProfileTierChip",false!==p.showProfileTierChip,"showProfileTierChipHint"),Ir("showProfileStats",false!==p.showProfileStats,"showProfileStatsHint"),Ir("showProfileNav",false!==p.showProfileNav,"showProfileNavHint"),Ir("showProfileFavorites",false!==p.showProfileFavorites,"showProfileFavoritesHint")))}\n      </div>\n      <div ${Ur("game",k)}>\n      ${Rr("gameGroupSteam",null,Er(Fr("blp-steam-cc",he.steamCountry,h,he.steamCountryHint)),Er(Ir("showPriceConvert",Boolean(p.showPriceConvert),"showPriceConvertHint"),Fr("blp-convert-ccy",he.convertCurrency,b,he.convertCurrencyHint)),Er(Ir("showSteam",p.showSteam),Ir("showSteamOwned",p.showSteamOwned,"showSteamOwnedHint"),Ir("showSteamWishlist",p.showSteamWishlist,"showSteamWishlistHint"),Ir("showSteamTags",p.showSteamTags,"showSteamTagsHint"),Ir("showSteamCategories",p.showSteamCategories,"showSteamCategoriesHint")))}\n      ${Rr("gameGroupScores",null,Er(Ir("showMetacritic",p.showMetacritic),Ir("showOpenCritic",p.showOpenCritic,"showOpenCriticHint"),Ir("showHltb",p.showHltb,"showHltbHint")))}\n      ${Rr("gameGroupCompat",null,Er(Ir("showDeckProton",p.showDeckProton,"showDeckProtonHint"),Ir("showGameStatus",p.showGameStatus,"showGameStatusHint"),Ir("showSteamPlayers",p.showSteamPlayers,"showSteamPlayersHint"),Ir("showSteamDbDetails",p.showSteamDbDetails,"showSteamDbDetailsHint")))}\n      ${Rr("gameGroupMedia",null,Er(Ir("showSteamDbIcon",p.showSteamDbIcon,"showSteamDbIconHint"),Ir("showSteamDbCover",p.showSteamDbCover,"showSteamDbCoverHint"),Ir("showSteamDbGallery",p.showSteamDbGallery,"showSteamDbGalleryHint"),Ir("showSimilarGames",p.showSimilarGames,"showSimilarGamesHint"),Ir("showGameStats",p.showGameStats,"showGameStatsHint")))}\n      ${Rr("gameGroupTools",null,Er(Ir("showExport",p.showExport,"showExportHint"),Ir("showGameId",p.showGameId,"showGameIdHint")))}\n      ${Rr("sectionLinks","sectionLinksHint",Er(Ir("showLinks",p.showLinks),...m))}\n      ${Rr("gameGroupHosts","gameGroupHostsHint",Er(Ir("showSteamPageLink",p.showSteamPageLink,"showSteamPageLinkHint"),Ir("showSteamDbPageLink",p.showSteamDbPageLink,"showSteamDbPageLinkHint")))}\n      </div>\n      <div ${Ur("lists",k)}>\n      ${Rr("sectionLists","sectionListsHint",Er(Ir("showCardBadges",p.showCardBadges,"showCardBadgesHint")))}\n      ${Rr("cardGroupTypes","cardGroupTypesHint",Er(Ir("showCardBadgePrice",p.showCardBadgePrice,"showCardBadgePriceHint"),Ir("showCardBadgeReview",p.showCardBadgeReview,"showCardBadgeReviewHint"),Ir("showCardBadgeOwned",p.showCardBadgeOwned,"showCardBadgeOwnedHint"),Ir("showCardBadgeWishlist",p.showCardBadgeWishlist,"showCardBadgeWishlistHint"),Ir("showCardBadgeGameStatus",p.showCardBadgeGameStatus,"showCardBadgeGameStatusHint")))}\n      </div>\n      <div ${Ur("translate",k)}>\n      ${Rr("sectionTranslate",null,Er(Ir("showTranslate",false!==p.showTranslate,"showTranslateHint"),Fr("blp-translate-locale",he.translateTargetLocale,S,he.translateTargetLocaleHint),Fr("blp-translate-mode",he.translateDisplayMode,y,he.translateDisplayModeHint),Ir("translateDescription",false!==p.translateDescription,"translateDescriptionHint"),Ir("translateReviews",false!==p.translateReviews,"translateReviewsHint"),Ir("translateReviewsAuto",true===p.translateReviewsAuto,"translateReviewsAutoHint")))}\n      </div>\n      <div ${Ur("cache",k)}>\n      ${Rr("sectionCache","sectionCacheHint",`<div class="blp-settings-list blp-settings-list--stack">\n          ${it()}\n        </div>`)}\n      ${Rr("sectionCacheDuration",null,`<div class="blp-settings-list blp-settings-list--stack">\n          ${Fr("blp-cache-hours",he.cacheHours,`<input id="blp-cache-hours" type="number" min="0" max="168" value="${Number(p.cacheHours)||0}" />`,he.cacheHoursHint)}\n        </div>`)}\n      ${Rr("sectionCacheSources","sectionCacheSourcesHint",Er(Ir("cacheGameData",false!==p.cacheGameData,"cacheGameDataHint"),Ir("cacheUserProfiles",false!==p.cacheUserProfiles,"cacheUserProfilesHint"),Ir("cacheTranslations",false!==p.cacheTranslations,"cacheTranslationsHint"),Ir("cacheFx",false!==p.cacheFx,"cacheFxHint")))}\n      ${Rr("sectionCacheClear",null,`<div class="blp-settings-list blp-settings-list--stack">\n          <div class="blp-settings-list__actions">\n            <button type="button" class="blp-btn" data-blp-clear>${Ce(he.clearCache)}</button>\n            <p class="blp-hint">${Ce(he.cacheClearHint)}</p>\n          </div>\n        </div>`)}\n      </div>\n      <div ${Ur("debug",k)}>\n      ${Rr("sectionDebug",null,Er(Ir("debugMode",p.debugMode,"debugModeHint")))}\n      </div>\n      <div ${Ur("about",k)}>\n      ${function(){const e=i.length?Rr("aboutContributors","aboutContributorsThanks",`\n          <div class="blp-settings-list blp-settings-list--stack blp-about__people-card">\n            <div class="blp-about__people">\n              ${i.map(e=>qr(e)).join("")}\n            </div>\n          </div>\n        `):"";return `\n    ${Rr("sectionAbout",null,`\n        <div class="blp-settings-list blp-settings-list--stack blp-about__script">\n          <p class="blp-about__desc">${Ce(he.aboutDescription)}</p>\n          <div class="blp-about__meta">\n            <span class="blp-about__chip">v${Ce(o)}</span>\n            <span class="blp-about__chip">${Ce(he.aboutLicense)}</span>\n          </div>\n          ${jr({url:"https://github.com/NemoKing1210/backloggd-plus",domain:"github.com",label:he.aboutRepo,hint:he.repoAbout})}\n          <p class="blp-about__note blp-about__note--contribute">${Ce(he.aboutContributeBody)}</p>\n        </div>\n      `)}\n    ${Rr("aboutAuthor",null,`\n        <div class="blp-settings-list blp-settings-list--stack blp-about__author">\n          ${qr({name:"NemoKing",handle:"NemoKing1210",url:"https://github.com/NemoKing1210",avatarUrl:"https://avatars.githubusercontent.com/u/58397369?s=96&v=4",email:"[email protected]"})}\n          ${jr({url:"https://backloggd.com/u/NemoKing/",domain:"backloggd.com",label:he.aboutBackloggd,hint:X(he.aboutBackloggdHint,{user:"NemoKing"})})}\n          <p class="blp-about__note">${Ce(he.aboutBackloggdNote)}</p>\n        </div>\n      `)}\n    ${e}\n  `}()}\n      </div>\n      </div>\n      <div class="blp-settings__foot">\n        <div class="blp-actions blp-actions--start">\n          <button type="button" data-blp-reset>${Ce(he.resetSettings)}</button>\n        </div>\n        <div class="blp-actions">\n          <button type="button" data-blp-cancel>${Ce(he.cancel)}</button>\n          <button type="button" class="blp-primary" data-blp-save>${Ce(he.saveReload)}</button>\n        </div>\n      </div>\n    </div>\n  `;const P=document.documentElement.style.overflow;document.documentElement.style.overflow="hidden";const B=()=>{if("1"===C.dataset.blpClosing)return;C.dataset.blpClosing="1",C.classList.remove("is-open"),document.removeEventListener("keydown",D,true),window.removeEventListener("resize",T);let e=false;const t=()=>{e||(e=true,C.remove(),document.documentElement.style.overflow=P);};C.addEventListener("transitionend",t,{once:true}),setTimeout(t,240);},x=C.querySelector(".blp-settings"),D=e=>{if("Escape"===e.key){if(document.querySelector(".blp-confirm-backdrop"))return;e.preventDefault(),B();}},T=()=>Wr(x);window.addEventListener("resize",T),C.addEventListener("click",e=>{e.target===C&&B();}),null==(e=C.querySelector("[data-blp-cancel]"))||e.addEventListener("click",B),null==(t=C.querySelector("#blp-translate-locale"))||t.addEventListener("change",e=>{var t;!function(e,t){var a;const n=null==(a=null==e?void 0:e.querySelector)?void 0:a.call(e,"[data-blp-translate-tab-badge]");if(!n)return;const r=document.createElement("div");r.innerHTML=Nr(t).trim();const i=r.firstElementChild;i&&n.replaceWith(i);}(C,null==(t=e.target)?void 0:t.value),Wr(x);}),null==(a=null==x?void 0:x.querySelector(".blp-settings__tabs"))||a.addEventListener("click",e=>{var t,a;const n=null==(a=null==(t=e.target)?void 0:t.closest)?void 0:a.call(t,"[data-blp-tab]");n&&x.contains(n)&&Vr(x,n.getAttribute("data-blp-tab"));}),null==(n=null==x?void 0:x.querySelector(".blp-settings__tabs"))||n.addEventListener("keydown",e=>{var t,a;const n=[...x.querySelectorAll("[data-blp-tab]")],r=null==(a=null==(t=e.target)?void 0:t.closest)?void 0:a.call(t,"[data-blp-tab]");if(!r||!n.length)return;const i=n.indexOf(r);if(i<0)return;let o=-1;if("ArrowRight"===e.key||"ArrowDown"===e.key?o=(i+1)%n.length:"ArrowLeft"===e.key||"ArrowUp"===e.key?o=(i-1+n.length)%n.length:"Home"===e.key?o=0:"End"===e.key&&(o=n.length-1),o<0)return;e.preventDefault();const s=n[o].getAttribute("data-blp-tab");Vr(x,s),n[o].focus();}),null==(r=null==x?void 0:x.querySelector(".blp-settings__tabs"))||r.addEventListener("scroll",()=>Wr(x),{passive:true}),C.querySelectorAll("[data-blp-toggle]").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const a=e.getAttribute("data-blp-toggle");if(p[a]=!p[a],Jr(e,p[a]),"showPriceConvert"===a){const e=C.querySelector("#blp-convert-ccy");e&&(e.disabled=!p.showPriceConvert);}"cacheGameData"!==a&&"cacheUserProfiles"!==a&&"cacheTranslations"!==a&&"cacheFx"!==a||(function(e,t){const a={};for(const n of zr)a[n]=me[n],me[n]=false!==t[n];try{ot(e);}finally{for(const e of zr)me[e]=a[e];}}(C,p),Wr(x));});}),C.querySelectorAll("[data-blp-link]").forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const a=e.getAttribute("data-blp-link");p.links[a]=!p.links[a],Jr(e,p.links[a]);});}),C.querySelectorAll(".blp-toggle").forEach(e=>{e.addEventListener("click",t=>{var a;t.target.closest(".blp-switch, a, select, input, button")||null==(a=e.querySelector(".blp-switch"))||a.click();});}),null==(s=C.querySelector("[data-blp-clear]"))||s.addEventListener("click",()=>{const e=st();ot(C),Wr(x),$a(e?X(he.cacheCleared,{count:e}):he.cacheEmpty,{type:e?"success":"info",title:e?he.toastCacheClearedTitle:he.cacheEmptyTitle});}),null==(l=C.querySelector("[data-blp-settings-export]"))||l.addEventListener("click",()=>{var e,t,a,n,r,i;try{const s=null==(e=C.querySelector("#blp-steam-cc"))?void 0:e.value,l=Number(null==(t=C.querySelector("#blp-cache-hours"))?void 0:t.value),c=null==(a=C.querySelector("#blp-ui-locale"))?void 0:a.value,u=null==(n=C.querySelector("#blp-translate-locale"))?void 0:n.value,d=null==(r=C.querySelector("#blp-translate-mode"))?void 0:r.value,m=null==(i=C.querySelector("#blp-convert-ccy"))?void 0:i.value,g={...p,links:{...p.links}};null!=c&&(g.uiLocale=c),null!=u&&(g.translateTargetLocale=u),null!=d&&(g.translateDisplayMode=d),null!=s&&(g.steamCountry=s),null!=m&&(g.convertCurrency=m),Number.isFinite(l)&&(g.cacheHours=l),function(e,t){const a=`${JSON.stringify(t,null,2)}\n`,n=new Blob([a],{type:"application/json;charset=utf-8"}),r=URL.createObjectURL(n),i=document.createElement("a");i.href=r,i.download=e,i.rel="noopener",document.body.appendChild(i),i.click(),i.remove(),window.setTimeout(()=>URL.revokeObjectURL(r),2e3);}(function(e=new Date){return `backloggd-plus-settings-${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}.json`}(),function(e=le()){const{settings:t}=pe(e);return {kind:Q,version:1,scriptVersion:o,exportedAt:(new Date).toISOString(),settings:t}}(g)),$a(he.toastSettingsExported,{type:"success",title:he.toastSettingsExportedTitle});}catch(s){$a(he.toastSettingsExportFailed,{type:"error",title:he.toastSettingsExportFailedTitle});}});const H=C.querySelector("[data-blp-settings-import-file]"),A=async e=>{var t;if(e)try{const a=await function(e){return new Promise((t,a)=>{const n=new FileReader;n.onload=()=>t(String(n.result||"")),n.onerror=()=>a(n.error||new Error("read failed")),n.readAsText(e);})}(e),n=function(e,t=0){if(t>ee)return {ok:!1,code:"too_large"};const a=String(null!=e?e:"").replace(/^\uFEFF/,"").trim();if(!a)return {ok:!1,code:"empty"};if(a.length>ee)return {ok:!1,code:"too_large"};let n;try{n=JSON.parse(a);}catch(c){return {ok:!1,code:"invalid_json"}}const{raw:r,meta:i}=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return {raw:null,meta:{}};if(e.kind===Q&&e.settings&&"object"==typeof e.settings&&!Array.isArray(e.settings))return {raw:e.settings,meta:{kind:e.kind,formatVersion:e.version,scriptVersion:e.scriptVersion,exportedAt:e.exportedAt}};for(const t of ["settings","data","preferences","config"]){const a=e[t];if(a&&"object"==typeof a&&!Array.isArray(a))return {raw:a,meta:{kind:"string"==typeof e.kind?e.kind:null,formatVersion:e.version,scriptVersion:e.scriptVersion,exportedAt:e.exportedAt}}}return {raw:e,meta:{}}}(n);if(!function(e){return !(!e||"object"!=typeof e||Array.isArray(e))&&(!(!e.links||"object"!=typeof e.links||Array.isArray(e.links))||Object.keys(W).some(t=>"links"!==t&&t in e))}(r))return {ok:!1,code:"not_settings"};const{settings:o,appliedKeys:s,ignoredKeys:l}=pe(r);return 0===s.length?{ok:!1,code:"empty"}:{ok:!0,settings:o,appliedKeys:s,ignoredKeys:l,meta:i}}(a,e.size||0);if(!n.ok)return void $a((t=n.code,"too_large"===t?he.toastSettingsImportTooLarge:"empty"===t?he.toastSettingsImportEmpty:"invalid_json"===t||"not_settings"===t?he.toastSettingsImportInvalid:he.toastSettingsImportReadFailed),{type:"error",title:he.toastSettingsImportFailedTitle});Kr({title:he.settingsImportConfirmTitle,message:he.settingsImportConfirm,confirmLabel:he.settingsImportConfirmAction,danger:!0,onConfirm:()=>(e=>{ce(e.settings),we(),et(),Ia(he.toastSettingsImported,{type:"success",title:he.toastSettingsImportedTitle}),location.reload();})(n)});}catch(a){$a(he.toastSettingsImportReadFailed,{type:"error",title:he.toastSettingsImportFailedTitle});}};null==(c=C.querySelector("[data-blp-settings-import]"))||c.addEventListener("click",()=>{H&&(H.value="",H.click());}),null==H||H.addEventListener("change",()=>{var e;const t=null==(e=H.files)?void 0:e[0];A(t);}),null==(u=C.querySelector("[data-blp-reset]"))||u.addEventListener("click",()=>{Kr({title:he.resetSettingsConfirmTitle,message:he.resetSettingsConfirm,confirmLabel:he.resetSettingsConfirmAction,danger:true,onConfirm:()=>{ce(se()),we(),Ia(he.toastSettingsReset,{type:"success",title:he.toastSettingsResetTitle}),location.reload();}});}),null==(d=C.querySelector("[data-blp-save]"))||d.addEventListener("click",()=>{var e,t,a,n,r,i;const o=(null==(e=C.querySelector("#blp-steam-cc"))?void 0:e.value)||"US",s=Number(null==(t=C.querySelector("#blp-cache-hours"))?void 0:t.value),l=(null==(a=C.querySelector("#blp-ui-locale"))?void 0:a.value)||"auto";p.uiLocale="auto"===l||V.includes(l)?l:"auto";const c=(null==(n=C.querySelector("#blp-translate-locale"))?void 0:n.value)||"auto";p.translateTargetLocale="auto"===c||V.includes(c)?c:"auto";const u=(null==(r=C.querySelector("#blp-translate-mode"))?void 0:r.value)||"replace";p.translateDisplayMode="below"===u?"below":"replace",p.steamCountry=String(o).toUpperCase();const d=(null==(i=C.querySelector("#blp-convert-ccy"))?void 0:i.value)||"RUB";p.convertCurrency=String(d).toUpperCase(),p.showPriceConvert=Boolean(p.showPriceConvert),p.cacheHours=Number.isFinite(s)?Math.max(0,Math.min(168,s)):W.cacheHours,p.cacheGameData=false!==p.cacheGameData,p.cacheUserProfiles=false!==p.cacheUserProfiles,p.cacheTranslations=false!==p.cacheTranslations,p.cacheFx=false!==p.cacheFx,ce(p),we(),et(),Ia(he.toastSettingsSaved,{type:"success",title:he.toastSettingsSavedTitle}),location.reload();}),document.body.appendChild(C),document.addEventListener("keydown",D,true),requestAnimationFrame(()=>{C.classList.add("is-open"),Wr(x);});}const Yr="blp-nav-settings",Xr="blp-profile-menu-settings";function Qr(){!function(){const e=document.getElementById(Xr);if(true!==me.showProfileMenuSettings)return void(null==e||e.remove());if(e)return;const t=document.querySelector("#profile-li .dropdown-menu")||document.querySelector("#navbarDropdown + .dropdown-menu");if(!t)return;const a=document.createElement("a");a.id=Xr,a.className="dropdown-item py-1",a.href="#",a.textContent=he.navSettings,a.title=he.navSettingsTitle,a.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),Zr();});const n=t.querySelector('a.dropdown-item[href="/settings/"], a.dropdown-item[href="/settings"]');if(n)return void n.insertAdjacentElement("beforebegin",a);const r=t.querySelector('a.dropdown-item[href="/users/sign_out"], a.dropdown-item[href="/users/sign_out/"]');r?r.insertAdjacentElement("beforebegin",a):t.appendChild(a);}();const e=document.getElementById(Yr);if(true===me.showProfileMenuSettings)return void(null==e||e.remove());if(e)return;const t=document.createElement("button");t.id=Yr,t.type="button",t.className="btn btn-main mb-2 my-sm-0 py-0",t.title=he.navSettingsTitle,t.innerHTML=`<i class="fa-solid fa-gear fa-xs" aria-hidden="true"></i> ${Ce(he.navSettings)}`,t.addEventListener("click",e=>{e.preventDefault(),Zr();});const a=document.getElementById("add-a-game");if(null==a?void 0:a.parentElement){t.classList.add("ml-2");const e=a.getBoundingClientRect().height;return e>0&&document.documentElement.style.setProperty("--blp-nav-btn-h",`${Math.round(e)}px`),void a.insertAdjacentElement("afterend",t)}const n=document.querySelector("#navbarSupportedContent .col.my-auto, #primary-nav .col.my-auto");if(n)return t.classList.add("ml-2"),void n.appendChild(t);const r=document.querySelector("#navbarSupportedContent > ul.navbar-nav")||document.querySelector("#primary-nav ul.navbar-nav.ml-auto");if(!r)return;const i=document.createElement("li");i.className="nav-item my-auto",i.appendChild(t),r.appendChild(i);}const ei="data-blp-hide-homepage-fuse",ti="data-blp-floating-header",ai="data-blp-header-compact";let ni=false;function ri(){document.documentElement.hasAttribute(ti)&&document.documentElement.toggleAttribute(ai,window.scrollY>12);}function ii(e){return `user:profile:${String(e||"").trim().toLowerCase()}`}function oi(e){const t=Math.max(0,Number(e)||0);let a=y[0];for(const n of y)t>=n.min&&(a=n);return {...a,gamesPlayed:t}}function si(e){return e?e.tierId?e.tierId:oi(e.gamesPlayed).id:"rookie"}function li(e){(null==e?void 0:e.username)&&Re(ii(e.username),e,{ttlMs:216e5});}function ci(e){const t=String(e||"").match(/\/u\/([^/?#]+)/i);if(!t)return "";try{return decodeURIComponent(t[1]).trim()}catch(a){return t[1].trim()}}function ui(e,t="https://www.backloggd.com/"){const a=String(e||"").trim();if(!a||a.startsWith("data:"))return "";try{return new URL(a,t).href}catch(n){return ""}}function di(e){return String(e||"").replace(/\/t_cover_big(_2x)?\//i,"/t_cover_small/")}function pi(e){return ((null==e?void 0:e.textContent)||"").replace(/\s+/g," ").trim()}function mi(e){const t=String(e||"").replace(/[^\d]/g,"");return t&&Number.parseInt(t,10)||0}function gi(e){const t=[];for(const a of e.querySelectorAll(".badges .backlog-badge-cus-col")||[]){const n=a.querySelector(".badge-tooltip"),r=(null==n?void 0:n.getAttribute("badge_id"))||"",i=r?e.getElementById(`badge-${r}`):null,o=pi((null==i?void 0:i.querySelector(".badge-title"))||a.querySelector(".badge-title")),s=pi((null==i?void 0:i.querySelector(".badge-desc"))||a.querySelector(".badge-desc")),l=a.querySelector(".badge-image img"),c=ui((null==l?void 0:l.getAttribute("src"))||"");if((o||c)&&(t.push({id:r,title:o,desc:s,imageUrl:c}),t.length>=6))break}return t}function hi(e,t){var a,n;if(!e)return [];const r=[],i=new Set;for(const o of e.querySelectorAll(".game-cover")||[]){const e=o.querySelector('a.cover-link[href*="/games/"]')||o.querySelector('a[href*="/games/"]')||o.closest('a[href*="/games/"]')||(null==(n=null==(a=o.parentElement)?void 0:a.querySelector)?void 0:n.call(a,'a[href*="/games/"]')),s=ui((null==e?void 0:e.getAttribute("href"))||""),l=s.match(/\/games\/([^/?#]+)/i),c=l?l[1].toLowerCase():"";if(!c||i.has(c))continue;i.add(c);const u=o.querySelector("img"),d=pi(o.querySelector(".game-text-centered"))||((null==u?void 0:u.getAttribute("alt"))||"").trim()||c.replace(/-/g," "),p=di(ui((null==u?void 0:u.getAttribute("data-src"))||(null==u?void 0:u.getAttribute("src"))||""));if(r.push({slug:c,title:d,coverUrl:p,href:s||`/games/${c}/`}),r.length>=t)break}return r}function bi(e){const t=e.querySelector("#bio-body");if(!t)return "";const a=t.querySelector("i.text-color-secondary");if(a&&/nothing here/i.test(pi(a)))return "";const n=t.cloneNode(true);return n.querySelectorAll("script, style").forEach(e=>e.remove()),pi(n).slice(0,280)}function fi(e,t=""){var a,n,r,i;if(!e)return null;const o=pi(e.querySelector("#profile-header h3.main-header"))||String(t||"").trim();if(!o)return null;const s=e.querySelector("#profile-header .avatar img")||e.querySelector('meta[property="og:image"]'),l=ui((null==(a=null==s?void 0:s.getAttribute)?void 0:a.call(s,"src"))||(null==(n=null==s?void 0:s.getAttribute)?void 0:n.call(s,"content"))||""),c=(null==(r=e.querySelector("button.friend-btn[user_id]"))?void 0:r.getAttribute("user_id"))||(null==(i=e.querySelector("button.report-btn[user_id]"))?void 0:i.getAttribute("user_id"))||"",u=Number(c)||null,d=function(e){const t={gamesPlayed:0,playedYear:0,playedYearLabel:"",backlog:0},a=[...e.querySelectorAll("#profile-stats > div")||[]];for(const n of a){const e=pi(n.querySelector("h4")).replace(/\s+/g," "),a=mi(pi(n.querySelector("h1")));/games played/i.test(e)?t.gamesPlayed=a:/backlog/i.test(e)?t.backlog=a:/played in/i.test(e)&&(t.playedYear=a,t.playedYearLabel=e);}return t}(e),p=function(e){return [...e.querySelectorAll("#ratings-bars-height .top-tooltip")||[]].map((e,t)=>{var a;const n=e.getAttribute("data-tippy-content")||"",r=n.match(/^(\d+)\s*\|\s*([\d.]+)/),i=r&&Number(r[1])||0,o=r&&Number(r[2])||.5*(t+1),s=n.match(/\(([\d.]+)%\)/),l=s&&Number(s[1])||0,c=e.querySelector(".bar-h"),u=(null==(a=null==c?void 0:c.style)?void 0:a.height)||"";return {stars:o,count:i,pct:l,height:Number.parseFloat(u)||0}})}(e),m=p.reduce((e,t)=>e+(t.count||0),0),g=p.reduce((e,t)=>e+(t.count||0)*(t.stars||0),0),h=m>0?Math.round(g/m*10)/10:null,b=oi(d.gamesPlayed);return {username:o,userId:u,avatarUrl:l,bio:bi(e),gamesPlayed:d.gamesPlayed,playedYear:d.playedYear,playedYearLabel:d.playedYearLabel,backlog:d.backlog,ratings:p,ratedCount:m,avgRating:h,badges:gi(e),favorites:hi(e.querySelector("#profile-favorites"),5),recent:hi(e.querySelector("#profile-journal"),4),profileUrl:`/u/${encodeURIComponent(o)}/`,tierId:b.id,tierMin:b.min}}function Si(e){const t=String(e||"").trim();if(!t)return null;const a=Ee(ii(t));return (null==a?void 0:a.username)?a:null}async function vi(e){const t=String(e||"").trim();if(!t)return null;const a=ii(t),n=Ee(a);if(null==n?void 0:n.username)return Fe(n);if(Se.has(a))return Se.get(a);const r=(async()=>{const e=`https://www.backloggd.com/u/${encodeURIComponent(t)}/`,a=function(e,t=""){return fi((new DOMParser).parseFromString(String(e||""),"text/html"),t)}(await lt({url:e,method:"GET",responseType:"text",anonymous:false,headers:{Accept:"text/html","Cache-Control":"no-cache"}}),t);return a?(li(a),Oe(a)):null})().catch(()=>null);Se.set(a,r);try{return await r}finally{Se.delete(a);}}const wi="data-blp-profile-hover",yi="data-blp-ump",ki="data-blp-ump-tier",Ci="data-blp-ump-preload",Pi="data-blp-ump-loading",Bi="blp-ump-avatar-spin",xi="blp-user-mini-profile";let Di=false,Ti=0,Hi=0,Ai=0,Gi=null,Li=null,_i="",Mi=null,$i=0,Ii=0;const Ei=[];let Ri=null;const Fi=new Set,Oi=new Set,Ni=new Map;function zi(e){const t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3==0?0:1)}k`:String(t)}function Ui(){return Mi&&document.body.contains(Mi)||(Mi=document.createElement("div"),Mi.id=xi,Mi.className="blp-ump",Mi.setAttribute("role","dialog"),Mi.setAttribute("aria-hidden","true"),Mi.addEventListener("pointerenter",()=>{window.clearTimeout(Hi);}),Mi.addEventListener("pointerleave",()=>{co();}),document.body.appendChild(Mi)),Mi}function qi(){window.clearTimeout(Ai),Mi&&Gi&&(Mi.removeEventListener("transitionend",Gi),Gi=null),Mi&&(Mi.classList.remove("is-open","is-leaving","is-loading","is-ready"),Mi.setAttribute("aria-hidden","true"),Mi.innerHTML="",Li=null,_i="");}function ji({immediate:e=false}={}){if(!Mi)return;window.clearTimeout(Ai),Gi&&(Mi.removeEventListener("transitionend",Gi),Gi=null);const t=Mi.classList.contains("is-open");!e&&t?(Mi.classList.add("is-leaving"),Mi.classList.remove("is-open","is-loading","is-ready"),Mi.setAttribute("aria-hidden","true"),Gi=e=>{e.target===Mi&&("opacity"!==e.propertyName&&"transform"!==e.propertyName||qi());},Mi.addEventListener("transitionend",Gi),Ai=window.setTimeout(qi,300)):qi();}function Wi(e){window.clearTimeout(Ai),Gi&&(e.removeEventListener("transitionend",Gi),Gi=null),e.classList.remove("is-leaving"),e.classList.contains("is-open"),e.classList.add("is-open"),e.setAttribute("aria-hidden","false"),requestAnimationFrame(()=>{e.classList.add("is-ready");});}function Ji(e){const t=Ui(),a=e.getBoundingClientRect(),n=t.offsetWidth||300,r=t.offsetHeight||420;let i=a.right+10,o=a.top+a.height/2-r/2;i+n>window.innerWidth-12&&(i=a.left-n-10),i<12&&(i=Math.max(12,Math.min(window.innerWidth-n-12,a.left+a.width/2-n/2)),o=a.bottom+10,o+r>window.innerHeight-12&&(o=a.top-r-10)),o=Math.max(12,Math.min(window.innerHeight-r-12,o)),t.style.left=`${Math.round(i)}px`,t.style.top=`${Math.round(o)}px`;}function Vi(e,t,a=5){if(!Array.isArray(e)||!e.length)return "";const n=e.map(e=>{const t=e.coverUrl?`<img src="${Pe(e.coverUrl)}" alt="" loading="lazy" decoding="async">`:'<span class="blp-ump__cover-ph"></span>';return `<a class="blp-ump__cover" href="${Pe(e.href)}" title="${Pe(e.title)}" data-turbo-frame="_top">${t}</a>`}).join("");return `<div class="blp-ump__section"><div class="blp-ump__section-label">${Ce(t)}</div><div class="blp-ump__covers" style="--ump-slots:${a}">${n}</div></div>`}function Ki(e=""){return `<span class="blp-ump__bone ${e}" aria-hidden="true"></span>`}function Zi(e){const t=si(e),a=e.bio?`<p class="blp-ump__bio">${Ce(e.bio)}</p>`:"",n=null!=e.avgRating?`<span class="blp-ump__avg" title="${Pe(he.miniProfileAvgRating)}">${Ce(String(e.avgRating))}★</span>`:"";return `\n    <div class="blp-ump__card blp-ump__card--${Pe(t)}">\n      <div class="blp-ump__shine" aria-hidden="true"></div>\n      <div class="blp-ump__foil" aria-hidden="true"></div>\n      <div class="blp-ump__top">\n        <span class="blp-ump__tier-pill">${Ce(function(e){return {rookie:he.miniProfileTierRookie,bronze:he.miniProfileTierBronze,silver:he.miniProfileTierSilver,gold:he.miniProfileTierGold,platinum:he.miniProfileTierPlatinum,diamond:he.miniProfileTierDiamond,master:he.miniProfileTierMaster,legend:he.miniProfileTierLegend}[e]||he.miniProfileTierRookie}(t))}</span>\n        ${n}\n      </div>\n      <a class="blp-ump__avatar-link" href="${Pe(e.profileUrl)}" data-turbo-frame="_top">\n        <div class="blp-ump__avatar">\n          ${e.avatarUrl?`<img src="${Pe(e.avatarUrl)}" alt="" loading="lazy" decoding="async">`:""}\n        </div>\n      </a>\n      <a class="blp-ump__name" href="${Pe(e.profileUrl)}" data-turbo-frame="_top">${Ce(e.username)}</a>\n      <div class="blp-ump__tier-sub">${Ce(String(he.miniProfileTierSub||"").replace("{count}",zi(e.gamesPlayed)))}</div>\n      <div class="blp-ump__stats">\n        <div class="blp-ump__stat">\n          <strong>${Ce(zi(e.gamesPlayed))}</strong>\n          <span>${Ce(he.miniProfilePlayed)}</span>\n        </div>\n        <div class="blp-ump__stat">\n          <strong>${Ce(zi(e.playedYear))}</strong>\n          <span>${Ce(he.miniProfileThisYear)}</span>\n        </div>\n        <div class="blp-ump__stat">\n          <strong>${Ce(zi(e.backlog))}</strong>\n          <span>${Ce(he.miniProfileBacklog)}</span>\n        </div>\n      </div>\n      ${function(e){if(!Array.isArray(e)||!e.length)return "";const t=Math.max(...e.map(e=>e.height||0),1);return `<div class="blp-ump__ratings" aria-hidden="true">${e.map(e=>`<span class="blp-ump__bar" style="--h:${Math.max(6,Math.round((e.height||0)/t*100))}%" title="${Pe(`${e.count} · ${e.stars}★`)}"></span>`).join("")}</div>`}(e.ratings)}\n      ${a}\n      ${Vi(e.favorites,he.miniProfileFavorites,5)}\n      ${Vi(e.recent,he.miniProfileRecent,4)}\n      ${function(e){if(!Array.isArray(e)||!e.length)return "";const t=e.map(e=>{const t=[e.title,e.desc].filter(Boolean).join(" — "),a=e.imageUrl?`<img src="${Pe(e.imageUrl)}" alt="" loading="lazy">`:"";return `<span class="blp-ump__badge" title="${Pe(t)}">${a}</span>`}).join("");return `<div class="blp-ump__section"><div class="blp-ump__section-label">${Ce(he.miniProfileBadges)}</div><div class="blp-ump__badges">${t}</div></div>`}(e.badges)}\n      <a class="blp-ump__cta" href="${Pe(e.profileUrl)}" data-turbo-frame="_top">${Ce(he.miniProfileViewProfile)}</a>\n    </div>\n  `}function Yi(e,t){var a,n;if(!(null==e?void 0:e.setAttribute))return;const r=function(e){var t;return e.querySelector(".overflow-wrapper")||(null==(t=e.querySelector("img"))?void 0:t.parentElement)||e}(e);if(t){if(e.setAttribute(Pi,"1"),!r.querySelector(`.${Bi}`)){const e=document.createElement("span");e.className=Bi,e.setAttribute("aria-hidden","true"),r.appendChild(e);}}else e.removeAttribute(Pi),null==(a=r.querySelector(`.${Bi}`))||a.remove(),r!==e&&(null==(n=e.querySelector(`.${Bi}`))||n.remove());}function Xi(e,t){const a=String(e||"").toLowerCase();a&&document.querySelectorAll(`a[${yi}]`).forEach(e=>{ci(e.getAttribute("href")||e.href).toLowerCase()===a&&Yi(e,t);});}function Qi(e,t){const a=String(e||"").trim().toLowerCase();if(a)return t?(Oi.has(a)||Oi.add(a),void Xi(e,true)):void(Oi.has(a)&&(Oi.delete(a),Xi(e,false)))}function eo(e){const t=String(e||"").trim();if(!t)return Promise.resolve(null);const a=t.toLowerCase(),n=Si(t);if(n)return Qi(t,false),Promise.resolve(n);let r=Ni.get(a);return r?(Qi(t,true),r):(Qi(t,true),r=(i=()=>vi(t),new Promise(e=>{const t=async()=>{Ii+=1;try{e(await i());}finally{Ii-=1;const e=Ei.shift();e&&e();}};Ii<2?t():Ei.push(t);})).then(e=>(e&&ro(t,si(e)),e)).finally(()=>{Ni.delete(a),Qi(t,false);}),Ni.set(a,r),r);var i;}function to(e){(null==e?void 0:e.removeAttribute)&&(Yi(e,false),e.removeAttribute(yi),e.removeAttribute(ki),e.removeAttribute(wi),e.removeAttribute(Ci));}function ao(e){if(!e||1!==e.nodeType)return  false;if(e.closest(`#${xi}, .blp-ump, .blp-settings-backdrop, #primary-nav, #profile-header`))return  false;if(e.closest(".badge-tooltip, .badges, .backlog-badge-cus-col, .badge-image"))return  false;const t=e.getAttribute("href")||e.href||"";return !!function(e){const t=String(e||"").trim();if(!t)return  false;try{const e=new URL(t,"https://www.backloggd.com/").pathname;return /^\/u\/[^/]+\/?$/i.test(e)}catch(a){return /^\/u\/[^/?#]+\/?$/i.test(t.split(/[?#]/,2)[0])}}(t)&&!!e.querySelector("img")&&Boolean(ci(t))}function no(e){if(!ao(e))return to(e),null;const t=ci(e.getAttribute("href")||e.href);if(!t)return to(e),null;e.setAttribute(yi,"1");const a=Si(t);return a?(e.setAttribute(ki,si(a)),Yi(e,false)):e.hasAttribute(ki),Oi.has(t.toLowerCase())&&Yi(e,true),{anchor:e,username:t}}function ro(e,t){const a=String(e||"").toLowerCase();a&&t&&document.querySelectorAll(`a[${yi}]`).forEach(e=>{ci(e.getAttribute("href")||e.href).toLowerCase()===a&&e.setAttribute(ki,t);});}function io(){Oi.clear(),Ni.clear(),document.querySelectorAll(`a[${yi}], a[${ki}], a[${wi}], a[${Ci}], a[${Pi}]`).forEach(to);}function oo(){null==Ri||Ri.disconnect(),Ri=null;}function so(e){const t=String(e||"").trim();if(!t)return;const a=t.toLowerCase();Si(t)||Fi.has(a)||(Fi.add(a),eo(t));}const lo=Ha(()=>function(e=document){if(false===me.showUserMiniProfile)return io(),void oo();(e.querySelectorAll?e:document).querySelectorAll('a[href*="/u/"]').forEach(e=>{no(e);}),function(){if(false===me.showUserMiniProfile||true!==me.preloadUserMiniProfile)return void oo();const e=Ri||(Ri=new IntersectionObserver(e=>{for(const t of e){if(!t.isIntersecting)continue;const e=t.target;Ri.unobserve(e);const a=ci(e.getAttribute("href")||e.href);a&&so(a);}},{rootMargin:"160px 0px",threshold:.01}),Ri);document.querySelectorAll(`a[${yi}]`).forEach(t=>{if("1"===t.getAttribute(Ci))return;const a=ci(t.getAttribute("href")||t.href);if(!a)return;const n=Si(a);if(n)return ro(a,si(n)),void t.setAttribute(Ci,"1");t.setAttribute(Ci,"1"),e.observe(t);});}();}(),120);function co(){window.clearTimeout(Ti),window.clearTimeout(Hi),Hi=window.setTimeout(()=>{ji();},180);}function uo(e){var t,a;if(!e||1!==e.nodeType)return null;if(null==(t=e.closest)?void 0:t.call(e,`#${xi}, .blp-ump, .blp-settings-backdrop, #primary-nav`))return null;const n=null==(a=e.closest)?void 0:a.call(e,'a[href*="/u/"]');if(!n||!ao(n))return null;const r=ci(n.getAttribute("href")||n.href);return r?{anchor:n,username:r}:null}function po(e){if(false===me.showUserMiniProfile)return;const t=uo(e.target);var a,n;t&&(no(t.anchor),Si(t.username)||eo(t.username),t.anchor===Li&&(null==Mi?void 0:Mi.classList.contains("is-open"))?window.clearTimeout(Hi):(t.anchor.setAttribute(wi,"1"),a=t.anchor,n=t.username,window.clearTimeout(Hi),window.clearTimeout(Ti),(null==Mi?void 0:Mi.classList.contains("is-leaving"))&&Mi.classList.remove("is-leaving"),Ti=window.setTimeout(()=>{!async function(e,t){const a=Ui();Li=e,_i=t;const n=++$i,r=Si(t);if(r)return ro(t,si(r)),a.classList.remove("is-loading"),a.innerHTML=Zi(r),Wi(a),Ji(e),void requestAnimationFrame(()=>Ji(e));a.classList.add("is-loading"),a.innerHTML=function(e){const t=Si(e);return `\n    <div class="blp-ump__card blp-ump__card--${Pe(t?si(t):"rookie")} is-skeleton" aria-busy="true">\n      <div class="blp-ump__shine" aria-hidden="true"></div>\n      <div class="blp-ump__foil" aria-hidden="true"></div>\n      <div class="blp-ump__top">\n        ${Ki("blp-ump__bone--pill")}\n        ${Ki("blp-ump__bone--avg")}\n      </div>\n      <div class="blp-ump__avatar blp-ump__avatar--skel" aria-hidden="true">\n        <span class="blp-ump__spinner blp-ump__spinner--avatar" aria-hidden="true"></span>\n      </div>\n      <div class="blp-ump__name blp-ump__name--skel">${Ce(e)}</div>\n      ${Ki("blp-ump__bone--sub")}\n      <div class="blp-ump__stats" aria-hidden="true">\n        <div class="blp-ump__stat blp-ump__stat--skel">${Ki("blp-ump__bone--stat-n")}${Ki("blp-ump__bone--stat-l")}</div>\n        <div class="blp-ump__stat blp-ump__stat--skel">${Ki("blp-ump__bone--stat-n")}${Ki("blp-ump__bone--stat-l")}</div>\n        <div class="blp-ump__stat blp-ump__stat--skel">${Ki("blp-ump__bone--stat-n")}${Ki("blp-ump__bone--stat-l")}</div>\n      </div>\n      <div class="blp-ump__ratings blp-ump__ratings--skel" aria-hidden="true">\n        ${Array.from({length:10},(e,t)=>`<span class="blp-ump__bar blp-ump__bar--skel" style="--h:${18+17*t%70}%; --d:${.05*t}s"></span>`).join("")}\n      </div>\n      <div class="blp-ump__section" aria-hidden="true">\n        ${Ki("blp-ump__bone--label")}\n        <div class="blp-ump__covers" style="--ump-slots:5">\n          ${Array.from({length:5},(e,t)=>`<span class="blp-ump__cover blp-ump__cover--skel" style="--d:${.12+.06*t}s"></span>`).join("")}\n        </div>\n      </div>\n      <div class="blp-ump__status">${Ce(he.miniProfileLoading)}</div>\n    </div>\n  `}(t),Wi(a),Ji(e);const i=await eo(t);n===$i&&_i===t&&(a.classList.remove("is-loading"),a.classList.remove("is-ready"),a.innerHTML=i?Zi(i):function(e){return `\n    <div class="blp-ump__card blp-ump__card--rookie">\n      <div class="blp-ump__shine" aria-hidden="true"></div>\n      <div class="blp-ump__name">${Ce(e)}</div>\n      <div class="blp-ump__status">${Ce(he.miniProfileError)}</div>\n      <a class="blp-ump__cta" href="/u/${Pe(encodeURIComponent(e))}/" data-turbo-frame="_top">${Ce(he.miniProfileViewProfile)}</a>\n    </div>\n  `}(t),requestAnimationFrame(()=>{a.classList.add("is-ready"),Ji(e);}));}(a,n);},280)));}function mo(e){const t=uo(e.target);if(!t)return;const a=e.relatedTarget;a&&(t.anchor.contains(a)||(null==Mi?void 0:Mi.contains(a)))||(t.anchor.removeAttribute(wi),co());}function go(){(null==Mi?void 0:Mi.classList.contains("is-open"))&&Li&&(document.contains(Li)?Ji(Li):ji({immediate:true}));}const ho="data-blp-profile-tier",bo="blp-profile-tier-chip",fo="blp-profile-avatar";let So=0;function vo(){return  false!==me.showProfilePage}function wo(){return vo()&&false!==me.showProfileHeader}function yo(){return vo()&&false!==me.showProfileTierChip}function ko(){return vo()&&false!==me.showProfileStats}function Co(){return vo()&&false!==me.showProfileNav}function Po(){return vo()&&false!==me.showProfileFavorites}function Bo(){return wo()||yo()||ko()||Co()||Po()}function xo(e){return {rookie:he.miniProfileTierRookie,bronze:he.miniProfileTierBronze,silver:he.miniProfileTierSilver,gold:he.miniProfileTierGold,platinum:he.miniProfileTierPlatinum,diamond:he.miniProfileTierDiamond,master:he.miniProfileTierMaster,legend:he.miniProfileTierLegend}[e]||he.miniProfileTierRookie}function Do(){var e,t,a;document.documentElement.removeAttribute(ho);const n=document.getElementById("profile-header");n&&(n.removeAttribute(ho),n.classList.remove("blp-profile-header")),document.querySelectorAll(`.${bo}`).forEach(e=>e.remove()),document.querySelectorAll(`.${fo}`).forEach(e=>{e.classList.remove(fo);}),null==(e=document.getElementById("profile-stats"))||e.classList.remove("blp-profile-stats"),null==(t=document.getElementById("profile-nav"))||t.classList.remove("blp-profile-nav"),null==(a=document.getElementById("profile-nav-row"))||a.classList.remove("blp-profile-nav-row");const r=document.getElementById("profile-favorites");r&&(r.classList.remove("blp-profile-favorites"),r.querySelectorAll(".game-cover[data-blp-fav-rank]").forEach(e=>{e.removeAttribute("data-blp-fav-rank");})),document.querySelectorAll(".blp-profile-fav-title").forEach(e=>{e.classList.remove("blp-profile-fav-title");});}function To(e){var t;const a=document.getElementById("profile-header");if(!a||!e)return;const n=si(e);if(Do(),Bo()){if(document.documentElement.setAttribute(ho,n),wo()){a.setAttribute(ho,n),a.classList.add("blp-profile-header");const e=a.querySelector(".avatar");e&&e.classList.add(fo);}yo()&&function(e,t,a){var n,r;const i=null==(n=e.querySelector("h3.main-header"))?void 0:n.closest(".col-auto");if(!i)return;let o=e.querySelector(`.${bo}`);o||(o=document.createElement("div"),o.className=`${bo} col-auto pl-2 my-auto`,o.setAttribute("data-blp-profile-chrome","1"),i.insertAdjacentElement("afterend",o));const s=function(e){const t=oi(e),a=y.findIndex(e=>e.id===t.id),n=a>=0?y[a+1]:null;if(!n)return null;const r=Math.max(1,n.min-t.min),i=Math.max(0,t.gamesPlayed-t.min);return {current:t,next:n,remaining:Math.max(0,n.min-t.gamesPlayed),progress:Math.min(1,i/r)}}(t.gamesPlayed),l=s?Math.round(100*s.progress):100,c=s?X(he.profileTierProgress||"{n} to {tier}",{n:s.remaining,tier:xo(s.next.id)}):he.profileTierMax||"",u=X(he.miniProfileTierSub||"{count} games played",{count:String(null!=(r=t.gamesPlayed)?r:0)});o.innerHTML=`\n    <div class="blp-profile-tier-chip__pill">${Ce(xo(a))}</div>\n    <div class="blp-profile-tier-chip__body">\n      <div class="blp-profile-tier-chip__played">${Ce(u)}</div>\n      ${c?`<div class="blp-profile-tier-chip__next">${Ce(c)}</div>`:""}\n      <div class="blp-profile-tier-chip__bar" aria-hidden="true">\n        <span style="width:${l}%"></span>\n      </div>\n    </div>\n  `;}(a,e,n),ko()&&(null==(t=document.getElementById("profile-stats"))||t.classList.add("blp-profile-stats")),Co()&&function(){const e=document.getElementById("profile-nav"),t=document.getElementById("profile-nav-row");e&&e.classList.add("blp-profile-nav"),t&&t.classList.add("blp-profile-nav-row");}(),Po()&&function(){var e,t;const a=document.getElementById("profile-favorites");if(!a)return;a.classList.add("blp-profile-favorites");const n=(null==(t=null==(e=a.previousElementSibling)?void 0:e.querySelector)?void 0:t.call(e,"h2"))||document.getElementById("profile-recent-play");n&&/favorite/i.test(n.textContent||"")&&n.classList.add("blp-profile-fav-title"),[...a.querySelectorAll(".game-cover")].forEach((e,t)=>{e.setAttribute("data-blp-fav-rank",String(t+1));});}();}}const Ho=Ha(()=>{!async function(){if(!Bo())return void Do();if(!document.getElementById("profile-header"))return void Do();const e=++So,t=await async function(){const e=function(){const e=document.querySelector("#profile-header h3.main-header");return ((null==e?void 0:e.textContent)||"").replace(/\s+/g," ").trim()||ci(location.pathname)}();if(!e)return null;const t=fi(document,e),a=Boolean(document.getElementById("profile-stats"));if(t&&a)return li(t),t;const n=Si(e);return n?{...n,avatarUrl:(null==t?void 0:t.avatarUrl)||n.avatarUrl,username:(null==t?void 0:t.username)||n.username}:(null==t?void 0:t.gamesPlayed)>0?(li(t),t):await vi(e)||t}();e===So&&(t?To(t):Do());}();},80);function Ao(e){var t,a;const n=null==e?void 0:e[2];if("string"==typeof n&&n)return n.toLowerCase().slice(0,2);const r=null==(a=null==(t=null==e?void 0:e[8])?void 0:t[0])?void 0:a[0];return "string"==typeof r&&r?r.toLowerCase().slice(0,2):""}const Go="blp-translate-btn",Lo="blp-translate-result",_o="data-blp-translate",Mo="data-blp-translate-state",$o="data-blp-translate-original",Io="data-blp-translate-auto";let Eo=false,Ro=null,Fo=0;const Oo=[];function No(){return "below"===me.translateDisplayMode?"below":"replace"}function zo(e){const t=document.createElement("div");return t.innerHTML=String(e||""),t.querySelectorAll("br").forEach(e=>e.replaceWith("\n")),(t.textContent||"").replace(/\u00a0/g," ").trim()}function Uo(){const e=document.querySelector("#collapseSummary");return e?e.querySelector("p")||e:null}function qo(e){return e.querySelector(".review-body .card-text")||e.querySelector('.review-body [id^="collapseReview"]')||e.querySelector(".card-text")}function jo(e){var t;return (null==(t=null==e?void 0:e.querySelector)?void 0:t.call(e,`.${Go}[data-blp-translate-kind="review"]`))||null}function Wo(e,t){if(!e)return;if("loading"===t)return e.innerHTML=`<span class="blp-translate-btn__spin" aria-hidden="true"></span><span class="blp-translate-btn__label">${Ce(he.translateLoading)}</span>`,e.setAttribute("aria-busy","true"),void e.classList.add("is-loading");e.removeAttribute("aria-busy"),e.classList.remove("is-loading");let a=he.translateButton;"original"===t?a=he.translateShowOriginal:"hide"===t?a=he.translateHide:"error"===t&&(a=he.translateError),e.innerHTML=`<span class="blp-translate-btn__label">${Ce(a)}</span>`;}function Jo(e){const t=document.createElement("button");return t.type="button",t.className=`${Go} ${Go}--chip${"desc"===e?` ${Go}--desc`:` ${Go}--review`}`,t.setAttribute("data-blp-translate-kind",e),Wo(t,"idle"),t}function Vo(e,t){var a,n,i,o,s;if(!e)return;const l=t||e.closest(".review-card")||(null==(a=e.closest(".review-body"))?void 0:a.parentElement)||document,c=e.id||"",u=[];if(c){const e=l.querySelector(`a.review-more[href="#${c}"]`),t=l.querySelector(`a.review-more[aria-controls="${c}"]`);e&&u.push(e),t&&t!==e&&u.push(t);}const d=l.querySelector(".expand-review-col a.review-more, a.review-more");d&&!u.includes(d)&&u.push(d);const p=u[0]||null;if(!(e.classList.contains("collapse")&&!e.classList.contains("show")||"false"===(null==p?void 0:p.getAttribute("aria-expanded"))||(null==(n=null==p?void 0:p.classList)?void 0:n.contains("collapsed"))))return;try{const t=r||window,a=(null==t?void 0:t.jQuery)||(null==t?void 0:t.$);(null==(i=null==a?void 0:a.fn)?void 0:i.collapse)&&a(e).collapse("show");}catch(g){}e.classList.remove("collapsing"),e.classList.add("collapse","show"),e.style.display="block",e.style.height="auto",e.style.maxHeight="none",e.style.overflow="visible",e.style.visibility="visible";let m=e.parentElement;for(let r=0;r<3&&m;r++)((null==(o=m.classList)?void 0:o.contains("position-relative"))||(null==(s=m.classList)?void 0:s.contains("col")))&&(m.style.maxHeight="none",m.style.overflow="visible"),m=m.parentElement;u.forEach(e=>{e.classList.remove("collapsed"),e.setAttribute("aria-expanded","true");});}function Ko(e,t){var a,n,r,i,o;const s=null==(a=null==t?void 0:t.closest)?void 0:a.call(t,".review-card");if(s)return void s.querySelectorAll(`.${Lo}`).forEach(e=>e.remove());null==(n=null==e?void 0:e.querySelectorAll)||n.call(e,`.${Lo}`).forEach(e=>e.remove());const l=(null==(r=null==t?void 0:t.closest)?void 0:r.call(t,".position-relative"))||(null==t?void 0:t.parentElement)||e;null==(i=null==l?void 0:l.querySelectorAll)||i.call(l,`.${Lo}`).forEach(e=>e.remove());const c=null==l?void 0:l.nextElementSibling;(null==(o=null==c?void 0:c.classList)?void 0:o.contains(Lo))&&c.remove();}async function Zo({textEl:e,host:t,card:a,btn:n,isReview:r,expand:i=true}){var o;if(!e)return "skip";if("translated"===(null==n?void 0:n.getAttribute(Mo)))return "skip";if(e.hasAttribute($o)&&"replace"===No())return "skip";if(r&&(null==(o=null==a?void 0:a.querySelector)?void 0:o.call(a,`.${Lo}`)))return "skip";r&&i&&Vo(e,a);const s=e.hasAttribute($o)?e.getAttribute($o):e.innerHTML,l=zo(s);if(!l)return "skip";const c=function(){const e=me.translateTargetLocale||"auto";return "auto"!==e&&V.includes(e)?e:ge}();Wo(n,"loading");const u=await async function(e,t){const a=String(e||"").trim(),n=String(t||"").trim().toLowerCase().slice(0,2);if(!a||!n)return null;const r=`gtx:${n}:${function(e){let t=5381;const a=String(e);for(let n=0;n<a.length;n++)t=(t<<5)+t^a.charCodeAt(n);return (t>>>0).toString(36)}(a)}`,i=Ee(r);if(i&&"string"==typeof i.text)return Fe(i);if(Se.has(r))return Se.get(r);const o=(async()=>{const e=`https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=${encodeURIComponent(n)}&dt=t&q=${encodeURIComponent(a)}`,t=await lt({url:e,responseType:"json",headers:{Accept:"application/json"},timeout:2e4}),i=function(e){return Array.isArray(null==e?void 0:e[0])?e[0].map(e=>Array.isArray(e)&&"string"==typeof e[0]?e[0]:"").join(""):""}(t).trim();if(!i)return null;const o={text:i,detectedSourceLang:Ao(t)};return Re(r,o),Oe(o)})().catch(()=>null);Se.set(r,o);try{return await o}finally{Se.delete(r);}}(l,c);if(!(null==u?void 0:u.text))return Wo(n,"error"),n&&setTimeout(()=>Wo(n,"idle"),1800),"error";const d=String(u.detectedSourceLang||"").toLowerCase().slice(0,2);if(d&&d===c&&u.text.trim()===l)return n&&(n.style.display="none"),Wo(n,"idle"),"same";const p=Ce(String(u.text||"")).replace(/\r\n|\r|\n/g,"<br>"),m=No();return r&&i&&Vo(e,a),"below"===m?(function(e,t,a,n){Ko(t,e);const r=document.createElement("div");if(r.className=n?`${Lo} ${Lo}--card`:Lo,n){r.innerHTML=`\n      <div class="blp-translate-result__head">${Ce(he.translateResultLabel)}</div>\n      <div class="blp-translate-result__body">${a}</div>\n    `;const t=e.closest(".review-body");if(t)return t.insertAdjacentElement("afterend",r),requestAnimationFrame(()=>{requestAnimationFrame(()=>r.classList.add("is-in"));}),r}else r.innerHTML=a;const i=e.closest(".position-relative")||e.parentElement||t;i&&i!==e?i.appendChild(r):e.insertAdjacentElement("afterend",r),n&&requestAnimationFrame(()=>{requestAnimationFrame(()=>r.classList.add("is-in"));});}(e,t,p,r),n&&(n.setAttribute(Mo,"translated"),Wo(n,"hide")),"ok"):(e.hasAttribute($o)||e.setAttribute($o,s),e.innerHTML=p,r&&i&&Vo(e,a),n&&(n.setAttribute(Mo,"translated"),Wo(n,"original")),"ok")}async function Yo(e){var t,a;const n=null==(a=null==(t=e.target)?void 0:t.closest)?void 0:a.call(t,`.${Go}`);if(!n||n.classList.contains("is-loading"))return;e.preventDefault(),e.stopPropagation();const r=function(e){if("desc"===e.getAttribute("data-blp-translate-kind")){const e=Uo();return e?{textEl:e,host:e.parentElement||e}:null}const t=e.closest(".review-card");if(!t)return null;const a=qo(t);return a?{textEl:a,host:a.parentElement||a,card:t}:null}(n);if(!r)return;const{textEl:i,host:o,card:s}=r,l=No(),c=n.getAttribute(Mo)||"idle",u="review"===n.getAttribute("data-blp-translate-kind");if("replace"===l&&"translated"===c){const e=i.getAttribute($o);return null!=e&&(i.innerHTML=e),i.removeAttribute($o),n.removeAttribute(Mo),void Wo(n,"idle")}if("below"===l&&"translated"===c)return Ko(o,i),n.removeAttribute(Mo),void Wo(n,"idle");await Zo({textEl:i,host:o,card:s,btn:n,isReview:u});}function Xo(){Ro&&(Ro.disconnect(),Ro=null),Oo.length=0,Fo=0;}function Qo(){for(;Fo<2&&Oo.length;){const e=Oo.shift();if(!(null==e?void 0:e.isConnected))continue;if("done"===e.getAttribute(Io)||"busy"===e.getAttribute(Io))continue;Fo+=1,e.setAttribute(Io,"busy");const t=qo(e),a=jo(e),n=(null==t?void 0:t.parentElement)||t;Promise.resolve().then(()=>Zo({textEl:t,host:n,card:e,btn:a,isReview:true,expand:false})).then(t=>{"ok"===t||"same"===t?e.setAttribute(Io,"done"):e.removeAttribute(Io);}).catch(()=>{e.removeAttribute(Io);}).finally(()=>{Fo-=1,Qo();});}}function es(e){e&&"done"!==e.getAttribute(Io)&&"busy"!==e.getAttribute(Io)&&(Oo.includes(e)||(Oo.push(e),Qo()));}function ts(){Eo||(Eo=true,document.addEventListener("click",Yo,true)),false!==me.showTranslate?(function(){var e;if(!me.translateDescription){document.querySelectorAll(".blp-translate-desc-slot").forEach(e=>e.remove()),document.querySelectorAll(`.${Go}[data-blp-translate-kind="desc"]`).forEach(e=>{e.remove();});const t=Uo();return (null==t?void 0:t.hasAttribute($o))&&(t.innerHTML=t.getAttribute($o),t.removeAttribute($o)),null==(e=document.querySelector("#collapseSummary"))||e.removeAttribute(_o),void document.querySelectorAll(`.${Lo}`).forEach(e=>{e.closest("#center-content, #collapseSummary, #game-body")&&(e.closest(".review-card")||e.remove());})}const t=Uo(),a=document.querySelector("#collapseSummary");if(!t||!a)return;if(!zo(t.innerHTML))return;a.setAttribute(_o,"desc");let n=document.querySelector(`.${Go}[data-blp-translate-kind="desc"]`);if(n)return;n=Jo("desc");const r=document.getElementById("summary-expand-btn"),i=null==r?void 0:r.closest(".col-auto");if(i){const e=document.createElement("div");return e.className="col-auto my-auto blp-translate-desc-slot",e.appendChild(n),void i.insertAdjacentElement("beforebegin",e)}t.insertAdjacentElement("afterend",n);}(),function(){if(!me.translateReviews)return document.querySelectorAll(`.${Go}[data-blp-translate-kind="review"]`).forEach(e=>{var t;null==(t=e.closest(".blp-translate-review-slot"))||t.remove(),e.remove();}),void document.querySelectorAll(`.review-card[${_o}="review"]`).forEach(e=>{e.removeAttribute(_o);});document.querySelectorAll(".review-card").forEach(e=>function(e){if(e.querySelector(`.${Go}[data-blp-translate-kind="review"]`))return;const t=qo(e);if(!t||!zo(t.innerHTML))return;e.setAttribute(_o,"review");const a=Jo("review"),n=e.querySelector(".review-bottom-bar");if(n){const e=document.createElement("div");e.className="col-auto my-auto pr-1 blp-translate-review-slot",e.appendChild(a);const t=n.querySelector(".expand-review-col");return void(t?t.insertAdjacentElement("beforebegin",e):n.appendChild(e))}t.insertAdjacentElement("afterend",a);}(e));}(),function(){if(false===me.showTranslate||false===me.translateReviews||true!==me.translateReviewsAuto)return Xo(),void document.querySelectorAll(`.review-card[${Io}="busy"]`).forEach(e=>{e.removeAttribute(Io);});Ro||(Ro=new IntersectionObserver(e=>{for(const t of e){if(!t.isIntersecting)continue;const e=t.target;null==Ro||Ro.unobserve(e),es(e);}},{root:null,rootMargin:"120px 0px",threshold:.15})),document.querySelectorAll(".review-card").forEach(e=>{if("done"===e.getAttribute(Io)||"busy"===e.getAttribute(Io))return;const t=qo(e);t&&zo(t.innerHTML)&&Ro.observe(e);});}()):function(e=document){Xo(),e.querySelectorAll(".blp-translate-desc-slot, .blp-translate-review-slot").forEach(e=>{e.remove();}),e.querySelectorAll(`.${Go}`).forEach(e=>e.remove()),e.querySelectorAll(`.${Lo}`).forEach(e=>e.remove()),e.querySelectorAll(`[${_o}]`).forEach(e=>{e.removeAttribute(_o);}),e.querySelectorAll(`[${Io}]`).forEach(e=>{e.removeAttribute(Io);}),e.querySelectorAll(`[${$o}]`).forEach(e=>{const t=e.getAttribute($o);null!=t&&(e.innerHTML=t),e.removeAttribute($o),e.removeAttribute(Mo);});}();}function as(){Qr(),document.documentElement.hasAttribute("data-blp-fix-bound")||(document.documentElement.setAttribute("data-blp-fix-bound","1"),document.addEventListener("click",e=>{var t,a;const n=null==(a=null==(t=e.target)?void 0:t.closest)?void 0:a.call(t,"[data-blp-fix-match]");n&&(e.preventDefault(),e.stopPropagation(),function(e,t){var a,n,r,i,o;if(!e||document.querySelector(".blp-fix-match-backdrop"))return;const s=document.createElement("div");s.className="blp-fix-match-backdrop",s.innerHTML=`\n    <div class="blp-fix-match-dialog" role="dialog" aria-modal="true" aria-label="${Pe(he.steamFixMatchTitle)}">\n      <h3>${Ce(he.steamFixMatchTitle)}</h3>\n      <p class="blp-hint">${Ce(he.steamFixMatchHint)}</p>\n      <div class="blp-error" data-blp-fix-error hidden></div>\n      <input id="blp-fix-appid" type="text" inputmode="numeric" placeholder="${Pe(he.steamFixMatchPlaceholder)}" value="${Pe(t||We(e)||"")}" />\n      <div class="blp-actions">\n        <button type="button" class="blp-btn" data-blp-fix-clear>${Ce(he.steamFixMatchClear)}</button>\n        <button type="button" class="blp-btn" data-blp-fix-cancel>${Ce(he.cancel)}</button>\n        <button type="button" class="blp-btn blp-primary" data-blp-fix-save>${Ce(he.save)}</button>\n      </div>\n    </div>\n  `;const l=()=>s.remove(),c=()=>s.querySelector("#blp-fix-appid");s.addEventListener("click",e=>{e.target===s&&l();}),null==(a=s.querySelector("[data-blp-fix-cancel]"))||a.addEventListener("click",l),null==(n=s.querySelector("[data-blp-fix-clear]"))||n.addEventListener("click",()=>{!function(e){Je(e,null);}(e),l(),tr(),mr(),Lr(true),$a(he.toastSteamMatchCleared,{type:"info",title:he.toastSteamMatchClearedTitle});}),null==(r=s.querySelector("[data-blp-fix-save]"))||r.addEventListener("click",()=>{var t;const a=String((null==(t=c())?void 0:t.value)||"").trim(),n=Number(a.replace(/[^\d]/g,""));if(!Number.isFinite(n)||n<=0){const e=s.querySelector("[data-blp-fix-error]");return e&&(e.hidden=false,e.textContent=he.steamFixMatchInvalid),void $a(he.steamFixMatchInvalid,{type:"error",title:he.steamFixMatchInvalidTitle})}Je(e,n),l(),tr(),mr(),Lr(true),$a(X(he.toastSteamMatchSaved,{id:n}),{type:"success",title:he.toastSteamMatchSavedTitle});}),document.body.appendChild(s),null==(i=c())||i.focus(),null==(o=c())||o.select();}(n.getAttribute("data-blp-slug")||ga().slug,n.getAttribute("data-blp-appid")||""));},true)),function(){if(mn)return mn;const e=Ha(()=>{Ea()?document.querySelector("#log-editor-footer")&&pn():document.querySelectorAll(`[${Fa}="log-btn"]`).forEach(e=>e.remove());},200);mn=new MutationObserver(e),mn.observe(document.documentElement,{childList:true,subtree:true}),pn();}(),pn(),false!==me.hideHomepageFuse?document.documentElement.setAttribute(ei,"1"):document.documentElement.removeAttribute(ei),function(){const e=document.documentElement;true===me.enhanceHeader?(e.setAttribute(ti,"1"),ni||(ni=true,window.addEventListener("scroll",ri,{passive:true})),ri()):(e.removeAttribute(ti),e.removeAttribute(ai));}(),mr(),Lr(),function(){if(false===me.showUserMiniProfile)return ji({immediate:true}),io(),void oo();Di||(Di=true,document.addEventListener("pointerover",po,true),document.addEventListener("pointerout",mo,true),window.addEventListener("scroll",go,true),window.addEventListener("resize",go));}(),lo(),Ho(),ts();}function ns(e){var t,a,n,r,i,o,s,l,c,u,d,f,S,v,w,y,k,C,P,B,x,D,T,H,A,G,L,_,M,$,I;return !(!e||1!==e.nodeType)&&(!!((null==(t=e.hasAttribute)?void 0:t.call(e,p))||(null==(a=e.hasAttribute)?void 0:a.call(e,m))||(null==(n=e.hasAttribute)?void 0:n.call(e,g))||(null==(r=e.hasAttribute)?void 0:r.call(e,h))||(null==(i=e.hasAttribute)?void 0:i.call(e,b))||(null==(o=e.hasAttribute)?void 0:o.call(e,"data-blp-debug"))||(null==(s=e.hasAttribute)?void 0:s.call(e,"data-blp-token"))||(null==(l=e.hasAttribute)?void 0:l.call(e,"data-blp-translate"))||"blp-nav-settings"===e.id||"blp-profile-menu-settings"===e.id||"blp-steam-backloggd-btn"===e.id||"blp-steamdb-backloggd-btn"===e.id)||!!((null==(c=e.classList)?void 0:c.contains("blp-card-badges"))||(null==(u=e.classList)?void 0:u.contains("blp-settings-backdrop"))||(null==(d=e.classList)?void 0:d.contains("blp-fix-match-backdrop"))||(null==(f=e.classList)?void 0:f.contains("blp-export-backdrop"))||(null==(S=e.classList)?void 0:S.contains("blp-export-wrap"))||(null==(v=e.classList)?void 0:v.contains("blp-export-log-wrap"))||(null==(w=e.classList)?void 0:w.contains("blp-debug-panel"))||(null==(y=e.classList)?void 0:y.contains("blp-steamdb-cover"))||(null==(k=e.classList)?void 0:k.contains("blp-steam-gallery"))||(null==(C=e.classList)?void 0:C.contains("blp-similar"))||(null==(P=e.classList)?void 0:P.contains("blp-viewer"))||(null==(B=e.classList)?void 0:B.contains("blp-title-icon-wrap"))||(null==(x=e.classList)?void 0:x.contains("blp-game-id"))||(null==(D=e.classList)?void 0:D.contains("blp-toast-host"))||(null==(T=e.classList)?void 0:T.contains("blp-toast"))||(null==(H=e.classList)?void 0:H.contains("blp-ump"))||(null==(A=e.classList)?void 0:A.contains("blp-ump-avatar-spin"))||(null==(G=e.classList)?void 0:G.contains("blp-profile-tier-chip"))||(null==(L=e.classList)?void 0:L.contains("blp-translate-btn"))||(null==(_=e.classList)?void 0:_.contains("blp-translate-result"))||(null==(M=e.classList)?void 0:M.contains("blp-translate-desc-slot"))||(null==($=e.classList)?void 0:$.contains("blp-translate-review-slot"))||"blp-toast-host"===e.id||"blp-user-mini-profile"===e.id)||Boolean(null==(I=e.closest)?void 0:I.call(e,`[${p}], [${m}], [${g}], [${h}], .blp-card-badges, .blp-settings-backdrop, .blp-fix-match-backdrop, .blp-export-backdrop, .blp-export-wrap, .blp-export-log-wrap, [data-blp-debug], [data-blp-translate], .blp-translate-btn, .blp-translate-result, .blp-translate-desc-slot, .blp-translate-review-slot, #blp-nav-settings, #blp-profile-menu-settings, #blp-toast-host, .blp-toast-host, #blp-user-mini-profile, .blp-ump, .blp-ump-avatar-spin, .blp-profile-tier-chip`)))}function rs(e){const t=Ha(e,400),a=new MutationObserver(e=>{(function(e){for(const t of e)for(const e of t.addedNodes)if(1===e.nodeType&&!ns(e))return  false;return  true})(e)||t();});return a.observe(document.documentElement,{childList:true,subtree:true}),a}const is="blp-steam-backloggd-btn",os="https://www.backloggd.com";function ss(){var e;if(!me.showSteamPageLink)return void(null==(e=document.getElementById(is))||e.remove());if(!function(){const e=location.pathname.match(/\/app\/(\d+)/i);return e?e[1]:""}())return;const t=document.querySelector(".apphub_OtherSiteInfo");if(!t)return;const a=function(){const e=function(){const e=location.pathname.match(/\/app\/\d+\/([^/?#]+)/i);return e?Pt(e[1].replace(/_/g,"-")):""}();if(e)return `${os}/games/${encodeURIComponent(e)}/`;const t=Pt((null==(n=null==(a=document.getElementById("appHubAppName"))?void 0:a.textContent)?void 0:n.trim())||(null==(i=null==(r=document.querySelector(".apphub_AppName"))?void 0:r.textContent)?void 0:i.trim())||document.title.replace(/\s+on\s+Steam.*$/i,"").replace(/\s+::\s+.*$/i,"").trim());var a,n,r,i;return t?`${os}/games/${encodeURIComponent(t)}/`:os}(),n=document.getElementById(is);if(n)return void(n.href=a);const r=function(e){const t=document.createElement("a");return t.id=is,t.className="btnv6_blue_hoverfade btn_medium",t.href=e,t.target="_blank",t.rel="noopener noreferrer",t.innerHTML=`\n    <span data-tooltip-text="${Pe(he.steamBackloggdTooltip)}">\n      <img class="ico16" src="${Pe(`${os}/favicon.ico`)}" alt="Backloggd" width="16" height="16" />\n    </span>\n  `,t}(a),i=t.querySelector('a.btnv6_blue_hoverfade[href*="steamcommunity.com/app/"]')||t.querySelector('a.btnv6_blue_hoverfade[href*="store.steampowered.com/app/"]')||[...t.querySelectorAll("a.btnv6_blue_hoverfade")].find(e=>/community hub|store page/i.test(e.textContent||""));i?(i.insertAdjacentElement("beforebegin",r),i.previousSibling===r&&r.insertAdjacentText("afterend"," ")):t.appendChild(r);}function ls(){ss();}const cs="blp-steamdb-backloggd-btn";function us(){const e=location.pathname.match(/\/app\/(\d+)/i);return e?e[1]:""}function ds(){var e;if(!me.showSteamDbPageLink)return void(null==(e=document.getElementById(cs))||e.remove());if(!us())return;const t=document.querySelector("nav.app-links");if(!t)return;const a=function(){const e=function(){const e=document.querySelector('.app-links a[href*="igdb.com/games/"], a[href*="igdb.com/games/"]');if(!(null==e?void 0:e.href))return "";const t=String(e.href).match(/igdb\.com\/games\/([^/?#]+)/i);return t?decodeURIComponent(t[1]).toLowerCase():""}();if(e)return `${os}/games/${encodeURIComponent(e)}/`;const t=Pt(function(){const e=document.querySelector('.app-page header h1, .header-title h1, h1[itemprop="name"]')||document.querySelector("h1");let t=((null==e?void 0:e.textContent)||"").trim();return t=t?t.split(/\n/)[0].trim():document.title.replace(/\s*[·•|].*$/,"").replace(/\s*AppID.*$/i,"").trim(),t}());return t?`${os}/games/${encodeURIComponent(t)}/`:os}(),n=document.getElementById(cs);if(n)return void(n.href=a);const r=function(e){const t=document.createElement("a");return t.id=cs,t.className="btn tooltipped tooltipped-n",t.href=e,t.target="_blank",t.rel="noopener noreferrer",t.setAttribute("aria-label",he.steamBackloggdTooltip),t.textContent=he.steamDbBackloggdLabel,t}(a),i=t.querySelector('a.btn[href*="store.steampowered.com"]');if(i)i.insertAdjacentElement("afterend",r);else {const e=t.querySelector('a.btn[href*="igdb.com"]');e?e.insertAdjacentElement("beforebegin",r):t.appendChild(r);}}function ps(){ds();const e=us();e&&function(e=""){const t=Number(e);!Number.isFinite(t)||t<=0||function(e,t){const a=Number(e);if(!Number.isFinite(a)||a<=0||!t||t.blocked)return null;const n=Ot(a,t);(n.franchise||n.systems||n.technologies.length||n.lastRecordUpdate)&&Re(Et(a),n);}(t,Ft(document));}(e);}function ms(){if(document.documentElement.hasAttribute(d))return;document.documentElement.setAttribute(d,"1"),we(),function(){if(Te||"undefined"==typeof window)return;Te=true;const e=()=>function(){if(fe){clearTimeout(fe),ke(0);try{Ze(),Ye(),a(l,Ge());}catch(e){}}}();window.addEventListener("pagehide",e),document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&e();});}();const n=function(){let t=null;try{t=e(c,null);}catch(n){t=null;}if(t===o){const e=Ze(),t=Ye();if(e>0||t>0)try{a(l,Ge());}catch(n){}return null}st();try{a(c,o);}catch(n){}return null==t?"install":"upgrade"}();return function(){let e=[];try{const t=sessionStorage.getItem(Ga);sessionStorage.removeItem(Ga),t&&(e=JSON.parse(t));}catch(t){e=[];}Array.isArray(e)&&e.length&&setTimeout(()=>{for(const t of e)t&&$a({title:t.title||"",message:t.message||"",type:t.type||"info",duration:t.duration});},120);}(),"upgrade"===n&&$a(X(he.toastCacheClearedOnUpdate,{version:o}),{type:"info",title:he.toastCacheClearedOnUpdateTitle,duration:5200}),"function"==typeof t&&t(he.menuSettings,Zr),function(){const e=location.hostname;return "store.steampowered.com"===e||e.endsWith(".steampowered.com")||"steamcommunity.com"===e||e.endsWith(".steamcommunity.com")}()?(ls(),void rs(ls)):/(^|\.)steamdb\.info$/i.test(location.hostname)?(ps(),void rs(ps)):void(/(^|\.)backloggd\.com$/i.test(location.hostname)&&(Qr(),as(),rs(as),function(){const e=Ha(as,50);["turbo:load","turbo:render","turbo:frame-load","popstate"].forEach(t=>{document.addEventListener(t,e,true),window.addEventListener(t,e,true);});let t=location.href;setInterval(()=>{location.href!==t&&(t=location.href,e());},500);}()))}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",ms,{once:true}):ms();

})();