Greasy Fork is available in English.

Backloggd Plus

Extends Backloggd and adds a Backloggd button on Steam game pages

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==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();

})();