{"product_id":"spy-x-family-5108b-plus-mechanical-keyboard","title":"Spy x Family 5108B Plus Mechanical Keyboard","description":"\u003c!-- =============================================\n     SPY x FAMILY 5108B Plus — Shopify Product Description\n     Source: https:\/\/en.akkogear.com\/product\/spy-x-family-5108b-plus-mechanical-keyboard\/\n     All WooCommerce \/ WPBakery wrappers removed.\n     Images use absolute Akko CDN URLs.\n     Layout fixed \u0026 centered for Shopify.\n     SVG icons: inline style forced (stroke\/fill) for Shopify theme compatibility.\n     Fonts: DM Sans (headings) + Quicksand (body) via Google Fonts\n     ============================================= --\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;0,9..40,800;1,9..40,300;1,9..40,400\u0026amp;family=Quicksand:wght@300;400;500;600;700\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003cstyle\u003e\n\/* ── Utility: visually hidden ── *\/\n.ak-sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }\n\n\/* ── Smooth scroll ── *\/\nhtml { scroll-behavior: smooth; }\n\n\/* ── Selection color ── *\/\n.akko-desc ::selection { background: rgba(111,92,174,0.18); color: #1a1a1a; }\n\n\/* ── Focus ring ── *\/\n.akko-desc button:focus-visible,\n.akko-desc a:focus-visible {\n  outline: 2px solid #6f5cae;\n  outline-offset: 3px;\n  border-radius: 4px;\n}\n\n\/* ── Transition helpers ── *\/\n.akko-desc img { transition: opacity 0.3s ease; }\n.akko-desc a { transition: color 0.2s ease, background 0.2s ease; }\n\n\/* ── Reset \/ Base ── *\/\n.akko-desc * { box-sizing: border-box; margin: 0; padding: 0; }\n.akko-desc {\n  font-family: 'Quicksand', -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n  color: #333; line-height: 1.6; font-weight: 500;\n}\n.akko-desc img { max-width: 100%; height: auto; display: block; }\n.akko-desc h1, .akko-desc h2, .akko-desc h3, .akko-desc h4, .akko-desc h5, .akko-desc h6 {\n  font-family: 'DM Sans', 'Quicksand', sans-serif;\n  line-height: 1.2; font-weight: 700;\n}\n.akko-desc p, .akko-desc span, .akko-desc div {\n  font-family: 'Quicksand', sans-serif;\n}\n\n\/* ── Divider ── *\/\n.akko-divider { max-width: 1000px; margin: 0 auto; border: none; border-top: 1px solid #f0edf9; }\n\n\/* ── Spacing helpers ── *\/\n.akko-mt-0  { margin-top: 0 !important; }\n.akko-mt-sm { margin-top: 20px !important; }\n.akko-mt-md { margin-top: 40px !important; }\n.akko-mb-sm { margin-bottom: 20px !important; }\n.akko-mb-md { margin-bottom: 40px !important; }\n.akko-px-sm { padding-left: 20px !important; padding-right: 20px !important; }\n\n\/* ── Section wrapper ── *\/\n.akko-section { padding: 40px 20px; max-width: 1000px; margin: 0 auto; }\n\n\/* ── Full-width Banner ── *\/\n.akko-banner { width: 100%; border-radius: 24px; overflow: hidden; margin: 0; }\n.akko-banner img { width: 100%; height: auto; display: block; object-fit: cover; border-radius: 24px; }\n\n\/* ── Highlight strip ── *\/\n.akko-highlight-strip {\n  max-width: 1000px; margin: 0 auto 40px; padding: 24px 32px;\n  background: linear-gradient(135deg, #f5f3fc 0%, #ede9f8 100%);\n  border-radius: 20px; display: flex; gap: 16px; flex-wrap: wrap;\n  align-items: center; justify-content: center;\n}\n.akko-highlight-strip .ak-hl-item {\n  display: flex; align-items: center; gap: 10px;\n  font-size: 14px; font-weight: 600; color: #6f5cae;\n  font-family: 'Quicksand', sans-serif;\n  padding: 8px 16px; background: #fff; border-radius: 50px;\n  box-shadow: 0 2px 8px rgba(111,92,174,0.1);\n}\n.akko-highlight-strip .ak-hl-item svg {\n  flex-shrink: 0;\n}\n@media(max-width:600px) {\n  .akko-highlight-strip { padding: 16px; gap: 10px; }\n  .akko-highlight-strip .ak-hl-item { font-size: 13px; padding: 6px 12px; }\n}\n\n\/* ── Two-Column Feature Modules ── *\/\n.akko-module {\n  max-width: 1000px; margin: 40px auto;\n  background: #fff; border-radius: 20px; overflow: hidden;\n  padding: 30px 40px; box-shadow: 0 8px 32px rgba(0,0,0,0.12);\n}\n.akko-module-grid { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 40px; }\n.akko-module-text { padding: 5px 0; }\n.akko-module-title {\n  margin-bottom: 12px; font-size: 1.6rem; font-weight: 700; color: #1a1a1a;\n  font-family: 'DM Sans', 'Quicksand', sans-serif; letter-spacing: -0.02em;\n}\n.akko-module-title.gradient {\n  background: linear-gradient(135deg, #6F5CAE 0%, #A18CD1 50%, #FBC2EB 100%);\n  -webkit-background-clip: text; -webkit-text-fill-color: transparent;\n  display: inline-block;\n}\n.akko-module-desc {\n  margin: 0; font-size: 16px; line-height: 1.75; color: #555;\n  font-family: 'Quicksand', sans-serif; font-weight: 500;\n}\n.akko-module-img img { width: 100%; height: auto; display: block; border-radius: 24px; }\n@media(max-width:900px) {\n  .akko-module { padding: 24px 28px; }\n  .akko-module-title { font-size: 1.45rem; }\n}\n@media(max-width:768px) {\n  .akko-module { padding: 20px; }\n  .akko-module-grid { grid-template-columns: 1fr; gap: 20px; }\n  .akko-module-text { text-align: center; padding-top: 10px; }\n  .akko-module-desc { font-size: 17px; }\n}\n@media(max-width:480px) {\n  .akko-module { margin: 20px auto; border-radius: 16px; }\n  .akko-module-title { font-size: 1.3rem; }\n  .akko-module-desc { font-size: 15px; }\n}\n\n\/* ── Section Header (gradient title) ── *\/\n.akko-section-header { text-align: center; padding: 20px 0 10px; }\n.akko-section-header h2 {\n  font-size: clamp(2rem, 5vw, 3rem); font-weight: 800; letter-spacing: -0.03em;\n  display: inline-block; padding: 0.1em 0;\n  font-family: 'DM Sans', 'Quicksand', sans-serif;\n  background: linear-gradient(135deg, #6F5CAE 0%, #B19CD9 100%);\n  -webkit-background-clip: text; background-clip: text;\n  -webkit-text-fill-color: transparent; color: transparent;\n  animation: fadeInUp 0.8s ease-out;\n}\n.akko-section-header h1 {\n  font-size: clamp(2rem, 5vw, 3rem); font-weight: 900; letter-spacing: -0.03em;\n  display: inline-block; padding: 0.1em 0;\n  font-family: 'DM Sans', 'Quicksand', sans-serif;\n  background: linear-gradient(135deg, #6F5CAE 0%, #B19CD9 100%);\n  -webkit-background-clip: text; background-clip: text;\n  -webkit-text-fill-color: transparent; color: transparent;\n  animation: fadeInUp 0.8s ease-out;\n}\n@keyframes fadeInUp { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }\n@media(max-width:900px) {\n  .akko-section-header h2 { font-size: 2.6rem; }\n  .akko-section-header h1 { font-size: 2.6rem; }\n}\n@media(max-width:768px) {\n  .akko-section-header h2 { font-size: 2.2rem; }\n  .akko-section-header h1 { font-size: 2.2rem; }\n}\n@media(max-width:480px) {\n  .akko-section-header h2 { font-size: 1.8rem; }\n  .akko-section-header h1 { font-size: 1.8rem; }\n  .akko-section-header { padding: 12px 0 6px; }\n}\n\n\/* ── Centered sub-text ── *\/\n.akko-center-section { max-width: 800px; margin: 20px auto 10px; padding: 0 20px; text-align: center; }\n\n\/* ── Print styles ── *\/\n@media print {\n  .akko-desc .ak-main-nav,\n  .akko-desc .ak-nav-btn,\n  .akko-desc .ak-specs2-toggle,\n  .akko-desc .akko-highlight-strip { display: none !important; }\n  .akko-desc .ak-specs2-row.ak-hidden { display: flex !important; }\n  .akko-desc .akko-module { box-shadow: none; border: 1px solid #eee; }\n  .akko-desc .akko-hs-card { box-shadow: none; border: 1px solid #eee; }\n  .akko-desc .ak-switch-container { box-shadow: none; border: 1px solid #eee; }\n}\n\n\/* ── Reduced motion ── *\/\n@media (prefers-reduced-motion: reduce) {\n  .akko-desc * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }\n  .akko-hs-card .hs-glow,\n  .akko-img-card-item .hs-glow { animation: none !important; opacity: 0.15; }\n}\n.akko-center-section .akko-center-sub {\n  font-size: 19px; color: #555; margin: 0 auto;\n  font-family: 'Quicksand', sans-serif; font-weight: 500; line-height: 1.7;\n}\n\n\/* ── Hot-Swap \/ RGB Cards ── *\/\n.akko-hs-grid {\n  display: flex; flex-wrap: wrap; justify-content: center;\n  gap: 40px; padding: 40px 20px; max-width: 1100px; margin: 0 auto;\n}\n.akko-hs-card {\n  background: #fff; border-radius: 24px; border: 1px solid rgba(0,0,0,0.05);\n  box-shadow: 0 8px 32px rgba(0,0,0,0.1); max-width: 480px; width: 100%;\n  text-align: center; padding: 32px 24px 48px; overflow: visible;\n}\n.akko-hs-card h3 {\n  font-size: 22px; font-weight: 700; color: #1a1a1a; margin: 0 0 12px; line-height: 1.2;\n  font-family: 'DM Sans', 'Quicksand', sans-serif; letter-spacing: -0.02em;\n}\n.akko-hs-card p {\n  font-size: 15px; color: #555; line-height: 1.7; margin: 0 0 24px;\n  font-family: 'Quicksand', sans-serif; font-weight: 500;\n}\n.akko-hs-card .hs-img-wrap { position: relative; width: 100%; display: block; margin: 0 auto; overflow: visible; }\n.akko-hs-card .hs-img-wrap img {\n  position: relative; z-index: 1; width: 100%; height: auto; display: block;\n  border-radius: 16px; box-shadow: 0 12px 40px rgba(0,0,0,0.1);\n}\n.akko-hs-card .hs-glow {\n  position: absolute; top: 50%; left: 50%;\n  transform: translate(-50%, -50%);\n  width: 240px; height: 240px;\n  background: conic-gradient(from 0deg, #ff0080, #ff8c00, #40e0d0, #ff0080);\n  border-radius: 50%; filter: blur(60px); opacity: 0.4;\n  animation: ak-spin-glow 12s linear infinite; z-index: 0; pointer-events: none;\n}\n@keyframes ak-spin-glow {\n  from { transform: translate(-50%, -50%) rotate(0deg); }\n  to   { transform: translate(-50%, -50%) rotate(360deg); }\n}\n@media(max-width:1024px) {\n  .akko-hs-grid { gap: 28px; padding: 30px 16px; }\n  .akko-hs-card { max-width: 440px; }\n}\n@media(max-width:960px) {\n  .akko-hs-grid { flex-direction: column; align-items: center; gap: 30px; padding: 15px 10px; }\n  .akko-hs-card { max-width: 100%; padding: 24px 15px 40px; }\n  .akko-hs-card h3 { font-size: 20px; }\n  .akko-hs-card p { font-size: 14px; }\n}\n@media(max-width:480px) {\n  .akko-hs-card { padding: 20px 12px 32px; border-radius: 18px; }\n  .akko-hs-card h3 { font-size: 18px; }\n  .akko-hs-card .hs-glow { width: 160px; height: 160px; }\n}\n\n\/* ── Image-only Cards (keycaps) ── *\/\n.akko-img-cards {\n  display: flex; flex-wrap: wrap; justify-content: center;\n  gap: 40px; padding: 10px 20px 40px; max-width: 1100px; margin: 0 auto;\n}\n.akko-img-card-item {\n  background: #fff; border-radius: 24px; border: 1px solid rgba(0,0,0,0.05);\n  box-shadow: 0 8px 32px rgba(0,0,0,0.1); max-width: 480px; width: 100%;\n  padding: 30px; overflow: visible; position: relative;\n}\n.akko-img-card-item .hs-img-wrap { position: relative; width: 100%; overflow: visible; }\n.akko-img-card-item .hs-img-wrap img {\n  position: relative; z-index: 1; width: 100%; height: auto; display: block;\n  border-radius: 16px; box-shadow: 0 12px 40px rgba(0,0,0,0.15);\n}\n.akko-img-card-item .hs-glow {\n  position: absolute; top: 50%; left: 50%;\n  transform: translate(-50%, -50%);\n  width: 240px; height: 240px;\n  background: conic-gradient(from 0deg, #ff0080, #ff8c00, #40e0d0, #ff0080);\n  border-radius: 50%; filter: blur(60px); opacity: 0.5;\n  animation: rt-img-spin 12s linear infinite; z-index: 0; pointer-events: none;\n}\n@keyframes rt-img-spin {\n  from { transform: translate(-50%, -50%) rotate(0deg); }\n  to   { transform: translate(-50%, -50%) rotate(360deg); }\n}\n@media(max-width:1024px) {\n  .akko-img-cards { gap: 28px; }\n  .akko-img-card-item { max-width: 440px; }\n}\n@media(max-width:960px) {\n  .akko-img-cards { flex-direction: column; align-items: center; gap: 24px; padding: 10px 15px 30px; }\n  .akko-img-card-item { max-width: 100%; padding: 20px; }\n}\n@media(max-width:480px) {\n  .akko-img-card-item { padding: 16px; border-radius: 18px; }\n  .akko-img-card-item .hs-glow { width: 160px; height: 160px; }\n}\n\n\/* ── Switch Spec Card ── *\/\n.ak-switch-wrap { padding: 40px 20px; }\n.ak-switch-container {\n  max-width: 860px; margin: 0 auto; padding: 30px;\n  border-radius: 24px; background: #fff; box-shadow: 0 4px 12px rgba(111,92,174,0.08);\n}\n.ak-switch-badge {\n  display: inline-block; background: #6f5cae; color: #fff;\n  padding: 8px 20px; border-radius: 24px; font-size: 13px; font-weight: 700; margin-bottom: 16px;\n  font-family: 'Quicksand', sans-serif; letter-spacing: 0.05em; text-transform: uppercase;\n}\n.ak-switch-title {\n  font-size: 24px; font-weight: 700; color: #1a1a1a; margin: 0 0 24px;\n  font-family: 'DM Sans', 'Quicksand', sans-serif; letter-spacing: -0.02em;\n}\n.ak-switch-body { display: flex; gap: 32px; align-items: center; }\n.ak-switch-left { flex: 1; display: flex; flex-direction: column; gap: 0; }\n.ak-switch-spec-item {\n  display: flex; justify-content: space-between; align-items: center;\n  padding: 12px 0; border-bottom: 1px solid #f0edf9;\n}\n.ak-switch-spec-item:last-child { border-bottom: none; }\n.ak-switch-spec-item span:first-child {\n  color: #6b7280; font-weight: 600; text-transform: uppercase; font-size: 12px; letter-spacing: .08em;\n  font-family: 'Quicksand', sans-serif;\n}\n.ak-switch-spec-item span:last-child {\n  color: #6f5cae; font-weight: 700; font-size: 15px;\n  font-family: 'Quicksand', sans-serif;\n}\n.ak-switch-right {\n  flex: 0 0 300px; height: 300px; border-radius: 20px;\n  overflow: hidden; background: #f5f3fc;\n}\n.ak-switch-right img { width: 100%; height: 100%; object-fit: contain; display: block; }\n@media(max-width:900px) {\n  .ak-switch-right { flex: 0 0 240px; height: 240px; }\n  .ak-switch-container { padding: 24px; }\n}\n@media(max-width:768px) {\n  .ak-switch-body { flex-direction: column-reverse; }\n  .ak-switch-right { flex: 0 0 auto; width: 100%; height: auto; aspect-ratio: 1\/1; }\n}\n@media(max-width:600px) {\n  .ak-switch-wrap { padding: 20px 0; }\n  .ak-switch-container { padding: 20px; }\n  .ak-switch-title { font-size: 20px; margin-bottom: 16px; }\n}\n@media(max-width:480px) {\n  .ak-switch-container { border-radius: 18px; }\n  .ak-switch-badge { font-size: 12px; padding: 6px 14px; }\n  .ak-switch-spec-item span:first-child { font-size: 11px; }\n  .ak-switch-spec-item span:last-child { font-size: 14px; }\n}\n\n\/* ── Specs Table ── *\/\n.ak-specs2-wrap { padding: 40px 20px; max-width: 1000px; margin: 0 auto; }\n.ak-specs2-label {\n  font-size: 16px; font-weight: 700; color: #6f5cae; margin: 0 0 8px;\n  font-family: 'Quicksand', sans-serif; letter-spacing: 0.04em; text-transform: uppercase;\n}\n.ak-specs2-header h2 {\n  font-size: 38px; font-weight: 800; color: #111; margin: 0 0 16px;\n  font-family: 'DM Sans', 'Quicksand', sans-serif; letter-spacing: -0.03em;\n}\n.ak-specs2-header p {\n  font-size: 15px; color: #555; margin: 0 0 20px; max-width: 320px; line-height: 1.7;\n  font-family: 'Quicksand', sans-serif; font-weight: 500;\n}\n.ak-specs2-btn {\n  display: inline-block; background: #6f5cae; color: #fff;\n  font-size: 14px; font-weight: 700; padding: 12px 28px; border-radius: 50px;\n  text-decoration: none; cursor: pointer; border: none;\n  font-family: 'Quicksand', sans-serif; letter-spacing: 0.03em;\n  box-shadow: 0 6px 15px rgba(111,92,174,0.3); transition: 0.25s;\n}\n.ak-specs2-btn:visited { color: #fff; }\n.ak-specs2-btn:hover { color: #fff; background: #5D4D9E; box-shadow: 0 8px 20px rgba(111,92,174,0.4); transform: translateY(-1px); }\n.ak-specs2-body { display: grid; grid-template-columns: 280px 1fr; gap: 60px; align-items: start; margin-top: 32px; }\n.ak-specs2-list { display: flex; flex-direction: column; }\n.ak-specs2-row {\n  display: flex; gap: 40px; padding: 18px 0;\n  border-bottom: 1px solid #e8e8e8; align-items: flex-start;\n}\n.ak-specs2-row:first-child { border-top: 1px solid #e8e8e8; }\n.ak-specs2-row .spec-label {\n  font-size: 14px; font-weight: 700; color: #111; min-width: 160px; flex-shrink: 0;\n  font-family: 'DM Sans', 'Quicksand', sans-serif;\n}\n.ak-specs2-row .spec-value {\n  font-size: 14px; color: #888; line-height: 1.6;\n  font-family: 'Quicksand', sans-serif; font-weight: 500;\n}\n.ak-specs2-row.ak-hidden { display: none; }\n.ak-specs2-toggle { display: flex; justify-content: center; margin-top: 4px; }\n.ak-specs2-toggle button {\n  background: none; border: none; font-size: 15px; font-weight: 700; color: #111;\n  cursor: pointer; display: flex; align-items: center; gap: 8px; padding: 10px 16px;\n  font-family: 'Quicksand', sans-serif;\n}\n.ak-toggle-icon {\n  width: 28px; height: 28px; border-radius: 50%; background: #f0f0f0;\n  display: flex; align-items: center; justify-content: center;\n  font-size: 13px; transition: transform .3s;\n}\n.ak-specs2-toggle button.expanded .ak-toggle-icon { transform: rotate(180deg); }\n@media(max-width:900px) {\n  .ak-specs2-body { grid-template-columns: 1fr; gap: 20px; }\n  .ak-specs2-header h2 { font-size: 34px; }\n}\n@media(max-width:768px) {\n  .ak-specs2-body { grid-template-columns: 1fr; gap: 24px; }\n  .ak-specs2-header h2 { font-size: 32px; }\n  .ak-specs2-header p { max-width: none; }\n  .ak-specs2-row .spec-label { min-width: 130px; }\n}\n@media(max-width:600px) {\n  .ak-specs2-wrap { padding: 24px 12px; }\n  .ak-specs2-label { font-size: 14px; }\n  .ak-specs2-header h2 { font-size: 28px; }\n  .ak-specs2-header p { font-size: 14px; }\n  .ak-specs2-btn { font-size: 13px; padding: 10px 22px; }\n}\n@media(max-width:480px) {\n  .ak-specs2-wrap { padding: 20px 0; }\n  .ak-specs2-row { gap: 16px; flex-direction: column; }\n  .ak-specs2-row .spec-label { min-width: unset; }\n  .ak-specs2-row .spec-value { font-size: 13px; }\n}\n\n\/* ── Product Gallery ── *\/\n.ak-product-gallery { max-width: 1000px; margin: 20px auto; padding: 0 20px; }\n.ak-main-viewport {\n  border-radius: 24px; overflow: hidden;\n  box-shadow: 0 10px 30px rgba(0,0,0,0.05); margin-bottom: 20px;\n  touch-action: pan-y; background: #fff; position: relative;\n}\n.ak-main-track {\n  display: flex;\n  transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);\n  width: 100%;\n}\n.ak-main-track img {\n  width: 100%; flex: 0 0 100%;\n  display: block; object-fit: contain;\n  opacity: 0.4; transition: opacity 0.6s ease;\n}\n.ak-main-track img.active-slide { opacity: 1; }\n.ak-main-nav {\n  position: absolute; top: 50%; transform: translateY(-50%);\n  width: 44px; height: 44px; border-radius: 50%;\n  background: rgba(255,255,255,0.7); backdrop-filter: blur(4px);\n  border: none; cursor: pointer; z-index: 15;\n  display: flex; align-items: center; justify-content: center;\n  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n  font-size: 18px; color: #333;\n  box-shadow: 0 4px 10px rgba(0,0,0,0.1);\n}\n.ak-main-nav:hover {\n  background: #6f5cae; color: #fff;\n  transform: translateY(-50%) scale(1.1);\n  box-shadow: 0 6px 15px rgba(111,92,174,0.3);\n}\n.ak-main-prev { left: 15px; }\n.ak-main-next { right: 15px; }\n.ak-carousel-wrapper { position: relative; padding: 0 40px; }\n.ak-carousel-overflow { overflow: hidden; padding: 10px 0; margin-top: -10px; }\n.ak-carousel-track {\n  display: flex;\n  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);\n  gap: 10px;\n}\n.ak-thumb-item {\n  flex: 0 0 calc(25% - 8px); aspect-ratio: 1\/1; border-radius: 10px;\n  overflow: hidden; cursor: pointer; border: 2px solid transparent;\n  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n  box-sizing: border-box; transform: scale(0.95); opacity: 0.6;\n}\n.ak-thumb-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }\n.ak-thumb-item.active {\n  border-color: #6f5cae; transform: scale(1); opacity: 1;\n  box-shadow: 0 4px 12px rgba(111,92,174,0.2);\n}\n.ak-carousel-track .ak-thumb-item:hover {\n  border-color: #6f5cae !important;\n  transform: translateY(-5px) scale(1); opacity: 1;\n  box-shadow: 0 6px 16px rgba(111,92,174,0.25);\n}\n.ak-thumb-item:hover img { transform: scale(1.05); }\n.ak-nav-btn {\n  position: absolute; top: 50%; transform: translateY(-50%);\n  width: 32px; height: 32px; border-radius: 50%; background: #fff;\n  border: 1px solid #ddd; cursor: pointer; z-index: 10;\n  color: #333; font-weight: bold; display: flex; align-items: center; justify-content: center;\n  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ak-nav-btn:hover {\n  background: #6f5cae; color: #fff; border-color: #6f5cae;\n  transform: translateY(-50%) scale(1.15);\n}\n.ak-prev { left: 0; }\n.ak-next { right: 0; }\n@media(max-width:768px) {\n  .ak-product-gallery { padding: 0 12px; }\n  .ak-carousel-wrapper { padding: 0 36px; }\n  .ak-main-nav { width: 36px; height: 36px; font-size: 15px; }\n}\n@media(max-width:480px) {\n  .ak-thumb-item { flex: 0 0 calc(33.3% - 7px); }\n  .ak-main-nav { display: none; }\n  .ak-product-gallery { padding: 0 10px; }\n  .ak-carousel-wrapper { padding: 0 30px; }\n  .ak-nav-btn { width: 28px; height: 28px; font-size: 12px; }\n  .ak-main-viewport { border-radius: 16px; }\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"akko-desc\"\u003e\n\n  \u003c!-- ① Top Banner (full-width hero) --\u003e\n  \u003cdiv class=\"akko-banner\"\u003e\n    \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-Q-2.avif\" alt=\"SPY x FAMILY 5108B Plus Mechanical Keyboard\"\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ① Feature Highlights Strip --\u003e\n  \u003cdiv class=\"akko-highlight-strip\"\u003e\n    \u003cdiv class=\"ak-hl-item\"\u003e\n      \u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" style=\"stroke:#6f5cae;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;\"\u003e\n        \u003cpath style=\"stroke:#6f5cae;\" d=\"M5 12.55a11 11 0 0 1 14.08 0\"\u003e\u003c\/path\u003e\n        \u003cpath style=\"stroke:#6f5cae;\" d=\"M1.42 9a16 16 0 0 1 21.16 0\"\u003e\u003c\/path\u003e\n        \u003cpath style=\"stroke:#6f5cae;\" d=\"M8.53 16.11a6 6 0 0 1 6.95 0\"\u003e\u003c\/path\u003e\n        \u003ccircle cx=\"12\" cy=\"20\" r=\"1\" style=\"fill:#6f5cae;stroke:#6f5cae;\"\u003e\u003c\/circle\u003e\n      \u003c\/svg\u003e\n      BT 5.0 · 2.4GHz · Wired\n    \u003c\/div\u003e\n    \u003cdiv class=\"ak-hl-item\"\u003e\n      \u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" style=\"stroke:#6f5cae;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;\"\u003e\n        \u003cpolyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" style=\"stroke:#6f5cae;\"\u003e\u003c\/polyline\u003e\n        \u003cpolyline points=\"17 6 23 6 23 12\" style=\"stroke:#6f5cae;\"\u003e\u003c\/polyline\u003e\n      \u003c\/svg\u003e\n      Hot-Swappable\n    \u003c\/div\u003e\n    \u003cdiv class=\"ak-hl-item\"\u003e\n      \u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" style=\"stroke:#6f5cae;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;\"\u003e\n        \u003ccircle cx=\"12\" cy=\"12\" r=\"5\" style=\"stroke:#6f5cae;\"\u003e\u003c\/circle\u003e\n        \u003cline x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" style=\"stroke:#6f5cae;\"\u003e\u003c\/line\u003e\n      \u003c\/svg\u003e\n      RGB Backlit\n    \u003c\/div\u003e\n    \u003cdiv class=\"ak-hl-item\"\u003e\n      \u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" style=\"stroke:#6f5cae;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;\"\u003e\n        \u003crect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" style=\"stroke:#6f5cae;\"\u003e\u003c\/rect\u003e\n        \u003cpath d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\" style=\"stroke:#6f5cae;\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n      PBT Dye-Sub Keycaps\n    \u003c\/div\u003e\n    \u003cdiv class=\"ak-hl-item\"\u003e\n      \u003csvg width=\"18\" height=\"18\" viewbox=\"0 0 24 24\" fill=\"none\" style=\"stroke:#6f5cae;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;\"\u003e\n        \u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" style=\"stroke:#6f5cae;\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n      3-Level Tilt\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ② Multi-Modes — text left, image right --\u003e\n  \u003cdiv class=\"akko-module\"\u003e\n    \u003cdiv class=\"akko-module-grid\"\u003e\n      \u003cdiv class=\"akko-module-text\"\u003e\n        \u003ch2 class=\"akko-module-title\"\u003eMulti-Modes\u003c\/h2\u003e\n        \u003cp class=\"akko-module-desc\"\u003e\n          Spy x Family 5108B Plus supports BT 5.0, multi-host 2.4GHz (with receiver), and wired Type-C connection for seamless device switching.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"akko-module-img\"\u003e\n        \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-SM.avif\" alt=\"Spy x Family 5108B Plus Multi-Modes\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ③ Typing Angle — image left, text right --\u003e\n  \u003cdiv class=\"akko-module\"\u003e\n    \u003cdiv class=\"akko-module-grid\"\u003e\n      \u003cdiv class=\"akko-module-img\"\u003e\n        \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-SZGD.avif\" alt=\"Typing Angle Adjustable Keyboard\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"akko-module-text\"\u003e\n        \u003ch2 class=\"akko-module-title\"\u003eTyping Angle Matters.\u003c\/h2\u003e\n        \u003cp class=\"akko-module-desc\"\u003e\n          Not everyone types the same way. That's why we've equipped this keyboard with 3-level height customization — three degrees of freedom to optimize your setup.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ④ RGB + Hotswap Cards (two-card row) --\u003e\n  \u003cdiv class=\"akko-hs-grid\"\u003e\n    \u003cdiv class=\"akko-hs-card\"\u003e\n      \u003ch3\u003eProgrammable RGB Lighting\u003c\/h3\u003e\n      \u003cp\u003eSpy x Family 5108B Plus is equipped with vibrant RGB back strips, which can be customized through the Akko Cloud Driver.\u003c\/p\u003e\n      \u003cdiv class=\"hs-img-wrap\"\u003e\n        \u003cdiv class=\"hs-glow\"\u003e\u003c\/div\u003e\n        \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-RGB.avif\" alt=\"Programmable RGB Lighting\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"akko-hs-card\"\u003e\n      \u003ch3\u003eHotswap-Socket\u003c\/h3\u003e\n      \u003cp\u003eHot-swappable switches let you change switches easily without soldering, making it simple to fine-tune your typing feel.\u003c\/p\u003e\n      \u003cdiv class=\"hs-img-wrap\"\u003e\n        \u003cdiv class=\"hs-glow\"\u003e\u003c\/div\u003e\n        \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-Hotswap-Socket.avif\" alt=\"Hotswap Socket\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ⑤ PBT Dye-Sub Keycaps Header --\u003e\n  \u003cdiv class=\"akko-section-header\"\u003e\n    \u003ch1\u003ePBT Dye-Sub Keycaps\u003c\/h1\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ⑥ Keycaps sub-description --\u003e\n  \u003cdiv class=\"akko-center-section\"\u003e\n    \u003cp class=\"akko-center-sub\"\u003eMOA Profile Keycaps. Made through dye-sub process with durable PBT materials that legends will not fade easily.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ⑦ Keycap image cards (two images side by side) --\u003e\n  \u003cdiv class=\"akko-img-cards\"\u003e\n    \u003cdiv class=\"akko-img-card-item\"\u003e\n      \u003cdiv class=\"hs-img-wrap\"\u003e\n        \u003cdiv class=\"hs-glow\"\u003e\u003c\/div\u003e\n        \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-Keycaps-1.avif\" alt=\"SPY x FAMILY 5108B Plus Keycaps\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"akko-img-card-item\"\u003e\n      \u003cdiv class=\"hs-img-wrap\"\u003e\n        \u003cdiv class=\"hs-glow\"\u003e\u003c\/div\u003e\n        \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-Keycaps-2.avif\" alt=\"SPY x FAMILY 5108B Plus Keycaps Detail\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ⑧ Bottom Banner --\u003e\n  \u003cdiv class=\"akko-banner\"\u003e\n    \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/01\/Spy-x-Family-5108B-Plus-XQ-CC.avif\" alt=\"SPY x FAMILY 5108B Plus\"\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ⑨ Switch Spec Card --\u003e\n  \u003cdiv class=\"ak-switch-wrap\"\u003e\n    \u003cdiv class=\"ak-switch-container\"\u003e\n      \u003cdiv class=\"ak-switch-badge\"\u003eLinear Switch\u003c\/div\u003e\n      \u003cdiv class=\"ak-switch-title\"\u003eAkko V3 Piano Pro Switch\u003c\/div\u003e\n      \u003cdiv class=\"ak-switch-body\"\u003e\n        \u003cdiv class=\"ak-switch-left\"\u003e\n          \u003cdiv class=\"ak-switch-spec-item\"\u003e\n\u003cspan\u003eType\u003c\/span\u003e\u003cspan\u003eLinear\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-switch-spec-item\"\u003e\n\u003cspan\u003eOperating Force\u003c\/span\u003e\u003cspan\u003e45 ± 5gf\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-switch-spec-item\"\u003e\n\u003cspan\u003eTotal Travel\u003c\/span\u003e\u003cspan\u003e3.1 mm\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-switch-spec-item\"\u003e\n\u003cspan\u003ePre-Travel\u003c\/span\u003e\u003cspan\u003e1.9 ± 0.5 mm\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-switch-spec-item\"\u003e\n\u003cspan\u003eTactile Travel\u003c\/span\u003e\u003cspan\u003eN\/A\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-switch-spec-item\"\u003e\n\u003cspan\u003eTactile Force\u003c\/span\u003e\u003cspan\u003eN\/A\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ak-switch-right\"\u003e\n          \u003cimg src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2023\/07\/Akko-V3-Piano-Pro-Switch-DGZ-1.png\" alt=\"Akko V3 Piano Pro Switch\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ⑩ Specs Table --\u003e\n  \u003cdiv class=\"ak-specs2-wrap\"\u003e\n    \u003cdiv class=\"ak-specs2-body\"\u003e\n      \u003cdiv class=\"ak-specs2-header\"\u003e\n        \u003cp class=\"ak-specs2-label\"\u003eSPY x FAMILY 5108B Plus\u003c\/p\u003e\n        \u003ch2\u003eSpecs\u003c\/h2\u003e\n        \u003cp\u003eLearn more about the 5108B Plus including hotkeys, system commands, backlight settings, and more in the user manual.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003cdiv class=\"ak-specs2-list\"\u003e\n          \u003cdiv class=\"ak-specs2-row\"\u003e\n\u003cspan class=\"spec-label\"\u003eLayout:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003e100% Full-size\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row\"\u003e\n\u003cspan class=\"spec-label\"\u003eConnection:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eBluetooth 5.0 \/ 2.4GHz \/ USB Type-C\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row\"\u003e\n\u003cspan class=\"spec-label\"\u003eBacklight:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eRGB Backlit\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row\"\u003e\n\u003cspan class=\"spec-label\"\u003eHot Swappable:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003e3-Pin \/ 5-Pin Support\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eSwitch:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eAkko V3 Piano Pro (Linear)\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eKeycaps:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003ePBT Dye-Sub, MOA Profile\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eKeycap Material:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003ePBT\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eTyping Angle:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003e3-Level Height Adjustable\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003ePolling Rate:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003e1000Hz (wired), 125Hz (Bluetooth)\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eBattery:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003e4000mAh\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eInterface:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eUSB Type-C\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eMacro:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eAkko Cloud Driver\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eKeycap Profile:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eMOA\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eLegends Printing:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eDye-Sublimation\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eCase Material:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eABS\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eOperating Systems:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eWindows \/ macOS \/ iOS \/ Android\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003ePolling Rate:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003e1000Hz (wired), 125Hz (Bluetooth)\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eBattery:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003e4000mAh\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eInterface:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eUSB Type-C\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eMacro:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eAkko Cloud Driver\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eKeycap Profile:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eMOA\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eLegends Printing:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eDye-Sublimation\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eCase Material:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eABS\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003eOperating Systems:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eWindows \/ macOS \/ iOS \/ Android\u003c\/span\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ak-specs2-row ak-hidden\"\u003e\n\u003cspan class=\"spec-label\"\u003ePackage List:\u003c\/span\u003e\u003cspan class=\"spec-value\"\u003eKeyboard×1, Manual×1, Cable×1, Receiver×1, Keycap Puller×1, Switch Puller×1\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ak-specs2-toggle\"\u003e\n          \u003cbutton id=\"ak-spy-toggle-btn\" onclick=\"\n            var btn = document.getElementById('ak-spy-toggle-btn');\n            var label = document.getElementById('ak-spy-toggle-label');\n            var expanded = btn.classList.contains('expanded');\n            if(!expanded) {\n              document.querySelectorAll('.ak-specs2-row.ak-hidden').forEach(function(r){ r.classList.remove('ak-hidden'); r.classList.add('ak-visible-extra'); });\n              label.textContent = 'View less';\n              btn.classList.add('expanded');\n            } else {\n              document.querySelectorAll('.ak-specs2-row.ak-visible-extra').forEach(function(r){ r.classList.add('ak-hidden'); r.classList.remove('ak-visible-extra'); });\n              label.textContent = 'View all';\n              btn.classList.remove('expanded');\n            }\n          \"\u003e\n            \u003cspan id=\"ak-spy-toggle-label\"\u003eView all\u003c\/span\u003e\n            \u003cspan class=\"ak-toggle-icon\"\u003e⌄\u003c\/span\u003e\n          \u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- ⑪ Product Gallery with thumbnails --\u003e\n  \u003cdiv class=\"ak-product-gallery\"\u003e\n    \u003cdiv class=\"ak-main-viewport\" id=\"akMainArea\"\u003e\n      \u003cbutton class=\"ak-main-nav ak-main-prev\" onclick=\"mainJump(-1)\"\u003e❮\u003c\/button\u003e\n      \u003cbutton class=\"ak-main-nav ak-main-next\" onclick=\"mainJump(1)\"\u003e❯\u003c\/button\u003e\n      \u003cdiv class=\"ak-main-track\" id=\"akMainTrack\"\u003e\n        \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq1.avif\" class=\"active-slide\" alt=\"SPY x FAMILY 5108B Plus View 1\"\u003e\n        \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq2.avif\" alt=\"SPY x FAMILY 5108B Plus View 2\"\u003e\n        \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq3.avif\" alt=\"SPY x FAMILY 5108B Plus View 3\"\u003e\n        \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq4.avif\" alt=\"SPY x FAMILY 5108B Plus View 4\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ak-carousel-wrapper\"\u003e\n      \u003cbutton class=\"ak-nav-btn ak-prev\" onclick=\"moveThumb(-1)\"\u003e❮\u003c\/button\u003e\n      \u003cbutton class=\"ak-nav-btn ak-next\" onclick=\"moveThumb(1)\"\u003e❯\u003c\/button\u003e\n      \u003cdiv class=\"ak-carousel-overflow\"\u003e\n        \u003cdiv class=\"ak-carousel-track\" id=\"akThumbTrack\"\u003e\n          \u003cdiv class=\"ak-thumb-item active\" onclick=\"jumpTo(0)\"\u003e\n            \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq1.avif\" alt=\"Thumbnail 1\"\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"ak-thumb-item\" onclick=\"jumpTo(1)\"\u003e\n            \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq2.avif\" alt=\"Thumbnail 2\"\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"ak-thumb-item\" onclick=\"jumpTo(2)\"\u003e\n            \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq3.avif\" alt=\"Thumbnail 3\"\u003e\n          \u003c\/div\u003e\n          \u003cdiv class=\"ak-thumb-item\" onclick=\"jumpTo(3)\"\u003e\n            \u003cimg decoding=\"async\" src=\"https:\/\/en.akkogear.com\/wp-content\/uploads\/2026\/02\/spy-x-family-5108b-plus-xq4.avif\" alt=\"Thumbnail 4\"\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003c!-- ── Gallery JS ── --\u003e\n\u003cscript\u003e\n(function() {\n  var mTrack = document.getElementById('akMainTrack');\n  var tTrack = document.getElementById('akThumbTrack');\n  var mArea  = document.getElementById('akMainArea');\n  if (!mTrack || !tTrack) return;\n\n  var currentIdx = 0, thumbScrollIdx = 0, startX = 0;\n\n  function mainJump(direction) {\n    var total = tTrack.children.length;\n    var nextIdx = currentIdx + direction;\n    if (nextIdx \u003c 0) nextIdx = total - 1;\n    if (nextIdx \u003e= total) nextIdx = 0;\n    jumpTo(nextIdx);\n  }\n\n  function jumpTo(n) {\n    var total = tTrack.children.length;\n    if (n \u003c 0 || n \u003e= total) return;\n    currentIdx = n;\n    mTrack.style.transform = 'translateX(-' + (n * 100) + '%)';\n    var mainImgs = mTrack.querySelectorAll('img');\n    mainImgs.forEach(function(img, i) {\n      img.classList.toggle('active-slide', i === n);\n    });\n    var thumbs = document.querySelectorAll('.ak-thumb-item');\n    thumbs.forEach(function(t, i) { t.classList.toggle('active', i === n); });\n    autoScrollThumb(n);\n  }\n\n  function moveThumb(d) {\n    var visible = window.innerWidth \u003c= 480 ? 3 : 4;\n    var max = Math.max(0, tTrack.children.length - visible);\n    thumbScrollIdx = Math.min(Math.max(thumbScrollIdx + d, 0), max);\n    tTrack.style.transform = 'translateX(-' + (thumbScrollIdx * (tTrack.children[0].offsetWidth + 10)) + 'px)';\n  }\n\n  function autoScrollThumb(n) {\n    var visible = window.innerWidth \u003c= 480 ? 3 : 4;\n    if (n \u003e= thumbScrollIdx + visible) { thumbScrollIdx = n - visible + 1; }\n    else if (n \u003c thumbScrollIdx) { thumbScrollIdx = n; }\n    var max = Math.max(0, tTrack.children.length - visible);\n    thumbScrollIdx = Math.min(Math.max(thumbScrollIdx, 0), max);\n    tTrack.style.transform = 'translateX(-' + (thumbScrollIdx * (tTrack.children[0].offsetWidth + 10)) + 'px)';\n  }\n\n  mArea.addEventListener('touchstart', function(e) { startX = e.touches[0].clientX; });\n  mArea.addEventListener('touchend', function(e) {\n    var diff = startX - e.changedTouches[0].clientX;\n    if (Math.abs(diff) \u003e 50) jumpTo(currentIdx + (diff \u003e 0 ? 1 : -1));\n  });\n\n  window.mainJump = mainJump;\n  window.jumpTo   = jumpTo;\n  window.moveThumb = moveThumb;\n})();\n\u003c\/script\u003e\n","brand":"KeyArtisan","offers":[{"title":"Akko V3 Piano Pro","offer_id":48729038389405,"sku":null,"price":109.9,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0684\/6962\/0893\/files\/Spy-x-Family-5108B-Plus-1.png?v=1785486151","url":"https:\/\/keyartisan.net\/products\/spy-x-family-5108b-plus-mechanical-keyboard","provider":"KeyArtisan","version":"1.0","type":"link"}