{"product_id":"neon-sway™-glow-in-the-dark-motorcycle-tail","title":"🔥😂Neon Sway™ – Glow-in-the-Dark Motorcycle Tail","description":"\u003cstyle\u003e\n  #neon-sway-story {\n    width: 100%;\n    max-width: none;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    color: #f4f5f7;\n    font-family: Arial, Helvetica, sans-serif;\n    -webkit-font-smoothing: antialiased;\n    text-align: left;\n  }\n\n  #neon-sway-story,\n  #neon-sway-story * {\n    box-sizing: border-box;\n  }\n\n  #neon-sway-story .ns-shell {\n    position: relative;\n    isolation: isolate;\n    width: var(--ns-screen, 100%);\n    max-width: none;\n    margin-left: var(--ns-offset, 0px);\n    background: #101216;\n    color: #f4f5f7;\n    overflow: hidden;\n  }\n\n  #neon-sway-story .ns-container {\n    width: min(1040px, 100%);\n    margin: 0 auto;\n    padding: 0 32px;\n  }\n\n  #neon-sway-story h2,\n  #neon-sway-story p,\n  #neon-sway-story figure {\n    margin: 0;\n  }\n\n  #neon-sway-story h2 {\n    color: #f8f9fb;\n    font-family: inherit;\n    font-size: clamp(25px, 2.5vw, 32px);\n    font-weight: 700;\n    line-height: 1.25;\n    letter-spacing: -0.7px;\n    text-transform: none;\n    overflow-wrap: break-word;\n  }\n\n  #neon-sway-story p {\n    margin-top: 17px;\n    color: #bfc3cc;\n    font-family: inherit;\n    font-size: 16px;\n    font-weight: 400;\n    line-height: 1.8;\n    letter-spacing: 0;\n  }\n\n  #neon-sway-story .ns-copy {\n    width: 100%;\n    max-width: 410px;\n    min-width: 0;\n  }\n\n  #neon-sway-story .ns-accent {\n    color: #85e8ec;\n  }\n\n  #neon-sway-story .ns-row {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n    align-items: center;\n    gap: 54px;\n    padding: 52px 0;\n  }\n\n  #neon-sway-story .ns-row--reverse .ns-copy {\n    grid-column: 2;\n    grid-row: 1;\n    justify-self: end;\n  }\n\n  #neon-sway-story .ns-row--reverse .ns-media {\n    grid-column: 1;\n    grid-row: 1;\n  }\n\n  #neon-sway-story .ns-media {\n    width: 100%;\n    max-width: 410px;\n    min-width: 0;\n    justify-self: center;\n  }\n\n  #neon-sway-story .ns-image {\n    display: block;\n    width: 100%;\n    max-width: 100%;\n    height: auto;\n    aspect-ratio: 1 \/ 1;\n    margin: 0;\n    padding: 0;\n    object-fit: contain;\n    border: 0;\n    border-radius: 14px;\n    background: #171a20;\n    box-shadow: none;\n  }\n\n  #neon-sway-story .ns-hero {\n    background:\n      radial-gradient(\n        ellipse at 8% 12%,\n        rgba(50, 167, 179, 0.10),\n        transparent 48%\n      ),\n      radial-gradient(\n        ellipse at 92% 80%,\n        rgba(192, 58, 132, 0.08),\n        transparent 46%\n      ),\n      #101216;\n  }\n\n  #neon-sway-story .ns-hero .ns-row {\n    padding-top: 64px;\n    padding-bottom: 60px;\n  }\n\n  #neon-sway-story .ns-hero h2 {\n    font-size: clamp(27px, 2.8vw, 35px);\n  }\n\n  #neon-sway-story .ns-color-line {\n    width: 60px;\n    height: 3px;\n    margin-bottom: 23px;\n    border-radius: 3px;\n    background: linear-gradient(\n      90deg,\n      #fb68cb,\n      #ffb967,\n      #d6e85e,\n      #72e0bd,\n      #66c8ff\n    );\n  }\n\n  #neon-sway-story .ns-band {\n    background: #16191f;\n  }\n\n  #neon-sway-story .ns-pair {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 12px;\n    width: 100%;\n    max-width: 450px;\n    justify-self: center;\n  }\n\n  #neon-sway-story .ns-pair figure {\n    min-width: 0;\n  }\n\n  #neon-sway-story .ns-pair figcaption {\n    padding-top: 11px;\n    color: #aeb5c2;\n    font-size: 12px;\n    font-weight: 600;\n    line-height: 1.4;\n    letter-spacing: 1.3px;\n    text-align: center;\n    text-transform: uppercase;\n  }\n\n  #neon-sway-story .ns-colors {\n    padding: 54px 0;\n    background:\n      radial-gradient(\n        ellipse at 50% 100%,\n        rgba(75, 116, 148, 0.09),\n        transparent 65%\n      ),\n      #16191f;\n  }\n\n  #neon-sway-story .ns-heading {\n    max-width: 650px;\n    margin: 0 auto 29px;\n    text-align: center;\n  }\n\n  #neon-sway-story .ns-heading p {\n    margin-top: 14px;\n  }\n\n  #neon-sway-story .ns-color-grid {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    gap: 16px;\n  }\n\n  #neon-sway-story .ns-color-card {\n    min-width: 0;\n    overflow: hidden;\n    background: #101216;\n    border-radius: 13px;\n  }\n\n  #neon-sway-story .ns-color-card .ns-image {\n    border-radius: 0;\n  }\n\n  #neon-sway-story .ns-color-card figcaption {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 9px;\n    padding: 15px 8px 17px;\n    color: #f4f5f7;\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 1.4;\n  }\n\n  #neon-sway-story .ns-dot {\n    display: inline-block;\n    flex: 0 0 9px;\n    width: 9px;\n    height: 9px;\n    border-radius: 50%;\n    background: var(--ns-swatch);\n  }\n\n  #neon-sway-story .ns-closing {\n    padding: 54px 0 58px;\n    background:\n      radial-gradient(\n        ellipse at 50% 100%,\n        rgba(68, 174, 183, 0.08),\n        transparent 60%\n      ),\n      #16191f;\n  }\n\n  #neon-sway-story .ns-closing-gallery {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 20px;\n    max-width: 710px;\n    margin: 0 auto;\n  }\n\n  #neon-sway-story .ns-action {\n    margin-top: 30px;\n    text-align: center;\n  }\n\n  #neon-sway-story .ns-button {\n    appearance: none;\n    -webkit-appearance: none;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 16px;\n    min-height: 49px;\n    max-width: 100%;\n    margin: 0;\n    padding: 14px 29px;\n    border: 1px solid #9cebf0;\n    border-radius: 7px;\n    background: #9cebf0;\n    color: #101216;\n    font-family: inherit;\n    font-size: 15px;\n    font-weight: 700;\n    line-height: 1.4;\n    letter-spacing: 0;\n    text-decoration: none;\n    text-transform: none;\n    cursor: pointer;\n    box-shadow: none;\n    transition:\n      background 180ms ease,\n      border-color 180ms ease;\n  }\n\n  #neon-sway-story .ns-button:hover {\n    border-color: #c2f4f6;\n    background: #c2f4f6;\n  }\n\n  #neon-sway-story .ns-button:focus-visible {\n    outline: 2px solid #ffffff;\n    outline-offset: 5px;\n  }\n\n  #neon-sway-story .ns-button svg {\n    flex: 0 0 17px;\n    width: 17px;\n    height: 17px;\n  }\n\n  @media (min-width: 1100px) {\n    #neon-sway-story .ns-row {\n      gap: 70px;\n    }\n  }\n\n  @media (max-width: 749px) {\n    #neon-sway-story .ns-container {\n      padding-right: 21px;\n      padding-left: 21px;\n    }\n\n    #neon-sway-story .ns-row,\n    #neon-sway-story .ns-row--reverse {\n      grid-template-columns: minmax(0, 1fr);\n      gap: 25px;\n      padding-top: 37px;\n      padding-bottom: 37px;\n    }\n\n    #neon-sway-story .ns-copy,\n    #neon-sway-story .ns-row--reverse .ns-copy {\n      grid-column: 1;\n      grid-row: 1;\n      justify-self: center;\n      max-width: 440px;\n    }\n\n    #neon-sway-story .ns-media,\n    #neon-sway-story .ns-row--reverse .ns-media {\n      grid-column: 1;\n      grid-row: 2;\n      max-width: 370px;\n    }\n\n    #neon-sway-story .ns-pair {\n      grid-column: 1;\n      grid-row: 2;\n      max-width: 440px;\n      gap: 10px;\n    }\n\n    #neon-sway-story h2 {\n      font-size: 25px;\n      line-height: 1.27;\n      letter-spacing: -0.5px;\n    }\n\n    #neon-sway-story .ns-hero h2 {\n      font-size: 28px;\n    }\n\n    #neon-sway-story p {\n      margin-top: 14px;\n      font-size: 15px;\n      line-height: 1.8;\n    }\n\n    #neon-sway-story .ns-hero .ns-row {\n      padding-top: 40px;\n      padding-bottom: 38px;\n    }\n\n    #neon-sway-story .ns-color-line {\n      margin-bottom: 19px;\n    }\n\n    #neon-sway-story .ns-colors,\n    #neon-sway-story .ns-closing {\n      padding-top: 39px;\n      padding-bottom: 41px;\n    }\n\n    #neon-sway-story .ns-heading {\n      max-width: 440px;\n      margin-bottom: 24px;\n      text-align: left;\n    }\n\n    #neon-sway-story .ns-color-grid {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 13px;\n      max-width: 440px;\n      margin: 0 auto;\n    }\n\n    #neon-sway-story .ns-color-card figcaption {\n      padding: 12px 6px 14px;\n      font-size: 13px;\n    }\n\n    #neon-sway-story .ns-closing-gallery {\n      grid-template-columns: minmax(0, 1fr);\n      gap: 17px;\n      max-width: 370px;\n    }\n\n    #neon-sway-story .ns-action {\n      margin-top: 25px;\n    }\n\n    #neon-sway-story .ns-button {\n      min-height: 48px;\n      padding: 13px 28px;\n      font-size: 14px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    #neon-sway-story .ns-button {\n      transition: none;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv id=\"neon-sway-story\"\u003e\n  \u003cdiv class=\"ns-shell\"\u003e\n\n    \u003c!-- 01：人物场景开场 --\u003e\n    \u003csection class=\"ns-hero\"\u003e\n      \u003cdiv class=\"ns-container\"\u003e\n        \u003cdiv class=\"ns-row\"\u003e\n\n          \u003cdiv class=\"ns-copy\"\u003e\n            \u003cdiv class=\"ns-color-line\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n\n            \u003ch2\u003e\n              Nice bike.\u003cbr\u003e\n              \u003cspan class=\"ns-accent\"\u003eWho gave it a tail?\u003c\/span\u003e\n            \u003c\/h2\u003e\n\n            \u003cp\u003e\n              All that chrome. All that attitude. And now… a fluffy tail.\n              Neon Sway is for riders who take their bikes seriously—and\n              themselves a little less seriously.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cfigure class=\"ns-media\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/Mountainoverlookriderwithglowingrainbowtail.png?v=1792202806\" alt=\"Rider admiring a glowing rainbow motorcycle tail at a mountain overlook\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n          \u003c\/figure\u003e\n\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- 02：白天与夜晚 --\u003e\n    \u003csection class=\"ns-band\"\u003e\n      \u003cdiv class=\"ns-container\"\u003e\n        \u003cdiv class=\"ns-row\"\u003e\n\n          \u003cdiv class=\"ns-copy\"\u003e\n            \u003ch2\u003e\n              Apparently, your bike\u003cbr\u003e\n              needed a nightlife.\n            \u003c\/h2\u003e\n\n            \u003cp\u003e\n              Bright color by day, a glowing personality after dark.\n              Because rolling up on a black motorcycle is one thing.\n              Showing up with a rainbow tail is how you give your friends\n              something to talk about.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"ns-pair\"\u003e\n\n            \u003cfigure\u003e\n              \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/RainbowTailonaBlackCruiser.png?v=1792202806\" alt=\"Rainbow faux-fur tail on a black cruiser motorcycle in daylight\" width=\"1274\" height=\"1235\" loading=\"lazy\" decoding=\"async\"\u003e\n              \u003cfigcaption\u003eDaytime color\u003c\/figcaption\u003e\n            \u003c\/figure\u003e\n\n            \u003cfigure\u003e\n              \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/Glow-in-the-darkrainbowfurrymotorcycletail.png?v=1792202806\" alt=\"Woman admiring the luminous rainbow tail in an evening setting\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n              \u003cfigcaption\u003eAfter-dark glow\u003c\/figcaption\u003e\n            \u003c\/figure\u003e\n\n          \u003c\/div\u003e\n\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- 03：摇摆动作分解 --\u003e\n    \u003csection\u003e\n      \u003cdiv class=\"ns-container\"\u003e\n        \u003cdiv class=\"ns-row ns-row--reverse\"\u003e\n\n          \u003cdiv class=\"ns-copy\"\u003e\n            \u003ch2\u003e\n              It’s got a tail.\u003cbr\u003e\n              Of course it’s going to show off.\n            \u003c\/h2\u003e\n\n            \u003cp\u003e\n              A little movement sends that fluffy tail swishing from\n              side to side. Your bike already had plenty of attitude.\n              Now it has body language.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cfigure class=\"ns-media\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/RainbowTailMotionBreakdown.png?v=1792202806\" alt=\"Motion illustration showing the rainbow motorcycle tail swaying left, center, and right\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n          \u003c\/figure\u003e\n\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- 04：毛绒与挂扣细节 --\u003e\n    \u003csection class=\"ns-band\"\u003e\n      \u003cdiv class=\"ns-container\"\u003e\n        \u003cdiv class=\"ns-row\"\u003e\n\n          \u003cdiv class=\"ns-copy\"\u003e\n            \u003ch2\u003e\n              Even a tough bike\u003cbr\u003e\n              has a soft spot.\n            \u003c\/h2\u003e\n\n            \u003cp\u003e\n              Turns out, it’s right at the back.\n              Fluffy faux fur and a simple clip-on attachment add the\n              finishing touch nobody saw coming—but everybody’s\n              going to notice.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cfigure class=\"ns-media\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/Rainbowglowmotorcycletailornament.png?v=1792202806\" alt=\"Rainbow tail introduction showing its luminous effect, fluffy faux-fur texture, and clip-on attachment\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n          \u003c\/figure\u003e\n\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- 05：颜色展示 --\u003e\n    \u003csection class=\"ns-colors\"\u003e\n      \u003cdiv class=\"ns-container\"\u003e\n\n        \u003cdiv class=\"ns-heading\"\u003e\n          \u003ch2\u003ePick a color. Explain nothing.\u003c\/h2\u003e\n\n          \u003cp\u003e\n            Go electric blue, fiery orange, neon green, or\n            unapologetically pink. Can’t pick one? That’s what the\n            rainbow is for. It’s your bike—you don’t owe the\n            parking lot an explanation.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"ns-color-grid\"\u003e\n\n          \u003cfigure class=\"ns-color-card\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/HotPinkFurTailonCruiser.png?v=1792202806\" alt=\"Pink faux-fur motorcycle tail with a pale pink tip\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n            \u003cfigcaption\u003e\n              \u003cspan class=\"ns-dot\" style=\"--ns-swatch:#ff5bc7;\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n              Pink\n            \u003c\/figcaption\u003e\n          \u003c\/figure\u003e\n\n          \u003cfigure class=\"ns-color-card\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/ElectricBlueFaux-FurMotorcycleTail.png?v=1792202806\" alt=\"Electric blue faux-fur motorcycle tail with an icy pale tip\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n            \u003cfigcaption\u003e\n              \u003cspan class=\"ns-dot\" style=\"--ns-swatch:#43baff;\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n              Blue\n            \u003c\/figcaption\u003e\n          \u003c\/figure\u003e\n\n          \u003cfigure class=\"ns-color-card\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/Fieryfaux-furmotorcycletail.png?v=1792202806\" alt=\"Fiery orange motorcycle tail blending into a golden yellow tip\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n            \u003cfigcaption\u003e\n              \u003cspan class=\"ns-dot\" style=\"--ns-swatch:#ff923d;\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n              Orange\n            \u003c\/figcaption\u003e\n          \u003c\/figure\u003e\n\n          \u003cfigure class=\"ns-color-card\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/Neongreenfaux-furmotorcycletail.png?v=1792202806\" alt=\"Neon green faux-fur motorcycle tail with dark roots\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n            \u003cfigcaption\u003e\n              \u003cspan class=\"ns-dot\" style=\"--ns-swatch:#91ed46;\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n              Green\n            \u003c\/figcaption\u003e\n          \u003c\/figure\u003e\n\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- 06：骑友之间的调侃 --\u003e\n    \u003csection\u003e\n      \u003cdiv class=\"ns-container\"\u003e\n        \u003cdiv class=\"ns-row ns-row--reverse\"\u003e\n\n          \u003cdiv class=\"ns-copy\"\u003e\n            \u003ch2\u003e\n              Let them laugh.\u003cbr\u003e\n              Then send them the link.\n            \u003c\/h2\u003e\n\n            \u003cp\u003e\n              There’s always that one buddy with a comment ready.\n              Give him a minute to finish making fun of your tail\n              before he asks if it comes in blue.\n            \u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cfigure class=\"ns-media\"\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/Friendsadmireaglowingrainbowmotorcycletail.png?v=1792202806\" alt=\"Two motorcycle friends admiring the rainbow tail at an evening meetup\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n          \u003c\/figure\u003e\n\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003c!-- 07：送礼与结尾 --\u003e\n    \u003csection class=\"ns-closing\"\u003e\n      \u003cdiv class=\"ns-container\"\u003e\n\n        \u003cdiv class=\"ns-heading\"\u003e\n          \u003ch2\u003e\n            He’s got the bike. The jacket.\u003cbr\u003e\n            The boots. He does not have this.\n          \u003c\/h2\u003e\n\n          \u003cp\u003e\n            Shopping for a rider who already owns everything?\n            Here’s one thing he probably didn’t put on his wish list—and\n            one gift he’ll have a hard time opening with a straight face.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"ns-closing-gallery\"\u003e\n\n          \u003cfigure\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/Rainbowtailonaroadsidecruiser.png?v=1792202806\" alt=\"Couple smiling at the rainbow tail on their cruiser motorcycle\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n          \u003c\/figure\u003e\n\n          \u003cfigure\u003e\n            \u003cimg class=\"ns-image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0774\/3012\/8812\/files\/CruiserRiderandGlowingRainbowTail.png?v=1792202806\" alt=\"Helmeted rider seated on a cruiser with a rainbow tail at sunset\" width=\"1254\" height=\"1254\" loading=\"lazy\" decoding=\"async\"\u003e\n          \u003c\/figure\u003e\n\n        \u003c\/div\u003e\n\n        \u003c!-- 唯一按钮：返回颜色和价格区域 --\u003e\n        \u003cdiv class=\"ns-action\"\u003e\n          \u003cbutton class=\"ns-button\" type=\"button\" data-ns-shop aria-label=\"Return to product colors and price\"\u003e\n            Pick My Tail\n\n            \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"\u003e\n              \u003cpath d=\"M5 12h14M13 6l6 6-6 6\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\n            \u003c\/svg\u003e\n          \u003c\/button\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n    \u003c\/section\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById(\"neon-sway-story\");\n\n  if (!root || root.dataset.nsReady === \"true\") return;\n\n  root.dataset.nsReady = \"true\";\n\n  var shell = root.querySelector(\".ns-shell\");\n  var resizeFrame = 0;\n\n  \/* 背景展开到屏幕宽度，内部图文保持原尺寸 *\/\n  function updateFullWidth() {\n    if (!root.isConnected) return;\n\n    var viewportWidth = document.documentElement.clientWidth;\n\n    var rootLeft =\n      root.getBoundingClientRect().left +\n      window.scrollX +\n      root.clientLeft;\n\n    shell.style.setProperty(\n      \"--ns-screen\",\n      viewportWidth + \"px\"\n    );\n\n    shell.style.setProperty(\n      \"--ns-offset\",\n      (-rootLeft) + \"px\"\n    );\n  }\n\n  function scheduleResize() {\n    if (resizeFrame) {\n      cancelAnimationFrame(resizeFrame);\n    }\n\n    resizeFrame = requestAnimationFrame(function () {\n      resizeFrame = 0;\n      updateFullWidth();\n    });\n  }\n\n  updateFullWidth();\n\n  window.addEventListener(\n    \"resize\",\n    scheduleResize,\n    { passive: true }\n  );\n\n  window.addEventListener(\n    \"load\",\n    scheduleResize,\n    { once: true }\n  );\n\n  if (\"ResizeObserver\" in window) {\n    var observer = new ResizeObserver(scheduleResize);\n    observer.observe(root);\n  }\n\n  \/* 最后按钮返回当前产品的颜色、价格和购买区域 *\/\n  var shopButton = root.querySelector(\"[data-ns-shop]\");\n\n  if (shopButton) {\n    shopButton.addEventListener(\"click\", function () {\n      var forms = Array.prototype.slice.call(\n        document.querySelectorAll('form[action*=\"\/cart\/add\"]')\n      );\n\n      var productForm = forms.find(function (form) {\n        return (\n          !root.contains(form) \u0026\u0026\n          form.getClientRects().length \u003e 0 \u0026\u0026\n          form.querySelector('[name=\"id\"]') \u0026\u0026\n          !form.closest(\n            \"cart-drawer, cart-notification, \" +\n            \"product-recommendations, .quick-add-modal, \" +\n            \".shopify-section--product-recommendations\"\n          )\n        );\n      });\n\n      var target = null;\n\n      if (productForm) {\n        var productInfo =\n          productForm.closest(\"product-info\") ||\n          productForm.closest(\".product__info-container\") ||\n          productForm.closest(\".product__info-wrapper\") ||\n          productForm.closest(\".product-single__meta\") ||\n          productForm.closest(\"[data-product-info]\");\n\n        if (productInfo) {\n          var price = productInfo.querySelector(\n            '[id^=\"price-\"], [data-product-price], .price'\n          );\n\n          target =\n            price \u0026\u0026 price.getClientRects().length\n              ? price\n              : productInfo;\n        } else {\n          target = productForm;\n        }\n      }\n\n      var reducedMotion = window.matchMedia(\n        \"(prefers-reduced-motion: reduce)\"\n      ).matches;\n\n      var top = target\n        ? Math.max(\n            0,\n            target.getBoundingClientRect().top +\n              window.scrollY -\n              110\n          )\n        : 0;\n\n      window.scrollTo({\n        top: top,\n        behavior: reducedMotion ? \"auto\" : \"smooth\"\n      });\n    });\n  }\n})();\n\u003c\/script\u003e\n\u003cstyle\u003e\n  #neon-sway-reviews,\n  #neon-sway-reviews * {\n    box-sizing: border-box;\n  }\n\n  #neon-sway-reviews {\n    width: 100%;\n    max-width: none;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    color: #123f42;\n    font-family: Arial, Helvetica, sans-serif;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  #neon-sway-reviews .nsr-shell {\n    width: var(--nsr-width, 100%);\n    max-width: none;\n    margin-left: var(--nsr-offset, 0px);\n    padding: 45px 0 38px;\n    overflow: hidden;\n    background: #ffffff;\n  }\n\n  #neon-sway-reviews .nsr-heading {\n    max-width: 760px;\n    margin: 0 auto;\n    padding: 0 22px;\n    text-align: center;\n  }\n\n  #neon-sway-reviews h2 {\n    margin: 0;\n    color: #073f43;\n    font-family: inherit;\n    font-size: clamp(25px, 2.5vw, 32px);\n    font-weight: 700;\n    line-height: 1.25;\n    letter-spacing: -0.6px;\n    text-transform: none;\n  }\n\n  #neon-sway-reviews .nsr-intro {\n    margin: 12px 0 0;\n    color: #647779;\n    font-size: 15px;\n    line-height: 1.7;\n  }\n\n  #neon-sway-reviews .nsr-preview {\n    margin: 10px 0 0;\n    color: #858d8f;\n    font-size: 11px;\n    line-height: 1.6;\n  }\n\n  #neon-sway-reviews .nsr-rows {\n    display: grid;\n    gap: 18px;\n    margin-top: 30px;\n  }\n\n  #neon-sway-reviews .nsr-viewport {\n    width: 100%;\n    overflow: hidden;\n  }\n\n  #neon-sway-reviews .nsr-track {\n    display: flex;\n    width: max-content;\n    animation: nsr-scroll var(--nsr-duration, 42s) linear infinite;\n  }\n\n  #neon-sway-reviews .nsr-viewport--reverse .nsr-track {\n    animation-direction: reverse;\n  }\n\n  #neon-sway-reviews .nsr-group {\n    display: flex;\n    flex: 0 0 auto;\n    align-items: stretch;\n    gap: 18px;\n    width: max-content;\n    max-width: none;\n    margin: 0;\n    padding: 0 18px 0 0;\n    list-style: none;\n  }\n\n  #neon-sway-reviews .nsr-card {\n    display: flex;\n    flex: 0 0 280px;\n    flex-direction: column;\n    width: 280px;\n    min-width: 0;\n    min-height: 245px;\n    margin: 0;\n    padding: 21px 20px;\n    border: 1px solid #e0e3e4;\n    border-radius: 13px;\n    background: #ffffff;\n    box-shadow: 0 2px 5px rgba(20, 40, 45, 0.035);\n    text-align: left;\n    list-style: none;\n  }\n\n  #neon-sway-reviews .nsr-person {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n  }\n\n  #neon-sway-reviews .nsr-avatar {\n    display: flex;\n    flex: 0 0 50px;\n    align-items: center;\n    justify-content: center;\n    width: 50px;\n    height: 50px;\n    overflow: hidden;\n    border: 1px solid #e6e9e9;\n    border-radius: 50%;\n    background: #edf3f2;\n    color: #426764;\n    font-size: 14px;\n    font-weight: 700;\n  }\n\n  #neon-sway-reviews .nsr-avatar img {\n    display: block;\n    width: 100%;\n    height: 100%;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    border-radius: 50%;\n    object-fit: cover;\n    object-position: center;\n  }\n\n  #neon-sway-reviews .nsr-person-info {\n    min-width: 0;\n  }\n\n  #neon-sway-reviews .nsr-name {\n    margin: 0;\n    color: #315b56;\n    font-size: 15px;\n    font-weight: 700;\n    line-height: 1.4;\n    overflow-wrap: anywhere;\n  }\n\n  #neon-sway-reviews .nsr-location {\n    margin: 3px 0 0;\n    color: #92999a;\n    font-size: 9px;\n    font-weight: 600;\n    line-height: 1.5;\n    letter-spacing: 0.35px;\n    text-transform: uppercase;\n  }\n\n  #neon-sway-reviews .nsr-stars {\n    margin-top: 4px;\n    color: #ff8200;\n    font-size: 17px;\n    line-height: 1.2;\n    letter-spacing: 1px;\n    white-space: nowrap;\n  }\n\n  #neon-sway-reviews .nsr-stars-empty {\n    color: #dfe2e3;\n  }\n\n  #neon-sway-reviews .nsr-text {\n    margin: 18px 0 0;\n    color: #747b7e;\n    font-size: 15px;\n    font-weight: 400;\n    line-height: 1.65;\n    letter-spacing: 0;\n    overflow-wrap: anywhere;\n  }\n\n  #neon-sway-reviews .nsr-controls {\n    margin-top: 25px;\n    text-align: center;\n  }\n\n  #neon-sway-reviews .nsr-toggle {\n    appearance: none;\n    -webkit-appearance: none;\n    min-height: 40px;\n    margin: 0;\n    padding: 9px 17px;\n    border: 1px solid #dce3e3;\n    border-radius: 999px;\n    background: #ffffff;\n    color: #315b56;\n    font-family: inherit;\n    font-size: 12px;\n    font-weight: 600;\n    line-height: 1.4;\n    text-transform: none;\n    cursor: pointer;\n    box-shadow: none;\n  }\n\n  #neon-sway-reviews .nsr-toggle:hover {\n    background: #f1f6f5;\n  }\n\n  #neon-sway-reviews .nsr-toggle:focus-visible {\n    outline: 2px solid #315b56;\n    outline-offset: 4px;\n  }\n\n  #neon-sway-reviews[data-paused=\"true\"] .nsr-track {\n    animation-play-state: paused;\n  }\n\n  @media (hover: hover) {\n    #neon-sway-reviews .nsr-viewport:hover .nsr-track {\n      animation-play-state: paused;\n    }\n  }\n\n  @keyframes nsr-scroll {\n    from {\n      transform: translateX(0);\n    }\n    to {\n      transform: translateX(-50%);\n    }\n  }\n\n  @media (max-width: 749px) {\n    #neon-sway-reviews .nsr-shell {\n      padding-top: 34px;\n      padding-bottom: 30px;\n    }\n\n    #neon-sway-reviews h2 {\n      font-size: 25px;\n    }\n\n    #neon-sway-reviews .nsr-intro {\n      font-size: 14px;\n    }\n\n    #neon-sway-reviews .nsr-rows {\n      gap: 14px;\n      margin-top: 24px;\n    }\n\n    #neon-sway-reviews .nsr-group {\n      gap: 14px;\n      padding-right: 14px;\n    }\n\n    #neon-sway-reviews .nsr-card {\n      flex-basis: 250px;\n      width: 250px;\n      min-height: 240px;\n      padding: 19px 18px;\n    }\n\n    #neon-sway-reviews .nsr-text {\n      font-size: 14px;\n      line-height: 1.7;\n    }\n\n    #neon-sway-reviews .nsr-controls {\n      margin-top: 20px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    #neon-sway-reviews .nsr-track {\n      animation: none;\n      transform: none;\n    }\n\n    #neon-sway-reviews .nsr-viewport {\n      overflow-x: auto;\n      padding-bottom: 8px;\n    }\n\n    #neon-sway-reviews [data-nsr-copy],\n    #neon-sway-reviews [data-nsr-repeat] {\n      display: none;\n    }\n\n    #neon-sway-reviews .nsr-controls {\n      display: none;\n    }\n  }\n\u003c\/style\u003e\n\n\u003csection id=\"neon-sway-reviews\" data-paused=\"false\" aria-label=\"Neon Sway fictional review layout preview\"\u003e\n  \u003cdiv class=\"nsr-shell\"\u003e\n\n    \u003cdiv class=\"nsr-heading\"\u003e\n      \u003ch2\u003eA Tough Bike. A Very Fluffy Fan Club.\u003c\/h2\u003e\n\n      \u003cp class=\"nsr-intro\"\u003e\n        A little attitude. A little friendly roasting.\n        A whole lot of tail.\n      \u003c\/p\u003e\n\n      \u003cp class=\"nsr-preview\"\u003e\n        Layout preview — fictional reviews and profiles;\n        AI-generated portraits.\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nsr-rows\"\u003e\n\n      \u003c!-- 第一排：向左 --\u003e\n      \u003cdiv class=\"nsr-viewport\" data-nsr-row=\"0\"\u003e\n        \u003cdiv class=\"nsr-track\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003c!-- 第二排：向右 --\u003e\n      \u003cdiv class=\"nsr-viewport nsr-viewport--reverse\" data-nsr-row=\"1\"\u003e\n        \u003cdiv class=\"nsr-track\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nsr-controls\"\u003e\n      \u003cbutton class=\"nsr-toggle\" type=\"button\" aria-pressed=\"false\"\u003e\n        Pause scrolling\n      \u003c\/button\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById(\"neon-sway-reviews\");\n\n  if (!root || root.dataset.nsrReady === \"true\") return;\n  root.dataset.nsrReady = \"true\";\n\n  \/*\n   * 8张写实风格AI人物头像。\n   * 图片已直接嵌入，无需上传或填写外部链接。\n   *\/\n  var photos = [\n    \"data:image\/webp;base64,UklGRmICAABXRUJQVlA4IFYCAABQDQCdASpAAEAAPsFQoEwnpKMqsBQMAVAYCUAYoYfJ2SF31WaTxkGcq4nLBv\/W\/vMFbtqWcF0tDPheUJpAvhGmqCS4Ohub6MIvbHx\/DajDYCqhyCkbBskgflQ5yOLs6i6bCCbr9QT9cHMH\/R5Y6gSSykgAAP7rQXm0GhqLCP+SZPPSvflzY\/jiRBCVMML2cteWbWP8fBWtUmrVqvsYuYgv+GdGTh+ay2A32fjcihWLvbMNCjxHAhHN1e04Wwn2g4rVTRPM7tGOonO8MGpm43nA19fHCQec6u5aEeyj0eIAlIA0GbmBmXTPXwf+B8Ab0trGlRj0oRygCKqyv2S4+sLZRbnpXebK5UD9\/PGElBdZJgMwdAVha7A3yflu4s2Fa9W1IIrk8kzEX2rhXka\/K3+FurMwSsusHYNiiC2c2j87b5Y4jlfqC9U4Go5PzOetx+ex6W2Gd0WSwSqqnmw2tz7XgufyOdVWL\/1k3WvBFiUvxIbc37GWl\/xpeN7s3mTR6eEargU3eiQeuReQ8zG0\/LNDnHuzZgt0hwIKokxAlE3mSrsOFBvu\/CG1XnStpXlcMCf37NJZr0rNn41DFjB6BDuD8E5zlADgCAbmZZ60XJBn3M80jxDy12UuxMoA9pd9l9gzkHDkGV54aBHDCYj47rcfUv9jq01wooMlV64g5XFTbyYMQvbTApB2wdTKOyRVs8Qv315y1M9+a7wGB9zVerrWsgwy9srf++bFW+kmgcpwniZfWQ0\/0rUxJcQi3tXafjBkDSLhYXfUcmmztedC4BzvqYaWgAAA\",\n\n    \"data:image\/webp;base64,UklGRoQCAABXRUJQVlA4IHgCAADQDgCdASpAAEAAPsFMnUunpCKhsfcaSPAYCUAXZpFhD+x5dkU6AT0JFODBgiGNm5rTUgnFL37IHalXOwbKJEo8RnrR43sQ8MaWpoJrITFa+4tXjoawlkaVlceWI1ueHED7Nds7KSK3tHSdVXrDM3nx5jfm5xZavJ7onBIoUMWAAP7tPsxxnT4IpQft4g2T2jNr6Tn9emBIYHVjpH11n2b4kdyeYByS6Q52xQlbPmkS\/1Gh1GTP9ZVkW098XNqeWNoPk6yxSwu1m4hlzOaTLS6hD6MtIdAmYtGnIc1OY4WHLFMcL\/YzloVyzB80p0Jweu1KQTYOTh7M7rRzYd75sKRwhQpH\/bXHq1FVjvbpl1gqpK3wG1zJGd8gwaW8BPxI8Ubyd27LSiKSfC4Eyq0e5e4fELZTj8nSHOB3ou1VBwhHRVA2kyVX6x6lnxQj+YNLwIMu4DOdmwrKzLYGwOAR0TjETzvsiwqaN\/b91aIkmEXDveTWRpnEH0GejAitjLDpvAJ4pNtNSqB9HzuJ2R0u\/Yr4zsE5m\/U69j\/llk5w\/0laRy4UulII+rQS9fojX59CLCIAdpwLf2P8CJ7S0hCoWwCUOA3mL4NHc\/MN\/iBBxsARFqtraEadCtG+eNsaxcr+lc4qxi7uhp5XFZccL4FPs8U2KI630ahTE9Mduor9EnJbCEVzeErXmazRAl\/p7EQVlgbPQr0u0Eg48WsTOYJZiCIeXS7VesoC2BziRJzE60faVtz8bsrW13qiIqw\/UEglTDAG3lqSx\/Zb6k4P0BhtU5fvIjHNQFC2QsZnUG7O6FKdIwQts1s7gpt3xd2V71I5lBCVnaNnemgAAA==\",\n\n    \"data:image\/webp;base64,UklGRn4CAABXRUJQVlA4IHICAADwDgCdASpAAEAAPsFSoUunpKMhrhbbiPAYCWYAr73sWT57EdoNTxncZ7IlONw9wXpdNPiNvetZxx5Xk4tXSksft7Al2aHswQxBJo5Y2r7vA0EqZsGtMR1tHOg6PPNZ3W9JO+zGrqSBjCXrnsEq0T1t2G2vNm2sJbLmCIaHMeK0QAD+6Nj96ym+fOiqvObyMM1L3dV9AROixSaZBIlwgL5MPVdg96dA8CgUhrmptJFF62pxguSQGH4BQnrr30hjGYmf280kVUjIaFCcIXDLFMa\/i9nkP9bPoAAvuhB7PpqixAa7WLBzi2258Isu3mHftLdQ3pOcCn4cjgtHjf5xaoCF+4fXeIyIBjaac9wEzWep0bvdY2BbVxf\/8MzKapwAv8hAeGggOvnaMuVFrw7tDHKotNg3Z\/ROm0TYtOtCJ002oUnja7JfvE82QNc7FW+vqXWrbIbJb1gVyD5hWTDpI2APoco8iXs1NkwZmhQZBIEYPsCxGGeK1h+yVqj1MXCfZUS7BrFjduOT+piJ1IWFjkX+M0D37MNZyKU5tTnHRfAIZZnCAzvVclnVO3mwRCLdGTGiklfgm90\/dw4QI1pD\/vgtk3xHdy+MYVm6RvSwPyxOvHPto2\/pfByX3kX7JTWMdjFvU4gvNQSmLmxXVYWwyQXsmRMLFsOp8EtUmNFnAL90UN\/fcTZWy1jiM8Hjm8P53OhxCg\/RMCGfH5ZSwkBJVrGeZypPpQfT6u6j3riywjW7t7H5xEi3yu4cqB9VOijMhguryL5SbH91q\/3mAtzWvaVQlMHc+VprOpc4xmdoPBrIZzv7sg3yH4mwC96OW8ngAAAAAA==\",\n\n    \"data:image\/webp;base64,UklGRggCAABXRUJQVlA4IPwBAADwCwCdASpAAEAAPsFUoUynpKOiKhZtEPAYCU1yqzg9PKzRlfAEK2JxKgE9vB0hhkqmq3nc6YxkbPzkyzBdse\/q9eCs5Y\/O5IMbGfxLDyWh4r20tm86cskuWOFZu2ku6pK7aqVu\/zdJAAD+6\/9D8lsPpHi8zLbtsQD0fw75NZ67depMHZJoqt2EzEVaoMOnB3kWl2b1fDyz7Da8Wh6eG5mXjAQF7B3UcOwUi5hxHFmNmB3+tCGwWyLyZncO1odksK8o3h1Lvews\/8\/g\/KiSwHhmp4Cr5QdeBgy\/P78zGeG7SGkvb\/7pThwsFzH2DAFl6UqNKSGK9Z4wTk\/D7Y7ZnCYWBDZmD+gHPtUO+hE6O0xBPVCcBEOTOt7kpcpdcdG7AvpZjX9AGu2ybEhdtiANjVUNJgpkQk+aIxnnp9aHuhD4VK2dLyX14TlWz3CyUCuMYxJEB4WpCpW\/h7Z6w0pF8KqIbyunwPS5jRQQ45j1tPbs70RtRd4BFAuY9SLVnQ2hZVxC6NGoo6ZKxB09m2RY+8C3Sl3QMkbpGB94wTMar8sl7afUXDn\/1\/a\/13aotS9XC0inHFhAJWcYrEa2dRZB3zH1Tx9HTxT\/xs2oI1bsLX0dmSuzmQ4lrIYrvdtyxgFy+oO5kr2qjmGItriyP3r8l8Ee0unnDISZqI2oFAAA\",\n\n    \"data:image\/webp;base64,UklGRrQCAABXRUJQVlA4IKgCAADQDwCdASpAAEAAPsFQn0snpKKhsfOckPAYCWMAtoQBfhJrP9WaX3eWGLM9fV+KR54b7BxAIbx9L3ZClEXCQDolKTiAsX2JjFa+nOxfRXY9jgS8iUCA2oP3Xdp7U0XVXEIy4c3q8k9espFVlFBRIVyrqecB9Ii5T2p0YYCubtg39c5JeRxE59AA\/v02Mx8jEdSd9+G8PC2WkHeUey+TKS20o5DTArRKf4h7M36cVoFX91wviO6tvHR7\/lzFBl1HE3TthlybK\/PZUmNQc0oFle8iFkMMCbWbTecxs5znS453gYGuN64tNzeL72ryOrrRYQ5S0tV03LbgRIE1potl9Vn0Cb+t2HyS2EAcVj1mpqfuIf1IMAGW1D441dUEYtz85qkmAfqxAyFsg\/AtqWglAMCt5PPFzbLctwXixaYd6ZhlUWNV7kjubYbMeYPAtsBRuTWMoscQzPrq5m4AeRBVnjxXffHsvQclrfRL\/I7ZrXTaPsylBlKXVx\/BkDDW8kcxVceP7Pm2KlZJEEZ+d6l8lAhOKBCa\/pEghG2WU3eSMUX4D9iVzMuug77oZHUOy2SEptilBFBdrD3YjLJdnJ+V7xm9wlROdtEGuXPqVpj4acxj45o+7TTcecM9goIrIrCVnntB2g47TcjTxAraD67iIuOKY+G6FaqwUMnt6o6MgdrEgoeO65VvkwGqkcuq2402OilUSKUKuBklAdc3sF6HJ\/djE9ZSDIGHsFsLeI001SfUXF7pNJXczZsBjROAAYYBG7wOmQzZSnYYW9u\/pecmoRziaYbCla1o2O9TFcJMfj1sqNpdileGlYbPmZraXUlq+xbkcdRR5uDTNG\/B0nHQawzJ0OnAjMBLYPKy+XpqsBgfMkNqokRLc8Hq3bcAvzQe7GNZFhbXicEAAA==\",\n\n    \"data:image\/webp;base64,UklGRlICAABXRUJQVlA4IEYCAADQDQCdASpAAEAAPsFQoEsnpKMhsBYMAPAYCWIAwf+UPdS6esnBKBT+xhJhUQGWESDz+SjbegGdGeAb6QBUiazB\/C+7yk30q20gyXEG+qoN6L0HQIEohZABveRQuXiV4OVbTA8qL1yjRlXssgKnHltXMH9WeIkrYAD9+JALgoYwcnZU0kPELSlanWj\/6Kl2R8mF\/gFWKwrYSE2Tbef7o1S\/2taKuPCf+GwbtGEUrMom40VfLLSDxpKd0tYG04GeFhAmf5OMeYVjdzqQxO4kMrJqkqlKl1oqZILASkEsIlPZ6fMVwreVn5Zctpsr5mfzMpAd80bT9aRV0SXDc34ND3dB6y3PboPf98o++6mD8qXNfRb7PQ7c6x5g4Gzmdyqr3MAPblHwXgOCt06YbwI553bDaVV8qsz9mgfkvRKdWW35xgxNj\/bxZlL3q\/yJqJjL54Ta3rIHnRy4trTv+JIRvufo\/mwytl9zqoeJjaAFqNbahHJyRGdmYot1Dop8WMqa8waSLihIAcSSHWFuQIUcXKKGKby46Kxs90qVXRXmtqPHD9VMmGKLkNTMYKI0UV9AUb\/05UE9agG2C9A4AjNb5YNJpTZ88jsqrXeRBlnzO\/akVU8S9d7dwmEp7jig4K5h0NDiyyA7kGOsKcQ86PpYkd+UzsG\/is5KYrVae3W9q7cbA30rAjup\/JlwA\/ELEeUppYB5ETMtfwIss8NFAoUGIrMWELOtmM70ttcMSbLeu1gimDIQi96l3A5pUy7fL4yOy\/ut2dqYAAA=\",\n\n    \"data:image\/webp;base64,UklGRhACAABXRUJQVlA4IAQCAADwCwCdASpAAEAAPsFSoEunpKMlMBIM+PAYCUAYud6dAbPpKyCpzCE4jznPmQRP3pBL6KVJNZuYmuQlwccFrGD0Y8SkY8ZojiIhq+Wa7BgvSBQJKMpqMk6J5UtDG+DZS\/Tpfxm\/nv8yAADjX+8hp6deVoQfXrS3Nwn\/bb6k+wdjzGe4A3abNVzmALCNDFc3yp2ZcLbMxHehyWb2k1dGWTlpiK+WZ+JHe+A7WQGuydW5yU4apirjgqNwpRbyoZ5CWfuZFz4Dr8odnjrND0+JPo+zPkFzR\/t4Ewd\/KMpWGLjEl39gYPYQebSpmXJhUbcolF0bQ3RmY92oxVUiaMDnlTQiPa5aNCBvYnuMD4FYrS3N7WYO\/rrnBlqxvDwAFueWEapoKUeXNSTTVp8WLwl0EFVgQLa+0l9eWpdHt5NZllGlu7r4W9mBj9wlkB3Bfhz55ut7bnDy72xL4EZRbchkTHBCusMr7Si1eDm7M3J2pj2xekhxYY0Ca3yJhE9ZPPctJtVU9b\/uNyQfJxYDTfj8bbGyj17mLTHod2JgVxiLGOypBEchnCMGLfw8L9xrxkxycp0zNEwyPK1fbKRgDTuPzZTUvX2qR5fa1kbOGFbfaYRs7ObVnFGZIB+o2RpmsmPIfZLeFvmIrqapzKTSBiWN0\/2t1xJ\/4iMwOP7nmdsz61wIgmjAAAA=\",\n\n    \"data:image\/webp;base64,UklGRmACAABXRUJQVlA4IFQCAAAwDwCdASpAAEAAPsFUoUqnpSMhrBqsyPAYCWIAyFPeBka77EyZGwYaSOBx5WJZ0WixP8gzrWfkV0NNmZVmn4ABrRbqe435HSWICn0Ov05RVbDsQdSRI1q+fm7wn6Gy8znRfQyeSzEUnAL8XexBlBscCXerEhCnNbFhBjpM5fewRHnwAP72k9emmv5lA+rqZ+8+gUyMEzJIbvfc7vXu2Olp18+wveEZJJbT+JQarh6Wtgl6k4qagaDRe0xHZDLE06IVJnyzaO78otr7Fdg3GIkGL\/9DGjgBIuAUDBtFYRdognhesEyCBrsLYryfjpjnTHAluNdXm0eHuuhDlU6edzqiSAZqSibGWRcpW0cF63mk3RiGpmHvAHLdC8xwjNSLiOuT8fTPP7jy5SVNeNb13Ds75AJoTDFI5bpSFmQtml1GVQM1DEVZQnLkJDdPJMvIcMbFzk6kbbmlDJFNuq+mVuInLDn9g+ATIAE1vKXJlNK02ErUPR3eyOc\/DkHrp9C\/Enx57IigjG+JDvIrQzHnHFKtibPpmsEUE7\/A2JTraRS5gJeBXFx6uXUZYPHuTPbBbgIEsWZILPAXhwZkOaCmZfRQv2U4419RFQ4zUq6UfhbdU+YgxSEmsPOx3OWINyvcNCqiQqo2ZYNmvdzje3B2MKBP2qYP9HY9T8DjDsNwkZEzmL41QWf1ItA66Ij\/70euIobDR1+SdGQxpOH4e\/gShkHfYWnLWd+wrZ62YR4kPVyqr5roZQ0bKFtCRcewhLaCj7oaqT1yZraZCh3G+31i3gK0XRXAAA==\"\n  ];\n\n  \/*\n   * 示例姓名、国家、评分和评论。\n   * 头像与对应身份固定绑定，排列顺序随机。\n   *\/\n  var reviews = [\n    {\n      name: \"David M.\",\n      location: \"United States\",\n      rating: 5,\n      avatar: photos[0],\n      text: \"Black bike. Black jacket. Rainbow tail. Apparently, that’s where I draw the line on being a serious adult. The guys have already given it a nickname.\"\n    },\n    {\n      name: \"Mark T.\",\n      location: \"Canada\",\n      rating: 5,\n      avatar: photos[1],\n      text: \"My buddy gave me a hard time about the tail. Then he quietly asked if it came in blue. Funny how quickly a terrible idea becomes something he needs.\"\n    },\n    {\n      name: \"Robert K.\",\n      location: \"United Kingdom\",\n      rating: 5,\n      avatar: photos[2],\n      text: \"My wife picked the pink one. That’s my official story, and I’d appreciate everyone respecting it. Looks ridiculous on all that black and chrome. I love it.\"\n    },\n    {\n      name: \"Brian W.\",\n      location: \"Australia\",\n      rating: 4,\n      avatar: photos[3],\n      text: \"Definitely louder-looking than my usual accessories. The green is a lot, but that was kind of the point. Nobody’s going to accuse this bike of being subtle.\"\n    },\n    {\n      name: \"Linda P.\",\n      location: \"New Zealand\",\n      rating: 5,\n      avatar: photos[4],\n      text: \"Gave this to my husband, who apparently already owns every motorcycle accessory on earth. Turns out he was missing a fluffy tail. The look on his face was worth it.\"\n    },\n    {\n      name: \"Paul H.\",\n      location: \"Germany\",\n      rating: 5,\n      avatar: photos[5],\n      text: \"The little side-to-side swish gets me every time. I’ve spent years making this bike look tough, and one fluffy accessory has completely undermined my efforts.\"\n    },\n    {\n      name: \"Kevin S.\",\n      location: \"Ireland\",\n      rating: 5,\n      avatar: photos[6],\n      text: \"Went with orange because apparently the chrome wasn’t getting enough attention. The fluffy texture is such a funny contrast. It has absolutely no business looking this good.\"\n    },\n    {\n      name: \"James C.\",\n      location: \"France\",\n      rating: 5,\n      avatar: photos[7],\n      text: \"The rainbow glow is my favorite part once it gets dark. My bike now has more of a nightlife than I do. At least one of us is still interesting after dinner.\"\n    }\n  ];\n\n  \/* 每次加载只随机排列一次 *\/\n  for (var i = reviews.length - 1; i \u003e 0; i--) {\n    var j = Math.floor(Math.random() * (i + 1));\n    var temporary = reviews[i];\n    reviews[i] = reviews[j];\n    reviews[j] = temporary;\n  }\n\n  \/* 滚动速度：数字越大越快 *\/\n  var pixelsPerSecond = 27;\n\n  var shell = root.querySelector(\".nsr-shell\");\n\n  var rows = Array.prototype.slice.call(\n    root.querySelectorAll(\"[data-nsr-row]\")\n  );\n\n  var toggle = root.querySelector(\".nsr-toggle\");\n  var resizeFrame = 0;\n  var previousWidth = 0;\n\n  function getInitials(name) {\n    return String(name || \"\")\n      .trim()\n      .split(\/\\s+\/)\n      .slice(0, 2)\n      .map(function (part) {\n        return part.charAt(0);\n      })\n      .join(\"\")\n      .toUpperCase();\n  }\n\n  function createCard(review) {\n    var card = document.createElement(\"li\");\n    card.className = \"nsr-card\";\n\n    var person = document.createElement(\"div\");\n    person.className = \"nsr-person\";\n\n    var avatar = document.createElement(\"div\");\n    avatar.className = \"nsr-avatar\";\n    avatar.setAttribute(\"aria-hidden\", \"true\");\n\n    var img = document.createElement(\"img\");\n    img.src = review.avatar;\n    img.alt = \"\";\n    img.width = 50;\n    img.height = 50;\n    img.decoding = \"async\";\n\n    img.addEventListener(\"error\", function () {\n      avatar.textContent = getInitials(review.name);\n    });\n\n    avatar.appendChild(img);\n\n    var info = document.createElement(\"div\");\n    info.className = \"nsr-person-info\";\n\n    var name = document.createElement(\"p\");\n    name.className = \"nsr-name\";\n    name.textContent = review.name;\n    info.appendChild(name);\n\n    var location = document.createElement(\"p\");\n    location.className = \"nsr-location\";\n    location.textContent = review.location + \" · Demo\";\n    info.appendChild(location);\n\n    var numericRating = Number(review.rating);\n\n    var rating = Number.isFinite(numericRating)\n      ? Math.max(1, Math.min(5, Math.round(numericRating)))\n      : 5;\n\n    var stars = document.createElement(\"div\");\n    stars.className = \"nsr-stars\";\n    stars.setAttribute(\"role\", \"img\");\n\n    stars.setAttribute(\n      \"aria-label\",\n      \"Example rating: \" + rating + \" out of 5 stars\"\n    );\n\n    var filled = document.createElement(\"span\");\n    filled.setAttribute(\"aria-hidden\", \"true\");\n    filled.textContent = \"★\".repeat(rating);\n    stars.appendChild(filled);\n\n    if (rating \u003c 5) {\n      var empty = document.createElement(\"span\");\n      empty.className = \"nsr-stars-empty\";\n      empty.setAttribute(\"aria-hidden\", \"true\");\n      empty.textContent = \"★\".repeat(5 - rating);\n      stars.appendChild(empty);\n    }\n\n    info.appendChild(stars);\n\n    person.appendChild(avatar);\n    person.appendChild(info);\n\n    var text = document.createElement(\"p\");\n    text.className = \"nsr-text\";\n    text.textContent = review.text;\n\n    card.appendChild(person);\n    card.appendChild(text);\n\n    return card;\n  }\n\n  function buildRow(row, rowReviews) {\n    var track = row.querySelector(\".nsr-track\");\n    track.replaceChildren();\n\n    if (!rowReviews.length) {\n      row.hidden = true;\n      return;\n    }\n\n    row.hidden = false;\n\n    var group = document.createElement(\"ul\");\n    group.className = \"nsr-group\";\n\n    group.setAttribute(\n      \"aria-label\",\n      \"Fictional review layout examples\"\n    );\n\n    rowReviews.forEach(function (review) {\n      group.appendChild(createCard(review));\n    });\n\n    track.appendChild(group);\n\n    \/*\n     * 原始8组身份不重复。\n     * 循环副本用于无缝滚动和填满大屏幕。\n     *\/\n    var minimumWidth = row.clientWidth + 300;\n    var repeatIndex = 0;\n\n    while (\n      group.getBoundingClientRect().width \u003c minimumWidth \u0026\u0026\n      repeatIndex \u003c 100\n    ) {\n      var repeatedCard = createCard(\n        rowReviews[repeatIndex % rowReviews.length]\n      );\n\n      repeatedCard.setAttribute(\"aria-hidden\", \"true\");\n      repeatedCard.setAttribute(\"data-nsr-repeat\", \"\");\n\n      group.appendChild(repeatedCard);\n      repeatIndex++;\n    }\n\n    var copy = group.cloneNode(true);\n    copy.setAttribute(\"aria-hidden\", \"true\");\n    copy.setAttribute(\"data-nsr-copy\", \"\");\n    copy.setAttribute(\"inert\", \"\");\n    copy.removeAttribute(\"aria-label\");\n\n    track.appendChild(copy);\n\n    var groupWidth = group.getBoundingClientRect().width;\n    var duration = groupWidth \/ pixelsPerSecond;\n\n    track.style.setProperty(\n      \"--nsr-duration\",\n      duration.toFixed(2) + \"s\"\n    );\n  }\n\n  function updateLayout(force) {\n    if (!root.isConnected) return;\n\n    var viewportWidth = document.documentElement.clientWidth;\n\n    var rootLeft =\n      root.getBoundingClientRect().left +\n      window.scrollX +\n      root.clientLeft;\n\n    shell.style.setProperty(\n      \"--nsr-width\",\n      viewportWidth + \"px\"\n    );\n\n    shell.style.setProperty(\n      \"--nsr-offset\",\n      (-rootLeft) + \"px\"\n    );\n\n    if (!force \u0026\u0026 viewportWidth === previousWidth) return;\n    previousWidth = viewportWidth;\n\n    var splitAt = Math.ceil(reviews.length \/ 2);\n\n    buildRow(rows[0], reviews.slice(0, splitAt));\n    buildRow(rows[1], reviews.slice(splitAt));\n  }\n\n  function scheduleLayout() {\n    if (resizeFrame) {\n      cancelAnimationFrame(resizeFrame);\n    }\n\n    resizeFrame = requestAnimationFrame(function () {\n      resizeFrame = 0;\n      updateLayout(false);\n    });\n  }\n\n  toggle.addEventListener(\"click\", function () {\n    var paused = root.dataset.paused !== \"true\";\n\n    root.dataset.paused = String(paused);\n    toggle.setAttribute(\"aria-pressed\", String(paused));\n\n    toggle.textContent = paused\n      ? \"Resume scrolling\"\n      : \"Pause scrolling\";\n  });\n\n  updateLayout(true);\n\n  window.addEventListener(\n    \"resize\",\n    scheduleLayout,\n    { passive: true }\n  );\n\n  window.addEventListener(\n    \"load\",\n    scheduleLayout,\n    { once: true }\n  );\n\n  if (document.fonts \u0026\u0026 document.fonts.ready) {\n    document.fonts.ready.then(function () {\n      if (root.isConnected) updateLayout(true);\n    });\n  }\n\n  if (\"ResizeObserver\" in window) {\n    var observer = new ResizeObserver(scheduleLayout);\n    observer.observe(root);\n  }\n})();\n\u003c\/script\u003e","brand":"ZZ","offers":[{"title":"Colorful","offer_id":50783953322242,"sku":"SZ06412610176094-彩色","price":23.99,"currency_code":"USD","in_stock":true},{"title":"Pink","offer_id":50783953355010,"sku":"SZ06412610176094-粉色","price":23.99,"currency_code":"USD","in_stock":true},{"title":"Blue","offer_id":50783953387778,"sku":"SZ06412610176094-蓝色","price":23.99,"currency_code":"USD","in_stock":true},{"title":"Orange","offer_id":50783953420546,"sku":"SZ06412610176094-橙色","price":23.99,"currency_code":"USD","in_stock":true},{"title":"Green","offer_id":50783953453314,"sku":"SZ06412610176094-绿色","price":23.99,"currency_code":"USD","in_stock":true},{"title":"ALL(Set of 5)-Save 20% \u0026 Free Shipping","offer_id":50784732807426,"sku":"SZ06412610176094-彩色+粉色+蓝色+橙色+绿色","price":95.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0837\/7666\/7906\/files\/RainbowTailonaBlackCruiser.png?v=1792225892","url":"https:\/\/velmao.com\/de\/products\/neon-sway%e2%84%a2-glow-in-the-dark-motorcycle-tail","provider":"Velmao","version":"1.0","type":"link"}