{"product_id":"powerspot™-powertag-cable-keychain","title":"PowerSpot™ PowerTag (Cable Keychain)","description":"\u003c!-- =========================================================\n     POWERSPOT™ POWERTAG — Cable Keychain\n     Mobile-first product section. Same background\/typography\n     system as the WristCharge and CableVault Pro pages.\n========================================================== --\u003e\n\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@500;600;700\u0026amp;family=Inter:wght@400;500;600;700\u0026amp;family=JetBrains+Mono:wght@400;500;700\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\n\u003csection id=\"ps-powertag-section\"\u003e\n\n  \u003cdiv class=\"ps-pt-background\" aria-hidden=\"true\"\u003e\n    \u003cdiv class=\"ps-pt-grid\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"ps-pt-orb ps-pt-orb-one\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"ps-pt-orb ps-pt-orb-two\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"ps-pt-container\"\u003e\n\n    \u003c!-- HERO --\u003e\n    \u003cdiv class=\"ps-pt-hero ps-pt-reveal\"\u003e\n\n      \u003cdiv class=\"ps-pt-logo\"\u003e\n        \u003csvg class=\"ps-pt-logo-symbol\" viewbox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n          \u003cpath d=\"M13 2 L4 14 H11 L9 22 L20 8 H12 Z\" fill=\"url(#psPtLogoGrad)\"\u003e\u003c\/path\u003e\n          \u003cdefs\u003e\n            \u003clineargradient id=\"psPtLogoGrad\" x1=\"4\" y1=\"2\" x2=\"20\" y2=\"22\" gradientunits=\"userSpaceOnUse\"\u003e\n              \u003cstop offset=\"0%\" stop-color=\"#2AA8E0\"\u003e\u003c\/stop\u003e\n              \u003cstop offset=\"50%\" stop-color=\"#7B5CF0\"\u003e\u003c\/stop\u003e\n              \u003cstop offset=\"100%\" stop-color=\"#E619C9\"\u003e\u003c\/stop\u003e\n            \u003c\/lineargradient\u003e\n          \u003c\/defs\u003e\n        \u003c\/svg\u003e\n        \u003cspan class=\"ps-pt-logo-text\"\u003epowerspot\u003cspan\u003e™\u003c\/span\u003e\u003c\/span\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ps-pt-eyebrow\"\u003e\n        \u003cspan class=\"ps-pt-pulse\"\u003e\u003c\/span\u003e\n        Never be caught without a charge again\n      \u003c\/div\u003e\n\n      \u003ch1 class=\"ps-pt-main-title\"\u003e\n        PowerSpot™\n        \u003cspan class=\"ps-pt-gradient-text\"\u003ePowerTag\u003c\/span\u003e\n      \u003c\/h1\u003e\n\n      \u003cp class=\"ps-pt-tagline\"\u003eSmall Cable. Big Power. Always Ready.\u003c\/p\u003e\n\n      \u003cp class=\"ps-pt-hero-description\"\u003e\n        The charging cable that lives on your keys. One cable, four\n        connections, zero excuses — rushing to a meeting, hitting the gym\n        or surviving load shedding, you're always covered.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"ps-pt-buttons\"\u003e\n        \u003ca href=\"#ps-pt-compat\" class=\"ps-pt-button ps-pt-primary-button\"\u003e\n          \u003cspan\u003eSee Compatibility\u003c\/span\u003e\n          \u003cspan aria-hidden=\"true\"\u003e↓\u003c\/span\u003e\n        \u003c\/a\u003e\n        \u003ca href=\"#ps-pt-details\" class=\"ps-pt-button ps-pt-secondary-button\"\u003e\n          Product Details\n        \u003c\/a\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- KEYCHAIN VISUAL --\u003e\n    \u003cdiv class=\"ps-pt-showcase ps-pt-reveal\"\u003e\n      \u003cdiv class=\"ps-pt-showcase-glow\"\u003e\u003c\/div\u003e\n\n      \u003cdiv class=\"ps-pt-showcase-badge ps-pt-badge-one\"\u003e\n        \u003cspan\u003e⚡\u003c\/span\u003e Fast charging\n      \u003c\/div\u003e\n\n      \u003csvg class=\"ps-pt-keychain-svg\" viewbox=\"0 0 220 150\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n        \u003cdefs\u003e\n          \u003clineargradient id=\"psPtRingGrad\" x1=\"60\" y1=\"10\" x2=\"160\" y2=\"140\" gradientunits=\"userSpaceOnUse\"\u003e\n            \u003cstop offset=\"0%\" stop-color=\"#2AA8E0\"\u003e\u003c\/stop\u003e\n            \u003cstop offset=\"50%\" stop-color=\"#7B5CF0\"\u003e\u003c\/stop\u003e\n            \u003cstop offset=\"100%\" stop-color=\"#E619C9\"\u003e\u003c\/stop\u003e\n          \u003c\/lineargradient\u003e\n        \u003c\/defs\u003e\n\n        \u003cg class=\"ps-pt-swing\"\u003e\n          \u003ccircle cx=\"110\" cy=\"75\" r=\"60\" fill=\"none\" stroke=\"url(#psPtRingGrad)\" stroke-width=\"9\"\u003e\u003c\/circle\u003e\n          \u003ccircle class=\"ps-pt-ring-pulse\" r=\"6\" fill=\"#ffffff\"\u003e\u003c\/circle\u003e\n        \u003c\/g\u003e\n      \u003c\/svg\u003e\n\n      \u003cdiv class=\"ps-pt-showcase-badge ps-pt-badge-two\"\u003e\n        \u003cspan\u003e🔑\u003c\/span\u003e Always on you\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- COMPATIBILITY --\u003e\n    \u003cdiv id=\"ps-pt-compat\" class=\"ps-pt-section\"\u003e\n      \u003cdiv class=\"ps-pt-section-heading ps-pt-reveal\"\u003e\n        \u003cp class=\"ps-pt-section-label\"\u003e4-in-1 compatibility\u003c\/p\u003e\n        \u003ch2 class=\"ps-pt-heading\"\u003eOne cable. \u003cspan class=\"ps-pt-gradient-text\"\u003eEvery device.\u003c\/span\u003e\n\u003c\/h2\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ps-pt-feature-grid\"\u003e\n        \u003carticle class=\"ps-pt-feature-card ps-pt-reveal\"\u003e\n          \u003cdiv class=\"ps-pt-feature-icon\"\u003e📱\u003c\/div\u003e\n          \u003ch3\u003eiPhone \u0026amp; MacBook\u003c\/h3\u003e\n          \u003cp\u003eCompatible with iPhone 14 \/ 15 \/ 16 \/ 17 \/ X and MacBook devices.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"ps-pt-feature-card ps-pt-reveal\"\u003e\n          \u003cdiv class=\"ps-pt-feature-icon\"\u003e🤖\u003c\/div\u003e\n          \u003ch3\u003eAndroid\u003c\/h3\u003e\n          \u003cp\u003eWorks with Samsung, Huawei, Oppo, Vivo and more.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"ps-pt-feature-card ps-pt-reveal\"\u003e\n          \u003cdiv class=\"ps-pt-feature-icon\"\u003e💻\u003c\/div\u003e\n          \u003ch3\u003eUSB-A \u0026amp; USB-C\u003c\/h3\u003e\n          \u003cp\u003eFor laptops, power banks and other USB-A \/ USB-C devices.\u003c\/p\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ps-pt-tags\"\u003e\n        \u003cspan\u003eLightning\u003c\/span\u003e\n        \u003cspan\u003eUSB-C\u003c\/span\u003e\n        \u003cspan\u003eUSB-A\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- COLOURS --\u003e\n    \u003cdiv class=\"ps-pt-colours ps-pt-reveal\"\u003e\n      \u003cp class=\"ps-pt-section-label\"\u003eAvailable colours\u003c\/p\u003e\n      \u003cdiv class=\"ps-pt-colour-row\"\u003e\n        \u003cspan class=\"ps-pt-colour-swatch ps-pt-colour-black\"\u003e\u003c\/span\u003e\n        \u003cspan class=\"ps-pt-colour-swatch ps-pt-colour-white\"\u003e\u003c\/span\u003e\n        \u003cspan class=\"ps-pt-colour-swatch ps-pt-colour-blue\"\u003e\u003c\/span\u003e\n        \u003cspan class=\"ps-pt-colour-swatch ps-pt-colour-red\"\u003e\u003c\/span\u003e\n        \u003cspan class=\"ps-pt-colour-swatch ps-pt-colour-purple\"\u003e\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"ps-pt-colour-caption\"\u003eBlack, White, Blue, Red and Purple\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- FAST CHARGING STRIP --\u003e\n    \u003cdiv class=\"ps-pt-strip ps-pt-reveal\"\u003e\n      \u003cdiv class=\"ps-pt-strip-icon\"\u003e🚀\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eFast charging \u0026amp; high-speed data transfer\u003c\/h3\u003e\n        \u003cp\u003eCompact size, full power — charge up fast and sync files in a flash, no waiting around.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- PRODUCT DETAILS --\u003e\n    \u003cdiv id=\"ps-pt-details\" class=\"ps-pt-section\"\u003e\n      \u003cdiv class=\"ps-pt-section-heading ps-pt-reveal\"\u003e\n        \u003cp class=\"ps-pt-section-label\"\u003eProduct information\u003c\/p\u003e\n        \u003ch2 class=\"ps-pt-heading\"\u003eAlways on \u003cspan class=\"ps-pt-gradient-text\"\u003eyour keys.\u003c\/span\u003e\n\u003c\/h2\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"ps-pt-details-grid ps-pt-reveal\"\u003e\n        \u003cdiv class=\"ps-pt-detail\"\u003e\n          \u003cspan\u003eProduct\u003c\/span\u003e\n          \u003cstrong\u003ePowerSpot™ PowerTag\u003c\/strong\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"ps-pt-detail\"\u003e\n          \u003cspan\u003eStyle\u003c\/span\u003e\n          \u003cstrong\u003eCable keychain\u003c\/strong\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"ps-pt-detail\"\u003e\n          \u003cspan\u003eCompatibility\u003c\/span\u003e\n          \u003cstrong\u003e4-in-1\u003c\/strong\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"ps-pt-detail\"\u003e\n          \u003cspan\u003eFunctions\u003c\/span\u003e\n          \u003cstrong\u003eCharge + data transfer\u003c\/strong\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"ps-pt-closing ps-pt-reveal\"\u003e\n      \u003cspan\u003eSmall cable.\u003c\/span\u003e\n      \u003cspan\u003eBig power.\u003c\/span\u003e\n      \u003cstrong\u003eAlways ready. ⚡🔑\u003c\/strong\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cstyle\u003e\n  \/* ============================================================\n     BASE — mobile-first, matches WristCharge \/ CableVault Pro\n  ============================================================= *\/\n\n  #ps-powertag-section,\n  #ps-powertag-section * {\n    box-sizing: border-box;\n  }\n\n  #ps-powertag-section {\n    --blue: #2aa8e0;\n    --violet: #7b5cf0;\n    --magenta: #e619c9;\n    --grad: linear-gradient(90deg, var(--blue) 0%, var(--violet) 55%, var(--magenta) 100%);\n\n    --ink: #0a0a0f;\n    --muted: #656b76;\n    --surface: #f6f6f9;\n    --line: rgba(10, 10, 20, 0.09);\n    --chip-bg: #0d1020;\n    --chip-text: #cfe8ff;\n\n    position: relative;\n    width: 100%;\n    overflow: hidden;\n    color: var(--ink);\n    background:\n      radial-gradient(circle at 8% 5%, rgba(42, 168, 224, 0.14), transparent 28%),\n      radial-gradient(circle at 92% 20%, rgba(123, 92, 240, 0.12), transparent 28%),\n      radial-gradient(circle at 85% 78%, rgba(230, 25, 201, 0.08), transparent 25%),\n      linear-gradient(180deg, #ffffff 0%, #fafaff 48%, #ffffff 100%);\n    font-family: 'Inter', sans-serif;\n    isolation: isolate;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  #ps-powertag-section h1,\n  #ps-powertag-section h2,\n  #ps-powertag-section h3,\n  #ps-powertag-section p {\n    margin: 0;\n  }\n\n  #ps-powertag-section a {\n    color: inherit;\n    text-decoration: none;\n  }\n\n  #ps-powertag-section h1,\n  #ps-powertag-section h2,\n  #ps-powertag-section h3 {\n    font-family: 'Space Grotesk', sans-serif;\n    color: var(--ink);\n  }\n\n  #ps-powertag-section p {\n    color: var(--muted);\n  }\n\n  #ps-powertag-section .ps-pt-gradient-text {\n    display: inline-block;\n    background: var(--grad);\n    background-size: 200% auto;\n    -webkit-background-clip: text;\n    background-clip: text;\n    color: transparent;\n    animation: psPtGradientMove 5s linear infinite;\n  }\n\n  .ps-pt-container {\n    position: relative;\n    z-index: 2;\n    width: 100%;\n    max-width: 560px;\n    margin: 0 auto;\n    padding: 40px 16px 56px;\n  }\n\n  \/* ---------- background ---------- *\/\n\n  .ps-pt-background {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n  }\n\n  .ps-pt-grid {\n    position: absolute;\n    inset: 0;\n    opacity: 0.3;\n    background-image:\n      linear-gradient(rgba(42, 168, 224, 0.05) 1px, transparent 1px),\n      linear-gradient(90deg, rgba(123, 92, 240, 0.05) 1px, transparent 1px);\n    background-size: 32px 32px;\n    mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), transparent 65%);\n  }\n\n  .ps-pt-orb {\n    position: absolute;\n    width: 200px;\n    height: 200px;\n    border-radius: 50%;\n    opacity: 0.5;\n    filter: blur(60px);\n    animation: psPtOrbMove 11s ease-in-out infinite;\n  }\n\n  .ps-pt-orb-one {\n    top: 2%;\n    left: -110px;\n    background: rgba(42, 168, 224, 0.22);\n  }\n\n  .ps-pt-orb-two {\n    top: 28%;\n    right: -120px;\n    background: rgba(230, 25, 201, 0.16);\n    animation-delay: -5s;\n  }\n\n  \/* ---------- hero ---------- *\/\n\n  .ps-pt-hero {\n    text-align: center;\n  }\n\n  .ps-pt-logo {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 18px;\n  }\n\n  .ps-pt-logo-symbol {\n    width: 20px;\n    height: 20px;\n  }\n\n  .ps-pt-logo-text {\n    font-family: 'Space Grotesk', sans-serif;\n    font-size: 18px;\n    font-style: italic;\n    font-weight: 800;\n    letter-spacing: -0.3px;\n  }\n\n  .ps-pt-logo-text span {\n    color: var(--magenta);\n    font-size: 10px;\n    vertical-align: super;\n    font-style: normal;\n  }\n\n  .ps-pt-eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-bottom: 16px;\n    padding: 7px 13px;\n    border: 1px solid var(--line);\n    border-radius: 100px;\n    background: rgba(255, 255, 255, 0.7);\n    font-family: 'JetBrains Mono', monospace;\n    color: var(--violet);\n    font-size: 9.5px;\n    font-weight: 700;\n    letter-spacing: 0.6px;\n    text-transform: uppercase;\n  }\n\n  .ps-pt-pulse {\n    width: 6px;\n    height: 6px;\n    flex: 0 0 auto;\n    border-radius: 50%;\n    background: var(--magenta);\n    animation: psPtPulse 1.8s infinite;\n  }\n\n  .ps-pt-main-title {\n    font-size: clamp(32px, 11vw, 42px);\n    line-height: 1;\n    font-weight: 700;\n    letter-spacing: -1.2px;\n  }\n\n  .ps-pt-main-title .ps-pt-gradient-text {\n    display: block;\n    margin-top: 4px;\n  }\n\n  .ps-pt-tagline {\n    margin-top: 14px;\n    color: var(--ink);\n    font-size: 17px;\n    font-weight: 700;\n  }\n\n  .ps-pt-hero-description {\n    max-width: 340px;\n    margin: 12px auto 0;\n    font-size: 14px;\n    line-height: 1.6;\n  }\n\n  .ps-pt-buttons {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 9px;\n    margin-top: 22px;\n  }\n\n  .ps-pt-button {\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    min-height: 52px;\n    padding: 12px 20px;\n    border-radius: 14px;\n    font-size: 13px;\n    font-weight: 700;\n    transition: transform 0.25s ease, box-shadow 0.25s ease;\n  }\n\n  .ps-pt-primary-button {\n    color: #ffffff;\n    background: var(--grad);\n    background-size: 200% auto;\n    box-shadow: 0 12px 28px rgba(123, 92, 240, 0.28);\n    animation: psPtGradientMove 5s linear infinite;\n  }\n\n  .ps-pt-secondary-button {\n    color: var(--ink);\n    border: 1px solid var(--line);\n    background: rgba(255, 255, 255, 0.85);\n  }\n\n  .ps-pt-button:active {\n    transform: translateY(-2px);\n  }\n\n  \/* ---------- keychain showcase ---------- *\/\n\n  .ps-pt-showcase {\n    position: relative;\n    display: flex;\n    width: 100%;\n    min-height: 340px;\n    margin: 30px auto 50px;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .ps-pt-showcase-glow {\n    position: absolute;\n    width: 70%;\n    height: 60%;\n    border-radius: 50%;\n    background: var(--grad);\n    opacity: 0.16;\n    filter: blur(50px);\n    animation: psPtGlow 4s ease-in-out infinite;\n  }\n\n  .ps-pt-keychain-svg {\n    position: relative;\n    z-index: 2;\n    width: min(220px, 62vw);\n    filter: drop-shadow(0 20px 40px rgba(20, 20, 40, 0.18));\n  }\n\n  .ps-pt-swing {\n    transform-origin: 110px 15px;\n    animation: psPtSwing 4s ease-in-out infinite;\n  }\n\n  .ps-pt-ring-pulse {\n    filter: drop-shadow(0 0 6px rgba(230, 25, 201, 0.8));\n    offset-path: path('M 110,15 A 60,60 0 1,1 109.9,15');\n    offset-rotate: 0deg;\n    animation: psPtTravel 3s linear infinite;\n  }\n\n  .ps-pt-showcase-badge {\n    position: absolute;\n    z-index: 5;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    max-width: 130px;\n    padding: 9px 11px;\n    border: 1px solid var(--line);\n    border-radius: 12px;\n    background: rgba(255, 255, 255, 0.94);\n    box-shadow: 0 12px 28px rgba(20, 20, 40, 0.1);\n    font-size: 8px;\n    font-weight: 700;\n    white-space: nowrap;\n    animation: psPtFloat 4s ease-in-out infinite;\n  }\n\n  .ps-pt-badge-one { top: 4px; left: 4px; }\n  .ps-pt-badge-two { bottom: 4px; right: 4px; animation-delay: -2s; }\n\n  \/* ---------- section headings ---------- *\/\n\n  .ps-pt-section {\n    margin-bottom: 44px;\n  }\n\n  .ps-pt-section-heading {\n    margin-bottom: 22px;\n    text-align: center;\n  }\n\n  .ps-pt-section-label {\n    display: block;\n    margin-bottom: 8px;\n    color: var(--violet);\n    font-family: 'JetBrains Mono', monospace;\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 1.2px;\n    text-transform: uppercase;\n  }\n\n  .ps-pt-heading {\n    font-size: clamp(24px, 8vw, 30px);\n    line-height: 1.08;\n    font-weight: 700;\n    letter-spacing: -0.6px;\n  }\n\n  \/* ---------- feature grid ---------- *\/\n\n  .ps-pt-feature-grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: 10px;\n    margin-bottom: 16px;\n  }\n\n  .ps-pt-feature-card {\n    padding: 18px;\n    border: 1px solid var(--line);\n    border-radius: 18px;\n    background: var(--surface);\n    transition: transform 0.25s ease, border-color 0.25s ease;\n  }\n\n  .ps-pt-feature-card:active {\n    transform: translateY(-3px);\n    border-color: rgba(42, 168, 224, 0.4);\n  }\n\n  .ps-pt-feature-icon {\n    display: grid;\n    width: 40px;\n    height: 40px;\n    place-items: center;\n    border-radius: 12px;\n    background: linear-gradient(145deg, rgba(42, 168, 224, 0.16), rgba(230, 25, 201, 0.12));\n    font-size: 18px;\n  }\n\n  .ps-pt-feature-card h3 {\n    margin-top: 14px;\n    font-size: 15.5px;\n    font-weight: 700;\n  }\n\n  .ps-pt-feature-card p {\n    margin-top: 6px;\n    font-size: 12.5px;\n    line-height: 1.55;\n  }\n\n  .ps-pt-tags {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 7px;\n  }\n\n  .ps-pt-tags span {\n    padding: 7px 11px;\n    border: 1px solid var(--line);\n    border-radius: 100px;\n    background: rgba(255, 255, 255, 0.85);\n    font-family: 'JetBrains Mono', monospace;\n    color: var(--ink);\n    font-size: 9.5px;\n    font-weight: 700;\n  }\n\n  \/* ---------- colours ---------- *\/\n\n  .ps-pt-colours {\n    margin-top: 22px;\n    text-align: center;\n  }\n\n  .ps-pt-colour-row {\n    display: flex;\n    justify-content: center;\n    gap: 14px;\n    margin-top: 4px;\n  }\n\n  .ps-pt-colour-swatch {\n    width: 28px;\n    height: 28px;\n    border-radius: 50%;\n    box-shadow: 0 4px 14px rgba(20, 20, 40, 0.18);\n    border: 1px solid var(--line);\n  }\n\n  .ps-pt-colour-black { background: #141414; }\n  .ps-pt-colour-white { background: #eeeeea; }\n  .ps-pt-colour-blue { background: #2f80ed; }\n  .ps-pt-colour-red { background: #e5484d; }\n  .ps-pt-colour-purple { background: #8b3dff; }\n\n  .ps-pt-colour-caption {\n    margin-top: 10px;\n    font-size: 12.5px;\n  }\n\n  \/* ---------- fast-charging strip ---------- *\/\n\n  .ps-pt-strip {\n    display: flex;\n    align-items: flex-start;\n    gap: 14px;\n    margin-bottom: 44px;\n    padding: 22px;\n    border: 1px solid var(--line);\n    border-radius: 18px;\n    background:\n      linear-gradient(135deg, rgba(42, 168, 224, 0.07), rgba(123, 92, 240, 0.05), rgba(230, 25, 201, 0.05)),\n      var(--surface);\n  }\n\n  .ps-pt-strip-icon {\n    display: grid;\n    flex: 0 0 auto;\n    width: 42px;\n    height: 42px;\n    place-items: center;\n    border-radius: 12px;\n    background: var(--grad);\n    font-size: 18px;\n  }\n\n  .ps-pt-strip h3 {\n    font-size: 15px;\n    font-weight: 700;\n  }\n\n  .ps-pt-strip p {\n    margin-top: 6px;\n    font-size: 12.5px;\n    line-height: 1.55;\n  }\n\n  \/* ---------- details grid ---------- *\/\n\n  .ps-pt-details-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    overflow: hidden;\n    border: 1px solid var(--line);\n    border-radius: 18px;\n    background: var(--surface);\n  }\n\n  .ps-pt-detail {\n    padding: 15px 14px;\n    border-right: 1px solid var(--line);\n    border-bottom: 1px solid var(--line);\n  }\n\n  .ps-pt-detail:nth-child(2n) { border-right: 0; }\n  .ps-pt-detail:nth-last-child(-n + 2) { border-bottom: 0; }\n\n  .ps-pt-detail span {\n    display: block;\n    margin-bottom: 5px;\n    font-family: 'JetBrains Mono', monospace;\n    color: var(--muted);\n    font-size: 9.5px;\n    font-weight: 700;\n    letter-spacing: 0.6px;\n    text-transform: uppercase;\n  }\n\n  .ps-pt-detail strong {\n    font-size: 12.5px;\n    line-height: 1.3;\n  }\n\n  \/* ---------- closing ---------- *\/\n\n  .ps-pt-closing {\n    display: flex;\n    justify-content: center;\n    flex-wrap: wrap;\n    gap: 6px;\n    color: var(--muted);\n    font-size: clamp(14px, 4vw, 17px);\n    text-align: center;\n  }\n\n  .ps-pt-closing strong {\n    background: var(--grad);\n    -webkit-background-clip: text;\n    background-clip: text;\n    color: transparent;\n  }\n\n  \/* ---------- reveal ---------- *\/\n\n  .ps-pt-reveal {\n    opacity: 0;\n    transform: translateY(20px);\n    transition: opacity 0.6s ease, transform 0.6s ease;\n  }\n\n  .ps-pt-reveal.ps-pt-visible {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  \/* ---------- roomier on tablet\/desktop previews ---------- *\/\n\n  @media (min-width: 760px) {\n    .ps-pt-container { max-width: 640px; padding-top: 56px; }\n    .ps-pt-feature-grid { grid-template-columns: repeat(3, 1fr); }\n    .ps-pt-buttons { grid-template-columns: 1fr 1fr; }\n    .ps-pt-details-grid { grid-template-columns: repeat(4, 1fr); }\n    .ps-pt-detail:nth-child(2n) { border-right: 1px solid var(--line); }\n    .ps-pt-detail:nth-child(4n) { border-right: 0; }\n    .ps-pt-detail:nth-last-child(-n + 2) { border-bottom: 1px solid var(--line); }\n    .ps-pt-detail:nth-last-child(-n + 4) { border-bottom: 0; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    #ps-powertag-section *,\n    #ps-powertag-section *::before,\n    #ps-powertag-section *::after {\n      animation-duration: 0.01ms !important;\n      animation-iteration-count: 1 !important;\n      transition-duration: 0.01ms !important;\n    }\n    .ps-pt-reveal { opacity: 1; transform: none; }\n  }\n\n  \/* ---------- keyframes ---------- *\/\n\n  @keyframes psPtGradientMove {\n    from { background-position: 0% center; }\n    to { background-position: 200% center; }\n  }\n\n  @keyframes psPtPulse {\n    0% { box-shadow: 0 0 0 0 rgba(230, 25, 201, 0.55); }\n    70% { box-shadow: 0 0 0 8px rgba(230, 25, 201, 0); }\n    100% { box-shadow: 0 0 0 0 rgba(230, 25, 201, 0); }\n  }\n\n  @keyframes psPtOrbMove {\n    0%, 100% { transform: translate3d(0, 0, 0); }\n    50% { transform: translate3d(20px, -18px, 0); }\n  }\n\n  @keyframes psPtGlow {\n    0%, 100% { opacity: 0.14; transform: scale(0.93); }\n    50% { opacity: 0.24; transform: scale(1.07); }\n  }\n\n  @keyframes psPtSwing {\n    0%, 100% { transform: rotate(-5deg); }\n    50% { transform: rotate(5deg); }\n  }\n\n  @keyframes psPtTravel {\n    from { offset-distance: 0%; }\n    to { offset-distance: 100%; }\n  }\n\n  @keyframes psPtBoltPulse {\n    0%, 100% { opacity: 0.85; transform: scale(1); }\n    50% { opacity: 1; transform: scale(1.08); }\n  }\n\n  @keyframes psPtFloat {\n    0%, 100% { transform: translateY(0); }\n    50% { transform: translateY(-7px); }\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  (function () {\n    var section = document.getElementById(\"ps-powertag-section\");\n    if (!section || section.dataset.psInitialised === \"true\") return;\n    section.dataset.psInitialised = \"true\";\n\n    var revealElements = section.querySelectorAll(\".ps-pt-reveal\");\n\n    if (\"IntersectionObserver\" in window) {\n      var observer = new IntersectionObserver(\n        function (entries, revealObserver) {\n          entries.forEach(function (entry) {\n            if (entry.isIntersecting) {\n              entry.target.classList.add(\"ps-pt-visible\");\n              revealObserver.unobserve(entry.target);\n            }\n          });\n        },\n        { threshold: 0.1, rootMargin: \"0px 0px -25px 0px\" }\n      );\n\n      revealElements.forEach(function (element, index) {\n        element.style.transitionDelay = Math.min((index % 5) * 55, 220) + \"ms\";\n        observer.observe(element);\n      });\n    } else {\n      revealElements.forEach(function (element) {\n        element.classList.add(\"ps-pt-visible\");\n      });\n    }\n\n    section.querySelectorAll('a[href^=\"#\"]').forEach(function (link) {\n      link.addEventListener(\"click\", function (event) {\n        var selector = link.getAttribute(\"href\");\n        if (!selector || selector === \"#\") return;\n\n        var target = null;\n        try { target = document.querySelector(selector); } catch (error) { target = null; }\n\n        if (target) {\n          event.preventDefault();\n          target.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n        }\n      });\n    });\n  })();\n\u003c\/script\u003e","brand":"PowerSpot","offers":[{"title":"Purple","offer_id":50412330877033,"sku":null,"price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"Black","offer_id":50412330909801,"sku":null,"price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"Blue","offer_id":50412330942569,"sku":null,"price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"White","offer_id":50412330975337,"sku":null,"price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"Red","offer_id":50412331008105,"sku":null,"price":499.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0778\/4821\/5657\/files\/Untitled_design_7.png?v=1782649700","url":"https:\/\/powerspot.co.za\/products\/powerspot%e2%84%a2-powertag-cable-keychain","provider":"PowerSpot","version":"1.0","type":"link"}