// ==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.62 // @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 // @downloadURL https://raw.githubusercontent.com/NemoKing1210/backloggd-plus/main/backloggd-plus.user.js // @updateURL https://raw.githubusercontent.com/NemoKing1210/backloggd-plus/main/backloggd-plus.user.js // @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 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 // @grant GM_addStyle // @grant GM_getValue // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_xmlhttpRequest // @run-at document-idle // @noframes // ==/UserScript== (e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const r=document.createElement("style");r.textContent=e,document.head.append(r)})(' turbo-frame#game-stats[data-blp-hide-game-stats="1"]{display: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}.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-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;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:16px}.blp-settings{width:min(520px,100%);max-height:min(90vh,720px);display:flex;flex-direction:column;overflow:hidden;background:#151921;color:var(--blp-text);border:1px solid var(--blp-border);border-radius:12px;box-shadow:0 16px 48px #00000073;font:14px/1.45 system-ui,sans-serif}.blp-settings__head{flex:0 0 auto;padding:18px 18px 10px;background:#151921}.blp-settings__tabs{position:relative;display:flex;flex:0 0 auto;gap:4px;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:#12161e;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22) #0c0f14}.blp-settings__tabs::-webkit-scrollbar{height:5px}.blp-settings__tabs::-webkit-scrollbar-track{background:#0c0f14;border-radius:999px;margin-inline:10px}.blp-settings__tabs::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:999px}.blp-settings__tabs::-webkit-scrollbar-thumb:hover{background:#3db89a8c}.blp-settings__tab{flex:0 0 auto;appearance:none;position:relative;margin:0;padding:11px 12px 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--blp-muted);cursor:pointer;font:inherit;font-size:12px;font-weight:600;letter-spacing:.02em;white-space:nowrap;line-height:1.2;border-radius:8px 8px 0 0;transition:color .15s ease,background-color .15s ease,border-color .15s ease}.blp-settings__tab:hover{color:var(--blp-text);background:#ffffff0a}.blp-settings__tab.is-active{color:var(--blp-accent);border-bottom-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:14px 18px}.blp-settings__panel[hidden]{display:none}.blp-settings__foot{flex:0 0 auto;padding:12px 18px 14px;border-top:1px solid var(--blp-border);background:#151921}.blp-settings h2{margin:0 0 4px;font-size:18px}.blp-settings__sub{margin:0;color:var(--blp-muted);font-size:13px}.blp-settings section{margin-bottom:0;padding-bottom:0;border-bottom:none}.blp-settings h3{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--blp-muted)}.blp-field{margin-bottom:10px}.blp-field label{display:block;margin-bottom:4px;font-size:13px}.blp-field select,.blp-field input[type=number]{width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--blp-border);background:#0f1319;color:var(--blp-text)}.blp-hint{margin:4px 0 0;font-size:12px;color:var(--blp-muted)}.blp-btn{display:inline-flex;align-items:center;justify-content:center;margin-top:8px;padding:8px 12px;border-radius:8px;border:1px solid var(--blp-border);background:#0f1319;color:var(--blp-text);cursor:pointer;font:inherit;font-size:13px;font-weight:500;line-height:1.2}.blp-btn:hover{border-color:#3db89a73;color:var(--blp-accent)}.blp-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}.blp-toggle button{min-width:52px;padding:4px 8px;border-radius:6px;border:1px solid var(--blp-border);background:#0f1319;color:var(--blp-text);cursor:pointer;font-size:12px;font-weight:600}.blp-toggle button.is-on{background:var(--blp-accent);border-color:transparent;color:#0b1210}.blp-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:8px}.blp-settings__foot .blp-actions{margin-top:0}.blp-actions button{padding:8px 12px;border-radius:8px;border:1px solid var(--blp-border);background:#0f1319;color:var(--blp-text);cursor:pointer;font:inherit;font-size:13px}.blp-actions button.blp-primary{background:var(--blp-accent);border-color:transparent;color:#0b1210;font-weight:600}.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;font-size:.72em;font-weight:500;color:var(--blp-muted);vertical-align:middle}.blp-settings__footer{margin-top:10px;font-size:12px;color:var(--blp-muted)}.blp-settings__footer a{color:var(--blp-accent)}.blp-cache-msg{margin-top:6px;font-size:12px;color:var(--blp-accent)}.blp-cache-meter{margin:0 0 12px}.blp-cache-meter__head{display:flex;justify-content:flex-end;margin-bottom:6px}.blp-cache-meter__used{font-size:12px;font-variant-numeric:tabular-nums;color:var(--blp-muted)}.blp-cache-meter__bar{display:flex;height:10px;border-radius:6px;overflow:hidden;background:#ffffff0f;border:1px solid var(--blp-border)}.blp-cache-meter__seg{display:block;height:100%;min-width:0;transition:width .2s ease}.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:8px 0 0;padding:0;display:grid;gap:4px;font-size:12px;color:var(--blp-muted);font-variant-numeric:tabular-nums}.blp-cache-meter__legend li{display:flex;align-items:center;gap:6px}.blp-cache-meter__swatch{width:8px;height:8px;border-radius:2px;flex:0 0 auto}.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)}.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;bottom:16px;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:8px;max-width:min(360px,calc(100vw - 32px));pointer-events:none}.blp-toast{pointer-events:auto;display:flex;align-items:flex-start;gap:8px;width:max-content;max-width:100%;padding:10px 14px;border-radius:10px;border:1px solid var(--blp-border);background:#151921;color:var(--blp-text);box-shadow:0 12px 32px #00000073;font:13px/1.4 system-ui,sans-serif;cursor:pointer;opacity:0;transform:translateY(8px) 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(6px) scale(.98)}.blp-toast__text{flex:1 1 auto;min-width:0;word-break:break-word}.blp-toast--success{border-color:#3db89a73;box-shadow:0 12px 32px #00000073,inset 3px 0 0 var(--blp-accent)}.blp-toast--info{border-color:#67c1f559;box-shadow:0 12px 32px #00000073,inset 3px 0 #67c1f5}.blp-toast--warning{border-color:#ffb32166;box-shadow:0 12px 32px #00000073,inset 3px 0 #ffb321}.blp-toast--error{border-color:#f6677773;box-shadow:0 12px 32px #00000073,inset 3px 0 #f66777}@media(max-width:480px){.blp-toast-host{left:12px;right:12px;bottom:12px;align-items:stretch;max-width:none}.blp-toast{width:100%}}.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}} '); (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)();const r="0.7.62",o="blp_settings",i="blp_cache_v1",s="blp_cache_script_version",l="blp_steam_overrides",c="data-blp-root",u="data-blp-enrich",d="data-blp-steamdb",m="data-blp-similar",p="data-blp-card",g="data-blp-card-state",h="data-blp-card-appid",b="data-blp-card-slug",S="data-blp-card-title",f="https://www.google.com/s2/favicons?domain={domain}&sz=32",w=5242880,v="https://store.steampowered.com/api/appdetails",y="https://store.steampowered.com/dynamicstore/userdata/",k="https://store.steampowered.com/tagdata/populartags/english",x="https://api.steampowered.com/IStoreBrowseService/GetItems/v1/",C="https://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/",D="https://api.opencritic.com/api",B="https://opencritic.com",P="https://howlongtobeat.com",$=`${P}/api/bleed/init`,_=`${P}/api/bleed`,L="https://isthereanydeal.com",M="https://shared.fastly.steamstatic.com/store_item_assets",A="https://steamdb.info",H=`${A}/app`,G="https://gamestatus.info",O="steam:userdata",T="steam:tagmap:english",R=6048e5,I=/^(https?-)?(store-)?steam(powered|static)?(-[a-z0-9]+)*(-com)?$|steampowered|steamstatic|akamaihd|^(on-)?wishlist$|^gamestatus$|^(soon-)?on-game-pass$/,N=["igdb","steam","steamdb","metacritic","opencritic","hltb","pcgamingwiki","itad","gogdb"],E={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"},F={cacheHours:12,uiLocale:"auto",steamCountry:"US",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,debugMode:false,links:{igdb:true,steam:true,steamdb:true,metacritic:true,opencritic:true,hltb:true,pcgamingwiki:true,itad:true,gogdb:true}},U={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",repoLink:"GitHub",repoAbout:"Source code, updates, and issue reports",sectionGame:"Game page",sectionLists:"Lists & cards",sectionGeneral:"General",sectionCache:"Cache",sectionDebug:"Debug",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.",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.",showCardBadges:"Show badges on list covers",showCardBadgesHint:"Choose which chips appear on browse / search / journal cover grids and on Similar games cards. Master switch above.",showCardBadgePrice:"Card badge: price",showCardBadgeReview:"Card badge: Steam review %",showCardBadgeOwned:"Card badge: Owned",showCardBadgeWishlist:"Card badge: Wishlist",showCardBadgeGameStatus:"Card badge: GameStatus",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.",navSettings:"Plus",navSettingsTitle:"Backloggd Plus settings",cacheHours:"Cache duration (hours)",cacheHoursHint:"How long to reuse Steam, GameStatus, scores, media, and similar-game lookups. 0 disables that cache. Steam library/wishlist and the tag map keep their own short TTLs. Online players are never cached.",clearCache:"Clear cache",cacheCleared:"Cache cleared ({count})",cacheEmpty:"Cache is empty",cacheBarFull:"Full",cacheBarPartial:"Partial",cacheBarFree:"Free",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"Soft storage budget. Full = game-page Steam resolves (with tags); partial = list/card lite or expired entries.",cacheBarAria:"Cache usage: {full} full, {partial} partial, {free} free",cacheClearHint:"Removes stored Steam / GameStatus lookups from this browser profile.",toastSettingsSaved:"Settings saved",toastCacheClearedOnUpdate:"Updated to v{version} — lookup cache cleared",toastSteamMatchSaved:"Steam App ID set to {id}",toastSteamMatchCleared:"Steam match reset to automatic",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",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",toastExportDone:"Exported {name}",toastExportCopied:"Copied to clipboard",toastExportCopyFailed:"Could not copy",toastExportFailed:"Could not export"},ru:{menuSettings:"Backloggd Plus — Настройки",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · оценки · Deck/Proton · HLTB · бейджи · ссылки",close:"Закрыть",cancel:"Отмена",save:"Сохранить",saveReload:"Сохранить и перезагрузить",repoLink:"GitHub",repoAbout:"Исходники, обновления и баг-репорты",sectionGame:"Страница игры",sectionLists:"Списки и карточки",sectionGeneral:"Общие",sectionCache:"Кэш",sectionDebug:"Отладка",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-картинка из appdetails",debugSrcSteamSearch:"storesearch — поиск Steam App ID",debugSrcSteamDetails:"appdetails — цена, free, 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.",showSteam:"Показывать цену и отзывы Steam",showMetacritic:"Показывать оценку Metacritic",showOpenCritic:"Показывать оценку OpenCritic",showOpenCriticHint:"Бейдж tier с OpenCritic (поиск по названию).",showHltb:"Показывать время HowLongToBeat",showHltbHint:"Main / Extra / Complete в часах с HowLongToBeat.",showDeckProton:"Показывать Steam Deck и ProtonDB",showDeckProtonHint:"Verified/Playable для 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 (Open World, RPG, …).",showSteamCategories:"Показывать категории Steam",showSteamCategoriesHint:"Категории из карточки Steam (Single-player, Multi-player, Steam Achievements, …).",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 под Change cover",showSteamDbCoverHint:"Steam header под обложкой / кнопкой Change cover.",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:"Один ряд SteamDB: франшиза и системы из Steam; технологии и последнее обновление записи — со SteamDB, если страница доступна.",showExport:"Показывать кнопку экспорта",showExportHint:"Кнопка экспорта на странице игры и в редакторе лога (CSV / Markdown / JSON для Notion). По умолчанию выключено.",showCardBadges:"Бейджи на обложках в списках",showCardBadgesHint:"Какие чипы показывать на обложках в browse / поиске / journal и на карточках «Похожие игры». Главный переключатель выше.",showCardBadgePrice:"Бейдж: цена",showCardBadgeReview:"Бейдж: рейтинг Steam %",showCardBadgeOwned:"Бейдж: Куплено",showCardBadgeWishlist:"Бейдж: Вишлист",showCardBadgeGameStatus:"Бейдж: GameStatus",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 на странице игры.",navSettings:"Plus",navSettingsTitle:"Настройки Backloggd Plus",cacheHours:"Время кэша (часы)",cacheHoursHint:"Как долго переиспользовать ответы Steam, GameStatus, оценок, медиа и похожих игр. 0 отключает этот кэш. Библиотека/вишлист Steam и карта тегов сохраняют свои короткие TTL. Онлайн-игроки не кешируются.",clearCache:"Очистить кэш",cacheCleared:"Кэш очищен ({count})",cacheEmpty:"Кэш пуст",cacheBarFull:"Полный",cacheBarPartial:"Частичный",cacheBarFree:"Свободно",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"Мягкий лимит хранилища. Полный — резолвы со страницы игры (с тегами); частичный — lite с карточек или просроченные.",cacheBarAria:"Использование кэша: {full} полный, {partial} частичный, {free} свободно",cacheClearHint:"Удаляет сохранённые запросы Steam / GameStatus из этого профиля браузера.",toastSettingsSaved:"Настройки сохранены",toastCacheClearedOnUpdate:"Обновлено до v{version} — кэш запросов очищен",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Сопоставление Steam сброшено на авто",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",players:"Игроки",playersOnline:"{n} в игре",franchise:"Франшиза",supportedSystems:"Поддерживаемые системы",technologies:"Технологии",lastRecordUpdate:"Последнее обновление записи",steamDeckStatus:"Steam Deck: {status}",steamDbBlocked:"SteamDB недоступен",openCritic:"OpenCritic",hltb:"HLTB",hltbMain:"Main {n}ч",hltbExtra:"Extra {n}ч",hltbComplete:"Complete {n}ч",deckProton:"Deck / Proton",deckVerified:"Verified",deckPlayable:"Playable",deckUnsupported:"Unsupported",deckUnknown:"Unknown",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:"Этот формат пока недоступен",toastExportDone:"Экспортировано: {name}",toastExportCopied:"Скопировано в буфер",toastExportCopyFailed:"Не удалось скопировать",toastExportFailed:"Не удалось экспортировать"},zh:{menuSettings:"Backloggd Plus — 设置",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · 评分 · Deck/Proton · HLTB · 列表徽章 · 链接",close:"关闭",cancel:"取消",save:"保存",saveReload:"保存并刷新页面",repoLink:"GitHub",repoAbout:"源码、更新与问题反馈",sectionGame:"游戏页",sectionLists:"列表与卡片",sectionGeneral:"通用",sectionCache:"缓存",sectionDebug:"调试",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 返回的货币。",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)。默认关闭。",showCardBadges:"在列表封面显示徽章",showCardBadgesHint:"选择在浏览/搜索/日志封面网格以及「相似游戏」卡片上显示哪些徽章。主开关在上方。",showCardBadgePrice:"卡片徽章:价格",showCardBadgeReview:"卡片徽章:Steam 好评%",showCardBadgeOwned:"卡片徽章:已拥有",showCardBadgeWishlist:"卡片徽章:愿望单",showCardBadgeGameStatus:"卡片徽章:GameStatus",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 行中显示的站点。",navSettings:"Plus",navSettingsTitle:"Backloggd Plus 设置",cacheHours:"缓存时长(小时)",cacheHoursHint:"复用 Steam、GameStatus、评分、媒体与相似游戏查询的时间。0 禁用该缓存。Steam 库/愿望单与标签表仍使用各自的短 TTL。在线玩家数不缓存。",clearCache:"清除缓存",cacheCleared:"已清除缓存({count})",cacheEmpty:"缓存为空",cacheBarFull:"完整",cacheBarPartial:"部分",cacheBarFree:"可用",cacheBarLegend:"{label}:{count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"软性存储上限。完整 = 可用查询;部分 = 不完整或已过期但仍占用空间的条目。",cacheBarAria:"缓存用量:完整 {full},部分 {partial},可用 {free}",cacheClearHint:"删除此浏览器配置中的 Steam / GameStatus 查询缓存。",toastSettingsSaved:"设置已保存",toastCacheClearedOnUpdate:"已更新至 v{version} — 查询缓存已清空",toastSteamMatchSaved:"Steam App ID 已设为 {id}",toastSteamMatchCleared:"已恢复自动匹配 Steam",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",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",repoLink:"GitHub",repoAbout:"Código, actualizaciones e informes",sectionGame:"Página del juego",sectionLists:"Listas y tarjetas",sectionGeneral:"General",sectionCache:"Caché",sectionDebug:"Depuración",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.",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.",showCardBadges:"Mostrar insignias en portadas de listas",showCardBadgesHint:"Elige qué chips aparecen en browse / búsqueda / journal y en las tarjetas de Juegos similares. Interruptor principal arriba.",showCardBadgePrice:"Insignia: precio",showCardBadgeReview:"Insignia: % de reseñas Steam",showCardBadgeOwned:"Insignia: En propiedad",showCardBadgeWishlist:"Insignia: Wishlist",showCardBadgeGameStatus:"Insignia: GameStatus",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.",navSettings:"Plus",navSettingsTitle:"Ajustes de Backloggd Plus",cacheHours:"Duración de caché (horas)",cacheHoursHint:"Cuánto reutilizar búsquedas de Steam, GameStatus, puntuaciones, medios y juegos similares. 0 desactiva esa caché. La biblioteca/wishlist de Steam y el mapa de etiquetas conservan sus TTL cortos. Los jugadores online no se cachean.",clearCache:"Vaciar caché",cacheCleared:"Caché vaciada ({count})",cacheEmpty:"La caché está vacía",cacheBarFull:"Completo",cacheBarPartial:"Parcial",cacheBarFree:"Libre",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"Límite blando de almacenamiento. Completo = consultas útiles; parcial = incompletas o caducadas que aún ocupan espacio.",cacheBarAria:"Uso de caché: {full} completo, {partial} parcial, {free} libre",cacheClearHint:"Elimina las búsquedas de Steam / GameStatus de este perfil.",toastSettingsSaved:"Ajustes guardados",toastCacheClearedOnUpdate:"Actualizado a v{version} — caché de consultas vaciada",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Coincidencia de Steam restablecida a automática",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",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:"Exportado: {name}",toastExportCopied:"Copiado al portapapeles",toastExportCopyFailed:"No se pudo copiar",toastExportFailed:"No se pudo exportar"},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",repoLink:"GitHub",repoAbout:"Código, atualizações e relatórios",sectionGame:"Página do jogo",sectionLists:"Listas e cartões",sectionGeneral:"Geral",sectionCache:"Cache",sectionDebug:"Depuração",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.",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.",showCardBadges:"Mostrar badges nas capas das listas",showCardBadgesHint:"Escolha quais chips aparecem em browse / busca / journal e nos cartões de Jogos semelhantes. Interruptor principal acima.",showCardBadgePrice:"Badge: preço",showCardBadgeReview:"Badge: % de avaliações Steam",showCardBadgeOwned:"Badge: Possui",showCardBadgeWishlist:"Badge: Wishlist",showCardBadgeGameStatus:"Badge: GameStatus",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.",navSettings:"Plus",navSettingsTitle:"Configurações do Backloggd Plus",cacheHours:"Duração do cache (horas)",cacheHoursHint:"Por quanto tempo reutilizar buscas Steam, GameStatus, notas, mídia e jogos semelhantes. 0 desativa esse cache. Biblioteca/wishlist Steam e o mapa de tags mantêm seus TTLs curtos. Jogadores online nunca são cacheados.",clearCache:"Limpar cache",cacheCleared:"Cache limpo ({count})",cacheEmpty:"Cache vazio",cacheBarFull:"Completo",cacheBarPartial:"Parcial",cacheBarFree:"Livre",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"Limite suave de armazenamento. Completo = consultas úteis; parcial = incompletas ou expiradas ainda armazenadas.",cacheBarAria:"Uso do cache: {full} completo, {partial} parcial, {free} livre",cacheClearHint:"Remove buscas Steam / GameStatus deste perfil do navegador.",toastSettingsSaved:"Configurações salvas",toastCacheClearedOnUpdate:"Atualizado para v{version} — cache de consultas limpo",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Correspondência Steam restaurada para automática",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",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:"Exportado: {name}",toastExportCopied:"Copiado para a área de transferência",toastExportCopyFailed:"Não foi possível copiar",toastExportFailed:"Não foi possível exportar"},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",repoLink:"GitHub",repoAbout:"Quellcode, Updates und Issue-Reports",sectionGame:"Spieleseite",sectionLists:"Listen & Karten",sectionGeneral:"Allgemein",sectionCache:"Cache",sectionDebug:"Debug",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.",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.",showCardBadges:"Badges auf Listen-Covers anzeigen",showCardBadgesHint:"Wähle, welche Chips auf Browse / Suche / Journal und auf Ähnliche-Spiele-Karten erscheinen. Hauptschalter oben.",showCardBadgePrice:"Badge: Preis",showCardBadgeReview:"Badge: Steam-Bewertung %",showCardBadgeOwned:"Badge: Besitz",showCardBadgeWishlist:"Badge: Wunschliste",showCardBadgeGameStatus:"Badge: GameStatus",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.",navSettings:"Plus",navSettingsTitle:"Backloggd Plus Einstellungen",cacheHours:"Cache-Dauer (Stunden)",cacheHoursHint:"Wie lange Steam-, GameStatus-, Score-, Medien- und Similar-Game-Abfragen wiederverwendet werden. 0 deaktiviert diesen Cache. Steam-Bibliothek/Wunschliste und die Tag-Map behalten eigene kurze TTLs. Online-Spieler werden nicht gecacht.",clearCache:"Cache leeren",cacheCleared:"Cache geleert ({count})",cacheEmpty:"Cache ist leer",cacheBarFull:"Voll",cacheBarPartial:"Teilweise",cacheBarFree:"Frei",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"Weiches Speicherbudget. Voll = nutzbare Einträge; teilweise = unvollständig oder abgelaufen, aber noch gespeichert.",cacheBarAria:"Cache-Nutzung: {full} voll, {partial} teilweise, {free} frei",cacheClearHint:"Entfernt gespeicherte Steam-/GameStatus-Abfragen aus diesem Profil.",toastSettingsSaved:"Einstellungen gespeichert",toastCacheClearedOnUpdate:"Aktualisiert auf v{version} — Abfrage-Cache geleert",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Steam-Zuordnung auf automatisch zurückgesetzt",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",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:"Exportiert: {name}",toastExportCopied:"In die Zwischenablage kopiert",toastExportCopyFailed:"Kopieren fehlgeschlagen",toastExportFailed:"Export fehlgeschlagen"},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",repoLink:"GitHub",repoAbout:"Code source, mises à jour et signalements",sectionGame:"Page jeu",sectionLists:"Listes et cartes",sectionGeneral:"Général",sectionCache:"Cache",sectionDebug:"Débogage",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.",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.",showCardBadges:"Afficher les badges sur les jaquettes des listes",showCardBadgesHint:"Choisissez quels chips apparaissent sur browse / recherche / journal et sur les cartes Jeux similaires. Interrupteur principal au-dessus.",showCardBadgePrice:"Badge : prix",showCardBadgeReview:"Badge : % d’avis Steam",showCardBadgeOwned:"Badge : Possédé",showCardBadgeWishlist:"Badge : Wishlist",showCardBadgeGameStatus:"Badge : GameStatus",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.",navSettings:"Plus",navSettingsTitle:"Réglages Backloggd Plus",cacheHours:"Durée du cache (heures)",cacheHoursHint:"Durée de réutilisation des requêtes Steam, GameStatus, scores, médias et jeux similaires. 0 désactive ce cache. Bibliothèque/wishlist Steam et la carte de tags gardent leurs TTL courts. Les joueurs en ligne ne sont jamais mis en cache.",clearCache:"Vider le cache",cacheCleared:"Cache vidé ({count})",cacheEmpty:"Le cache est vide",cacheBarFull:"Complet",cacheBarPartial:"Partiel",cacheBarFree:"Libre",cacheBarLegend:"{label} : {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"Budget de stockage indicatif. Complet = requêtes utiles ; partiel = incomplètes ou expirées encore stockées.",cacheBarAria:"Utilisation du cache : {full} complet, {partial} partiel, {free} libre",cacheClearHint:"Supprime les requêtes Steam / GameStatus de ce profil navigateur.",toastSettingsSaved:"Réglages enregistrés",toastCacheClearedOnUpdate:"Mis à jour vers v{version} — cache de requêtes vidé",toastSteamMatchSaved:"Steam App ID : {id}",toastSteamMatchCleared:"Correspondance Steam rétablie en automatique",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",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:"Exporté : {name}",toastExportCopied:"Copié dans le presse-papiers",toastExportCopyFailed:"Échec de la copie",toastExportFailed:"Échec de l’export"},ja:{menuSettings:"Backloggd Plus — 設定",panelTitle:"Backloggd Plus",panelSubtitle:"Steam · スコア · Deck/Proton · HLTB · バッジ · リンク",close:"閉じる",cancel:"キャンセル",save:"保存",saveReload:"保存して再読み込み",repoLink:"GitHub",repoAbout:"ソースコード、更新、Issue報告",sectionGame:"ゲームページ",sectionLists:"リストとカード",sectionGeneral:"一般",sectionCache:"キャッシュ",sectionDebug:"デバッグ",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の価格通貨に影響します。",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)。既定はオフ。",showCardBadges:"リストのカバーにバッジを表示",showCardBadgesHint:"browse / 検索 / journal のカバーと「似ているゲーム」カードに出すバッジを選択。メインスイッチは上。",showCardBadgePrice:"バッジ: 価格",showCardBadgeReview:"バッジ: Steam評価%",showCardBadgeOwned:"バッジ: 所持",showCardBadgeWishlist:"バッジ: ウィッシュリスト",showCardBadgeGameStatus:"バッジ: GameStatus",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行に表示するサイトを選択します。",navSettings:"Plus",navSettingsTitle:"Backloggd Plus 設定",cacheHours:"キャッシュ時間(時間)",cacheHoursHint:"Steam・GameStatus・スコア・メディア・類似ゲーム照会の再利用時間。0でそのキャッシュを無効。Steamライブラリ/ウィッシュリスト・タグマップは独自の短いTTLを維持。オンラインプレイヤー数はキャッシュしない。",clearCache:"キャッシュを消去",cacheCleared:"キャッシュを消去しました({count})",cacheEmpty:"キャッシュは空です",cacheBarFull:"完全",cacheBarPartial:"部分",cacheBarFree:"空き",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"目安の容量上限。完全=利用可能な照会、部分=不完全または期限切れでまだ残っている項目。",cacheBarAria:"キャッシュ使用量: 完全 {full}、部分 {partial}、空き {free}",cacheClearHint:"このブラウザプロファイルのSteam / GameStatus照会を削除します。",toastSettingsSaved:"設定を保存しました",toastCacheClearedOnUpdate:"v{version} に更新 — 照会キャッシュを消去しました",toastSteamMatchSaved:"Steam App ID を {id} に設定",toastSteamMatchCleared:"Steam一致を自動に戻しました",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",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:"저장 후 새로고침",repoLink:"GitHub",repoAbout:"소스 코드, 업데이트, 이슈 보고",sectionGame:"게임 페이지",sectionLists:"목록 및 카드",sectionGeneral:"일반",sectionCache:"캐시",sectionDebug:"디버그",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 가격 통화에 영향을 줍니다.",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). 기본값은 끔.",showCardBadges:"목록 커버에 배지 표시",showCardBadgesHint:"browse / 검색 / journal 커버와 비슷한 게임 카드에 표시할 배지를 선택합니다. 메인 스위치는 위.",showCardBadgePrice:"배지: 가격",showCardBadgeReview:"배지: Steam 평가 %",showCardBadgeOwned:"배지: 보유",showCardBadgeWishlist:"배지: 위시리스트",showCardBadgeGameStatus:"배지: GameStatus",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 행에 표시할 사이트를 선택합니다.",navSettings:"Plus",navSettingsTitle:"Backloggd Plus 설정",cacheHours:"캐시 시간(시간)",cacheHoursHint:"Steam, GameStatus, 점수, 미디어, 유사 게임 조회 재사용 시간. 0은 해당 캐시 비활성. Steam 라이브러리/위시리스트, 태그 맵은 자체 짧은 TTL을 유지. 온라인 플레이어 수는 캐시하지 않음.",clearCache:"캐시 비우기",cacheCleared:"캐시 비움 ({count})",cacheEmpty:"캐시가 비어 있음",cacheBarFull:"완전",cacheBarPartial:"부분",cacheBarFree:"여유",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"소프트 저장 한도. 완전 = 사용 가능한 조회, 부분 = 불완전하거나 만료됐지만 아직 남아 있는 항목.",cacheBarAria:"캐시 사용량: 완전 {full}, 부분 {partial}, 여유 {free}",cacheClearHint:"이 브라우저 프로필의 Steam / GameStatus 조회를 삭제합니다.",toastSettingsSaved:"설정이 저장됨",toastCacheClearedOnUpdate:"v{version}(으)로 업데이트됨 — 조회 캐시 비움",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Steam 매칭을 자동으로 되돌림",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",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",repoLink:"GitHub",repoAbout:"Kod źródłowy, aktualizacje i zgłoszenia",sectionGame:"Strona gry",sectionLists:"Listy i karty",sectionGeneral:"Ogólne",sectionCache:"Cache",sectionDebug:"Debug",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.",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.",showCardBadges:"Pokaż odznaki na okładkach list",showCardBadgesHint:"Wybierz, które chipy pojawiają się na browse / wyszukiwaniu / journal oraz na kartach Podobne gry. Główny przełącznik powyżej.",showCardBadgePrice:"Odznaka: cena",showCardBadgeReview:"Odznaka: % recenzji Steam",showCardBadgeOwned:"Odznaka: Posiadane",showCardBadgeWishlist:"Odznaka: Wishlist",showCardBadgeGameStatus:"Odznaka: GameStatus",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.",navSettings:"Plus",navSettingsTitle:"Ustawienia Backloggd Plus",cacheHours:"Czas cache (godziny)",cacheHoursHint:"Jak długo ponownie używać zapytań Steam, GameStatus, ocen, mediów i podobnych gier. 0 wyłącza ten cache. Biblioteka/wishlist Steam i mapa tagów zachowują własne krótkie TTL. Gracze online nigdy nie są cache’owani.",clearCache:"Wyczyść cache",cacheCleared:"Cache wyczyszczony ({count})",cacheEmpty:"Cache jest pusty",cacheBarFull:"Pełny",cacheBarPartial:"Częściowy",cacheBarFree:"Wolne",cacheBarLegend:"{label}: {count} · {size}",cacheBarUsed:"{used} / {limit}",cacheBarHint:"Miękki limit pamięci. Pełny = użyteczne wpisy; częściowy = niekompletne lub wygasłe, nadal zapisane.",cacheBarAria:"Użycie cache: {full} pełny, {partial} częściowy, {free} wolne",cacheClearHint:"Usuwa zapisane zapytania Steam / GameStatus z tego profilu.",toastSettingsSaved:"Ustawienia zapisane",toastCacheClearedOnUpdate:"Zaktualizowano do v{version} — wyczyszczono cache zapytań",toastSteamMatchSaved:"Steam App ID: {id}",toastSteamMatchCleared:"Dopasowanie Steam przywrócone do automatycznego",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",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:"Wyeksportowano: {name}",toastExportCopied:"Skopiowano do schowka",toastExportCopyFailed:"Nie udało się skopiować",toastExportFailed:"Nie udało się wyeksportować"}},q=["en","ru","zh","es","pt","de","fr","ja","ko","pl"],z={en:"English",ru:"Русский",zh:"中文",es:"Español",pt:"Português",de:"Deutsch",fr:"Français",ja:"日本語",ko:"한국어",pl:"Polski"},j={en:"🇺🇸",ru:"🇷🇺",zh:"🇨🇳",es:"🇪🇸",pt:"🇧🇷",de:"🇩🇪",fr:"🇫🇷",ja:"🇯🇵",ko:"🇰🇷",pl:"🇵🇱"};function W(e){const t=e||"auto";return "auto"!==t&&q.includes(t)?t:function(){const e=String(navigator.language||"en").toLowerCase().slice(0,2);return q.includes(e)?e:"en"}()}function V(e,t){return String(e).replace(/\{(\w+)\}/g,(e,a)=>null==t[a]?"":String(t[a]))}function J(){try{const t=e(o,null);return t&&"object"==typeof t?{...F,...t,links:{...F.links,...t.links||{}}}:{...F,links:{...F.links}}}catch(t){return {...F,links:{...F.links}}}}let Z=J(),K=W(Z.uiLocale),Y=U[K]||U.en,X=null,Q=0;const ee=new Map,te=new Set;function ae(){Z=J(),K=W(Z.uiLocale),Y=U[K]||U.en;}function ne(e){X=e;}function re(e){Q=e;}function oe(e){return String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function ie(e){return oe(e)}const se=new Set([O,T]);function le(){if(X)return X;try{const t=e(i,null);ne(t&&"object"==typeof t?t:{});}catch(t){ne({});}return X}function ce(){clearTimeout(Q),re(setTimeout(()=>{try{Be(),Pe(),a(i,le());}catch(e){}},400));}function ue(){const e=Number(Z.cacheHours);return !Number.isFinite(e)||e<=0?0:3600*Math.min(e,168)*1e3}function de(e){return e===T||e===O}function me(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===T)return R;if(e===O){const e=null==t?void 0:t.data;return function(e){if(e)return 3e5;const t=ue();return t>0?t:36e5}(!(e&&(Array.isArray(e.appIds)&&0!==e.appIds.length||Array.isArray(e.wishlistAppIds)&&0!==e.wishlistAppIds.length)))}return ue()}(e,t);return !a||Date.now()-t.ts>a}function pe(e){e&&"object"==typeof e&&(e.at=Date.now());}function ge(e){if(!de(e)&&!ue())return null;const t=le()[e];return (null==t?void 0:t.ts)?me(e,t)?null:(pe(t),t.data):null}function he(e,t,a){const n=Number(null==a?void 0:a.ttlMs),r=Number.isFinite(n)&&n>0;if(!de(e)&&!r&&!ue())return;const o=Date.now(),i={ts:o,at:o,data:t};r?i.ttlMs=n:e===T&&(i.ttlMs=R),le()[e]=i,ce();}function be(e){return null==e||"object"!=typeof e?e:Array.isArray(e)?Object.assign(e.slice(),{_cache:"hit"}):{...e,_cache:"hit"}}function Se(e){return null==e||"object"!=typeof e?e:Array.isArray(e)?Object.assign(e.slice(),{_cache:"miss"}):{...e,_cache:"miss"}}function fe(e){const t=null==e?void 0:e._cache;return "hit"===t||"miss"===t||"mixed"===t||"na"===t?t:null}function we(...e){const t=e.map(e=>"string"==typeof e?e:fe(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 ve(e){if(!e||"object"!=typeof e||Array.isArray(e))return e;const{_debug:t,_cache:a,...n}=e;return n}function ye(){try{const t=e(l,null);return t&&"object"==typeof t?t:{}}catch(t){return {}}}function ke(e){const t=String(e||"").toLowerCase().replace(/^\/+|\/+$/g,"");if(!t)return null;const a=Number(ye()[t]);return Number.isFinite(a)&&a>0?a:null}function xe(e,t){const n=String(e||"").toLowerCase().replace(/^\/+|\/+$/g,"");if(!n)return;const r=Number(t),o=ye();Number.isFinite(r)&&r>0?o[n]=r:delete o[n],function(e){try{a(l,e&&"object"==typeof e?e:{});}catch(t){}}(o),te.clear();}function Ce(e,t){if(me(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 De(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 Be(){const e=le();let t=0;for(const a of Object.keys(e))me(a,e[a])&&(delete e[a],t+=1);return t}function Pe(){const e=le();let t=0;const a=[];for(const r of Object.keys(e)){const n=e[r],o=De(r,n);t+=o,se.has(r)||a.push({key:r,bytes:o,at:Number((null==n?void 0:n.at)||(null==n?void 0:n.ts))||0});}if(t<=w)return 0;a.sort((e,t)=>e.at-t.at);let n=0;for(const r of a){if(t<=w)break;delete e[r.key],t-=r.bytes,n+=1;}return n}function $e(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 _e(){const e=le();let t=0,a=0,n=0,r=0;for(const s of Object.keys(e)){const o=e[s],i=De(s,o);Ce(s,o)?(a+=i,r+=1):(t+=i,n+=1);}const o=t+a,i=w;return {fullBytes:t,partialBytes:a,freeBytes:Math.max(0,i-o),usedBytes:o,limitBytes:i,fullCount:n,partialCount:r,totalCount:n+r}}function Le(e,t){return t?Math.max(0,Math.min(100,e/t*100)):0}function Me(e){const t=e||_e(),a=Math.max(t.usedBytes,t.limitBytes,1),n=Le(t.fullBytes,a),r=Le(t.partialBytes,a),o=Le(t.freeBytes,a),i=V(Y.cacheBarAria,{full:$e(t.fullBytes),partial:$e(t.partialBytes),free:$e(t.freeBytes)}),s=V(Y.cacheBarLegend,{label:Y.cacheBarFull,count:t.fullCount,size:$e(t.fullBytes)}),l=V(Y.cacheBarLegend,{label:Y.cacheBarPartial,count:t.partialCount,size:$e(t.partialBytes)}),c=`${Y.cacheBarFree}: ${$e(t.freeBytes)}`;return `\n
\n
\n ${oe(V(Y.cacheBarUsed,{used:$e(t.usedBytes),limit:$e(t.limitBytes)}))}\n
\n \n \n

${oe(Y.cacheBarHint)}

\n
\n `}function Ae(){const e=_e().totalCount;clearTimeout(Q),re(0),ne({});try{a(i,{});}catch(t){}return e}function He(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);})}function Ge(e){return String(e||"").toLowerCase().normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[™®©'’":]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")}function Oe(e){return `https://gamestatus.info/back/api/gameinfo/game/${encodeURIComponent(e)}/`}async function Te(e,t){var a;const n=await He({url:Oe(e),allow404:true,headers:{Accept:"application/json","Accept-Language":"zh"===K?"zh-CN":"pt"===K?"pt-BR":"en"===K?"en-US":K||"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 Re({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 o=`gs:${e}`,i=ge(o);if(i)return be(i);if(ee.has(o))return ee.get(o);const s=(async()=>{var i;const s=function({storeUrl:e,name:t,title:a,pageSlug:n}){const r=[],o=e=>{e&&function(e){if(!e||e.length<2)return false;if(!/[a-z]/.test(e))return false;if(I.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);},i=e=>{const t=String(e||"").replace(/\s+/g," ").trim();t&&(o(Ge(t)),o(Ge(t.replace(/\s*[-–—:|].*$/,""))));};return o(function(e){const t=String(e||"").replace(/^\/+|\/+$/g,"");return /--1$/i.test(t)?Ge(t.replace(/--1$/i,"-remake")):null}(n)),o(function(e){const t=String(e||"").match(/\/app\/\d+\/([^/?#]+)/i);return t?Ge(t[1].replace(/_/g,"-")):null}(e)),i(t),i(a),o(Ge(n)),r}({storeUrl:t,name:a,title:n,pageSlug:r}),l=s.slice(0,2),c={appId:e,cacheKey:o,cacheSkipped:false,candidates:s,tried:l,attempts:[]};for(const t of l)try{const a=await Te(t,e);if(c.attempts.push({slug:t,url:Oe(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!=(i=a.steam_prod_id)?i:"empty"})`;const e={missing:!1,data:a.data,slug:a.data.slug||t,_debug:c};return he(o,ve(e)),Se(e)}}catch(u){c.attempts.push({slug:t,url:Oe(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",Se({missing:true,data:null,slug:l[0]||null,_debug:c})})();ee.set(o,s);try{return await s}finally{ee.delete(o);}}function Ie(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 Ne(e,t){return e?e.readable_status?e.readable_status:"ready"===t?Y.gsReady:"pending-recent"===t||"pending-old"===t?Y.gsPending:"partial"===t?Y.gsPartial:"release-today"===t?Y.gsReleaseToday:Y.gsUnknown:Y.gsNotInDatabase}function Ee(e){return String(e||"").replace(/^[\s\[\(\{"'`]+|[\]\)\}"'`\s]+$/g,"").replace(/^["'`]+|["'`]+$/g,"").trim()}function Fe(e){if(null==e||""===e)return [];if(Array.isArray(e))return e.map(Ee).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(Ee).filter(Boolean);if("string"==typeof e)return [Ee(e)].filter(Boolean)}catch(a){}return t.split(/[,;/|]+/).map(Ee).filter(Boolean)}function Ue(e){return /denuvo/i.test(e)?"blp-gs-chip--highlight":"blp-gs-chip--protection"}function qe(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 ze(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 je=/^(?=.*[ivxlcdm])(?=[mdclxvi]+$)m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$/;function We(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(!je.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 o=0;oe?-e:e;}return r>0?r:null}(e,{allowLoneI:t>0});return null!=a?String(a):e}).join(" "):""}function Ve(e){return We(e).split(/\s+/).filter(Boolean)}function Je(e){return /^(the|a|an|official|new)$/i.test(e)}const Ze=/^(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 Ke(e){const t=We(e);if(!t)return true;if(Ze.test(t))return true;const a=t.split(/\s+/);let n=0;for(;n=1;t-=1){const r=a.slice(n,n+t).join(" ");if(Ze.test(r)){n+=t,e=true;break}}if(!e)return false}return true}function Ye(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(Ze.test(n)){t.splice(t.length-a,a),e=true;break}}if(!e)break}return t.join(" ")}function Xe(e,t){const a=We(e),n=We(t);if(!a||!n)return 0;if(a===n)return 100;const r=Ye(a),o=Ye(n);if(r&&o&&r===o)return 95;if(a.startsWith(`${n} `)&&Ke(a.slice(n.length).trim()))return 90;if(r&&o&&r.startsWith(`${o} `)&&Ke(r.slice(o.length).trim()))return 88;const i=Ve(r||a),s=Ve(o||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=0){const t=i.slice(0,e),a=i.slice(e+s.length);if(t.every(Je)&&Ke(a.join(" ")))return 85}}return 0}function Qe(e){return String((null==e?void 0:e.textContent)||"").replace(/\s+/g," ").trim().toLowerCase()}function et(e){const t=String(e||"").trim();return t?/^https?:\/\//i.test(t)?t:t.startsWith("/")?`${A}${t}`:`${A}/${t}`:""}function tt(e){const t=String(e||"").trim();return t?`${A}/franchise/${encodeURIComponent(t).replace(/%20/g,"+")}/`:""}function at(e){return `steamdb:meta:${Number(e)}`}function nt(e){const t=e.querySelectorAll(":scope > td");return t.length>=2?t:e.querySelectorAll("td")}function rt(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 o of r){const e=nt(o);if(e.length<2)continue;const r=Qe(e[0]),i=e[1];if(r.startsWith("franchise")){const e=i.querySelector('a[href*="/franchise/"]'),t=String((null==e?void 0:e.textContent)||i.textContent||"").replace(/\s+/g," ").trim();t&&(n.franchise={name:t,url:et(null==e?void 0:e.getAttribute("href"))||tt(t)});continue}if(r.startsWith("supported systems")){const e=i.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(i.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=i.querySelector('[aria-label*="Steam Deck"]')||i.querySelector('[aria-label*="steam deck"]'),o=String((null==r?void 0:r.getAttribute("aria-label"))||"");/verified/i.test(o)?a=3:/playable/i.test(o)?a=2:/unsupported/i.test(o)?a=1:/unknown/i.test(o)&&(a=0),(t.length||null!=a)&&(n.systems={list:t,deckCompat:a});continue}if(r.startsWith("technologies")){const e=[];i.querySelectorAll('a[href*="/tech/"]').forEach(t=>{const a=String(t.textContent||"").replace(/\s+/g," ").trim(),n=et(t.getAttribute("href"));a&&n&&e.push({name:a,url:n});}),n.technologies=e;continue}if(r.startsWith("last record update")){const e=i.querySelector("relative-time[datetime], relative-time[content]"),r=(null==e?void 0:e.getAttribute("datetime"))||(null==e?void 0:e.getAttribute("content"))||"";let o=String((null==(a=null==(t=i.childNodes)?void 0:t[0])?void 0:a.textContent)||i.textContent||"").replace(/\s+/g," ").trim();o=o.replace(/\([^)]*\)\s*$/,"").trim(),(r||o)&&(n.lastRecordUpdate={iso:r||null,label:o||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||`${H}/${n}/`}}async function it(){const e=ge(T);if(e&&"object"==typeof e)return e;if(ee.has(T))return ee.get(T);const t=(async()=>{const e=await He({url:k}),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 he(T,t,{ttlMs:R}),t})();ee.set(T,t);try{return await t}finally{ee.delete(T);}}function st(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 lt(e){const t=String(e||"").trim();return t?`https://steamdb.info/franchise/${encodeURIComponent(t).replace(/%20/g,"+")}/`:""}function ct(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:lt(r)}:null}function ut(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=st(e);return a.length||null!=n?{list:a,deckCompat:n}:null}async function dt(e,t){const a=Number(e),n=String(t||"US").toUpperCase(),r=`steam:storeitem:${a}:${n}`,o=`steam:tags:${a}`,i=`steam:assets:${a}`,s=`steam:extras:${a}:${n}`,l=ge(o),c=ge(i),u=ge(s);if(l&&c&&u)return {tags:l,assets:c,extras:u,_cache:"hit"};if(ee.has(r))return ee.get(r);const d=(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}}),[d,m]=await Promise.all([He({url:`${x}?input_json=${encodeURIComponent(r)}`}),it()]),p=null==(t=null==(e=null==d?void 0:d.response)?void 0:e.store_items)?void 0:t[0],g=(Array.isArray(null==p?void 0:p.tags)?p.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),h=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`:"",o=String(t.header||"header.jpg").trim();let i="";return t.asset_url_format&&o&&(i=`${M}/${String(t.asset_url_format).replace("${FILENAME}",o)}`),!i&&o&&(i=kt(a,o)),r||i?{iconUrl:r,logoUrl:i,source:"steam-assets"}:null}(a,null==p?void 0:p.assets),b=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}}(p),S={deckCompat:st(p),franchise:ct(p),systems:ut(p),...b};he(o,g),h&&he(i,h),he(s,S);const f=Boolean(l||c||u);return {tags:g.length?g:l||[],assets:h||c||null,extras:S||u||null,_cache:f?"mixed":"miss"}}catch(r){return {tags:l||[],assets:c||null,extras:u||null,_cache:l||c||u?"hit":"miss"}}})();ee.set(r,d);try{return await d}finally{ee.delete(r);}}async function mt(e,t){const{tags:a}=await dt(e,t);return a}function pt(e,t){const a=String(t||"").trim();if(!a)return "";const n=String((null==e?void 0:e.asset_url_format)||"").trim();return n?`${M}/${n.replace("${FILENAME}",a)}`:""}function gt(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 ht(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 bt(e){return (Array.isArray(e)?e:[]).map(Number).filter(e=>Number.isFinite(e)&&e>0)}async function St(){const e=function(){const e=le()[O];return (null==e?void 0:e.ts)&&e.data&&Array.isArray(e.data.appIds)&&Array.isArray(e.data.wishlistAppIds)?me(O,e)?null:(pe(e),e.data):null}();if(e)return {owned:new Set(e.appIds),wishlist:new Set(e.wishlistAppIds)};if(ee.has(O))return ee.get(O);const t=(async()=>{try{const e=await He({url:`${y}?t=${Date.now()}`,anonymous:!1,headers:{"Cache-Control":"no-cache"}}),t=bt(null==e?void 0:e.rgOwnedApps),a=bt(null==e?void 0:e.rgWishlist);return function(e){const t=Date.now();le()[O]={ts:t,at:t,data:e},ce();}({appIds:t,wishlistAppIds:a}),{owned:new Set(t),wishlist:new Set(a)}}catch(e){return {owned:new Set,wishlist:new Set}}})();ee.set(O,t);try{return await t}finally{ee.delete(O);}}async function ft({appId:e,country:t,hit:a=null,anonymous:n=true,usedUsFallback:r=false,requestedCountry:o,onPartial:i,includeTags:s=true,debugBase:l=null,cacheKey:c="",manualOverride:u=false}){var d;const m=Number(e),p=String(t||"US").toUpperCase(),g=String(o||p).toUpperCase(),h=l||{appId:m,country:g,cacheKey:c,cacheSkipped:false,manualOverride:u},b=`${v}?appids=${m}&cc=${encodeURIComponent(p)}&l=english`,S=`https://store.steampowered.com/appreviews/${m}?json=1&language=all&purchase_type=all&num_per_page=0`;h.detailsUrl=b,h.reviewsUrl=S,h.manualOverride=Boolean(u);const f=s&&false!==Z.showSteamTags,w=s;if(f||w){const e=JSON.stringify({ids:[{appid:m}],context:{language:"english",country_code:p,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=k;}const y=He({url:b,anonymous:n}),C=He({url:S,anonymous:n}).catch(e=>(h.reviewsError=String((null==e?void 0:e.message)||e),null)),D=f||w?dt(m,p).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 B=null;try{B=await y;}catch(T){return h.reason=`Steam details failed: ${(null==T?void 0:T.message)||T}`,{found:false,manualOverride:Boolean(u),_debug:h}}let P=null,$=[],_=null,L=false;const M=()=>{var e,t,o,i,s;const l=(null==(e=null==B?void 0:B[m])?void 0:e.success)?B[m].data:null;h.reason=l?`Matched Steam app ${m} (${(u?["manual App ID",p]:[n?"guest items":"session items",r?`US fallback (requested ${g})`:p]).join(", ")})`:`App ${m} resolved, but appdetails success=false`,h.detailsSuccess=Boolean(null==(t=null==B?void 0:B[m])?void 0:t.success),h.detailsCountry=p,h.reviews=(null==P?void 0:P.query_summary)||null,h.tags=$,h.categories=ht(l),h.extras=_;const c=(null==_?void 0:_.franchise)||null,d=(null==_?void 0:_.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:m,name:(null==l?void 0:l.name)||(null==a?void 0:a.name)||`App ${m}`,storeUrl:`https://store.steampowered.com/app/${m}/`,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==(o=null==l?void 0:l.recommendations)?void 0:o.total)||null,reviews:(null==P?void 0:P.query_summary)||null,tags:$,categories:ht(l),deckCompat:null!=(i=null==_?void 0:_.deckCompat)?i:null,franchise:c,systems:d,discountEndDate:null!=(s=null==_?void 0:_.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:p,manualOverride:Boolean(u),_debug:h}},A=()=>{L&&"function"==typeof i&&i(M());},H=C.then(e=>(P=e,A(),e)),G=D.then(e=>($=f&&(null==e?void 0:e.tags)||[],_=(null==e?void 0:e.extras)||null,A(),e));L=true,A(),await Promise.all([H,G]);const O=M();return (null==(d=null==B?void 0:B[m])?void 0:d.success)||a||(O.found=false),c&&O.found&&function(e,t,a){var n;if(!e||!(null==t?void 0:t.found)||!ue())return;const r=ve(t);if(a)return r.tagsLoaded=true,void he(e,r);r.tagsLoaded=false;const o=le()[e];(null==(n=null==o?void 0:o.data)?void 0:n.found)&&true===o.data.tagsLoaded&&!me(e,o)||he(e,r);}(c,O,s),Se(O)}async function wt(e,{includeTags:t,country:a,manualOverride:n}){const r=ge(e);if(!r)return null;let o={...r,manualOverride:Boolean(n||r.manualOverride)},i=false;return function(e,t){return !(!t||false===Z.showSteamTags||!(null==e?void 0:e.found)||null==e.appId||true===e.tagsLoaded)}(o,t)&&(o=await async function(e,t){const a=await mt(e.appId,t).catch(()=>[]);return {...e,tags:Array.isArray(a)?a:[],tagsLoaded:true}}(o,a),he(e,ve(o)),i=true),i?null==(s=o)||"object"!=typeof s?s:{...s,_cache:"mixed"}:be(o);var s;}async function vt(e,t,{onPartial:a,includeTags:n=true,manualOverride:r=false}={}){const o=Number(e);if(!Number.isFinite(o)||o<=0)return {found:false,_debug:{reason:"Invalid Steam App ID"},_cache:"na"};const i=String(t||"US").toUpperCase(),s=`steam:id:${i}:${o}`,l=n?s:`${s}:lite`,c=await wt(s,{includeTags:n,country:i,manualOverride:r});if(c)return c;if(ee.has(l))return ee.get(l);const u=ft({appId:o,country:i,requestedCountry:i,anonymous:true,onPartial:a,includeTags:n,cacheKey:s,manualOverride:r,debugBase:{appId:o,country:i,cacheKey:s,cacheSkipped:false,manualOverride:Boolean(r),searches:[]}});ee.set(l,u);try{return await u}finally{ee.delete(l);}}async function yt({title:e,slug:t,country:a,onPartial:n,includeTags:r=true}){const o=function(e,t,a){const n=String(a||"US").toUpperCase(),r=ke(t);return r?`id:${n}:${r}`:`title:${n}:${We(e)}`}(e,t,a);if(te.has(o))return {found:false,_debug:{reason:"Steam miss (session memory)",missKey:o}};const i=ke(t);let s;return s=i?await vt(i,a,{onPartial:n,includeTags:r,manualOverride:true}):await async function(e,t,{onPartial:a,includeTags:n=true}={}){const r=String(t||"US").toUpperCase(),o=`steam:${r}:${We(e)}`,i=n?o:`${o}:lite`,s=await wt(o,{includeTags:n,country:r,manualOverride:false});if(s)return s;if(ee.has(i))return ee.get(i);const l=(async()=>{const t={title:e,country:r,cacheKey:o,cacheSkipped:false,searches:[]},i=async(t,a)=>{var n,r;const o=(t=>`https://store.steampowered.com/api/storesearch/?term=${encodeURIComponent(e)}&l=english&cc=${encodeURIComponent(t)}`)(t);try{const e=await He({url:o,anonymous:a}),i=Array.isArray(null==e?void 0:e.items)?e.items:[];return {ok:!0,anonymous:a,country:t,url:o,total:null!=(n=null==e?void 0:e.total)?n:i.length,items:i,summary:{anonymous:a,country:t,url:o,total:null!=(r=null==e?void 0:e.total)?r:i.length,items:i.slice(0,8).map(e=>({id:e.id,name:e.name,type:e.type}))}}}catch(i){return {ok:false,anonymous:a,country:t,url:o,items:[],summary:{anonymous:a,country:t,url:o,error:String((null==i?void 0:i.message)||i)}}}},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()],o=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 o=null,i=0;for(const s of r){const e=Xe(s.name,t);e>i&&(i=e,o=s);}return i>=85?o:null}(r,e)||null,i=new Set((t.items||[]).map(e=>null==e?void 0:e.id).filter(Boolean));return {hit:o,mergedItems:r,anonymous:o?!i.has(o.id):Boolean(a.ok&&!t.ok)}},l=async e=>{const[a,n]=await Promise.all([i(e,false),i(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:m,anonymous:p}=d;return t.searchCountry=c,t.usedUsFallback=u,t.anonymous=p,m?(t.picked={id:m.id,name:m.name,type:m.type},ft({appId:m.id,country:c,hit:m,anonymous:p,usedUsFallback:u,requestedCountry:r,onPartial:a,includeTags:n,debugBase:t,cacheKey:o,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})})();ee.set(i,l);try{return await l}finally{ee.delete(i);}}(e,a,{onPartial:n,includeTags:r}),(null==s?void 0:s.found)?te.delete(o):te.add(o),s}function kt(e,t){return `https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/${Number(e)}/${t}`}async function xt(e,{onPartial:t,country:a}={}){const n=Number(e);if(!Number.isFinite(n)||n<=0)return null;const r=Z.showSteamDbIcon||Z.showSteamDbCover,o=Z.showSteamDbGallery,i=Z.showSteamPlayers,s=false!==Z.showSteamDbDetails;if(!(r||o||i||s))return null;const l=`steamdb:media:${n}`,c=`steam:screenshots:${n}`,u=Boolean(Z.debugMode);let d=ge(l),m=Boolean(d),p=o?ge(c):null,g=Array.isArray(p);p&&!Array.isArray(p)&&(p=null,g=false);let h=null,b=null,S=null,f=null,w=false;const y=a||Z.steamCountry||"US",k=e=>{"function"==typeof t&&t(e);},x=()=>{const{iconUrl:e,logoUrl:t,logoIsPortrait:a}=(()=>{const e=(null==d?void 0:d.iconUrl)||"",t=(null==d?void 0:d.logoUrl)||kt(n,"header.jpg")||kt(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?m?"hit":d?"miss":"na":"na",v=o?g?"hit":Array.isArray(p)?"miss":"na":"na",y=s?w?"hit":f?"miss":"na":"na",k=Array.isArray(null==f?void 0:f.technologies)?f.technologies:[];return {appId:n,iconUrl:r&&Z.showSteamDbIcon?e:"",logoUrl:r&&Z.showSteamDbCover?t:"",logoIsPortrait:Boolean(a),screenshots:o&&Array.isArray(p)?p:null,players:i?h:null,franchise:s&&(null==f?void 0:f.franchise)||null,systems:s&&(null==f?void 0:f.systems)||null,technologies:s?k:[],lastRecordUpdate:s&&(null==f?void 0:f.lastRecordUpdate)||null,metaBlocked:Boolean(null==f?void 0:f.blocked),source:(null==d?void 0:d.source)||(null==f?void 0:f.source)||"steam",_cache:we(c,v,y),_cacheMedia:c,_cacheShots:v,_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,o?Array.isArray(p)?`Screenshots: ${p.length} from appdetails`:"Screenshots pending":null,"steam-api"===b?"Players from GetNumberOfCurrentPlayers (live, not cached)":i?"Players pending":null,s?(null==f?void 0:f.blocked)?"SteamDB HTML blocked (Cloudflare)":"steamdb"===(null==f?void 0:f.source)?"SteamDB app table parsed":(null==f?void 0:f.error)?`SteamDB meta error: ${f.error}`:"SteamDB meta pending":null].filter(Boolean).join(" · "),chartsUrl:`${H}/${n}/charts/`,pageUrl:`${H}/${n}/`,playersApiUrl:S,playersSource:b,media:d,screenshots:p,players:h,pageMeta:f,iconUrl:e,logoUrl:t}:void 0}};r&&!d?(d={iconUrl:"",logoUrl:kt(n,"header.jpg"),source:"steam-cdn-early"},k(x())):(r||o||s)&&k(x());const D=r?async function(e,t){const{assets:a}=await dt(e,t);return a}(n,y).catch(()=>null):Promise.resolve(null),B=o&&!Array.isArray(p)?async function(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return Se([]);const a=`steam:screenshots:${t}`,n=ge(a);if(Array.isArray(n))return be(n);if(ee.has(a))return ee.get(a);const r=(async()=>{var e;try{const n=`${v}?appids=${encodeURIComponent(t)}&filters=screenshots&l=english`,r=await He({url:n,anonymous:!0}),o=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 o.length&&he(a,o),Se(o)}catch(n){return Se([])}})();ee.set(a,r);try{return await r}finally{ee.delete(a);}}(n).then(e=>(p=Array.isArray(e)?e:[],g="hit"===fe(e),k(x()),p)):Promise.resolve(p),P=i&&null==h?(async()=>{S=`${C}?appid=${encodeURIComponent(n)}`;const e=await async function(e){var t;try{const a=await He({url:`${C}?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",k(x()));})():Promise.resolve(),$=s?async function(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return Se(null);const a=at(t),n=ge(a);if(n&&"object"==typeof n&&!n.blocked)return be(n);if(ee.has(a))return ee.get(a);const r=`${H}/${t}/`,o=(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 rt(t)}(await He({url:r,responseType:"text",timeout:2e4,anonymous:!1}));if(!e||e.blocked)return Se(e||{blocked:!0,source:"steamdb-cf"});const n=ot(t,e,{pageUrl:r});return he(a,n),Se(n)}catch(e){return Se({blocked:false,source:"steamdb-error",error:String((null==e?void 0:e.message)||e),pageUrl:r})}})();ee.set(a,o);try{return await o}finally{ee.delete(a);}}(n).then(e=>(f=e&&"object"==typeof e?ve(e)||e:null,w="hit"===fe(e),k(x()),f)):Promise.resolve(null),[_]=await Promise.all([D,B,P,$]);_&&(_.iconUrl||_.logoUrl)&&(d={iconUrl:_.iconUrl||(null==d?void 0:d.iconUrl)||"",logoUrl:_.logoUrl||(null==d?void 0:d.logoUrl)||"",source:"steam-assets"},m||he(l,d),k(x())),r&&Z.showSteamDbIcon&&d&&!d.iconUrl&&(d={...d,iconUrl:kt(n,"capsule_sm_120.jpg")}),o&&!Array.isArray(p)&&(p=[]);const L=x();return k(L),L}const Ct=function(){const e="undefined"!=typeof document&&document.createElement("link").relList;return e&&e.supports&&e.supports("modulepreload")?"modulepreload":"preload"}(),Dt={},Bt="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";let Pt=null;function $t(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 _t(e){const t=Number(e);return !Number.isFinite(t)||t<=0?null:t/3600}function Lt(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 Mt(e,t){if(!Array.isArray(e)||!e.length)return null;const a=e.map(e=>({item:e,titleScore:Xe((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 At(...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 Ht(){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 Gt(){const e=document.querySelector("#game-profile h1, #center-content h1, main h1");return ((null==e?void 0:e.textContent)||"").trim()}function Ot(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 Tt=[];function Rt(e){Tt=e;}function It(e){const t=document.querySelector(`[${d}="cover"]`);if(!t)return;const a=Array.isArray(e)?e.findIndex(e=>"cover"===e.kind):-1;if(!Z.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",Y.steamGalleryOpen);const n=()=>jt(e,a);t.onclick=e=>{e.preventDefault(),n();},t.onkeydown=e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),n());};}const Nt="data-blp-cover-viewer";function Et(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)),o=[];for(const i of Tt||[]){const e=String(i.full||i.src||i.thumb||"").trim(),t=String(i.thumb||i.full||i.src||"").trim();e&&!r.has(e)&&(r.add(e),o.push({src:e,thumb:t||e,kind:i.kind||"screenshot",alt:i.alt||""}));}zt({items:[n,...o],index:0,title:Gt()||Y.viewerOpenCover});}(t);}function Ft(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),Et(e));}function Ut(){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(Nt)&&(e.setAttribute(Nt,"1"),e.classList.add("blp-cover-zoomable"),e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",Y.viewerOpenCover),e.addEventListener("click",Et),e.addEventListener("keydown",Ft));}const qt=(()=>{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(o){}}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 o(){t&&(t.scale=1,t.tx=0,t.ty=0,r());}function i(e,n,o){if(!t)return;const i=t.stage.getBoundingClientRect(),s=(null==n?i.left+i.width/2:n)-i.left-i.width/2,l=(null==o?i.top+i.height/2:o)-i.top-i.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&&i(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,i=(e%n.length+n.length)%n.length;t.index=i;const s=n[i];if(!s||!r)return;const c=++t.loadGen;r.alt=s.alt||"",a||o(),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=V(Y.viewerOf,{current:a+1,total:n.length}));const o=n.length>1;t.prevBtn&&(t.prevBtn.hidden=!o),t.nextBtn&&(t.nextBtn.hidden=!o);}(),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],o=null==r?void 0:r.src;if(!o||t.prefetched.has(o))continue;t.prefetched.add(o);const i=new Image;i.decoding="async",i.referrerPolicy="no-referrer",i.src=o;}}(i);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,m,p,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 S=Number(l.index);Number.isFinite(S)||(S=0),S=a(0|S,0,b.length-1);const f=l.title||Y.steamGalleryTitle||"",w=document.createElement("div");w.className="blp-viewer",w.setAttribute("role","dialog"),w.setAttribute("aria-modal","true"),w.setAttribute("aria-label",f||"Image viewer"),w.innerHTML=`\n
\n
\n ${oe(f)}\n \n
\n
\n \n \n \n \n
\n
\n
\n \n
\n \n
\n \n
\n
\n \n
\n
\n `;const v=w.querySelector("[data-blp-viewer-film]");v.innerHTML=b.map((e,t)=>`\n \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(),o()))};return t={root:w,items:b,index:S,scale:1,tx:0,ty:0,loadGen:0,prefetched:new Set,prevOverflow:document.documentElement.style.overflow,img:w.querySelector(".blp-viewer__img"),frame:w.querySelector("[data-blp-viewer-frame]"),stage:w.querySelector("[data-blp-viewer-stage]"),spinner:w.querySelector("[data-blp-viewer-spinner]"),film:v,counter:w.querySelector("[data-blp-viewer-counter]"),prevBtn:w.querySelector("[data-blp-viewer-prev]"),nextBtn:w.querySelector("[data-blp-viewer-next]"),zoomInBtn:w.querySelector("[data-blp-viewer-zoom-in]"),zoomOutBtn:w.querySelector("[data-blp-viewer-zoom-out]"),resetBtn:w.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==(m=t.nextBtn)||m.addEventListener("click",e=>{e.stopPropagation(),u(1);}),null==(p=t.zoomInBtn)||p.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(),o();}),v.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,m=0,p=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},S=e=>{var t;p.delete(e.pointerId),p.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(p.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===p.size){const r=[...p.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,m=e.clientY,a.classList.add("is-dragging"));}}),a.addEventListener("pointermove",e=>{if(p.has(e.pointerId)&&p.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===p.size){const e=[...p.values()],t=Math.hypot(e[0].x-e[1].x,e[0].y-e[1].y)||1;return void i(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-m;(Math.abs(a)>1||Math.abs(n)>1)&&(u=true),d=e.clientX,m=e.clientY,t.tx+=a,t.ty+=n,r();}),a.addEventListener("pointerup",S),a.addEventListener("pointercancel",S),a.addEventListener("dblclick",e=>{e.preventDefault(),t.scale>1.01||Math.abs(t.tx)>1||Math.abs(t.ty)>1?o():i(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(w),document.addEventListener("keydown",y,true),c(S),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:o}})();function zt(e){return qt.open(e)}function jt(e,t){zt({items:e,index:t,title:Y.steamGalleryTitle});}function Wt(e){return "hit"===e?Y.debugCacheHit:"miss"===e?Y.debugCacheMiss:"mixed"===e?Y.debugCacheMixed:Y.debugCacheNa}function Vt(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 o=e.querySelector(a);if(null==(n=null==o?void 0:o.querySelector(".blp-cache-badge"))||n.remove(),!Z.debugMode)return;const i=r.includes(t)?t:"na";if(e.classList.add("blp-debug-cache",`blp-debug-cache--${i}`),!o)return;const s=document.createElement("span");s.className=`blp-cache-badge blp-cache-badge--${i}`,s.textContent=Wt(i),s.title=Wt(i),o.appendChild(s);}function Jt(e,t){let a=0;return function(...n){clearTimeout(a),a=setTimeout(()=>e.apply(this,n),t);}}const Zt="blp-toast-host",Kt="blp_toast_queue";function Yt(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 Xt(e,t={}){const a=String(e||"").trim();if(!a)return null;const n=["info","success","warning","error"].includes(t.type)?t.type:"info",r=Number.isFinite(t.duration)&&t.duration>0?t.duration:3800,o=function(){let e=document.getElementById(Zt);return (null==e?void 0:e.isConnected)||(e=document.createElement("div"),e.id=Zt,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;)Yt(o.firstElementChild);const i=document.createElement("div");return i.className=`blp-toast blp-toast--${n}`,i.setAttribute("role","status"),i.innerHTML=`${oe(a)}`,i.addEventListener("click",()=>Yt(i)),o.appendChild(i),requestAnimationFrame(()=>{i.classList.add("is-in");}),r<1/0&&setTimeout(()=>Yt(i),r),i}function Qt(){return true===Z.showExport}const ea=["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"],ta="data-blp-export",aa="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 ra(e){const t=null==e?"":String(e);return /[",\r\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}function oa(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 ia(e){const t=String(e||"").trim();return t?/^windows\s*pc$/i.test(t)?"PC":t:""}function sa(){return document.querySelector("#log-editor-full")||document.querySelector("#journal-game-modal .modal-content #log-editor-full")||document.querySelector("#journal-game-modal .modal-body")}function la(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 ca={wishlist:"Planned",backlog:"Planned",playing:"In progress",shelved:"Deferred",abandoned:"Dropped",retired:"Tried",played:"Done"},ua={wishlist:"Wishlist",backlog:"Backlog",playing:"Playing",shelved:"Shelved",abandoned:"Abandoned",retired:"Retired",played:"Played"};function da(e,t="notion"){const a=la(e);return "original"===t?a&&ua[a]||"":a?ca[a]||"":"Not started"}function ma(){var e,t;const a=sa();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=la(null==(e=a.querySelector("#status"))?void 0:e.value);return n||la(((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,o]of n){const e=document.querySelectorAll(`#logging-sidebar-section ${r}`);for(const t of e)if(oa(t))return o}return ""}function pa(){const e=sa();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 ga(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 ha(){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 ba(){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 Sa(){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 fa(){const e=function(){var e;const t=sa();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 o=t.querySelector(`#${e}`);if(!o)return "";const i=o.querySelector("option:checked")||[...o.selectedOptions||[]][0];return ((null==i?void 0:i.textContent)||"").trim()}("playthrough_platform",t);return ia(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=>ia(e)).join(", ")}function wa(){const e=[...document.querySelectorAll('[data-blp-enrich="steam"] .blp-steam-tag')].map(e=>(e.textContent||"").trim()).filter(Boolean);return [...new Set(e)].join(", ")}function va(){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 ya(){var e,t,a;const n=(null==(e=document.querySelector(`[${d}="cover"]`))?void 0:e.getAttribute("data-blp-appid"))||(null==(t=document.querySelector(`[${d}="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 ka(e,{ratingStyle:t="text",statusStyle:a="notion"}={}){var n;const r={};for(const o of ea)r[o]=null!=(n=e[o])?n:"";return r.Rating=na(e._ratingScore10,t),r.Status=da(e._statusKey,a),r}const xa={csv:{ext:"csv",mime:"text/csv;charset=utf-8",bom:true,build:function(e,t={}){return function(e,t=ea){const a=[t.map(ra).join(",")];for(const n of e)a.push(t.map(e=>{var t;return ra(null!=(t=n[e])?t:"")}).join(","));return `${a.join("\r\n")}\r\n`}([ka(e,t)])}},markdown:{ext:"md",mime:"text/markdown;charset=utf-8",bom:false,build:function(e,t={}){var a;const n=ka(e,t),r=[`# ${n.Name||"Untitled"}`,""];for(const o of ea)"Name"!==o&&r.push(`${o}: ${null!=(a=n[o])?a:""}`);return `${r.join("\n")}\n`}},json:{ext:"json",mime:"application/json;charset=utf-8",bom:false,build:function(e,t={}){return `${JSON.stringify(ka(e,t),null,2)}\n`}}};function Ca(e,t,a={}){const n=xa[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 Da({includeLogEditor:e=true}={}){document.querySelectorAll(`[${ta}="btn"]`).forEach(e=>e.remove()),e&&document.querySelectorAll(`[${ta}="log-btn"]`).forEach(e=>e.remove()),document.querySelectorAll(`.${aa}`).forEach(e=>e.remove());}function Ba(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(!Qt())return;if(document.querySelector(`.${aa}`))return;if(!Ht().isGamePage&&!sa())return;const r=function(){const e=function(){var e,t;const a=sa();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:ga(n),end:ga(r)}}(),t=function(){const e=sa();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()}()||Gt(),a=function(){const e=sa();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=sa();if(!e)return "";const t=(t,a)=>{var n,r;const o=Number(null==(n=e.querySelector(t))?void 0:n.value),i=Number(null==(r=e.querySelector(a))?void 0:r.value),s=Number.isFinite(o)?o:0,l=Number.isFinite(i)?i: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:pa(),Status:"",Rating:"","Expected Rating":"",Difficulty:"",Received:"",Platform:fa(),"Date start":e.start,"Date end":e.end,"Time to Complete":n,Developer:ba(),"Release date":Sa(),Franchise:va(),"Is DLC":ha(),Tags:wa(),Advantages:"",Disadvantages:"",Passing:"",Source:ya(),_ratingScore10:a,_statusKey:ma()}}(),o=document.createElement("div");o.className=aa,o.innerHTML=`\n \n `;const i=document.documentElement.style.overflow;document.documentElement.style.overflow="hidden";const s=()=>{document.documentElement.style.overflow=i,o.remove();},l=()=>{var e;return (null==(e=o.querySelector('input[name="blp-export-rating"]:checked'))?void 0:e.value)||"text"},c=()=>{var e;return (null==(e=o.querySelector('input[name="blp-export-status"]:checked'))?void 0:e.value)||"notion"},u=()=>{var e;return (null==(e=o.querySelector('input[name="blp-export-format"]:checked'))?void 0:e.value)||"csv"},d=()=>{const e=o.querySelector("[data-blp-export-preview]");if(!e)return;const t=document.createElement("div");t.innerHTML=Ma(r,l(),c(),u());const a=t.firstElementChild;a&&e.replaceWith(a);};o.addEventListener("click",e=>{e.target===o&&s();}),null==(e=o.querySelector("[data-blp-export-cancel]"))||e.addEventListener("click",s),o.addEventListener("keydown",e=>{"Escape"===e.key&&(e.preventDefault(),s());}),o.querySelectorAll('input[name="blp-export-format"]').forEach(e=>{e.addEventListener("change",d);}),o.querySelectorAll('input[name="blp-export-rating"]').forEach(e=>{e.addEventListener("change",d);}),o.querySelectorAll('input[name="blp-export-status"]').forEach(e=>{e.addEventListener("change",d);}),null==(t=o.querySelector("[data-blp-export-run]"))||t.addEventListener("click",()=>{const e=u(),t={ratingStyle:l(),statusStyle:c()};try{const n=Ca(e,r,t);if(!n)return void Xt(Y.exportFormatUnavailable,{type:"error"});!function(e,t,a="text/csv;charset=utf-8"){const n=new Blob([t],{type:a}),r=URL.createObjectURL(n),o=document.createElement("a");o.href=r,o.download=e,o.rel="noopener",document.body.appendChild(o),o.click(),o.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),Xt(V(Y.toastExportDone,{name:r.Name||n.ext.toUpperCase()}),{type:"success"}),s();}catch(n){Xt(Y.toastExportFailed,{type:"error"});}var a;}),null==(a=o.querySelector("[data-blp-export-copy]"))||a.addEventListener("click",async()=>{const e=u(),t={ratingStyle:l(),statusStyle:c()};try{const a=Ca(e,r,t);if(!a)return void Xt(Y.exportFormatUnavailable,{type:"error"});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),Xt(Y.toastExportCopied,{type:"success"});}catch(a){Xt(Y.toastExportCopyFailed,{type:"error"});}}),document.body.appendChild(o),null==(n=o.querySelector("[data-blp-export-run]"))||n.focus();}();}));}function Pa(){var e;if(!Qt())return document.querySelectorAll(`[${ta}="log-btn"]`).forEach(e=>e.remove()),null;const t=document.querySelector("#log-editor-footer");if(!t)return null;let a=t.querySelector(`[${ta}="log-btn"]`);if(a)return a;a=document.createElement("div"),a.setAttribute(ta,"log-btn"),a.className="blp-export-log-wrap col-auto my-auto pr-0",a.innerHTML=`\n \n `,Ba(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 $a=null;function _a(e,t,a,n,{enabled:r=true,checked:o=false}={}){return `\n \n `}function La(e){if(null==e)return true;const t=String(e).trim();return !t||"—"===t||t===Y.exportNoRating}function Ma(e,t="text",a="notion",n="csv"){if("json"===n){const n=ka(e,{ratingStyle:t,statusStyle:a}),r=Object.fromEntries(Object.entries(n).filter(([,e])=>!La(e)));return `\n
\n \n
${oe(JSON.stringify(r,null,2))}
\n
\n `}const r=function(e,t="text",a="notion"){var n;const r={};for(const o of ea)r[o]=null!=(n=e[o])?n:"";return r.Rating=null==e._ratingScore10?"":na(e._ratingScore10,t)||"",r.Status=function(e,t){return da(e,t)||""}(e._statusKey,a),r}(e,t,a),o=ea.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 La(t)?"":`\n
\n ${oe(e)}\n ${oe(t)}\n
\n `}(e,r[e],t)}).join("");return `\n
\n \n
\n ${o}\n
\n
\n `}function Aa(e=""){Qt()?Ht().isGamePage?(function(e=""){if(!Qt()||!Ht().isGamePage)return document.querySelectorAll(`[${ta}="btn"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${ta}="btn"]`);const a=document.querySelector(`[${d}="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(ta,"btn"),t.className="blp-export-wrap",t.innerHTML=`\n \n `,Ba(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),Pa()):document.querySelectorAll(`[${ta}="btn"]`).forEach(e=>e.remove()):Da();}function Ha(){qt.close(),Rt([]),document.querySelectorAll(`[${d}]`).forEach(e=>e.remove());}function Ga(e){return /(?:^|\/)logo\.(png|jpe?g)(?:$|\?)/i.test(String(e||""))}function Oa(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 o=t.classList.contains("is-ready")&&Boolean(n),i=String((Number(t.dataset.blpRevealGen||"0")||0)+1);t.dataset.blpRevealGen=i;const s=()=>{t.dataset.blpRevealGen===i&&r();};if(o)return t.classList.remove("is-ready"),void window.setTimeout(()=>{t.dataset.blpRevealGen===i&&(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 Ta(e=""){if(!Z.showSteamDbIcon)return document.querySelectorAll(`[${d}="icon"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${d}="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(d,"icon"),t.className="blp-title-icon-wrap is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML='';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?Oa(t,n,kt(e,"capsule_sm_120.jpg")):t.remove();}),a.insertAdjacentElement("afterbegin",t),t}function Ra(e=""){if(!Z.showSteamDbCover)return document.querySelectorAll(`[${d}="cover"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${d}="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(d,"cover"),t.className="blp-steamdb-cover is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML='';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{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 Fa(e=""){if(!Z.showSteamDbGallery)return document.querySelectorAll(`[${d}="gallery"]`).forEach(e=>e.remove()),null;let t=document.querySelector(`[${d}="gallery"]`);if(t)return e&&t.setAttribute("data-blp-token",e),t;const a=Ia();return a?(t=document.createElement("section"),t.setAttribute(d,"gallery"),t.className="blp-steam-gallery is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML=`\n \n \n `,a.insertAdjacentElement("afterend",t),Ea(t.querySelector("[data-blp-gallery-track]")),t):null}function Ua(e,t="",{final:a=false}={}){var n;e?(Z.showSteamDbIcon&&Ta(t),Z.showSteamDbCover&&Ra(t),function(e,t,a=""){if(!Z.showSteamDbIcon)return void document.querySelectorAll(`[${d}="icon"]`).forEach(e=>e.remove());if(!e)return;const n=Ta(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,Oa(n,r,e));}(e.iconUrl,e.appId,t),function(e,t,{logoIsPortrait:a=false,token:n=""}={}){if(!Z.showSteamDbCover)return void document.querySelectorAll(`[${d}="cover"]`).forEach(e=>e.remove());if(!e)return;const r=Ra(n);if(!r)return;const o=[],i=e=>{e&&!o.includes(e)&&o.push(e);};i(e),i(kt(t,"header.jpg")),i(kt(t,"library_600x900.jpg")),i(kt(t,"logo.png")),r.dataset.blpFallbacks=o.join("\n"),r.dataset.blpFallbackIdx="0",t&&r.setAttribute("data-blp-appid",String(t));const s=r.querySelector("img");if(!s)return;const l=Ga(o[0])&&!a;s.classList.toggle("blp-steamdb-cover__logo",l),Oa(r,s,o[0]);}(e.logoUrl,e.appId,{logoIsPortrait:Boolean(e.logoIsPortrait),token:t}),Aa(t),function(e,t,a="",{final:n=false,coverUrl:r=""}={}){var o;if(!Z.showSteamDbGallery)return Rt([]),document.querySelectorAll(`[${d}="gallery"]`).forEach(e=>e.remove()),void It([]);const i=!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}(i?[]:e,r);if(i&&!r)return void Fa(a);if(!s.length)return Rt([]),n?document.querySelectorAll(`[${d}="gallery"]`).forEach(e=>e.remove()):Fa(a),void It([]);const l=Fa(a);if(!l)return;const c=`${t||""}|${s.length}|${(null==(o=s[0])?void 0:o.full)||""}|${i?"p":"d"}`;if("1"===l.dataset.blpGalleryReady&&l.dataset.blpGalleryKey===c)return a&&l.setAttribute("data-blp-token",a),Rt(s),void It(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),Rt(s);const u=t?`${H}/${t}/screenshots/`:`${H}/`,m=s.map((e,t)=>{const a=ie(e.thumb||e.full);return `\n \n `}).join("");l.classList.remove("is-loading"),l.innerHTML=`\n \n \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"));jt(s,t);});}),Ea(l.querySelector("[data-blp-gallery-track]")),It(s);}(e.screenshots,e.appId,t,{final:a,coverUrl:e.logoUrl||""}),"steamdb"===e.source&&e.logoUrl&&Ga(e.logoUrl)&&(null==(n=document.querySelector(`[${d}="cover"] img`))||n.classList.add("blp-steamdb-cover__logo")),t&&document.querySelectorAll(`[${d}]`).forEach(e=>{e.setAttribute("data-blp-token",t);})):Ha();}function qa(){document.querySelectorAll(`[${m}]`).forEach(e=>e.remove());}function za(e=""){if(!Z.showSimilarGames)return qa(),null;let t=document.querySelector(`[${m}]`);if(t)return e&&t.setAttribute("data-blp-token",e),t;const a=document.querySelector(`[${d}="gallery"]`)||Ia();return a?(t=document.createElement("section"),t.setAttribute(m,"1"),t.className="blp-similar is-loading",e&&t.setAttribute("data-blp-token",e),t.innerHTML=`\n
\n ${oe(Y.similarGamesTitle)}\n
\n
\n \n \n \n \n \n
\n `,a.insertAdjacentElement("afterend",t),Ea(t.querySelector("[data-blp-similar-track]")),t):null}function ja(e=""){document.querySelectorAll(`#game-rating [${u}="unified-rating"]`).forEach(e=>e.remove());const t=Ia();if(!t)return null;let a=document.querySelector(`.blp-unified-rating-row[${u}="unified-rating"]`);if(a)return e&&a.setAttribute("data-blp-token",e),a.nextElementSibling!==t&&t.insertAdjacentElement("beforebegin",a),a;const n=[["steam",Y.unifiedRatingSteam],["metacritic",Y.unifiedRatingMetacritic],["opencritic",Y.unifiedRatingOpenCritic],["backloggd",Y.unifiedRatingBackloggd]].map(([e,t])=>`
\n ${oe(t)}\n \n \n
`).join("");return a=document.createElement("div"),a.className="row blp-unified-rating-row",a.setAttribute(u,"unified-rating"),e&&a.setAttribute("data-blp-token",e),a.innerHTML=`\n
\n
\n
\n
\n

${oe(Y.unifiedRatingTitle)}

\n

\n \n
\n
\n
\n

${oe(Y.unifiedRatingHint)}

\n

${oe(Y.unifiedRatingLoading)}

\n
\n
\n
\n
\n
${n}
\n
\n
\n
\n
\n `,t.insertAdjacentElement("beforebegin",a),a}function Wa(e){const t=Number(e);return !Number.isFinite(t)||t<0||t>100?null:t}function Va(e){return (Math.round(10*e)/10).toFixed(1)}function Ja(){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 Za=0;function Ka(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 o=`${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=o;}function Ya(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 ${oe(t.label)}\n \n \n `));const o=`${r}|${t.display||""}|${null!=(a=t.score5)?a:""}`;if(n===r&&e.dataset.blpDisplay===o)return;e.dataset.blpStatus=r,e.dataset.blpDisplay=o;const i="missing"===r?Y.unifiedRatingMissing:oe(t.display),s="missing"===r?"":`${oe(Va(t.score5))} ★`;e.innerHTML=`\n ${oe(t.label)}\n ${i}\n ${s}\n `,"ready"!==r||"loading"!==n||Ja()||(e.classList.remove("is-reveal"),e.classList.add("is-reveal"));}function Xa(e){var t,a,n,r;const o=document.querySelector(`.blp-unified-rating-row[${u}="unified-rating"]`);if(!o)return;const i=o.querySelector(".blp-unified-rating");if(!i)return;const s=null!=(null==e?void 0:e.steam),l=!(false!==Z.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}(),d=(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,m=null!=(null==(n=null==(a=null==e?void 0:e.steam)?void 0:a.metacritic)?void 0:n.score)?Wa(e.steam.metacritic.score):null,p=null!=(null==(r=null==e?void 0:e.opencritic)?void 0:r.score)?Wa(e.opencritic.score):null,g=[{key:"steam",label:Y.unifiedRatingSteam,display:null!=d?`${d}%`:null,score5:null!=d?d/20:null,status:s?null!=d?"ready":"missing":"loading"},{key:"metacritic",label:Y.unifiedRatingMetacritic,display:null!=m?String(m):null,score5:null!=m?m/20:null,status:s?null!=m?"ready":"missing":"loading"},{key:"opencritic",label:Y.unifiedRatingOpenCritic,display:null!=p?String(p):null,score5:null!=p?p/20:null,status:l?null!=p?"ready":"missing":"loading"},{key:"backloggd",label:Y.unifiedRatingBackloggd,display:null!=c?Va(c):null,score5:c,status:null!=c?"ready":"missing"}],h=g.filter(e=>"ready"===e.status),b=h.filter(e=>"backloggd"!==e.key),S=g.some(e=>"loading"===e.status);if(b.length)o.style.display="";else {if(s&&l)return void(o.style.display="none");o.style.display="";}const f=h.length>0&&b.length>0,w=f?h.reduce((e,t)=>e+t.score5,0)/h.length:null,v=null!=w?Math.round(10*w)/10:null,y=null==v?"mid":v>=4?"high":v>=3?"mid":"low",k=null!=v?Math.max(0,Math.min(100,v/5*100)):0;i.classList.toggle("is-loading",S&&!f),i.setAttribute("data-grade",y);const x=i.querySelector(".blp-unified-rating__num"),C=i.querySelector(".blp-unified-rating__denom"),D=i.querySelector(".blp-unified-rating__hint"),B=i.querySelector(".blp-unified-rating__meter"),P=i.querySelector(".blp-unified-rating__meter-fill");f&&null!=v?(function(e,t){if(!e)return;const a=Number(t);if(!Number.isFinite(a))return;const n=Ja(),r=e.dataset.blpNum,o=null!=r&&""!==r?Number(r):NaN;e.dataset.blpNum=String(a),e.classList.remove("is-skel");const i=t=>{e.textContent=Va(t),n||(e.classList.remove("is-pulse"),e.classList.add("is-pulse"));};if(n||!Number.isFinite(o)||Math.abs(o-a)<.05)return void i(a);const s=++Za,l=performance.now(),c=o,u=t=>{if(s!==Za)return;const n=Math.min(1,(t-l)/480),r=1-Math.pow(1-n,3);e.textContent=Va(c+(a-c)*r),n<1?requestAnimationFrame(u):i(a);};requestAnimationFrame(u);}(x,v),C&&(C.textContent=Y.unifiedRatingOutOf),D&&(D.textContent=S?Y.unifiedRatingLoading:V(Y.unifiedRatingSources,{n:h.length})),Ka(B,P,k,{indeterminate:false})):(x&&(x.classList.add("is-skel"),x.classList.remove("is-pulse"),delete x.dataset.blpNum,x.innerHTML=''),C&&(C.innerHTML=''),D&&(D.textContent=Y.unifiedRatingLoading),Ka(B,P,0,{indeterminate:true}));for(const u of g)Ya(i.querySelector(`.blp-unified-rating__cell[data-blp-provider="${u.key}"]`)||null,u);}function Qa(e){const t=Number(e);return Number.isFinite(t)?t>=75?"high":t>=50?"mid":"low":""}function en(e){const t=Number(e);return 3===t?{key:"verified",label:Y.deckVerified,cls:"blp-deck-badge--verified"}:2===t?{key:"playable",label:Y.deckPlayable,cls:"blp-deck-badge--playable"}:1===t?{key:"unsupported",label:Y.deckUnsupported,cls:"blp-deck-badge--unsupported"}:0===t?{key:"unknown",label:Y.deckUnknown,cls:"blp-deck-badge--unknown"}:null}function tn(e,t){return (null==e?void 0:e.franchise)||(null==t?void 0:t.franchise)||null}function an(e,t){return (null==e?void 0:e.systems)||(null==t?void 0:t.systems)||null}function nn(e,{appId:t=null}={}){if(!e)return "";const a=[],n=Array.isArray(e.list)?e.list.filter(Boolean):[],r=t?`${H}/${t}/`:`${H}/`;for(const i of n)a.push(`${oe(i)}`);const o=en(e.deckCompat);return o&&a.push(`${oe(V(Y.steamDeckStatus,{status:o.label}))}`),a.length?`${a.join("")}`:""}function rn(e){const t=Array.isArray(e)?e.filter(e=>null==e?void 0:e.name):[];return t.length?`${t.map(e=>`${oe(e.name)}`).join("")}`:""}function on(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?`${oe(a)}`:""}function sn(e,t,a=""){return t?`
\n ${oe(e)}\n ${t}\n
`:""}function ln(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 cn(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 un(e){if(!(null==e?void 0:e.found))return null;if(e.isFree)return Y.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 dn({title:e,slug:t,igdbUrl:a,steam:n}){const r=encodeURIComponent(e||t||""),o=[];a&&o.push({key:"igdb",label:Y.linkIgdb,url:a}),(null==n?void 0:n.storeUrl)?o.push({key:"steam",label:Y.linkSteam,url:n.storeUrl}):r&&o.push({key:"steam",label:Y.linkSteam,url:`https://store.steampowered.com/search/?term=${r}`}),(null==n?void 0:n.appId)?o.push({key:"steamdb",label:Y.linkSteamDb,url:`https://steamdb.info/app/${n.appId}/`}):r&&o.push({key:"steamdb",label:Y.linkSteamDb,url:`https://steamdb.info/search/?a=app&q=${r}`});const i=ze(e,t);return i&&o.push({key:"metacritic",label:Y.linkMetacritic,url:i}),r&&(o.push({key:"opencritic",label:Y.linkOpencritic,url:`https://opencritic.com/search?q=${r}`}),o.push({key:"hltb",label:Y.linkHltb,url:`https://howlongtobeat.com/?q=${r}`}),o.push({key:"pcgamingwiki",label:Y.linkPcgamingwiki,url:`https://www.pcgamingwiki.com/wiki/Special:Search?search=${r}`}),o.push((null==n?void 0:n.appId)?{key:"itad",label:Y.linkItad,url:`${L}/steam/app/${n.appId}/`}:{key:"itad",label:Y.linkItad,url:`${L}/search/?q=${r}`}),o.push({key:"gogdb",label:Y.linkGogdb,url:`https://www.gogdb.org/?q=${r}`})),o.filter(e=>{return t=Z,Boolean(t.showLinks&&t.links&&false!==t.links[e.key]);var t;})}function mn(){document.querySelectorAll(`[${u}]`).forEach(e=>e.remove()),document.querySelectorAll("[data-blp-debug]").forEach(e=>e.remove()),Ha(),Da({includeLogEditor:false}),qa(),document.querySelectorAll(`img[${Nt}]`).forEach(e=>{e.removeEventListener("click",Et),e.removeEventListener("keydown",Ft),e.removeAttribute(Nt),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 pn(e,t){const a=document.createElement("div");return a.className="row mt-2",a.setAttribute(u,e),a.innerHTML=`\n
\n

${oe(t)}

\n
\n
\n `,a}function gn(e){return "links"===e?[0,1,2,3,4].map(()=>'').join(""):"steam"===e?'\n \n \n \n ':"metacritic"===e||"opencritic"===e?'':"hltb"===e?'\n \n \n \n ':"deckproton"===e?'\n \n \n ':"players"===e?'':"steamdb"===e?'\n \n \n \n \n ':"gamestatus"===e?'\n \n \n ':''}function hn(e,t){const a=null==e?void 0:e.querySelector("[data-blp-values]");a&&(a.innerHTML=t);}function bn(e){e&&(e.hidden=true);}function Sn(e){e&&(e.hidden=false);}function fn(e){return "owned"===e?`${oe(Y.steamOwned)}`:"wishlist"===e?`${oe(Y.steamWishlist)}`:""}function wn(e,t){if(!t)return "";const a=ke(t),n=(null==e?void 0:e.appId)||a||"";return n||Z.showSteam?`\n ${oe(n?V(Y.steamMatchLabel,{id:n,source:a||(null==e?void 0:e.manualOverride)?Y.steamMatchManual:Y.steamMatchAuto}):Y.steamFixMatch)}\n \n `:""}function vn(e,{owned:t=false,wishlist:a=false,slug:n=""}={}){var r,o;const i=[];t?i.push({html:fn("owned")}):a&&i.push({html:fn("wishlist")});const s=function(e){var t;const a=un(e);if(!a)return "";if(!((null==(t=e.price)?void 0:t.discount_percent)>0))return `${oe(a)}`;const n=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=un(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),o=n?`${oe(n)}`:"",i=r?`${oe(V(Y.discountEnds,{date:r}))}`:"";return `\n ${oe(V(Y.discount,{n:e.price.discount_percent}))}\n ${o}${oe(a)}\n ${i}\n `}(e);s&&i.push({html:s});const l=cn(e.reviews),c=ln(e.reviews);if(l?i.push({html:`${oe(l)}`}):e.recommendations&&i.push({html:`${oe(V(Y.recommendations,{n:e.recommendations.toLocaleString()}))}`}),e.usedUsFallback&&i.push({html:`${oe(V(Y.steamUsFallback,{cc:e.requestedCountry||""}))}`}),false!==Z.showSteamCategories&&(null==(r=e.categories)?void 0:r.length)){const t=e.categories.map(e=>{return `${oe(e.description)}`;var t;}).join("");i.push({html:`${t}`});}if(false!==Z.showSteamTags&&(null==(o=e.tags)?void 0:o.length)){const t=e.tags.map(e=>{return `${oe(e.name)}`;var t;}).join("");i.push({html:`${t}`});}const u=wn(e,n);return u&&i.push({html:u}),i.length?i.map(e=>`${e.html}`).join(""):`${oe(Y.steam)}`}function yn(e,t,a,n){if(!t)return "";const r=n?`${oe(Y.debugSrcRequest)}`:"",o=a?`${oe(a)}`:"";return `
  • \n
    \n ${r}${oe(e)}${o}\n
    \n ${oe(t)}\n
  • `}function kn(e,{steam:t,links:a,error:n,owned:o=false,wishlist:i=false,gamestatus:s=null,title:l="",slug:c="",steamDb:d=null,opencritic:m=null,hltb:p=null,proton:g=null,skipDebug:h=false}){var b;const S=Boolean(Z.debugMode);if(e.steam)if(n)hn(e.steam,`${oe(Y.loadError)}${wn(t,c)}`),Sn(e.steam),Vt(e.steam,fe(t)||"miss");else if(null==t?void 0:t.found)hn(e.steam,vn(t,{owned:o,wishlist:i,slug:c})),Sn(e.steam),Vt(e.steam,fe(t)||"miss");else {const a=S?`${oe(Y.notOnSteam)}`:"",n=wn(t,c);a||n?(hn(e.steam,`${a}${n?`${n}`:""}`),Sn(e.steam),Vt(e.steam,fe(t)||"miss")):bn(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=[sn(Y.franchise,(r=tn(e,t),(null==r?void 0:r.name)?`${oe(r.name)}`:""),"franchise"),sn(Y.supportedSystems,nn(an(e,t),{appId:a}),"systems"),sn(Y.technologies,rn(null==t?void 0:t.technologies),"technologies"),sn(Y.lastRecordUpdate,on(null==t?void 0:t.lastRecordUpdate,{appId:a}),"lastRecordUpdate")].filter(Boolean);var r;return n.length?`
    ${n.join("")}
    `:""}(t,d);a&&!n?(hn(e.steamdb,a),Sn(e.steamdb),Vt(e.steamdb,we((null==t?void 0:t.franchise)||(null==t?void 0:t.systems)?t:null,(null==d?void 0:d._cacheMeta)||d))):null==t&&null==d?Sn(e.steamdb):S&&(null==t?void 0:t.found)?(hn(e.steamdb,`${oe((null==d?void 0:d.metaBlocked)?Y.steamDbBlocked:"—")}`),Sn(e.steamdb),Vt(e.steamdb,(null==d?void 0:d._cacheMeta)||"na")):bn(e.steamdb);}if(e.metacritic){const a=null==(b=null==t?void 0:t.metacritic)?void 0:b.score;null==a||n?bn(e.metacritic):(hn(e.metacritic,function(e,t){const a=Qa(e),n="blp-mc-badge"+(a?` blp-mc-badge--${a}`:""),r=oe(String(e));return t?`${r}`:`${r}`}(a,ze(l,c))),Sn(e.metacritic),Vt(e.metacritic,fe(t)||"miss"));}if(e.opencritic)if(null==m)Sn(e.opencritic);else {const t=(w=m)&&!w.missing&&w.tier?`${oe(w.tier)}`:"";t&&!n?(hn(e.opencritic,t),Sn(e.opencritic),Vt(e.opencritic,fe(m)||"miss")):bn(e.opencritic);}var w;if(e.hltb)if(null==p)Sn(e.hltb);else {const t=function(e){if(!e||e.missing)return "";const t=[],a=$t(e.main),n=$t(e.extra),r=$t(e.complete);return a&&t.push(`${oe(V(Y.hltbMain,{n:a}))}`),n&&t.push(`${oe(V(Y.hltbExtra,{n:n}))}`),r&&t.push(`${oe(V(Y.hltbComplete,{n:r}))}`),t.length?`${t.join("")}`:""}(p);t&&!n?(hn(e.hltb,t),Sn(e.hltb),Vt(e.hltb,fe(p)||"miss")):bn(e.hltb);}if(e.deckproton){const a=function({steam:e,proton:t}){const a=[],n=en(null==e?void 0:e.deckCompat);if(n&&a.push(`${oe(n.label)}`),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(`${oe(V(Y.protonTier,{tier:e}))}`);}return a.length?`${a.join("")}`:""}({steam:t,proton:g});a&&!n?(hn(e.deckproton,a),Sn(e.deckproton),Vt(e.deckproton,we(t,g))):S&&(null==t?void 0:t.found)?(hn(e.deckproton,''),Sn(e.deckproton),Vt(e.deckproton,we(t,g))):bn(e.deckproton);}if(e.players){const t=null==d?void 0:d.players;if(null==t||n)S?(hn(e.players,''),Sn(e.players),Vt(e.players,"na")):bn(e.players);else {const a=(null==d?void 0:d.appId)?`${H}/${d.appId}/charts/`:`${H}/`,n=V(Y.playersOnline,{n:Number(t).toLocaleString()});hn(e.players,`${oe(n)}`),Sn(e.players),Vt(e.players,"miss");}}if(e.gamestatus&&(s&&!s.missing&&s.data?(hn(e.gamestatus,function(e){const t=null==e?void 0:e.data;if(!t)return "";const a=Ie(t),n=Ne(t,a),r=t.slug||e.slug,o=r?`${G}/${encodeURIComponent(r)}`:G,i=[];for(const l of Fe(t.protections))i.push(`${oe(l)}`);for(const l of Fe(t.hacked_groups_en||t.hacked_groups)){const e=/bypass|обход|hypervisor/i.test(l)?"partial":a;i.push(`${oe(l)}`);}t.is_AAA&&i.push('AAA');const s=[`${oe(n)}`];return i.length&&s.push(`${i.join("")}`),s.join("")}(s)),Sn(e.gamestatus),Vt(e.gamestatus,fe(s)||"miss")):bn(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 f.replace("{domain}",encodeURIComponent(t))}catch(t){return ""}}(e.url),n=a?``:"",r=t?"":'';return `\n \n \n ${n}${oe(e.label)}\n ${r}\n \n `}(e,{last:t===a.length-1})).join("");hn(e.links,t),Sn(e.links),Vt(e.links,"na");}else bn(e.links);h||function({steam:e,steamDb:t,gamestatus:a,owned:n=false,wishlist:o=false,error:i=false,title:s="",slug:l=""}){var c,d,m,p;const g=Boolean(document.querySelector("[data-blp-debug][open]"));if(document.querySelectorAll("[data-blp-debug]").forEach(e=>e.remove()),!Z.debugMode)return;const h=function({steam:e,steamDb:t,gamestatus:a,title:n,slug:r}){const o=[],i=(e,t,a,n,r=false)=>{a&&!o.some(n=>n.url===a&&n.label===t&&n.module===e)&&o.push({module:e,label:t,url:a,purpose:n||"",request:Boolean(r)});};i("page","Backloggd",location.href,Y.debugSrcBackloggd),r&&i("page","IGDB",Ot(r),Y.debugSrcIgdb);const s=ze(n,r);s&&i("page","Metacritic",s,Y.debugSrcMetacritic),(null==e?void 0:e.storeUrl)&&i("steam","Steam Store",e.storeUrl,Y.debugSrcSteamStore),(null==e?void 0:e.tinyImage)&&i("steam","Steam tiny image",e.tinyImage,Y.debugSrcSteamTiny),(null==e?void 0:e.headerImage)&&i("steam","Steam header image",e.headerImage,Y.debugSrcSteamHeader),(Z.showSteamOwned||Z.showSteamWishlist)&&i("steam","Steam userdata",y,Y.debugSrcSteamOwned,true);const l=(null==e?void 0:e._debug)||{};for(const d of l.searches||[])(null==d?void 0:d.url)&&i("steam",`Steam search (${d.anonymous?"guest":"session"}, ${d.country||"?"})`,d.url,Y.debugSrcSteamSearch,true);l.detailsUrl&&i("steam","Steam appdetails",l.detailsUrl,Y.debugSrcSteamDetails,true),l.reviewsUrl&&i("steam","Steam appreviews",l.reviewsUrl,Y.debugSrcSteamReviews,true),l.tagsUrl&&i("steam","Steam GetItems (tags)",l.tagsUrl,Y.debugSrcSteamTags,true),l.tagMapUrl&&i("steam","Steam populartags",l.tagMapUrl,Y.debugSrcSteamTagMap,true),(null==e?void 0:e.appId)&&(i("steamdb","SteamDB",`${H}/${e.appId}/`,Y.debugSrcSteamDb),i("steamdb","SteamDB charts",`${H}/${e.appId}/charts/`,Y.debugSrcSteamDbCharts),i("steamdb","SteamDB info",`${H}/${e.appId}/info/`,Y.debugSrcSteamDbInfo));const c=(null==t?void 0:t._debug)||{};c.chartsUrl&&i("steamdb","SteamDB charts",c.chartsUrl,Y.debugSrcSteamDbCharts),c.playersApiUrl&&i("steamdb","Steam players API",c.playersApiUrl,Y.debugSrcSteamPlayersApi,true),(c.iconUrl||(null==t?void 0:t.iconUrl))&&i("steamdb","Icon URL",c.iconUrl||t.iconUrl,Y.debugSrcIcon),(c.logoUrl||(null==t?void 0:t.logoUrl))&&i("steamdb","Logo URL",c.logoUrl||t.logoUrl,Y.debugSrcLogo);const u=(null==a?void 0:a._debug)||{};for(const d of u.attempts||[])(null==d?void 0:d.url)&&i("gamestatus",`GameStatus API (${d.slug||"?"})`,d.url,Y.debugSrcGameStatusApi,true);return (null==a?void 0:a.slug)&&i("gamestatus","GameStatus page",`${G}/${encodeURIComponent(a.slug)}`,Y.debugSrcGameStatusPage),o}({steam:e,steamDb:t,gamestatus:a,title:s,slug:l}),b=function(e){const t=[{key:"page",label:Y.debugSectionPage},{key:"steam",label:Y.debugSectionSteam},{key:"steamdb",label:Y.debugSectionSteamDb},{key:"gamestatus",label:Y.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=>yn(e.label,e.url,e.purpose,e.request)).join("");a.push(`\n
    \n
    ${oe(n.label)}
    \n
      ${r}
    \n
    \n `);}return a.join("")||`
    ${oe("—")}
    `}(h),S=[],f=(e,t,a)=>{let n="";try{n=JSON.stringify(a,null,2);}catch(r){n=String(a);}S.push(`\n
    \n ${oe(e)}\n ${oe(t||"—")}\n
    ${oe(n)}
    \n
    \n `);};f(Y.debugSectionPage,`${s||"—"} / ${l||"—"}`,{href:location.href,title:s,slug:l,settings:{steamCountry:Z.steamCountry,showSteam:Z.showSteam,showSteamOwned:Z.showSteamOwned,showSteamWishlist:Z.showSteamWishlist,showSteamTags:Z.showSteamTags,showSteamCategories:Z.showSteamCategories,showMetacritic:Z.showMetacritic,showOpenCritic:Z.showOpenCritic,showHltb:Z.showHltb,showDeckProton:Z.showDeckProton,showGameStatus:Z.showGameStatus,showSteamDbIcon:Z.showSteamDbIcon,showSteamDbCover:Z.showSteamDbCover,showSteamDbGallery:Z.showSteamDbGallery,showSteamDbDetails:Z.showSteamDbDetails,showSimilarGames:Z.showSimilarGames,showGameStats:Z.showGameStats,showSteamPlayers:Z.showSteamPlayers,showCardBadges:Z.showCardBadges,showCardBadgePrice:Z.showCardBadgePrice,showCardBadgeReview:Z.showCardBadgeReview,showCardBadgeOwned:Z.showCardBadgeOwned,showCardBadgeWishlist:Z.showCardBadgeWishlist,showCardBadgeGameStatus:Z.showCardBadgeGameStatus,showLinks:Z.showLinks,links:Z.links,steamOverride:ke(l)},owned:n,wishlist:o,error:i,SCRIPT_VERSION:r}),f(Y.debugSectionSteam,(null==(c=null==e?void 0:e._debug)?void 0:c.reason)||((null==e?void 0:e.found)?`appId=${e.appId}`:Y.notOnSteam),(null==e?void 0:e._debug)||e||{reason:"Steam payload missing"}),f(Y.debugSectionSteamDb,(null==(d=null==t?void 0:t._debug)?void 0:d.reason)||(t?`source=${t.source}`:"SteamDB extras not fetched"),(null==t?void 0:t._debug)||t||{reason:"SteamDB payload missing"}),f(Y.debugSectionGameStatus,(null==(m=null==a?void 0:a._debug)?void 0:m.reason)||(a&&!a.missing?`slug=${a.slug}`:Y.gsNotInDatabase),(null==a?void 0:a._debug)||a||{reason:"GameStatus payload missing"});const w={page:{href:location.href,title:s,slug:l,owned:n,wishlist:o,error:i,SCRIPT_VERSION:r},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 v="";try{v=JSON.stringify(w,null,2);}catch(B){v=String(w);}const k=document.createElement("details");k.className="blp-debug-panel",k.setAttribute("data-blp-debug","1"),g&&(k.open=true),k.innerHTML=`\n \n

    ${oe(Y.debugPanelTitle)} · v${oe(r)}

    \n
    \n
    \n
    ${oe(Y.debugOwned)}: ${n?Y.on:Y.off}
    \n
    \n ${oe(Y.debugSources)}\n
    ${b}
    \n
    \n ${S.join("")}\n
    \n ${oe(Y.debugDump)}\n
    ${oe(v)}
    \n
    \n
    \n `;const x=document.querySelector(`[${u}]:last-of-type`),C=document.querySelector("#game-body #game-page-platforms, #game-page-platforms"),D=x||C;D?D.insertAdjacentElement("afterend",k):null==(p=document.querySelector("#game-body"))||p.appendChild(k);}({steam:t,steamDb:d,gamestatus:s,owned:o,wishlist:i,error:n,title:l,slug:c});}let xn=0;async function Cn(){var e,t,a;const n=Ht();if(!n.isGamePage||!n.slug)return void mn();const r=Gt();if(!r)return;const o=`${n.slug}|${r}|${Z.steamCountry}|${Z.showSteam}|${Z.showSteamOwned}|${Z.showSteamWishlist}|${Z.showSteamTags}|${Z.showSteamCategories}|${Z.showMetacritic}|${Z.showOpenCritic}|${Z.showHltb}|${Z.showDeckProton}|${Z.showGameStatus}|${Z.showLinks}|${Z.showSteamDbIcon}|${Z.showSteamDbCover}|${Z.showSteamDbGallery}|${Z.showSteamDbDetails}|${Z.showSimilarGames}|${Z.showGameStats}|${Z.showSteamPlayers}|${Z.showExport}|${ke(n.slug)||""}|${Z.debugMode}|${JSON.stringify(Z.links)}`,i=document.querySelector(`[${u}]`);if((null==i?void 0:i.getAttribute("data-blp-token"))===o)return ja(o),Na(),Ut(),void Aa(o);mn();const s=function(){const e=document.querySelector("#game-body #game-page-platforms, #game-page-platforms");if(!e)return null;let t=e;if(document.querySelector(`[${u}]`))return {steam:document.querySelector(`[${u}="steam"]`),steamdb:document.querySelector(`[${u}="steamdb"]`),metacritic:document.querySelector(`[${u}="metacritic"]`),opencritic:document.querySelector(`[${u}="opencritic"]`),hltb:document.querySelector(`[${u}="hltb"]`),deckproton:document.querySelector(`[${u}="deckproton"]`),players:document.querySelector(`[${u}="players"]`),gamestatus:document.querySelector(`[${u}="gamestatus"]`),links:document.querySelector(`[${u}="links"]`)};const a={},n=[];Z.showSteam&&n.push(["steam",Y.steam]),false!==Z.showSteamDbDetails&&n.push(["steamdb",Y.linkSteamDb]),Z.showMetacritic&&n.push(["metacritic",Y.metacritic]),Z.showOpenCritic&&n.push(["opencritic",Y.openCritic]),Z.showHltb&&n.push(["hltb",Y.hltb]),Z.showDeckProton&&n.push(["deckproton",Y.deckProton]),Z.showSteamPlayers&&n.push(["players",Y.players]),Z.showGameStatus&&n.push(["gamestatus",Y.gameStatus]),Z.showLinks&&n.push(["links",Y.links]);for(const[r,o]of n){const e=pn(r,o);e.querySelector("[data-blp-values]").innerHTML=gn(r),t.insertAdjacentElement("afterend",e),t=e,a[r]=e;}return a}();if(!s)return;Object.values(s).forEach(e=>null==e?void 0:e.setAttribute("data-blp-token",o)),ja(o),Na(),Ut();const l=++xn,c=Ot(n.slug),d=()=>l===xn&&Ht().isGamePage,m=Z.showSteamDbIcon||Z.showSteamDbCover||Z.showSteamDbGallery||Z.showSteamPlayers||false!==Z.showSteamDbDetails,p=Z.showSteamDbIcon||Z.showSteamDbCover||Z.showSteamDbGallery;p?function(e=""){Ta(e),Ra(e),Aa(e),Fa(e);}(o):Aa(o),Z.showSimilarGames&&za(o);const g=Z.showSteam||Z.showMetacritic||Z.showDeckProton||Z.showGameStatus||m||Z.showSimilarGames||false!==Z.showSteamDbDetails||Z.showLinks&&(false!==(null==(e=Z.links)?void 0:e.itad)||false!==(null==(t=Z.links)?void 0:t.steamdb)),w=Z.showSteam&&(Z.showSteamOwned||Z.showSteamWishlist),v={steam:null,owned:false,wishlist:false,userdata:null,gamestatus:null,steamDb:null,opencritic:null,hltb:null,proton:null,error:false},y=e=>{if(!d()||!s.links)return;const t=dn({title:r,slug:n.slug,igdbUrl:c,steam:e});kn({links:s.links},{steam:e,links:t,error:v.error,skipDebug:true});},k=()=>{var e;if(v.userdata&&(null==(e=v.steam)?void 0:e.found)&&null!=v.steam.appId){const e=Number(v.steam.appId);v.owned=false!==Z.showSteamOwned&&v.userdata.owned.has(e),v.wishlist=!v.owned&&false!==Z.showSteamWishlist&&v.userdata.wishlist.has(e);}else v.owned=false,v.wishlist=false;},x=()=>{d()&&null!=v.steam&&(k(),kn({steam:s.steam,steamdb:s.steamdb,metacritic:s.metacritic,deckproton:s.deckproton},{steam:v.steam,steamDb:v.steamDb,proton:v.proton,error:v.error,owned:v.owned,wishlist:v.wishlist,title:r,slug:n.slug,skipDebug:true}),y(v.steam),Xa(v));},C=()=>{d()&&kn({steamdb:s.steamdb,players:s.players},{steam:v.steam,steamDb:v.steamDb,error:v.error,skipDebug:true});},L=()=>{d()&&(s.opencritic&&kn({opencritic:s.opencritic},{opencritic:v.opencritic,error:v.error,skipDebug:true}),Xa(v));},M=()=>{d()&&s.hltb&&kn({hltb:s.hltb},{hltb:v.hltb,error:v.error,skipDebug:true});},A=()=>{d()&&s.deckproton&&kn({deckproton:s.deckproton},{steam:v.steam,proton:v.proton,error:v.error,skipDebug:true});},H=()=>{d()&&s.players&&kn({players:s.players},{steamDb:v.steamDb,error:v.error,skipDebug:true});},G=()=>{d()&&s.gamestatus&&kn({gamestatus:s.gamestatus},{gamestatus:v.gamestatus,skipDebug:true});};y(null);let O=false,T=Promise.resolve();const R=(e,t)=>({missing:true,data:null,slug:null,_debug:Z.debugMode?{reason:t,steamFound:Boolean(null==e?void 0:e.found),steamDebug:(null==e?void 0:e._debug)||null}:void 0}),I=e=>{if(O||!(null==e?void 0:e.found)||null==e.appId)return;O=true;const t=[];m&&t.push(xt(e.appId,{country:Z.steamCountry||"US",onPartial:e=>{d()&&(v.steamDb=e,Ua(e,o),null!=(null==e?void 0:e.players)&&H(),C());}}).then(e=>{d()&&e&&(v.steamDb=e,Ua(e,o,{final:true}),H(),C());}).catch(t=>{d()&&(v.steamDb={appId:e.appId,iconUrl:"",logoUrl:"",players:null,technologies:[],lastRecordUpdate:null,_debug:Z.debugMode?{reason:`SteamDB error: ${(null==t?void 0:t.message)||t}`}:void 0},Ha(),H(),C());})),Z.showGameStatus&&t.push(Re({appId:e.appId,storeUrl:e.storeUrl,name:e.name,title:r,pageSlug:n.slug}).then(e=>{d()&&(v.gamestatus=e,G());}).catch(t=>{d()&&(v.gamestatus=R(e,`GameStatus error: ${(null==t?void 0:t.message)||t}`),G());})),Z.showDeckProton&&t.push(async function(e){const t=Number(e);if(!Number.isFinite(t)||t<=0)return null;const a=`protondb:${t}`,n=ge(a);if(n)return be(n);if(ee.has(a))return ee.get(a);const r=(async()=>{const e=await He({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 he(a,r),Se(r)})().catch(()=>null);ee.set(a,r);try{return await r}finally{ee.delete(a);}}(e.appId).then(e=>{d()&&(v.proton=e,A());}).catch(()=>{d()&&A();})),Z.showSimilarGames&&(za(o),t.push(async function(e,t,a){const n=Number(e);if(!Number.isFinite(n)||n<=0)return [];const r=String(a).toUpperCase()||"US",o=`steam:similar:${n}`,i=ge(o);if(Array.isArray(i)&&i.length)return be(i);const s=`similar:${n}:${r}`;if(ee.has(s))return ee.get(s);const l=(async()=>{var e;try{let a=Array.isArray(t)?t:[];a.length||(a=await mt(n,r).catch(()=>[]));const i=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([He({url:`https://api.steampowered.com/IStoreQueryService/MoreLikeThis/v1/?input_json=${encodeURIComponent(i)}`}),it()]),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 o=Number(null!=(r=null==e?void 0:e.appid)?r:null==e?void 0:e.id);if(!Number.isFinite(o)||o<=0)return null;const i=String((null==e?void 0:e.name)||"").trim();if(!i)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=gt(e),n=gt(t);if(!a.size||!n.size)return {matchPct:0,sharedTagIds:[]};let r=0,o=0;const i=[],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),o+=Math.max(e,t),e>0&&t>0&&i.push({id:l,weight:Math.min(e,t)});}return i.sort((e,t)=>t.weight-e.weight),{matchPct:o>0?Math.round(100*r/o):0,sharedTagIds:i.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=pt(t,r);if(e)return e;const n=String(r||"").trim();if(n&&Number.isFinite(a)&&a>0)return kt(a,n)}return ""}(o,null==e?void 0:e.assets),m=qe(i);return {appId:o,name:i,coverUrl:d,matchPct:l,sharedTags:u,storeUrl:`https://store.steampowered.com/app/${o}/`,backloggdUrl:m?`https://www.backloggd.com/games/${encodeURIComponent(m)}/`:"",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&&he(o,c),Se(c)}catch(a){return Se([])}})();ee.set(s,l);try{return await l}finally{ee.delete(s);}}(e.appId,e.tags,Z.steamCountry||"US").then(t=>{d()&&(function(e,t,a="",{final:n=false}={}){if(!Z.showSimilarGames)return void qa();if(!Array.isArray(e)||!e.length)return void(n?qa():za(a));const r=za(a);if(!r)return;const o=`${t||""}|${e.map(e=>`${e.appId}:${e.matchPct}`).join(",")}`;if("1"===r.dataset.blpSimilarReady&&r.dataset.blpSimilarKey===o)return a&&r.setAttribute("data-blp-token",a),void Vt(r,fe(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=o,Vt(r,fe(e)||"miss",{titleSelector:".blp-similar__title"});const i=t?`https://store.steampowered.com/app/${t}/`:"https://store.steampowered.com/",s=e.map(e=>{var t;const a=ie(e.backloggdUrl||e.storeUrl||"#"),n=ie(e.coverUrl||""),r=oe(e.name),o=Math.max(0,Math.min(100,Number(e.matchPct)||0)),i=Array.isArray(e.sharedTags)?e.sharedTags.filter(Boolean):[],s=i.length?`${oe(i.join(" · "))}`:"",l=ie(e.storeUrl||""),c=l?`\n \n `:"",u=Number(e.appId),d=Number.isFinite(u)&&u>0?` ${h}="${ie(String(u))}"`:"",m=e.backloggdUrl&&(null==(t=e.backloggdUrl.match(/\/games\/([^/?#]+)/i))?void 0:t[1])||qe(e.name)||"";return `\n
    \n
    \n \n ${o}%\n ${oe(Y.similarGamesMatch)}\n \n ${c}\n \n ${n?``:""}\n \n
    \n \n ${r}\n ${s}\n \n
    \n `}).join("");r.classList.remove("is-loading"),r.innerHTML=`\n
    \n ${oe(Y.similarGamesTitle)}\n Steam\n
    \n
    ${s}
    \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}));}),Ea(r.querySelector("[data-blp-similar-track]"));}(t,e.appId,o,{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 Dt)return;Dt[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":Ct,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(()=>zn).catch(n)})}(0,void 0).then(e=>e.scheduleCardBadges()));}).catch(()=>{d()&&qa();}))),T=Promise.all(t);};try{const e=[];Z.showOpenCritic&&e.push(async function(e){const t=String(e||"").trim();if(!t)return null;const a=`opencritic:${We(t)}`,n=ge(a);if(n&&(null!=n.score||n.missing||n.scoreParseV2))return be(n);if(ee.has(a))return ee.get(a);const r=(async()=>{const e=await async function(e){var t;const a=`${D}/game/search?criteria=${encodeURIComponent(e)}`,n=await He({url:a,headers:{Accept:"application/json",Origin:B,Referer:`${B}/`},timeout:15e3}),r=Mt(Array.isArray(n)?n:[],e);if(!(null==(t=null==r?void 0:r.item)?void 0:t.id))return null;const o=Number(r.item.id);let i=null;try{i=await He({url:`${D}/game/${o}`,headers:{Accept:"application/json",Origin:B,Referer:`${B}/`},timeout:15e3});}catch(s){i=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 o=Number(e.id||(null==t?void 0:t.id)),i=e.slug||(null==t?void 0:t.slug);return {id:o,name:e.name||(null==t?void 0:t.name)||a,tier:r,score:At(e.topCriticScore,e.medianScore,null==t?void 0:t.topCriticScore,null==t?void 0:t.medianScore),url:i?`${B}/game/${o}/${encodeURIComponent(i)}`:Number.isFinite(o)?`${B}/game/${o}`:`${B}/search?q=${encodeURIComponent(a)}`,matchScore:n||null,source:"api",scoreParseV2:!0}}(i||r.item,r.item,e,r.score)}(t).catch(()=>null);if(e)return he(a,e),Se(e);const n=await async function(e){const t=await async function(e){const t=`${e} site:opencritic.com/game`,a=await He({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:`${B}/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 o=/[?&]uddg=([^&"']+)/gi;for(;r=o.exec(e);)try{const e=decodeURIComponent(r[1]).match(/opencritic\.com\/game\/(\d+)\/([a-z0-9-]+)/i);e&&a(e[1],e[2]);}catch(i){}return t}(String(a||""));if(!n.length)return null;const r=Mt(n,e);if(null==r?void 0:r.item)return r.item;const o=We(e);return n.find(e=>{const t=We(e.name);return t===o||t.includes(o)||o.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,o=null,i=null;const s=function(e){const t=e.match(/"topCriticScore"\s*:\s*([0-9]+(?:\.[0-9]+)?)/);if(t){const e=At(t[1]);if(null!=e)return e}const a=e.match(/(\d{2,3})(?:\s*<[^>]*>|\s| |){0,12}\s*Top Critic Average/i);if(a){const e=At(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=At(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&&(o=Number(u[1]));const d=a.match(/"slug"\s*:\s*"([a-z0-9-]+)"/i);if(d&&(i=d[1]),!n){const e=a.match(/\b(Mighty|Strong|Fair|Weak)\b/);e&&(n=e[1]);}if(!r){const e=a.match(/]*>\s*([^|<]+?)\s*(?:Reviews)?\s*[-–|]/i);e&&(r=e[1].trim());}const m=String(t||"").match(/opencritic\.com\/game\/(\d+)\/([a-z0-9-]+)/i);return m&&(o||(o=Number(m[1])),i||(i=m[2])),n?{id:o,name:r||i||null,tier:n,score:s,url:o&&i?`${B}/game/${o}/${encodeURIComponent(i)}`:t||B,source:"html",scoreParseV2:!0}:null}(await He({url:t.url,responseType:"text",headers:{Accept:"text/html",Referer:`${B}/`},timeout:2e4}),t.url);if(!a)return null;if(a.name){const t=Xe(a.name,e);if(t>0&&t<50)return null}return a}(t).catch(()=>null);return n?(he(a,n),Se(n)):null})().catch(()=>null);ee.set(a,r);try{return await r}finally{ee.delete(a);}}(r).then(e=>{d()&&(v.opencritic=e||{missing:!0},L());}).catch(()=>{d()&&(v.opencritic={missing:!0},L());})),Z.showHltb&&e.push(async function(e){const t=String(e||"").trim();if(!t)return null;const a=`hltb:${We(t)}`,n=ge(a);if(n)return be(n);if(ee.has(a))return ee.get(a);const r=(async()=>{const e=async e=>{const a=await async function(e=!1){if(!e&&Pt&&Date.now()r&&(r=e,n=o);}return !n||re.game_name);if(!r)return null;const o=r.item,i=o.game_id,s={id:null!=i?String(i):null,name:o.game_name||t,url:i?`${P}/game/${i}`:`${P}/?q=${encodeURIComponent(t)}`,main:_t(o.comp_main),extra:_t(o.comp_plus),complete:_t(o.comp_100),matchScore:r.score};return s.main||s.extra||s.complete?(he(a,s),Se(s)):null})().catch(()=>null);ee.set(a,r);try{return await r}finally{ee.delete(a);}}(r).then(e=>{d()&&(v.hltb=e||{missing:!0},M());}).catch(()=>{d()&&(v.hltb={missing:!0},M());}));const t=w?St().then(e=>d()?(v.userdata=e,v.steam&&x(),e):null).catch(()=>null):Promise.resolve(null),i=g?yt({title:r,slug:n.slug,country:Z.steamCountry||"US",onPartial:e=>{d()&&(v.steam=e,x(),I(e));}}):Promise.resolve(null),[s]=await Promise.all([i,t,...e]);if(!d())return;v.steam=s,(null==s?void 0:s.found)?(x(),I(s)):g&&(v.steam=s||{found:!1},x(),p&&Ha(),Aa(o),Z.showSimilarGames&&qa()),Z.showGameStatus&&!O&&(v.gamestatus=R(v.steam,(null==(a=v.steam)?void 0:a.found)?"GameStatus enabled but Steam appId missing":"GameStatus skipped — Steam app not found"),G()),await T;}catch(N){v.error=true,v.steam=v.steam||{found:false,_debug:{reason:`Enrichment error: ${(null==N?void 0:N.message)||N}`}},v.owned=false,v.wishlist=false,v.gamestatus=v.gamestatus||{missing:true,data:null,slug:null,_debug:{reason:`Enrichment error: ${(null==N?void 0:N.message)||N}`}},p&&!v.steamDb&&Ha(),Aa(o),Z.showSimilarGames&&qa(),x(),L(),M(),A(),G(),H(),C();}d()&&(()=>{if(!d())return;k();const e=dn({title:r,slug:n.slug,igdbUrl:c,steam:v.steam});kn(s,{steam:v.steam,links:e,error:v.error,owned:v.owned,wishlist:v.wishlist,gamestatus:v.gamestatus,title:r,slug:n.slug,steamDb:v.steamDb,opencritic:v.opencritic,hltb:v.hltb,proton:v.proton}),v.steamDb&&Ua(v.steamDb,o,{final:true}),Xa(v);})();}function Dn(){return [Z.steamCountry||"US",Z.showCardBadges?1:0,false!==Z.showCardBadgePrice?1:0,false!==Z.showCardBadgeReview?1:0,false!==Z.showCardBadgeOwned?1:0,false!==Z.showCardBadgeWishlist?1:0,false!==Z.showCardBadgeGameStatus?1:0].join("|")}function Bn(){return false!==Z.showCardBadgePrice||false!==Z.showCardBadgeReview||false!==Z.showCardBadgeOwned||false!==Z.showCardBadgeWishlist||false!==Z.showCardBadgeGameStatus}function Pn(e){var t,a,n,r;const o=null==(t=e.getAttribute)?void 0:t.call(e,b);if(o)return o.toLowerCase();const i=[e,e.parentElement,e.closest('a[href*="/games/"]'),e.closest("[game_id], .result, .col, .row")].filter(Boolean);for(const s of i){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 $n(e,t){var a,n;const r=null==(a=e.getAttribute)?void 0:a.call(e,S);if(r)return r.trim();const o=e.querySelector("img[alt]");if(null==o?void 0:o.alt)return o.alt.trim();const i=null==(n=e.closest(".result, .row, .col, [game_id]"))?void 0:n.querySelector(".game-name h3, h3, .game-name a");return (null==i?void 0:i.textContent)?i.textContent.replace(/\s+\d{4}\s*$/,"").trim():t?t.replace(/-/g," "):""}function _n(e){var t;const a=null==(t=e.getAttribute)?void 0:t.call(e,h),n=Number(a);return Number.isFinite(n)&&n>0?n:null}function Ln(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='',a.appendChild(t),t}function Mn({steam:e,owned:t,wishlist:a,gamestatus:n}){var r,o;const i=[];if(null==e?void 0:e.found){if(false!==Z.showCardBadgePrice){const t=un(e);if(t){const a=(null==(r=e.price)?void 0:r.discount_percent)>0?` ${oe(V(Y.discount,{n:e.price.discount_percent}))}`:"";i.push(`${oe(t)}${a}`);}}if(false!==Z.showCardBadgeReview){const t=(s=e.reviews)&&s.total_reviews?`${Math.round(s.total_positive/s.total_reviews*100)}%`:null,a=cn(e.reviews),n=ln(e.reviews);if(t)i.push(`${oe(t)}`);else if(null!=(null==(o=e.metacritic)?void 0:o.score)){const t=e.metacritic.score,a=Qa(t);i.push(`${oe(String(t))}`);}}}var s;if(t&&false!==Z.showCardBadgeOwned?i.push(`${oe(Y.steamOwned)}`):a&&false!==Z.showCardBadgeWishlist&&i.push(`${oe(Y.steamWishlist)}`),false!==Z.showCardBadgeGameStatus&&n&&!n.missing&&n.data){const e=Ie(n.data),t=Ne(n.data,e),a=n.data.slug||n.slug,r=a?`${G}/${encodeURIComponent(a)}`:G;i.push(`${oe(t)}`);}return i.join("")}const An=[];let Hn=0,Gn=null;function On(){for(;Hn<3&&An.length;){const e=An.shift();Hn+=1,Promise.resolve().then(e.fn).then(e.resolve,e.reject).finally(()=>{Hn-=1,On();});}}function Tn(e){return new Promise((t,a)=>{An.push({fn:e,resolve:t,reject:a}),On();})}function Rn(e,t){if(e.getAttribute(p)!==t)return false;const a=e.getAttribute(g);return "done"===a||"empty"===a||"loading"===a}function In(e,t,a){e.setAttribute(p,t),e.setAttribute(g,a);}function Nn(e){var t;e.removeAttribute(p),e.removeAttribute(g),null==(t=e.querySelector(".blp-card-badges"))||t.remove();}function En(){document.querySelectorAll(".blp-card-badges").forEach(e=>e.remove()),document.querySelectorAll(`[${p}]`).forEach(e=>{e.removeAttribute(p),e.removeAttribute(g);});}async function Fn(e){const t=Dn();if(Rn(e,t))return;if(!Bn())return Nn(e),void In(e,t,"empty");const a=_n(e),n=Pn(e),r=$n(e,n);if(!(a||n&&r))return Nn(e),void In(e,t,"empty");In(e,t,"loading");const o=Ln(e);o.classList.add("is-loading"),await Tn(async()=>{if(e.getAttribute(p)!==t)return;const i=false!==Z.showCardBadgeOwned||false!==Z.showCardBadgeWishlist,s=false!==Z.showCardBadgeGameStatus,l=Z.steamCountry||"US",[c,u]=await Promise.all([a?vt(a,l,{includeTags:false}).catch(()=>({found:false})):yt({title:r,slug:n,country:l,includeTags:false}).catch(()=>({found:false})),i?St().catch(()=>null):Promise.resolve(null)]);let d=null;if(s&&(null==c?void 0:c.found)&&null!=c.appId&&(d=await Re({appId:c.appId,storeUrl:c.storeUrl,name:c.name,title:r||c.name,pageSlug:n}).catch(()=>null)),e.getAttribute(p)!==t)return;let m=false,g=false;if(u&&(null==c?void 0:c.found)&&null!=c.appId){const e=Number(c.appId);m=false!==Z.showCardBadgeOwned&&u.owned.has(e),g=!m&&false!==Z.showCardBadgeWishlist&&u.wishlist.has(e);}const h=Mn({steam:c,owned:m,wishlist:g,gamestatus:d});if(o.classList.remove("is-loading"),!h)return In(e,t,"empty"),void o.remove();o.innerHTML=h,In(e,t,"done");});}function Un(){const e=Ht(),t=[];return e.isGamePage?(document.querySelectorAll(`.blp-similar__cover[${h}]`).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 qn(e=false){if(!Z.showCardBadges||!Bn())return En(),null==Gn||Gn.disconnect(),void(Gn=null);const t=Dn();Gn||(Gn=new IntersectionObserver(e=>{for(const t of e){if(!t.isIntersecting)continue;const e=t.target;Gn.unobserve(e),Fn(e);}},{rootMargin:"240px 0px"})),Un().forEach(a=>{!e&&Rn(a,t)||(e&&Nn(a),Gn.observe(a));});}const zn=Object.freeze(Object.defineProperty({__proto__:null,anyCardBadgeTypeEnabled:Bn,get cardActive(){return Hn},cardBadgeToken:Dn,cardIsSettled:Rn,get cardObserver(){return Gn},clearAllCardBadges:En,clearCardMarkers:Nn,collectCardCovers:Un,enqueueCardJob:Tn,enrichGameCard:Fn,ensureCardBadgeMount:Ln,markCardState:In,parseCardAppId:_n,parseCardSlug:Pn,parseCardTitle:$n,pumpCardQueue:On,renderCardBadgesHtml:Mn,scheduleCardBadges:qn},Symbol.toStringTag,{value:"Module"})),jn=[{id:"general",labelKey:"sectionGeneral"},{id:"game",labelKey:"sectionGame"},{id:"lists",labelKey:"sectionLists"},{id:"links",labelKey:"sectionLinks"},{id:"cache",labelKey:"sectionCache"},{id:"debug",labelKey:"sectionDebug"}];function Wn(e,t){return `\n
    \n ${oe(Y[e])}\n \n
    \n `}function Vn(e){return `

    ${oe(Y[e])}

    `}function Jn(e,t){const a=e===t;return `class="blp-settings__panel${a?" is-active":""}" id="blp-panel-${ie(e)}" role="tabpanel" aria-labelledby="blp-tab-${ie(e)}"${a?"":" hidden"}`}function Zn(e,t){jn.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;}));}function Kn(){var e,t,n,i,s;if(document.querySelector(".blp-settings-backdrop"))return;const l={...Z,links:{...F.links,...Z.links||{}}},c=N.map(e=>{const t=false!==l.links[e],a=Y[function(e){return {igdb:"linkIgdb",steam:"linkSteam",steamdb:"linkSteamDb",metacritic:"linkMetacritic",opencritic:"linkOpencritic",hltb:"linkHltb",pcgamingwiki:"linkPcgamingwiki",itad:"linkItad",gogdb:"linkGogdb"}[e]||e}(e)]||e;return `\n
    \n \n \n ${oe(a)}\n \n \n
    \n `}).join(""),u="general",d=document.createElement("div");var m;d.className="blp-settings-backdrop",d.innerHTML=`\n \n `;const p=document.documentElement.style.overflow;document.documentElement.style.overflow="hidden";const g=()=>{d.remove(),document.documentElement.style.overflow=p;},h=d.querySelector(".blp-settings");d.addEventListener("click",e=>{e.target===d&&g();}),null==(e=d.querySelector("[data-blp-cancel]"))||e.addEventListener("click",g),null==(t=null==h?void 0:h.querySelector(".blp-settings__tabs"))||t.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&&h.contains(n)&&Zn(h,n.getAttribute("data-blp-tab"));}),null==(n=null==h?void 0:h.querySelector(".blp-settings__tabs"))||n.addEventListener("keydown",e=>{var t,a;const n=[...h.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 o=n.indexOf(r);if(o<0)return;let i=-1;if("ArrowRight"===e.key||"ArrowDown"===e.key?i=(o+1)%n.length:"ArrowLeft"===e.key||"ArrowUp"===e.key?i=(o-1+n.length)%n.length:"Home"===e.key?i=0:"End"===e.key&&(i=n.length-1),i<0)return;e.preventDefault();const s=n[i].getAttribute("data-blp-tab");Zn(h,s),n[i].focus();}),d.querySelectorAll("[data-blp-toggle]").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-blp-toggle");l[t]=!l[t],e.classList.toggle("is-on",l[t]),e.textContent=l[t]?Y.on:Y.off;});}),d.querySelectorAll("[data-blp-link]").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-blp-link");l.links[t]=!l.links[t],e.classList.toggle("is-on",l.links[t]),e.textContent=l.links[t]?Y.on:Y.off;});}),null==(i=d.querySelector("[data-blp-clear]"))||i.addEventListener("click",()=>{const e=Ae();!function(e){var t;const a=null==(t=null==e?void 0:e.querySelector)?void 0:t.call(e,"[data-blp-cache-meter]");if(!a)return;const n=document.createElement("div");n.innerHTML=Me(_e()).trim();const r=n.firstElementChild;r&&a.replaceWith(r);}(d),Xt(e?V(Y.cacheCleared,{count:e}):Y.cacheEmpty,{type:e?"success":"info"});}),null==(s=d.querySelector("[data-blp-save]"))||s.addEventListener("click",()=>{var e,t,n;const r=(null==(e=d.querySelector("#blp-steam-cc"))?void 0:e.value)||"US",i=Number(null==(t=d.querySelector("#blp-cache-hours"))?void 0:t.value),s=(null==(n=d.querySelector("#blp-ui-locale"))?void 0:n.value)||"auto";l.uiLocale="auto"===s||q.includes(s)?s:"auto",l.steamCountry=String(r).toUpperCase(),l.cacheHours=Number.isFinite(i)?Math.max(0,Math.min(168,i)):F.cacheHours,function(e){const t={...F,...e,links:{...F.links,...e.links||{}}};a(o,t);}(l),ae(),function(e,t={}){const a=String(Y.toastSettingsSaved||"").trim();if(a)try{const e=sessionStorage.getItem(Kt),n=e?JSON.parse(e):[];if(!Array.isArray(n))return void sessionStorage.setItem(Kt,JSON.stringify([{message:a,type:t.type||"info"}]));n.push({message:a,type:t.type||"info",duration:t.duration}),sessionStorage.setItem(Kt,JSON.stringify(n.slice(-5)));}catch(n){}}(0,{type:"success"}),location.reload();}),document.body.appendChild(d);}const Yn="blp-nav-settings";function Xn(){if(document.getElementById(Yn))return;const e=document.createElement("button");e.id=Yn,e.type="button",e.className="btn btn-main mb-2 my-sm-0 py-0",e.title=Y.navSettingsTitle,e.innerHTML=` ${oe(Y.navSettings)}`,e.addEventListener("click",e=>{e.preventDefault(),Kn();});const t=document.getElementById("add-a-game");if(null==t?void 0:t.parentElement){e.classList.add("ml-2");const a=t.getBoundingClientRect().height;return a>0&&document.documentElement.style.setProperty("--blp-nav-btn-h",`${Math.round(a)}px`),void t.insertAdjacentElement("afterend",e)}const a=document.querySelector("#navbarSupportedContent .col.my-auto, #primary-nav .col.my-auto");if(a)return e.classList.add("ml-2"),void a.appendChild(e);const n=document.querySelector("#navbarSupportedContent > ul.navbar-nav")||document.querySelector("#primary-nav ul.navbar-nav.ml-auto");if(!n)return;const r=document.createElement("li");r.className="nav-item my-auto",r.appendChild(e),n.appendChild(r);}function Qn(){Xn(),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,o,i;if(!e||document.querySelector(".blp-fix-match-backdrop"))return;const s=document.createElement("div");s.className="blp-fix-match-backdrop",s.innerHTML=`\n \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){xe(e,null);}(e),l(),mn(),Cn(),qn(true),Xt(Y.toastSteamMatchCleared,{type:"info"});}),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=Y.steamFixMatchInvalid),void Xt(Y.steamFixMatchInvalid,{type:"error"})}xe(e,n),l(),mn(),Cn(),qn(true),Xt(V(Y.toastSteamMatchSaved,{id:n}),{type:"success"});}),document.body.appendChild(s),null==(o=c())||o.focus(),null==(i=c())||i.select();}(n.getAttribute("data-blp-slug")||Ht().slug,n.getAttribute("data-blp-appid")||""));},true)),function(){if($a)return $a;const e=Jt(()=>{Qt()?document.querySelector("#log-editor-footer")&&Pa():document.querySelectorAll(`[${ta}="log-btn"]`).forEach(e=>e.remove());},200);$a=new MutationObserver(e),$a.observe(document.documentElement,{childList:true,subtree:true}),Pa();}(),Pa(),Cn(),qn();}function er(e){var t,a,n,r,o,i,s,l,c,h,b,S,f,w,v,y,k,x,C,D,B,P;return !(!e||1!==e.nodeType)&&(!!((null==(t=e.hasAttribute)?void 0:t.call(e,u))||(null==(a=e.hasAttribute)?void 0:a.call(e,d))||(null==(n=e.hasAttribute)?void 0:n.call(e,m))||(null==(r=e.hasAttribute)?void 0:r.call(e,p))||(null==(o=e.hasAttribute)?void 0:o.call(e,g))||(null==(i=e.hasAttribute)?void 0:i.call(e,"data-blp-debug"))||(null==(s=e.hasAttribute)?void 0:s.call(e,"data-blp-token"))||"blp-nav-settings"===e.id||"blp-steam-backloggd-btn"===e.id||"blp-steamdb-backloggd-btn"===e.id)||!!((null==(l=e.classList)?void 0:l.contains("blp-card-badges"))||(null==(c=e.classList)?void 0:c.contains("blp-settings-backdrop"))||(null==(h=e.classList)?void 0:h.contains("blp-fix-match-backdrop"))||(null==(b=e.classList)?void 0:b.contains("blp-export-backdrop"))||(null==(S=e.classList)?void 0:S.contains("blp-export-wrap"))||(null==(f=e.classList)?void 0:f.contains("blp-export-log-wrap"))||(null==(w=e.classList)?void 0:w.contains("blp-debug-panel"))||(null==(v=e.classList)?void 0:v.contains("blp-steamdb-cover"))||(null==(y=e.classList)?void 0:y.contains("blp-steam-gallery"))||(null==(k=e.classList)?void 0:k.contains("blp-similar"))||(null==(x=e.classList)?void 0:x.contains("blp-viewer"))||(null==(C=e.classList)?void 0:C.contains("blp-title-icon-wrap"))||(null==(D=e.classList)?void 0:D.contains("blp-toast-host"))||(null==(B=e.classList)?void 0:B.contains("blp-toast"))||"blp-toast-host"===e.id)||Boolean(null==(P=e.closest)?void 0:P.call(e,`[${u}], [${d}], [${m}], [${p}], .blp-card-badges, .blp-settings-backdrop, .blp-fix-match-backdrop, .blp-export-backdrop, .blp-export-wrap, .blp-export-log-wrap, [data-blp-debug], #blp-nav-settings, #blp-toast-host, .blp-toast-host`)))}function tr(e){const t=Jt(e,400),a=new MutationObserver(e=>{(function(e){for(const t of e)for(const e of t.addedNodes)if(1===e.nodeType&&!er(e))return false;return true})(e)||t();});return a.observe(document.documentElement,{childList:true,subtree:true}),a}const ar="blp-steam-backloggd-btn",nr="https://www.backloggd.com";function rr(){var e;if(!Z.showSteamPageLink)return void(null==(e=document.getElementById(ar))||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?qe(e[1].replace(/_/g,"-")):""}();if(e)return `${nr}/games/${encodeURIComponent(e)}/`;const t=qe((null==(n=null==(a=document.getElementById("appHubAppName"))?void 0:a.textContent)?void 0:n.trim())||(null==(o=null==(r=document.querySelector(".apphub_AppName"))?void 0:r.textContent)?void 0:o.trim())||document.title.replace(/\s+on\s+Steam.*$/i,"").replace(/\s+::\s+.*$/i,"").trim());var a,n,r,o;return t?`${nr}/games/${encodeURIComponent(t)}/`:nr}(),n=document.getElementById(ar);if(n)return void(n.href=a);const r=function(e){const t=document.createElement("a");return t.id=ar,t.className="btnv6_blue_hoverfade btn_medium",t.href=e,t.target="_blank",t.rel="noopener noreferrer",t.innerHTML=`\n \n Backloggd\n \n `,t}(a),o=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||""));o?(o.insertAdjacentElement("beforebegin",r),o.previousSibling===r&&r.insertAdjacentText("afterend"," ")):t.appendChild(r);}function or(){rr();}const ir="blp-steamdb-backloggd-btn";function sr(){const e=location.pathname.match(/\/app\/(\d+)/i);return e?e[1]:""}function lr(){var e;if(!Z.showSteamDbPageLink)return void(null==(e=document.getElementById(ir))||e.remove());if(!sr())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 `${nr}/games/${encodeURIComponent(e)}/`;const t=qe(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?`${nr}/games/${encodeURIComponent(t)}/`:nr}(),n=document.getElementById(ir);if(n)return void(n.href=a);const r=function(e){const t=document.createElement("a");return t.id=ir,t.className="btn tooltipped tooltipped-n",t.href=e,t.target="_blank",t.rel="noopener noreferrer",t.setAttribute("aria-label",Y.steamBackloggdTooltip),t.textContent=Y.steamDbBackloggdLabel,t}(a),o=t.querySelector('a.btn[href*="store.steampowered.com"]');if(o)o.insertAdjacentElement("afterend",r);else {const e=t.querySelector('a.btn[href*="igdb.com"]');e?e.insertAdjacentElement("beforebegin",r):t.appendChild(r);}}function cr(){lr();const e=sr();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)&&he(at(a),n);}(t,rt(document));}(e);}function ur(){if(document.documentElement.hasAttribute(c))return;document.documentElement.setAttribute(c,"1"),ae();const n=function(){let t=null;try{t=e(s,null);}catch(n){t=null;}if(t===r){const e=Be(),t=Pe();if(e>0||t>0)try{a(i,le());}catch(n){}return null}Ae();try{a(s,r);}catch(n){}return null==t?"install":"upgrade"}();return function(){let e=[];try{const t=sessionStorage.getItem(Kt);sessionStorage.removeItem(Kt),t&&(e=JSON.parse(t));}catch(t){e=[];}Array.isArray(e)&&e.length&&setTimeout(()=>{for(const t of e)(null==t?void 0:t.message)&&Xt(t.message,{type:t.type||"info",duration:t.duration});},120);}(),"upgrade"===n&&Xt(V(Y.toastCacheClearedOnUpdate,{version:r}),{type:"info",duration:5200}),"function"==typeof t&&t(Y.menuSettings,Kn),function(){const e=location.hostname;return "store.steampowered.com"===e||e.endsWith(".steampowered.com")||"steamcommunity.com"===e||e.endsWith(".steamcommunity.com")}()?(or(),void tr(or)):/(^|\.)steamdb\.info$/i.test(location.hostname)?(cr(),void tr(cr)):void(/(^|\.)backloggd\.com$/i.test(location.hostname)&&(Xn(),Qn(),tr(Qn),function(){const e=Jt(Qn,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",ur,{once:true}):ur(); })();