{"id":1018,"date":"2026-04-06T05:47:25","date_gmt":"2026-04-06T05:47:25","guid":{"rendered":"https:\/\/gerdygamingcz.com\/?page_id=1018"},"modified":"2026-04-06T05:47:25","modified_gmt":"2026-04-06T05:47:25","slug":"engine","status":"publish","type":"page","link":"https:\/\/gerdygamingcz.com\/?page_id=1018","title":{"rendered":"Engine"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\n<style>\n\/* \u2500\u2500\u2500 VARIABLES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n:root {\n  --bg:  #07090f; --bg2: #0d1117; --bg3: #0f1624; --bg4: #1a2235;\n  --bdr: #1e2d4e; --bdr2: #263552;\n  --blue: #3b82f6; --blue2: #60a5fa; --blue3: #1d4ed8; --blue4: #93c5fd;\n  --purple: #7c3aed; --purple2: #a78bfa;\n  --green: #10b981; --green2: #059669;\n  --red: #ef4444; --red2: #f87171;\n  --amber: #f59e0b;\n  --tx: #e2e8f0; --tx2: #94a3b8; --tx3: #64748b; --tx4: #374151;\n  --r: 12px; --r2: 8px; --r3: 20px;\n  --shadow: 0 4px 24px rgba(0,0,0,.45);\n  --shadow-blue: 0 0 0 1px rgba(59,130,246,.3), 0 6px 28px rgba(59,130,246,.18);\n\n  \/* Fluid type \u2014 every size scales smoothly with the viewport instead of\n     jumping at breakpoints, so the same page reads well on a small phone and\n     on a large desktop. clamp(min, preferred, max). *\/\n  --fs-hero:  clamp(22px, 4.2vw, 30px);\n  --fs-h2:    clamp(16px, 2.2vw, 19px);\n  --fs-price: clamp(26px, 5.2vw, 36px);\n  --fs-body:  clamp(13px, 1.5vw, 15px);\n  --fs-sm:    clamp(12px, 1.2vw, 13px);\n  --fs-card-title: clamp(14px, 1.7vw, 16px);\n}\n\n\/* \u2500\u2500\u2500 BASE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n*, *::before, *::after { box-sizing: border-box; }\n\n\/* Nothing inside the shop may exceed its column. Grid\/flex children default to\n   min-width:auto, which is what lets a single long word, a wide image or a\n   table punch through the layout and clip the page on narrow screens. *\/\n.sd-fe :where(img, video, canvas, svg, iframe) { max-width: 100%; height: auto; }\n.sd-fe :where(h1, h2, h3, p, li, td, div) { overflow-wrap: anywhere; word-break: break-word; }\n.sd-fe :where(pre, table) { max-width: 100%; overflow-x: auto; }\n.sd-fe :where(.sd-detail-layout, .sd-det-grid, .sd-checkout-grid, .sd-games-grid,\n              .sd-related-grid, .sd-sysreq, .sd-screenshots) > * { min-width: 0; }\n\n.sd-fe {\n  font-family: \"Inter\", system-ui, sans-serif;\n  color: var(--tx);\n  background: var(--bg);\n  min-height: 50vh;\n  animation: sdIn .3s ease;\n  \/* Fill the theme's content area and center the inner content (.sd-wrap).\n     The old 100vw + left:50% + margin:-50vw full-bleed trick mis-anchored in\n     some themes and shoved the whole shop off to one side \/ clipped it on the\n     right. width:100% is robust in every theme. *\/\n  width: 100%;\n  max-width: 100%;\n  margin: 0;\n  \/* `clip`, not `hidden`: overflow-x:hidden turns this into a scroll container,\n     which silently kills position:sticky on the detail sidebar. `clip` contains\n     stray-wide content without that side effect. *\/\n  overflow-x: clip;\n  \/* The shop is usually dropped into a theme column that is much narrower\n     than the screen, so viewport media queries never fire and a 500px column\n     got the desktop two-column layout. Size the layout to the column instead. *\/\n  container-type: inline-size;\n  container-name: sdfe;\n}\n@supports not (overflow: clip) { .sd-fe { overflow-x: hidden; } }\n.sd-fe a { text-decoration: none; color: var(--blue2); }\n.sd-fe a:hover { color: var(--blue4); }\n\n@keyframes sdIn  { from { opacity:0; transform:translateY(8px) } to { opacity:1; transform:none } }\n@keyframes sdOut { to   { opacity:0; transform:translateY(-5px) } }\n.sd-fe.sd-leaving { animation: sdOut .2s ease forwards; pointer-events: none; }\n\n\/* \u2500\u2500\u2500 THEME COLUMN BREAKOUT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/* Block themes (Seedlet, Twenty-Twenty-X\u2026) cap page content at ~620px via\n   \".entry-content > *\". A store needs more room than a blog paragraph, so the\n   ONE top-level block that holds the shop is widened; nothing else changes. *\/\n.entry-content > *:has(.sd-fe),\n.wp-block-post-content > *:has(.sd-fe) {\n  max-width: min(1400px, 100%) !important;\n  width: 100% !important;\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n\/* Elementor containers add ~50px side padding; the shop has its own gutter\n   (.sd-wrap), so on phones that padding just ate 40% of the screen. *\/\n.e-con:has(.sd-fe) { padding-left: 0 !important; padding-right: 0 !important; }\n\n\/* \u2500\u2500\u2500 LAYOUT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-wrap {\n  width: 100%;\n  max-width: 1400px;\n  margin: 0 auto;\n  padding: 0 28px 68px;\n}\n\n\/* \u2500\u2500\u2500 PAGE HEADER \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-page-header {\n  padding: 32px 0 24px;\n  border-bottom: 1px solid var(--bdr);\n  margin-bottom: 28px;\n}\n.sd-page-header .accent {\n  width: 36px; height: 4px;\n  background: linear-gradient(90deg, var(--blue), var(--purple));\n  border-radius: 2px;\n  margin-bottom: 10px;\n}\n.sd-page-header h1 {\n  font-size: var(--fs-hero); font-weight: 900; color: #fff;\n  margin: 0 0 5px; letter-spacing: -.5px; line-height: 1.2;\n}\n.sd-page-header p { font-size: var(--fs-body); color: var(--tx3); margin: 0; }\n\n\/* \u2500\u2500\u2500 SECTION BAR (Games \/ Maps \/ Engine \u2026) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-sectionbar { margin: 22px 0 26px; }\n.sd-sectionbar-inner {\n  display: inline-flex; gap: 4px; padding: 5px;\n  background: var(--bg2); border: 1px solid var(--bdr);\n  border-radius: 14px; flex-wrap: wrap;\n}\n.sd-sectab {\n  display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n  min-height: 42px; padding: 0 22px; border-radius: 10px;\n  font-size: 15px; font-weight: 700; color: var(--tx2);\n  white-space: nowrap; line-height: 1; transition: background .15s, color .15s, box-shadow .15s;\n}\n.sd-sectab:hover { color: #fff; background: var(--bg4); }\n.sd-sectab.active {\n  color: #fff;\n  background: linear-gradient(135deg, var(--blue), var(--blue3));\n  box-shadow: 0 4px 14px rgba(59,130,246,.30);\n}\n.sd-sectab-ico { font-size: 17px; line-height: 1; display: inline-flex; align-items: center; }\n@media (max-width: 560px) {\n  .sd-sectionbar { margin: 16px 0 20px; }\n  \/* Scroll horizontally instead of cramming tabs \u2014 keeps each tab tappable. *\/\n  .sd-sectionbar-inner { display: flex; flex-wrap: nowrap; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }\n  .sd-sectionbar-inner::-webkit-scrollbar { display: none; }\n  .sd-sectab { flex: 0 0 auto; min-height: 40px; padding: 0 16px; font-size: 14px; }\n}\n\n\/* \u2500\u2500\u2500 FEATURED STRIP \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-featured-label {\n  font-size: 11px; font-weight: 700; color: var(--tx3);\n  text-transform: uppercase; letter-spacing: .1em; margin-bottom: 12px;\n}\n.sd-featured-strip {\n  display: flex; gap: 16px;\n  overflow-x: auto; padding-bottom: 8px;\n  scroll-snap-type: x mandatory;\n  margin-bottom: 32px;\n  scrollbar-width: thin; scrollbar-color: var(--bdr2) transparent;\n}\n.sd-featured-strip::-webkit-scrollbar { height: 3px; }\n.sd-featured-strip::-webkit-scrollbar-thumb { background: var(--bdr2); border-radius: 2px; }\n.sd-fcrd {\n  flex: 0 0 280px; scroll-snap-align: start;\n  border-radius: var(--r); overflow: hidden;\n  border: 1px solid var(--bdr); cursor: pointer; position: relative;\n  transition: transform .2s, box-shadow .2s;\n  background: var(--bg2);\n}\n.sd-fcrd:hover { transform: translateY(-4px); box-shadow: var(--shadow-blue); }\n.sd-fcrd-img { height: 158px; overflow: hidden; background: var(--bg3); position: relative; }\n.sd-fcrd-img img { width:100%; height:100%; object-fit:cover; transition: transform .4s; display:block; }\n.sd-fcrd:hover .sd-fcrd-img img { transform: scale(1.06); }\n.sd-fcrd-body { padding: 12px 14px; }\n.sd-fcrd-title { font-size: 14px; font-weight: 700; color: #f1f5f9; margin-bottom: 3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n.sd-fcrd-price { font-size: 16px; font-weight: 800; color: var(--blue2); }\n\n\/* \u2500\u2500\u2500 FILTERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-filters-row {\n  display: flex; gap: 8px; align-items: center;\n  flex-wrap: wrap; margin-bottom: 20px;\n}\n.sd-search-wrap { position: relative; flex: 1; min-width: 180px; }\n.sd-search-ico {\n  position: absolute; left: 12px; top: 50%;\n  transform: translateY(-50%); pointer-events: none;\n  color: var(--tx3); width: 16px; height: 16px;\n}\n.sd-search {\n  width: 100%; padding: 10px 14px 10px 38px;\n  background: var(--bg2); border: 1px solid var(--bdr);\n  border-radius: var(--r2); color: var(--tx); font-size: 14px;\n  outline: none; font-family: inherit; transition: border .15s;\n}\n.sd-search:focus { border-color: var(--blue); background: var(--bg3); }\n.sd-genre-btn {\n  padding: 9px 16px; border-radius: var(--r2);\n  border: 1px solid var(--bdr); background: var(--bg2);\n  color: var(--tx3); font-size: 13px; font-weight: 600;\n  cursor: pointer; transition: all .15s; font-family: inherit;\n  white-space: nowrap;\n}\n.sd-genre-btn:hover, .sd-genre-btn.active {\n  background: var(--blue3); border-color: var(--blue3); color: #fff;\n}\n.sd-sort-sel {\n  padding: 9px 14px; background: var(--bg2); border: 1px solid var(--bdr);\n  border-radius: var(--r2); color: var(--tx); font-size: 13px;\n  outline: none; cursor: pointer; font-family: inherit;\n}\n\n.sd-result-count { font-size: 12px; font-weight: 700; color: var(--tx3); margin: -6px 0 14px; }\n.sd-search-clear {\n  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);\n  width: 26px; height: 26px; border: 0; border-radius: 50%;\n  background: var(--bg4); color: var(--tx2); cursor: pointer; display: none;\n  align-items: center; justify-content: center; font-size: 13px; line-height: 1;\n}\n.sd-search-wrap.has-q .sd-search-clear { display: flex; }\n.sd-search::-webkit-search-cancel-button { display: none; }\n.sd-genre-scroll { display: flex; gap: 8px; flex-wrap: wrap; }\n@container sdfe (max-width: 680px) {\n  .sd-search-wrap { flex: 1 1 100%; }\n  .sd-genre-scroll { flex: 1 1 0; min-width: 0; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }\n  .sd-genre-scroll::-webkit-scrollbar { display: none; }\n  .sd-genre-scroll .sd-genre-btn { flex: 0 0 auto; }\n}\n\n\/* \u2500\u2500\u2500 GAMES GRID \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-games-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));\n  gap: 20px;\n}\n\n\/* \u2500\u2500\u2500 GAME CARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-gcard {\n  background: var(--bg2); border: 1px solid var(--bdr);\n  border-radius: var(--r); overflow: hidden;\n  display: flex; flex-direction: column;\n  transition: transform .2s, border-color .2s, box-shadow .2s;\n  position: relative;\n}\n.sd-gcard:hover {\n  transform: translateY(-5px);\n  border-color: rgba(59,130,246,.45);\n  box-shadow: var(--shadow-blue);\n}\n\/* Cover 16:9 *\/\n.sd-gcard-cover {\n  position: relative;\n  padding-bottom: 56.25%; \/* 16:9 *\/\n  background: var(--bg3);\n  overflow: hidden;\n  cursor: pointer;\n}\n.sd-gcard-cover img {\n  position: absolute; inset: 0;\n  width: 100%; height: 100%; object-fit: cover;\n  transition: transform .35s;\n}\n.sd-gcard:hover .sd-gcard-cover img { transform: scale(1.06); }\n.sd-gcard-cover-ph {\n  position: absolute; inset: 0;\n  display: flex; align-items: center; justify-content: center;\n  font-size: 52px; opacity: .3; cursor: pointer;\n}\n\n\/* Badges *\/\n.sd-bdg {\n  position: absolute; z-index: 2;\n  padding: 3px 9px; border-radius: var(--r3);\n  font-size: 11px; font-weight: 800; line-height: 1.5;\n}\n.sd-bdg-sale   { top: 10px; left: 10px; background: #dc2626; color: #fff; }\n.sd-bdg-owned  { top: 10px; right: 40px; background: rgba(16,185,129,.9); color: #fff; }\n.sd-bdg-feat   { bottom: 8px; left: 8px; background: rgba(124,58,237,.9); color: #fff; }\n\n\/* Wishlist btn *\/\n.sd-wish-btn {\n  position: absolute; top: 8px; right: 8px;\n  width: 32px; height: 32px; border-radius: 50%;\n  background: rgba(0,0,0,.55); border: none;\n  color: #fff; cursor: pointer; font-size: 15px;\n  display: flex; align-items: center; justify-content: center;\n  transition: background .15s, transform .15s;\n  backdrop-filter: blur(4px); z-index: 3;\n}\n.sd-wish-btn:hover { background: rgba(220,38,38,.7); transform: scale(1.1); }\n.sd-wish-btn.on    { background: rgba(220,38,38,.88); }\n\n\/* Card body *\/\n.sd-gcard-body {\n  padding: 14px; flex: 1;\n  display: flex; flex-direction: column; gap: 6px;\n}\n.sd-gcard-meta {\n  display: flex; align-items: center;\n  justify-content: space-between; gap: 6px;\n}\n.sd-genre-pill {\n  font-size: 11px; font-weight: 700; color: var(--blue2);\n  background: rgba(59,130,246,.1); border: 1px solid rgba(59,130,246,.2);\n  padding: 2px 9px; border-radius: var(--r3); white-space: nowrap;\n}\n.sd-stars-row { display: flex; align-items: center; gap: 2px; }\n.sd-star-on  { color: var(--amber); font-size: 12px; }\n.sd-star-off { color: #374151;      font-size: 12px; }\n.sd-star-ct  { font-size: 11px; color: var(--tx3); margin-left: 2px; }\n\n.sd-gcard-title {\n  font-size: var(--fs-card-title); font-weight: 700; color: #f1f5f9;\n  line-height: 1.35; cursor: pointer;\n  overflow: hidden; display: -webkit-box;\n  -webkit-line-clamp: 2; -webkit-box-orient: vertical;\n}\n.sd-gcard-title:hover { color: var(--blue2); }\n.sd-gcard-tagline {\n  font-size: 12px; color: var(--tx3); line-height: 1.5;\n  overflow: hidden; display: -webkit-box;\n  -webkit-line-clamp: 2; -webkit-box-orient: vertical;\n}\n.sd-gcard-footer {\n  display: flex; align-items: center;\n  justify-content: space-between; margin-top: auto; padding-top: 10px;\n}\n.sd-price    { font-size: 20px; font-weight: 800; color: var(--blue); }\n.sd-price-was{ font-size: 12px; color: var(--tx3); text-decoration: line-through; margin-left: 4px; }\n.sd-add-btn {\n  padding: 7px 14px; background: var(--blue3); color: #fff;\n  border: none; border-radius: var(--r2); cursor: pointer;\n  font-size: 13px; font-weight: 700; transition: background .15s;\n  font-family: inherit; white-space: nowrap;\n}\n.sd-add-btn:hover    { background: var(--blue); }\n.sd-add-btn:disabled { background: var(--bg4); color: var(--tx3); cursor: default; }\n\n\/* \u2500\u2500\u2500 EMPTY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-empty {\n  text-align: center; padding: 64px 20px; color: var(--tx3);\n}\n.sd-empty-ico { font-size: 52px; margin-bottom: 14px; opacity: .65; }\n.sd-empty p { font-size: 15px; margin-bottom: 20px; }\n\n\/* \u2500\u2500\u2500 BOX \/ CARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-box {\n  background: var(--bg2); border: 1px solid var(--bdr);\n  border-radius: var(--r); padding: 22px; margin-bottom: 18px;\n}\n.sd-box h2 {\n  font-size: var(--fs-h2); font-weight: 700; color: #f1f5f9;\n  margin: 0 0 16px; display: flex; align-items: center; gap: 8px;\n  flex-wrap: wrap;\n}\n\n\/* \u2500\u2500\u2500 BUTTONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-btn {\n  display: inline-flex; align-items: center; justify-content: center;\n  gap: 7px; padding: 11px 20px;\n  border-radius: var(--r2); border: none;\n  cursor: pointer; font-weight: 700; font-size: 14px;\n  font-family: inherit; text-decoration: none;\n  transition: filter .15s; line-height: 1;\n}\n.sd-btn:hover      { filter: brightness(1.12); text-decoration: none; }\n.sd-btn-primary    { background: linear-gradient(135deg,var(--blue),var(--blue3)); color:#fff; box-shadow:0 3px 14px rgba(59,130,246,.25); }\n.sd-btn-success    { background: linear-gradient(135deg,var(--green),var(--green2)); color:#fff; }\n.sd-btn-ghost      { background: var(--bg3); color: var(--tx2); border: 1px solid var(--bdr); }\n.sd-btn-ghost:hover{ background: var(--bg4); color: var(--tx); filter: none; }\n.sd-btn-danger     { background: var(--red); color:#fff; }\n.sd-btn-gift       { background: linear-gradient(135deg,var(--purple),#4f46e5); color:#fff; }\n.sd-btn-sm         { padding: 7px 13px; font-size: 13px; }\n.sd-btn-lg         { padding: 13px 26px; font-size: 15px; }\n.sd-btn-full       { width: 100%; }\n\n\/* Shorthand aliases used in old templates *\/\n.sd-bp  { background: linear-gradient(135deg,var(--blue),var(--blue3)); color:#fff; }\n.sd-bs  { background: linear-gradient(135deg,var(--green),var(--green2)); color:#fff; }\n.sd-bg  { background: var(--bg3); color: var(--tx2); border: 1px solid var(--bdr); }\n.sd-bd  { background: var(--red); color:#fff; }\n.sd-bsm { padding: 7px 13px; font-size: 13px; border-radius: var(--r2); }\n.sd-bfull { width:100%; justify-content:center; display:inline-flex; }\n\n\/* \u2500\u2500\u2500 INPUTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-input, .sd-in {\n  width: 100%; padding: 11px 14px;\n  background: var(--bg3); border: 1px solid var(--bdr);\n  border-radius: var(--r2); color: var(--tx); font-size: 14px;\n  outline: none; font-family: inherit;\n  transition: border .15s; margin-bottom: 12px;\n}\n.sd-input:focus, .sd-in:focus { border-color: var(--blue); background: var(--bg2); }\n.sd-label, .sd-lbl {\n  display: block; font-size: 11px; font-weight: 700;\n  color: var(--tx3); text-transform: uppercase;\n  letter-spacing: .06em; margin-bottom: 6px;\n}\n\n\/* \u2500\u2500\u2500 TOAST \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-toast {\n  position: fixed; bottom: 24px; right: 24px;\n  padding: 13px 20px; border-radius: var(--r);\n  font-weight: 600; font-size: 14px; z-index: 99999;\n  box-shadow: var(--shadow); animation: sdTIn .2s ease;\n  max-width: 320px; font-family: inherit;\n}\n@keyframes sdTIn { from { transform:translateY(14px);opacity:0 } to { transform:none;opacity:1 } }\n.sd-t-ok   { background: rgba(16,185,129,.95); color:#fff; }\n.sd-t-err  { background: rgba(220,38,38,.95);  color:#fff; }\n.sd-t-warn { background: rgba(245,158,11,.95); color:#111; }\n\n\/* \u2500\u2500\u2500 CART \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-ci {\n  display: flex; align-items: center; gap: 14px;\n  padding: 14px 0; border-bottom: 1px solid var(--bdr);\n}\n.sd-ci:last-child { border-bottom: none; }\n.sd-ct, .sd-ct-img {\n  width: 56px; height: 56px; border-radius: var(--r2);\n  object-fit: cover; flex-shrink: 0;\n}\n.sd-ct-ph {\n  width: 56px; height: 56px; border-radius: var(--r2);\n  background: var(--bg3); border: 1px solid var(--bdr);\n  display: flex; align-items: center; justify-content: center;\n  font-size: 24px; flex-shrink: 0;\n}\n.sd-cart-total {\n  display: flex; justify-content: space-between; align-items: center;\n  border-top: 1px solid var(--bdr); padding-top: 16px; margin-top: 6px;\n  font-size: 20px; font-weight: 800; color: #f1f5f9;\n}\n\n\/* \u2500\u2500\u2500 DISCOUNT CODE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-coupon-row { display: flex; gap: 8px; align-items: stretch; }\n.sd-coupon-row .sd-input { flex: 1; min-width: 0; }\n.sd-coupon-row .sd-btn { white-space: nowrap; flex-shrink: 0; }\n.sd-coupon-row .sd-input:disabled { opacity: .7; font-weight: 700; color: var(--green); }\n\n\/* \u2500\u2500\u2500 CHECKOUT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-checkout-grid {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) 340px;\n  gap: 24px; align-items: start;\n}\n.sd-total-row {\n  display: flex; justify-content: space-between; align-items: center;\n  padding-top: 14px; margin-top: 4px;\n  font-size: 20px; font-weight: 800; color: #f1f5f9;\n}\n\n\/* \u2500\u2500\u2500 DETAIL PAGE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/* minmax(0,\u2026) is required: a bare `1fr` track has min-width:auto, so one wide\n   child (long title, image, <pre>) inflates the column and shoves the buy box\n   off the right edge \u2014 the page then looks cut off instead of wrapping. *\/\n.sd-detail-layout {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) 310px;\n  gap: 26px; align-items: start;\n}\n.sd-detail-sidebar { position: sticky; top: 80px; }\n\/* Desktop: media + info on the left, buy box spanning both rows on the right.\n   Stacked: cover \u2192 buy box \u2192 description, so price & buttons are seen first. *\/\n.sd-detail-layout {\n  grid-template-areas: \"media side\" \"info side\";\n  row-gap: 0;\n}\n.sd-det-media   { grid-area: media; }\n.sd-det-info    { grid-area: info; }\n.sd-detail-sidebar { grid-area: side; }\n\/* Cover *\/\n.sd-det-cover {\n  border-radius: var(--r); overflow: hidden;\n  aspect-ratio: 16\/9; background: var(--bg3);\n  display: flex; align-items: center; justify-content: center;\n  font-size: 80px; margin-bottom: 18px;\n}\n.sd-det-cover img { width:100%; height:100%; object-fit:cover; display:block; }\n\/* Aliases kept for backward compat *\/\n.sd-det-img        { border-radius:var(--r); overflow:hidden; aspect-ratio:16\/9; background:var(--bg3); display:flex; align-items:center; justify-content:center; font-size:80px; margin-bottom:18px; }\n.sd-det-img img    { width:100%; height:100%; object-fit:cover; display:block; }\n.sd-det-grid       { display:grid; grid-template-columns:minmax(0,1fr) 310px; gap:26px; align-items:start; }\n.sd-det-sticky     { position:sticky; top:80px; }\n\n\/* Screenshots *\/\n.sd-screenshots {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n  gap: 8px; margin-bottom: 20px;\n}\n.sd-screenshot, .sd-gallery-item {\n  border-radius: var(--r2); overflow: hidden;\n  aspect-ratio: 16\/9; cursor: pointer;\n  border: 1px solid var(--bdr); transition: border-color .15s;\n}\n.sd-screenshot:hover, .sd-gallery-item:hover { border-color: var(--blue); }\n.sd-screenshot img, .sd-gallery-item img { width:100%; height:100%; object-fit:cover; display:block; }\n\/* Alias *\/\n.sd-gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:8px; margin-bottom:20px; }\n\n\/* Buy box *\/\n.sd-buy-box { background:var(--bg2); border:1px solid var(--bdr); border-radius:var(--r); padding:22px; }\n.sd-big-price, .sd-price-big { font-size:var(--fs-price); font-weight:900; color:var(--blue); line-height:1.05; }\n.sd-orig-p, .sd-orig-price { font-size:14px; color:var(--tx3); text-decoration:line-through; margin-bottom:5px; }\n.sd-sale-pct, .sd-sale-badge {\n  display: inline-block; background: #dc2626; color: #fff;\n  padding: 3px 11px; border-radius: var(--r3);\n  font-size: 13px; font-weight: 800; margin-bottom: 14px;\n}\n.sd-detail-stars { display:flex; align-items:center; gap:3px; margin-bottom:14px; }\n.sd-son  { color:var(--amber); font-size:16px; }\n.sd-soff { color:#374151;      font-size:16px; }\n.sd-sct  { font-size:12px; color:var(--tx3); margin-left:4px; }\n\/* Aliases used in old templates *\/\n.sd-stars { display:flex; align-items:center; gap:3px; margin-bottom:14px; }\n\n\/* \u2500\u2500\u2500 REVIEWS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-rvform { background:var(--bg3); border:1px solid var(--bdr); border-radius:var(--r2); padding:16px; margin-bottom:16px; }\n.sd-rv-item2 { background:var(--bg2); border:1px solid var(--bdr); border-radius:var(--r2); padding:14px; margin-bottom:12px; }\n.sd-rv-head { display:flex; align-items:center; gap:10px; margin-bottom:8px; }\n.sd-rv-av { width:36px; height:36px; border-radius:50%; background:var(--blue3); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:14px; color:#fff; flex-shrink:0; }\n.sd-rv-name { font-size:14px; font-weight:700; color:#f1f5f9; }\n.sd-rv-date { font-size:12px; color:var(--tx3); }\n.sd-rv-stars { color:var(--amber); font-size:14px; margin-left:auto; }\n.sd-rv-body { font-size:14px; color:var(--tx2); line-height:1.65; }\n.sd-stars-inp { display:flex; gap:6px; margin-bottom:12px; }\n.sd-stars-inp span { font-size:28px; cursor:pointer; opacity:.3; transition:opacity .1s, transform .1s; user-select:none; }\n.sd-stars-inp span.on { opacity:1; transform:scale(1.1); }\n\n\/* \u2500\u2500\u2500 RELATED GAMES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-related { margin-top:6px; }\n.sd-related h2 { font-size:17px; font-weight:700; color:#f1f5f9; margin-bottom:14px; }\n.sd-related-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:14px; }\n.sd-rel-card { background:var(--bg3); border:1px solid var(--bdr); border-radius:var(--r2); overflow:hidden; cursor:pointer; transition:border-color .15s; }\n.sd-rel-card:hover { border-color:var(--blue); }\n.sd-rel-img { height:96px; overflow:hidden; background:var(--bg2); display:flex; align-items:center; justify-content:center; font-size:38px; position:relative; }\n.sd-rel-img img { width:100%; height:100%; object-fit:cover; display:block; }\n.sd-rel-body { padding:10px; }\n.sd-rel-title { font-size:13px; font-weight:700; color:#f1f5f9; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n.sd-rel-price { font-size:13px; font-weight:800; color:var(--blue); }\n\n\/* \u2500\u2500\u2500 TAGS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-tag {\n  display: inline-block; background: var(--bg3);\n  color: var(--tx3); font-size: 12px;\n  padding: 3px 10px; border-radius: var(--r3);\n  border: 1px solid var(--bdr); cursor: pointer;\n  transition: all .15s; margin: 3px 3px 3px 0;\n}\n.sd-tag:hover { border-color:var(--blue); color:var(--blue2); }\n\n\/* \u2500\u2500\u2500 SYSTEM REQ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-sysreq { display:grid; grid-template-columns:1fr 1fr; gap:14px; }\n.sd-sysbox { background:var(--bg3); border:1px solid var(--bdr); border-radius:var(--r2); padding:14px; }\n.sd-sysbox .lbl, .sd-sysbox .sys-lbl { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.07em; margin-bottom:7px; color:var(--tx3); }\n.sd-sysbox p { font-size:13px; color:var(--tx2); line-height:1.6; margin:0; }\n\n\/* \u2500\u2500\u2500 LIGHTBOX \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-lightbox { position:fixed; inset:0; background:rgba(0,0,0,.92); z-index:99999; display:flex; align-items:center; justify-content:center; cursor:pointer; backdrop-filter:blur(8px); }\n.sd-lightbox img { max-width:90vw; max-height:86vh; border-radius:var(--r); object-fit:contain; cursor:default; }\n.sd-lb-nav, .sd-lb-x {\n  position:fixed; border:0; border-radius:50%; background:rgba(255,255,255,.12); color:#fff;\n  width:48px; height:48px; font-size:24px; cursor:pointer; display:flex; align-items:center; justify-content:center;\n}\n.sd-lb-nav:hover, .sd-lb-x:hover { background:rgba(255,255,255,.25); }\n.sd-lb-prev { left:16px; top:50%; transform:translateY(-50%); }\n.sd-lb-next { right:16px; top:50%; transform:translateY(-50%); }\n.sd-lb-x    { top:16px; right:16px; width:40px; height:40px; font-size:18px; }\n.sd-lb-count { position:fixed; bottom:18px; left:50%; transform:translateX(-50%); color:#cbd5e1; font:600 13px Inter,sans-serif; }\n\n\/* \u2500\u2500\u2500 GIFT MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-gift-overlay { position:fixed; inset:0; background:rgba(0,0,0,.78); z-index:9999; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(5px); }\n.sd-gift-modal { background:var(--bg2); border:1px solid var(--bdr2); border-radius:var(--r); padding:28px; width:100%; max-width:430px; margin:16px; box-shadow:var(--shadow); }\n.sd-gift-modal h3 { font-size:20px; font-weight:800; color:#fff; margin:0 0 5px; }\n.sd-gift-modal .sub { font-size:13px; color:var(--tx3); margin:0 0 18px; }\n\n\/* \u2500\u2500\u2500 LIBRARY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-lib-card { background:var(--bg2); border:1px solid #064e3b; border-radius:var(--r); overflow:hidden; }\n.sd-lib-cover { height:106px; background:var(--bg3); overflow:hidden; }\n.sd-lib-cover img { width:100%; height:100%; object-fit:cover; display:block; }\n.sd-lib-body { padding:12px; }\n\n\/* \u2500\u2500\u2500 ORDERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-order-card { background:var(--bg2); border:1px solid var(--bdr); border-radius:var(--r); padding:16px; margin-bottom:14px; }\n.sd-order-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; margin-bottom:12px; padding-bottom:12px; border-bottom:1px solid var(--bdr); }\n.sd-order-items-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }\n.sd-order-item-card { background:var(--bg3); border:1px solid var(--bdr); border-radius:var(--r2); padding:10px; text-align:center; }\n.sd-order-item-card img { width:100%; height:72px; object-fit:cover; border-radius:6px; margin-bottom:8px; display:block; }\n\n\/* Status pills *\/\n.sd-pill { display:inline-flex; align-items:center; padding:3px 10px; border-radius:var(--r3); font-size:12px; font-weight:700; }\n.sd-s-ok   { background:#022c22; color:var(--green); border:1px solid #065f46; }\n.sd-s-pend { background:#1c1000; color:var(--amber); border:1px solid #78350f; }\n.sd-s-fail { background:#2d0a0a; color:var(--red2);  border:1px solid #7f1d1d; }\n\/* Aliases *\/\n.sd-status { display:inline-flex; align-items:center; padding:3px 10px; border-radius:var(--r3); font-size:12px; font-weight:700; }\n\n\/* \u2500\u2500\u2500 ACCOUNT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-acc-head { display:flex; align-items:center; gap:18px; margin-bottom:26px; padding-bottom:22px; border-bottom:1px solid var(--bdr); }\n.sd-acc-avatar { width:68px; height:68px; border-radius:50%; background:linear-gradient(135deg,var(--blue),var(--purple)); display:flex; align-items:center; justify-content:center; font-size:26px; font-weight:900; color:#fff; flex-shrink:0; }\n.sd-avatar {\n  width:68px; height:68px; border-radius:50%; background:linear-gradient(135deg,var(--blue),var(--purple));\n  display:flex; align-items:center; justify-content:center; font-size:26px; font-weight:900; color:#fff; flex-shrink:0;\n  box-shadow: 0 0 0 4px rgba(59,130,246,.15), 0 8px 24px rgba(124,58,237,.25);\n}\n\n\/* \u2500\u2500\u2500 AUTH \/ LOGIN HERO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-auth-hero {\n  position: relative; text-align:center; padding:44px 20px 34px; margin-bottom:8px;\n  border-radius: var(--r3); overflow:hidden;\n  background: radial-gradient(circle at 30% 0%, rgba(59,130,246,.16), transparent 55%),\n              radial-gradient(circle at 80% 20%, rgba(124,58,237,.14), transparent 50%),\n              var(--bg2);\n  border: 1px solid var(--bdr);\n}\n.sd-auth-hero-ico { font-size:40px; margin-bottom:10px; display:inline-block; }\n.sd-auth-hero h1 { font-size:28px; font-weight:900; color:#fff; margin:0 0 8px; letter-spacing:-.5px; }\n.sd-auth-hero p { font-size:14px; color:var(--tx2); margin:0 auto; max-width:440px; }\n.sd-trust-row {\n  display:flex; flex-wrap:wrap; gap:8px; justify-content:center;\n  margin-top:16px;\n}\n.sd-trust-pill {\n  display:inline-flex; align-items:center; gap:5px;\n  background: var(--bg3); border:1px solid var(--bdr2); color:var(--tx2);\n  font-size:11.5px; font-weight:700; padding:5px 12px; border-radius:999px;\n}\n.sd-auth-card { position:relative; border-top:3px solid transparent; }\n.sd-auth-card--in  { border-top-color: var(--blue); }\n.sd-auth-card--reg { border-top-color: var(--green); }\n\n\/* Password field with a show\/hide eye *\/\n.sd-pw-wrap { position: relative; }\n.sd-pw-wrap .sd-in { padding-right: 44px; }\n.sd-pw-eye {\n  position: absolute; top: 11px; right: 8px;\n  width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;\n  background: transparent; border: 0; border-radius: 6px;\n  color: var(--tx3); cursor: pointer; font-size: 15px; line-height: 1;\n  transition: color .15s, background .15s;\n}\n.sd-pw-eye:hover { color: var(--tx); background: var(--bg4); }\n.sd-pw-eye.on { color: var(--blue2); }\n\n\/* Keyboard focus ring \u2014 visible for keyboard users, invisible for mouse. *\/\n.sd-fe :where(a, button, input, select, textarea):focus-visible {\n  outline: 2px solid var(--blue2); outline-offset: 2px; border-radius: 4px;\n}\n\n\/* \u2500\u2500\u2500 MOBILE STICKY BUY BAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/* On a phone the buy box sits far below the description, so the primary action\n   scrolls out of reach. This pins it to the bottom on small screens only. *\/\n.sd-buybar { display: none; }\n@media (max-width: 900px) {\n  .sd-buybar {\n    display: flex; align-items: center; gap: 12px;\n    position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;\n    padding: 10px 14px calc(10px + env(safe-area-inset-bottom));\n    background: rgba(13,17,23,.96); border-top: 1px solid var(--bdr);\n    backdrop-filter: blur(10px);\n  }\n  .sd-buybar-price { font-size: 18px; font-weight: 800; color: var(--blue2); white-space: nowrap; }\n  .sd-buybar .sd-btn { flex: 1; }\n  \/* Keep the bar from covering the end of the page. *\/\n  .sd-fe.has-buybar .sd-wrap { padding-bottom: 88px; }\n}\n\n\/* \u2500\u2500\u2500 EDITIONS \/ PRICE TIERS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-ed-list { display: flex; flex-direction: column; gap: 8px; }\n.sd-ed {\n  display: block; position: relative; cursor: pointer;\n  background: var(--bg3); border: 1px solid var(--bdr); border-radius: var(--r2);\n  padding: 12px 14px; transition: border-color .15s, background .15s;\n}\n.sd-ed:hover { border-color: var(--bdr2); background: var(--bg4); }\n.sd-ed.active { border-color: var(--blue); background: rgba(59,130,246,.08); box-shadow: 0 0 0 1px var(--blue); }\n.sd-ed input { position: absolute; opacity: 0; pointer-events: none; }\n.sd-ed-body { display: flex; flex-direction: column; gap: 4px; }\n.sd-ed-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }\n.sd-ed-name  { font-size: 14px; font-weight: 800; color: #f1f5f9; }\n.sd-ed-price { font-size: 16px; font-weight: 900; color: var(--blue2); white-space: nowrap; }\n.sd-ed-desc  { font-size: 12.5px; color: var(--tx2); line-height: 1.5; }\n.sd-ed-meta  { font-size: 11px; color: var(--tx3); }\n\n\/* \u2500\u2500\u2500 PAY WHAT YOU WANT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-pwyw-box { background:var(--bg3); border:1px solid var(--bdr); border-radius:var(--r2); padding:14px; margin-bottom:0; }\n.sd-pwyw-label { font-size:12px; font-weight:800; color:#a78bfa; text-transform:uppercase; letter-spacing:.05em; margin-bottom:10px; }\n.sd-pwyw-presets { display:flex; gap:8px; flex-wrap:wrap; }\n.sd-pwyw-preset {\n  padding:7px 14px; border-radius:999px; border:1px solid var(--bdr2);\n  background:var(--bg2); color:var(--tx2); font-size:13px; font-weight:700;\n  cursor:pointer; font-family:inherit; transition:all .15s;\n}\n.sd-pwyw-preset:hover, .sd-pwyw-preset.active { background:var(--purple); border-color:var(--purple); color:#fff; }\n\n\/* \u2500\u2500\u2500 SUCCESS PAGE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.sd-success-box { text-align:center; padding:60px 20px; }\n.sd-success-icon { font-size:80px; margin-bottom:18px; animation:sdPop .5s ease; display:block; }\n@keyframes sdPop { 0%{transform:scale(.2);opacity:0} 70%{transform:scale(1.12)} 100%{transform:scale(1);opacity:1} }\n\n\/* \u2500\u2500\u2500 RESPONSIVE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/* Desktop 1100-1440px *\/\n@media (max-width: 1280px) {\n  .sd-wrap { padding: 0 24px 60px; }\n  .sd-games-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }\n}\n\n\/* Tablet landscape ~900-1100px *\/\n@media (max-width: 1100px) {\n  .sd-wrap { padding: 0 20px 56px; }\n  .sd-games-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; }\n  .sd-featured-strip { margin-bottom: 24px; }\n  .sd-fcrd { flex: 0 0 240px; }\n}\n\n\/* Tablet portrait ~700-900px \u2014 the two-column layouts stack here. *\/\n@media (max-width: 900px) {\n  .sd-wrap { padding: 0 18px 52px; }\n  .sd-detail-layout, .sd-det-grid { grid-template-columns: 1fr; }\n  .sd-detail-layout { grid-template-areas: \"media\" \"side\" \"info\"; }\n  .sd-det-media .sd-screenshots { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--bdr2) transparent; padding-bottom: 4px; margin-bottom: 0; }\n  .sd-det-media .sd-screenshot { flex: 0 0 44%; scroll-snap-align: start; }\n  .sd-detail-sidebar { margin-bottom: 18px; }\n  .sd-detail-sidebar, .sd-det-sticky { position: static; }\n  .sd-checkout-grid { grid-template-columns: 1fr; }\n  .sd-games-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; }\n}\n\n\/* Mobile large ~540-700px *\/\n@media (max-width: 680px) {\n  .sd-wrap { padding: 0 14px 48px; }\n  .sd-games-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }\n  .sd-page-header { padding: 22px 0 16px; margin-bottom: 20px; }\n  .sd-sysreq { grid-template-columns: 1fr; }\n  .sd-related-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }\n  .sd-featured-strip { gap: 10px; }\n  .sd-fcrd { flex: 0 0 200px; }\n  .sd-fcrd-img { height: 120px; }\n  .sd-filters-row { gap: 6px; }\n  .sd-genre-btn { padding: 7px 12px; }\n  .sd-gcard-body { padding: 11px; }\n  .sd-box { padding: 16px; }\n  .sd-checkout-grid { gap: 16px; }\n  .sd-acc-head { flex-direction: column; align-items: flex-start; }\n  .sd-auth-grid { grid-template-columns: 1fr !important; }\n  \/* Full-width tap targets \u2014 thumb-friendly, and they stop the price\/button\n     row from squeezing into an unreadable strip. *\/\n  .sd-gcard-footer { flex-direction: column; align-items: stretch; gap: 8px; }\n  .sd-gcard-footer .sd-add-btn { width: 100%; padding: 10px; }\n}\n\n\/* Mobile small < 420px \u2014 one column, nothing is allowed to shrink further. *\/\n@media (max-width: 420px) {\n  .sd-wrap { padding: 0 10px 40px; }\n  .sd-games-grid { grid-template-columns: 1fr; }\n  .sd-related-grid { grid-template-columns: 1fr; }\n  .sd-order-items-grid { grid-template-columns: 1fr; }\n  .sd-ci { gap: 10px; }\n  .sd-ct, .sd-ct-img, .sd-ct-ph { width: 44px; height: 44px; }\n}\n\n\/* SHORT screens (landscape phones, small laptops, split windows). Vertical\n   rhythm is what breaks here, not width \u2014 trim the tall blocks and unstick the\n   sidebar so it can never be taller than the screen it sits in. *\/\n@media (max-height: 620px) {\n  .sd-page-header { padding: 18px 0 14px; margin-bottom: 18px; }\n  .sd-det-cover, .sd-det-img { aspect-ratio: 21\/9; }\n  .sd-detail-sidebar, .sd-det-sticky { position: static; }\n  .sd-featured-strip { margin-bottom: 18px; }\n}\n\/* Tall enough to be sticky, but only if the sidebar actually fits. *\/\n@media (min-height: 621px) and (min-width: 901px) {\n  .sd-detail-sidebar, .sd-det-sticky {\n    position: sticky; top: 80px;\n  }\n  \/* Taller than the screen: a sticky box would hide its bottom half, and an\n     inner scrollbar looks broken \u2014 so it just scrolls with the page. *\/\n  .sd-detail-sidebar.sd-side-tall { position: static; }\n}\n\n\/* \u2500\u2500\u2500 CONTAINER-BASED LAYOUT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/* Same breakpoints as above, but measured against the shop's own width, so\n   a narrow theme column on a big monitor still gets the stacked layout. *\/\n@container sdfe (max-width: 1100px) {\n  .sd-wrap { padding: 0 20px 56px; }\n  .sd-games-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; }\n  .sd-fcrd { flex: 0 0 240px; }\n}\n@container sdfe (max-width: 900px) {\n  .sd-wrap { padding: 0 18px 52px; }\n  .sd-detail-layout, .sd-det-grid, .sd-checkout-grid { grid-template-columns: 1fr; }\n  .sd-detail-layout { grid-template-areas: \"media\" \"side\" \"info\"; }\n  .sd-det-media .sd-screenshots { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--bdr2) transparent; padding-bottom: 4px; margin-bottom: 0; }\n  .sd-det-media .sd-screenshot { flex: 0 0 44%; scroll-snap-align: start; }\n  .sd-detail-sidebar { margin-bottom: 18px; }\n  .sd-detail-sidebar, .sd-det-sticky { position: static; max-height: none; overflow: visible; }\n  .sd-games-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; }\n}\n@container sdfe (max-width: 680px) {\n  .sd-wrap { padding: 0 14px 48px; }\n  .sd-games-grid { gap: 12px; }\n  .sd-page-header { padding: 22px 0 16px; margin-bottom: 20px; }\n  .sd-sysreq { grid-template-columns: 1fr; }\n  .sd-related-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }\n  .sd-featured-strip { gap: 10px; }\n  .sd-fcrd { flex: 0 0 200px; }\n  .sd-fcrd-img { height: 120px; }\n  .sd-genre-btn { padding: 7px 12px; }\n  .sd-gcard-body { padding: 11px; }\n  .sd-box { padding: 16px; }\n  .sd-acc-head { flex-direction: column; align-items: flex-start; }\n  .sd-auth-grid { grid-template-columns: 1fr !important; }\n  .sd-gcard-footer { flex-direction: column; align-items: stretch; gap: 8px; }\n  .sd-gcard-footer .sd-add-btn { width: 100%; padding: 10px; }\n  .sd-screenshots, .sd-gallery { grid-template-columns: repeat(2, 1fr); }\n}\n@container sdfe (max-width: 560px) {\n  .sd-sectionbar-inner { display: flex; flex-wrap: nowrap; width: 100%; overflow-x: auto; scrollbar-width: none; }\n  .sd-sectab { flex: 0 0 auto; min-height: 40px; padding: 0 16px; font-size: 14px; }\n  .sd-fcrd { flex: 0 0 min(260px, 85%); }\n}\n@container sdfe (max-width: 420px) {\n  .sd-wrap { padding: 0 10px 40px; }\n  .sd-games-grid, .sd-related-grid, .sd-order-items-grid { grid-template-columns: 1fr; }\n}\n\n\/* Respect the OS \"reduce motion\" setting. *\/\n@media (prefers-reduced-motion: reduce) {\n  .sd-fe, .sd-fe * { animation: none !important; transition: none !important; }\n  .sd-gcard:hover, .sd-fcrd:hover { transform: none; }\n}\n<\/style>\n    <script>\nvar SD={ajax:\"https:\\\/\\\/gerdygamingcz.com\\\/wp-admin\\\/admin-ajax.php\",nonce:\"e04ed00eaf\",shopUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=897\",cartUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=971\",checkoutUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=975\",libUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=1007\",accUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=965\",wishUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=987\",ordersUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=993\",engineUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=1018\",mapsUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/?page_id=1019\",homeUrl:\"https:\\\/\\\/gerdygamingcz.com\\\/\",loggedIn:false,ownedIds:[],cur:\"$\",curSuffix:false,wishedIds:[]};\n\/* \u2500\u2500 AJAX with auto-nonce-refresh \u2500\u2500 *\/\nfunction sdAjax(fd,cb){\n  fetch(SD.ajax,{method:'POST',body:fd})\n    .then(function(r){ if(r.status===403)throw 403; return r.json(); })\n    .then(function(d){\n      if(!d.success&&d.data&&d.data.nonce_error){\n        var f2=new FormData();f2.append('action','sd_refresh_nonce');\n        fetch(SD.ajax,{method:'POST',body:f2}).then(function(r){return r.json();}).then(function(n){\n          if(n.success)SD.nonce=n.data.nonce;\n          fd.set('nonce',SD.nonce);\n          fetch(SD.ajax,{method:'POST',body:fd}).then(function(r){return r.json();}).then(cb);\n        });\n      } else { cb(d); }\n    })\n    .catch(function(){\n      var f2=new FormData();f2.append('action','sd_refresh_nonce');\n      fetch(SD.ajax,{method:'POST',body:f2}).then(function(r){return r.json();}).then(function(n){\n        if(n.success)SD.nonce=n.data.nonce;\n        fd.set('nonce',SD.nonce);\n        fetch(SD.ajax,{method:'POST',body:fd}).then(function(r){return r.json();}).then(cb);\n      });\n    });\n}\n\n\/* \u2500\u2500 Toast \u2500\u2500 *\/\nfunction sdToast(msg,type){\n  var el=document.createElement('div');\n  el.className='sd-toast sd-t-'+(type||'ok');\n  el.textContent=msg;\n  document.body.appendChild(el);\n  setTimeout(function(){\n    el.style.cssText='opacity:0;transform:translateY(8px);transition:.25s';\n    setTimeout(function(){if(el.parentNode)el.remove();},280);\n  },3000);\n}\n\n\/* \u2500\u2500 Money formatting (matches the shop's currency setting) \u2500\u2500 *\/\nfunction sdPrice(n){n=(parseFloat(n)||0).toFixed(2);return SD.curSuffix?(n+' '+SD.cur):(SD.cur+n);}\n\n\/* \u2500\u2500 Show \/ hide a password field \u2500\u2500 *\/\nfunction sdTogglePw(id,btn){\n  var i=document.getElementById(id); if(!i)return;\n  var show=i.type==='password';\n  i.type=show?'text':'password';\n  if(btn){\n    btn.classList.toggle('on',show);\n    btn.setAttribute('aria-label',show?'Hide password':'Show password');\n  }\n  i.focus();\n}\n\n\/* \u2500\u2500 Cart \u2500\u2500 *\/\nfunction sdCart(){try{return JSON.parse(localStorage.getItem('sd_cart')||'[]');}catch(e){return[];}}\nfunction sdSaveCart(c){localStorage.setItem('sd_cart',JSON.stringify(c));sdBadge();}\nfunction sdAddToCart(id,title,price,cover,pwyw){\n  id=parseInt(id);\n  if(SD.ownedIds.indexOf(id)!==-1){sdToast(title+' is already in your library','warn');return;}\n  var c=sdCart();\n  var existing=c.find(function(x){return x.game_id===id;});\n  if(existing){\n    if(pwyw){existing.price=parseFloat(price)||0;existing.amount=existing.price;sdSaveCart(c);sdToast('Cart amount updated','ok');return;}\n    sdToast('Already in cart','warn');return;\n  }\n  var item={game_id:id,title:title,price:parseFloat(price)||0,cover:cover||''};\n  if(pwyw)item.amount=item.price;\n  c.push(item);\n  sdSaveCart(c);\n  sdToast(title+' added to cart \ud83d\uded2','ok');\n}\nfunction sdRemoveFromCart(id){sdSaveCart(sdCart().filter(function(x){return x.game_id!=id;}));}\n\n\/* \u2500\u2500 Editions \/ price tiers \u2500\u2500 *\/\nfunction sdEdPick(input){\n  var list=input.closest('.sd-ed-list'); if(!list)return;\n  list.querySelectorAll('.sd-ed').forEach(function(l){l.classList.remove('active');});\n  var lab=input.closest('.sd-ed'); if(lab)lab.classList.add('active');\n}\nfunction sdAddToCartEd(gid,title,cover,goToCart){\n  gid=parseInt(gid);\n  if(SD.ownedIds.indexOf(gid)!==-1){sdToast(title+' is already in your library','warn');return;}\n  var sel=document.querySelector('input[name=\"sd-ed-'+gid+'\"]:checked');\n  if(!sel){sdToast('Please choose an edition first','warn');return;}\n  var price=parseFloat(sel.dataset.price)||0;\n  var edId=parseInt(sel.value);\n  var edName=sel.dataset.name||'';\n  var label=title+(edName?' \u2014 '+edName:'');\n  var c=sdCart();\n  var ex=c.find(function(x){return x.game_id===gid;});\n  if(ex){\n    ex.edition_id=edId; ex.price=price; ex.title=label; ex.cover=cover||ex.cover;\n    sdSaveCart(c); sdToast('Edition updated to '+edName,'ok');\n  } else {\n    c.push({game_id:gid,title:label,price:price,cover:cover||'',edition_id:edId});\n    sdSaveCart(c); sdToast(label+' added to cart \ud83d\uded2','ok');\n  }\n  if(goToCart)setTimeout(function(){location=SD.cartUrl;},300);\n}\n\n\/* \u2500\u2500 Pay What You Want \u2500\u2500 *\/\nfunction sdPwywPick(gid,val,btn){\n  var inp=document.getElementById('sd-pwyw-amt-'+gid);\n  if(inp)inp.value=val;\n  if(btn&&btn.parentNode){\n    btn.parentNode.querySelectorAll('.sd-pwyw-preset').forEach(function(b){b.classList.remove('active');});\n    btn.classList.add('active');\n  }\n}\nfunction sdAddToCartPWYW(gid,title,cover,minAmount){\n  var inp=document.getElementById('sd-pwyw-amt-'+gid);\n  var amt=inp?parseFloat(inp.value):0;\n  if(isNaN(amt)||amt<0)amt=0;\n  minAmount=parseFloat(minAmount)||0;\n  if(amt<minAmount){\n    amt=minAmount;\n    if(inp)inp.value=amt;\n    sdToast('Minimum amount is '+sdPrice(minAmount),'warn');\n  }\n  sdAddToCart(gid,title,amt,cover,true);\n}\nfunction sdBadge(){\n  var n=sdCart().length;\n  document.querySelectorAll('.sd-cart-count').forEach(function(el){\n    el.textContent=n; el.style.display=n?'inline-flex':'none';\n  });\n}\n\n\/* \u2500\u2500 Claim a FREE product (instant, no checkout) \u2500\u2500 *\/\nfunction sdClaimFree(gid,btn){\n  if(btn){btn.disabled=true;btn.dataset.t=btn.textContent;btn.textContent='\u23f3 Adding\u2026';}\n  var fd=new FormData();\n  fd.append('action','sd_claim_free');fd.append('nonce',SD.nonce);fd.append('game_id',gid);\n  sdAjax(fd,function(d){\n    if(d.success&&d.data.url){\n      sdToast('Downloading\u2026','ok');window.location=d.data.url;\n      if(btn){btn.disabled=false;btn.textContent=btn.dataset.t;}\n    } else if(d.success){\n      sdToast(d.data.message||'Added to your library!','ok');\n      SD.ownedIds.push(parseInt(gid));\n      setTimeout(function(){location=d.data.library;},700);\n    } else {\n      if(d.data&&d.data.need_login){\n        sdToast(d.data.message,'warn');\n        setTimeout(function(){location=(d.data.login_url||SD.accUrl);},900);\n      } else {\n        sdToast((d.data&&d.data.message)||'Error','err');\n        if(btn){btn.disabled=false;btn.textContent=btn.dataset.t||'\u2b07 Get it Free';}\n      }\n    }\n  });\n}\n\n\/* \u2500\u2500 Wishlist \u2500\u2500 *\/\nfunction sdToggleWish(gid,btn){\n  if(!SD.loggedIn){sdToast('Sign in to save products to your wishlist','warn');setTimeout(function(){location=SD.accUrl;},1100);return;}\n  var fd=new FormData();\n  fd.append('action','sd_wishlist');fd.append('nonce',SD.nonce);fd.append('game_id',gid);\n  sdAjax(fd,function(d){\n    if(!d.success){sdToast((d.data&&d.data.message)||'Error','err');return;}\n    if(d.data.action==='added'){\n      btn.classList.add('on');btn.innerHTML='&#10084;&#65039;';\n      SD.wishedIds.push(parseInt(gid));sdToast('Added to wishlist','ok');\n    } else {\n      btn.classList.remove('on');btn.innerHTML='&#129293;';\n      SD.wishedIds=SD.wishedIds.filter(function(x){return x!=gid;});\n      sdToast('Removed from wishlist','warn');\n    }\n  });\n}\n\n\/* \u2500\u2500 Lightbox \u2500\u2500 *\/\n\/* \u2500\u2500 Detail sidebar: only sticky when it fits the screen \u2500\u2500 *\/\nfunction sdSideFit(){\n  document.querySelectorAll(\".sd-detail-sidebar\").forEach(function(el){\n    el.classList.toggle(\"sd-side-tall\", el.offsetHeight > window.innerHeight - 100);\n  });\n}\nwindow.addEventListener(\"load\",sdSideFit);\nwindow.addEventListener(\"resize\",sdSideFit);\n\nfunction sdLightbox(src,list){\n  list=(list&&list.length)?list:[src];\n  var i=Math.max(0,list.indexOf(src));\n  var lb=document.createElement('div');lb.className='sd-lightbox';\n  var img=document.createElement('img');\n  var ct=document.createElement('div');ct.className='sd-lb-count';\n  function show(){img.src=list[i];ct.textContent=list.length>1?(i+1)+' \/ '+list.length:'';}\n  function go(d){i=(i+d+list.length)%list.length;show();}\n  function close(){lb.remove();document.removeEventListener('keydown',key);}\n  function key(e){if(e.key==='Escape')close();else if(e.key==='ArrowLeft')go(-1);else if(e.key==='ArrowRight')go(1);}\n  function btn(cls,txt,fn){var b=document.createElement('button');b.className=cls;b.type='button';b.innerHTML=txt;\n    b.onclick=function(e){e.stopPropagation();fn();};lb.appendChild(b);}\n  lb.appendChild(img);lb.appendChild(ct);\n  btn('sd-lb-x','&#10005;',close);\n  if(list.length>1){btn('sd-lb-nav sd-lb-prev','&#8249;',function(){go(-1);});btn('sd-lb-nav sd-lb-next','&#8250;',function(){go(1);});}\n  img.onclick=function(e){e.stopPropagation();if(list.length>1)go(1);};\n  var x0=null;\n  lb.addEventListener('touchstart',function(e){x0=e.touches[0].clientX;},{passive:true});\n  lb.addEventListener('touchend',function(e){if(x0===null)return;var dx=e.changedTouches[0].clientX-x0;if(Math.abs(dx)>40)go(dx<0?1:-1);x0=null;});\n  lb.onclick=close;\n  document.addEventListener('keydown',key);\n  show();document.body.appendChild(lb);\n}\n\n\/* \u2500\u2500 Recently viewed \u2500\u2500 *\/\nfunction sdViewGame(id,title,cover){\n  var rv=[];try{rv=JSON.parse(localStorage.getItem('sd_rv')||'[]');}catch(e){}\n  rv=rv.filter(function(x){return x.id!=id;});\n  rv.unshift({id:id,title:title,cover:cover||''});\n  localStorage.setItem('sd_rv',JSON.stringify(rv.slice(0,8)));\n}\n\n\/* \u2500\u2500 Gift modal \u2500\u2500 *\/\nfunction sdGiftModal(gid,title,price){\n  var ov=document.createElement('div');ov.className='sd-gift-overlay';\n  var mo=document.createElement('div');mo.className='sd-gift-modal';\n  mo.innerHTML='<h3>&#127873; Gift this product<\/h3>'\n    +'<p class=\"sub\">Your friend will receive an instant download link by email.<\/p>'\n    +'<label class=\"sd-label\">Friend\\'s Email *<\/label>'\n    +'<input class=\"sd-input\" id=\"sdgEmail\" type=\"email\" placeholder=\"friend@email.com\" \/>'\n    +'<label class=\"sd-label\">Your Name<\/label>'\n    +'<input class=\"sd-input\" id=\"sdgName\" type=\"text\" placeholder=\"From: your name\" \/>'\n    +'<label class=\"sd-label\">Message (optional)<\/label>'\n    +'<input class=\"sd-input\" id=\"sdgMsg\" type=\"text\" placeholder=\"Happy Birthday! &#127881;\" \/>'\n    +'<label class=\"sd-label\">Your Email (receipt) *<\/label>'\n    +'<input class=\"sd-input\" id=\"sdgBuyer\" type=\"email\" placeholder=\"your@email.com\" \/>'\n    +'<div style=\"display:flex;gap:8px\">'\n    +'<button class=\"sd-btn sd-btn-gift sd-btn-full\" id=\"sdgBtn\" onclick=\"sdSendGift('+gid+','+price+')\">&#127873; Send Gift<\/button>'\n    +'<button class=\"sd-btn sd-btn-ghost\" onclick=\"this.closest(\\'.sd-gift-overlay\\').remove()\">Cancel<\/button>'\n    +'<\/div>'\n    +'<div id=\"sdgErr\" style=\"margin-top:8px;font-size:13px;color:#f87171\"><\/div>';\n  ov.appendChild(mo);ov.addEventListener('click',function(e){if(e.target===ov)ov.remove();});\n  document.body.appendChild(ov);\n  setTimeout(function(){var e=document.getElementById('sdgEmail');if(e)e.focus();},50);\n}\nfunction sdSendGift(gid,price){\n  var to=document.getElementById('sdgEmail').value.trim();\n  var nm=document.getElementById('sdgName').value.trim();\n  var mg=document.getElementById('sdgMsg').value.trim();\n  var by=document.getElementById('sdgBuyer').value.trim();\n  var er=document.getElementById('sdgErr');\n  var bt=document.getElementById('sdgBtn');\n  if(!to||!by){if(er)er.textContent='Please fill in all required fields.';return;}\n  if(bt){bt.disabled=true;bt.textContent='Sending...';}\n  var fd=new FormData();\n  fd.append('action','sd_gift_game');fd.append('nonce',SD.nonce);\n  fd.append('game_id',gid);fd.append('gift_to',to);\n  fd.append('gift_from_name',nm);fd.append('gift_msg',mg);fd.append('buyer_email',by);\n  sdAjax(fd,function(d){\n    if(d.success){var ov=document.querySelector('.sd-gift-overlay');if(ov)ov.remove();window.location=d.data.url;}\n    else{if(er)er.textContent=(d.data&&d.data.message)||'Error';if(bt){bt.disabled=false;bt.textContent='Send Gift';}}\n  });\n}\n\n\/* \u2500\u2500 Page fade on navigation \u2500\u2500 *\/\ndocument.addEventListener('DOMContentLoaded',function(){\n  sdBadge();\n  document.addEventListener('click',function(e){\n    var a=e.target.closest('a[href]');\n    if(!a)return;\n    var h=a.getAttribute('href');\n    if(!h||h.charAt(0)==='#'||h.indexOf('javascript')===0||a.target==='_blank')return;\n    try{if(new URL(a.href).hostname!==location.hostname)return;}catch(x){return;}\n    var fe=document.querySelector('.sd-fe');\n    if(!fe)return;\n    e.preventDefault();var dest=a.href;\n    fe.classList.add('sd-leaving');\n    setTimeout(function(){location=dest;},200);\n  });\n});\n    <\/script>\n    <div class=\"sd-fe\">\n    <div class=\"sd-wrap\">\n\n      <div class=\"sd-sectionbar\"><div class=\"sd-sectionbar-inner\"><a class=\"sd-sectab\" href=\"https:\/\/gerdygamingcz.com\/?page_id=897\"><span class=\"sd-sectab-ico\">\ud83c\udfae<\/span><span>Games<\/span><\/a><a class=\"sd-sectab\" href=\"https:\/\/gerdygamingcz.com\/?page_id=1019\"><span class=\"sd-sectab-ico\">\ud83d\uddfa\ufe0f<\/span><span>Maps<\/span><\/a><a class=\"sd-sectab active\" href=\"https:\/\/gerdygamingcz.com\/?page_id=1018\"><span class=\"sd-sectab-ico\">\u2699\ufe0f<\/span><span>Engine<\/span><\/a><a class=\"sd-sectab\" href=\"https:\/\/gerdygamingcz.com\/?page_id=897&#038;sd_section=software\"><span class=\"sd-sectab-ico\">\ud83d\udcbf<\/span><span>Software<\/span><\/a><\/div><\/div>\n      <!-- Header -->\n      <div class=\"sd-page-header\" style=\"display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:14px\">\n        <div>\n          <div class=\"accent\"><\/div>\n          <h1>\u2699\ufe0f Engine<\/h1>\n          <p>Engine-ready products \u00b7 Instant download \u00b7 Demo is free<\/p>\n        <\/div>\n        <a href=\"https:\/\/gerdygamingcz.com\/?page_id=971\"\n          style=\"display:inline-flex;align-items:center;gap:8px;padding:10px 18px;background:var(--bg2);border:1px solid var(--bdr);border-radius:var(--r2);color:var(--tx2);font-size:14px;font-weight:600;text-decoration:none;flex-shrink:0\">\n          \ud83d\uded2 Cart\n          <span class=\"sd-cart-count\" style=\"background:var(--blue);color:#fff;border-radius:50%;min-width:20px;height:20px;display:none;align-items:center;justify-content:center;font-size:11px;font-weight:800;padding:0 4px\"><\/span>\n        <\/a>\n      <\/div>\n\n      \n      <!-- Filters -->\n      <div class=\"sd-filters-row\" style=\"margin-bottom:18px\">\n        <div class=\"sd-search-wrap\">\n          <svg class=\"sd-search-ico\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><path d=\"m21 21-4.35-4.35\"\/><\/svg>\n          <input class=\"sd-search\" id=\"sd-search\" type=\"search\" placeholder=\"Search products\u2026\" oninput=\"sdFilter()\" autocomplete=\"off\"\n            value=\"\" \/>\n          <button type=\"button\" class=\"sd-search-clear\" aria-label=\"Clear search\" onclick=\"document.getElementById('sd-search').value='';sdFilter()\">&#10005;<\/button>\n        <\/div>\n        <div class=\"sd-genre-scroll\">\n        <button class=\"sd-genre-btn active\" onclick=\"sdSetGenre('all',this)\">All<\/button>\n        <button class=\"sd-genre-btn\" onclick=\"sdSetGenre('free',this)\">\ud83c\udd93 Free<\/button>\n                <button class=\"sd-genre-btn\" onclick=\"sdSetGenre('action',this)\">Action<\/button>\n                <button class=\"sd-genre-btn\" onclick=\"sdSetGenre('software',this)\">Software<\/button>\n                <\/div>\n        <select class=\"sd-sort-sel\" id=\"sd-sort\" onchange=\"sdSort(this.value)\">\n          <option value=\"\">Sort: Default<\/option>\n          <option value=\"price_asc\">Price: Low \u2192 High<\/option>\n          <option value=\"price_desc\">Price: High \u2192 Low<\/option>\n          <option value=\"rating\">Top Rated<\/option>\n          <option value=\"newest\">Newest<\/option>\n        <\/select>\n      <\/div>\n\n      <!-- No games at all -->\n      \n      <!-- No search results -->\n      <div id=\"sd-no-results\" style=\"display:none\" class=\"sd-empty\">\n        <div class=\"sd-empty-ico\">\ud83d\udd0d<\/div>\n        <p>No products match your search.<\/p>\n        <button class=\"sd-btn sd-btn-ghost\" onclick=\"sdResetFilters()\">Clear Filters<\/button>\n      <\/div>\n\n      <div class=\"sd-result-count\" id=\"sd-count\"><\/div>\n\n      <!-- Games grid -->\n      <div class=\"sd-games-grid\" id=\"sd-grid\">\n                <div class=\"sd-gcard\"\n          data-genre=\"software\"\n          data-title=\"visual engine s\"\n          data-tags=\"\"\n          data-price=\"2\"\n          data-free=\"0\"\n          data-rating=\"0\"\n          data-created=\"1783319713\">\n\n          <div class=\"sd-gcard-cover\" onclick=\"location='https:\/\/gerdygamingcz.com\/?page_id=897&#038;sd_game=visual-engine-s-10'\">\n                        <img src=\"https:\/\/gerdygamingcz.com\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-05-173903.png\" alt=\"VISUAL ENGINE S\" loading=\"lazy\" decoding=\"async\" \/>\n                                                                                    <button class=\"sd-wish-btn \"\n              onclick=\"event.stopPropagation();sdToggleWish(10,this)\"\n              title=\"Add to wishlist\"\n            >\ud83e\udd0d<\/button>\n          <\/div>\n\n          <div class=\"sd-gcard-body\">\n            <div class=\"sd-gcard-meta\">\n              <span class=\"sd-genre-pill\">Software<\/span>                          <\/div>\n            <div class=\"sd-gcard-title\" onclick=\"location='https:\/\/gerdygamingcz.com\/?page_id=897&#038;sd_game=visual-engine-s-10'\">VISUAL ENGINE S<\/div>\n                        <div class=\"sd-gcard-footer\">\n              <div>\n                                <span class=\"sd-price\">$2.00<\/span>\n                                              <\/div>\n                            <button class=\"sd-add-btn\"\n                onclick=\"sdAddToCart(10,'VISUAL ENGINE S',2,'https:\/\/gerdygamingcz.com\/wp-content\/uploads\/2026\/07\/Screenshot-2026-07-05-173903.png')\"\n              >+ Cart<\/button>\n                          <\/div>\n          <\/div>\n\n        <\/div>\n                <div class=\"sd-gcard\"\n          data-genre=\"action\"\n          data-title=\"minecraft modforge studio\"\n          data-tags=\"\"\n          data-price=\"1.2\"\n          data-free=\"0\"\n          data-rating=\"0\"\n          data-created=\"1779285954\">\n\n          <div class=\"sd-gcard-cover\" onclick=\"location='https:\/\/gerdygamingcz.com\/?page_id=897&#038;sd_game=minecraft-modforge-studio-7'\">\n                        <img src=\"https:\/\/gerdygamingcz.com\/wp-content\/uploads\/2026\/05\/Snimek-obrazovky-2026-05-20-155938.png\" alt=\"minecraft ModForge Studio\" loading=\"lazy\" decoding=\"async\" \/>\n                                                                                    <button class=\"sd-wish-btn \"\n              onclick=\"event.stopPropagation();sdToggleWish(7,this)\"\n              title=\"Add to wishlist\"\n            >\ud83e\udd0d<\/button>\n          <\/div>\n\n          <div class=\"sd-gcard-body\">\n            <div class=\"sd-gcard-meta\">\n              <span class=\"sd-genre-pill\">Action<\/span>                          <\/div>\n            <div class=\"sd-gcard-title\" onclick=\"location='https:\/\/gerdygamingcz.com\/?page_id=897&#038;sd_game=minecraft-modforge-studio-7'\">minecraft ModForge Studio<\/div>\n                        <div class=\"sd-gcard-footer\">\n              <div>\n                                <span class=\"sd-price\">$1.20<\/span>\n                                              <\/div>\n                            <button class=\"sd-add-btn\"\n                onclick=\"sdAddToCart(7,'minecraft ModForge Studio',1.2,'https:\/\/gerdygamingcz.com\/wp-content\/uploads\/2026\/05\/Snimek-obrazovky-2026-05-20-155938.png')\"\n              >+ Cart<\/button>\n                          <\/div>\n          <\/div>\n\n        <\/div>\n                <div class=\"sd-gcard\"\n          data-genre=\"action\"\n          data-title=\"undertale maker(game engine)\"\n          data-tags=\"\"\n          data-price=\"6\"\n          data-free=\"0\"\n          data-rating=\"0\"\n          data-created=\"1775678027\">\n\n          <div class=\"sd-gcard-cover\" onclick=\"location='https:\/\/gerdygamingcz.com\/?page_id=897&#038;sd_game=undertale-makergame-engine-4'\">\n                        <img src=\"https:\/\/gerdygamingcz.com\/wp-content\/uploads\/2026\/04\/Snimek-obrazovky-2026-04-05-145817.png\" alt=\"undertale maker(game engine)\" loading=\"lazy\" decoding=\"async\" \/>\n                                                                                    <button class=\"sd-wish-btn \"\n              onclick=\"event.stopPropagation();sdToggleWish(4,this)\"\n              title=\"Add to wishlist\"\n            >\ud83e\udd0d<\/button>\n          <\/div>\n\n          <div class=\"sd-gcard-body\">\n            <div class=\"sd-gcard-meta\">\n              <span class=\"sd-genre-pill\">Action<\/span>                          <\/div>\n            <div class=\"sd-gcard-title\" onclick=\"location='https:\/\/gerdygamingcz.com\/?page_id=897&#038;sd_game=undertale-makergame-engine-4'\">undertale maker(game engine)<\/div>\n                        <div class=\"sd-gcard-footer\">\n              <div>\n                                <span class=\"sd-price\">$6.00<\/span>\n                                              <\/div>\n                            <button class=\"sd-add-btn\"\n                onclick=\"sdAddToCart(4,'undertale maker(game engine)',6,'https:\/\/gerdygamingcz.com\/wp-content\/uploads\/2026\/04\/Snimek-obrazovky-2026-04-05-145817.png')\"\n              >+ Cart<\/button>\n                          <\/div>\n          <\/div>\n\n        <\/div>\n              <\/div>\n\n          <\/div>\n    <\/div>\n\n    <script>\n    var sdCurGenre = 'all';\n\n    function sdSetGenre(g, el) {\n      sdCurGenre = g;\n      document.querySelectorAll('.sd-genre-btn').forEach(function(b){ b.classList.remove('active'); });\n      el.classList.add('active');\n      sdFilter();\n    }\n\n    function sdFilter() {\n      var q = document.getElementById('sd-search').value.toLowerCase().trim();\n      var n = 0;\n      var sw = document.querySelector('.sd-search-wrap');\n      if (sw) sw.classList.toggle('has-q', !!q);\n      document.querySelectorAll('#sd-grid .sd-gcard').forEach(function(c) {\n        var mg = sdCurGenre === 'all'\n                 || (sdCurGenre === 'free' ? c.dataset.free === '1' : c.dataset.genre === sdCurGenre);\n        var mq = !q || c.dataset.title.indexOf(q) !== -1 ||\n                       c.dataset.tags.indexOf(q)  !== -1 ||\n                       c.dataset.genre.indexOf(q) !== -1;\n        var show = mg && mq;\n        c.style.display = show ? '' : 'none';\n        if (show) n++;\n      });\n      var any = n > 0;\n      var ct = document.getElementById('sd-count');\n      if (ct) ct.textContent = n + (n === 1 ? ' product' : ' products');\n      var nr = document.getElementById('sd-no-results');\n      if (nr) nr.style.display = any ? 'none' : 'block';\n    }\n\n    function sdSort(by) {\n      var grid  = document.getElementById('sd-grid');\n      var cards = Array.prototype.slice.call(grid.querySelectorAll('.sd-gcard'));\n      cards.sort(function(a, b) {\n        switch(by) {\n          case 'price_asc':  return parseFloat(a.dataset.price)   - parseFloat(b.dataset.price);\n          case 'price_desc': return parseFloat(b.dataset.price)   - parseFloat(a.dataset.price);\n          case 'rating':     return parseFloat(b.dataset.rating)  - parseFloat(a.dataset.rating);\n          case 'newest':     return parseInt(b.dataset.created)   - parseInt(a.dataset.created);\n          default:           return 0;\n        }\n      });\n      cards.forEach(function(c){ grid.appendChild(c); });\n    }\n\n    function sdResetFilters() {\n      document.getElementById('sd-search').value = '';\n      sdCurGenre = 'all';\n      document.querySelectorAll('.sd-genre-btn').forEach(function(b){\n        b.classList.remove('active');\n        if (b.textContent === 'All') b.classList.add('active');\n      });\n      sdFilter();\n    }\n    if (document.getElementById('sd-grid')) sdFilter();\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1018","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/gerdygamingcz.com\/index.php?rest_route=\/wp\/v2\/pages\/1018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gerdygamingcz.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gerdygamingcz.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gerdygamingcz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gerdygamingcz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1018"}],"version-history":[{"count":0,"href":"https:\/\/gerdygamingcz.com\/index.php?rest_route=\/wp\/v2\/pages\/1018\/revisions"}],"wp:attachment":[{"href":"https:\/\/gerdygamingcz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}