{"title":"EVEN Vol.218 12月号掲載商品","description":"","products":[{"product_id":"911022k5600","title":"［サルベージパブリックコレパ］サーフ モックネック半袖 (Kolepa Stamp)","description":"\u003cp\u003e\u003cspan style=\"font-size: 18px; color: red;\"\u003e\u003cb\u003e特別価格\u003c\/b\u003e\u003c\/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cb\u003e￥11,000\u003c\/b\u003e\u003c\/span\u003e\u003cspan style=\"font-size: 12px;\"\u003e\u003cb\u003e（税込）\u003c\/b\u003e\u003c\/span\u003e→ \u003cspan style=\"font-size: 23px; color: red;\"\u003e\u003cb\u003e￥6,600\u003c\/b\u003e\u003c\/span\u003e\u003cspan style=\"font-size: 12px; color: red;\"\u003e\u003cb\u003e（税込）\u003c\/b\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003eラッシュガードとしても着用される水陸両用のストレッチ、吸水速乾、UVカットの高機能モックネックTee。\u003cbr\u003eプレー中の体の動きを考えて作られたオリジナルパターンのKolepaスリーブは肩回りの動きを妨げない。\u003cbr\u003eまた肩周りや脇ハギはフラットシーマにて縫製する事で肌触りもなめらかでプレー中のわずかなストレスも解消してくれます。\u003cbr\u003eボックスフィットのリラックスした雰囲気はハワイらしい仕上がりで爆発的に売れました。\u003cbr\u003eフロント胸中心にはブランドスタンプのプリント入り。\u003cbr\u003e背面にはダイアモンドヘッドロゴのプリント入り。\u003cbr\u003eSALVAGE PUBLIC Ohanaなら抑えておきたい1着。\u003cbr\u003e\u003cbr\u003e【素材】\u003cbr\u003eポリエステル100％\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ctable cellpadding=\"2\" cellspacing=\"0\" border=\"1\"\u003e\n\u003ctbody\u003e\n\u003ctr bgcolor=\"#E9E9E9\"\u003e\n\u003ctd bgcolor=\"#E9E9E9\" width=\"111\"\u003e\n\u003cdiv align=\"center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eS\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eM\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eL\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e着丈\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e70\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e72\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e73\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e身巾\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e53\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e56\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e58\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e裾巾\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e53\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e56\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e58\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e裄丈\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e51\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e53\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e56\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e袖口巾\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e18.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e19\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e20\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e※数値はセンチ、多少の誤差がございます\u003cbr\u003e\u003cbr\u003e製造国：日本\u003cbr\u003e\u003cbr\u003e※光や角度により、実物と色味が異なる場合がございます）\u003cbr\u003e※\u003cspan\u003e2023年春夏商品、\u003c\/span\u003e\u003cwbr\u003e\u003cspan\u003e2024年3月より特別\u003c\/span\u003e\u003cspan class=\"il\"\u003e価格\u003c\/span\u003e\u003cspan\u003eで販売中\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even28481.jpg?v=1714169228\" alt=\"\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even28493.jpg?v=1714169228\" alt=\"\"\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eモデル身長181㎝\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/1..jpg?v=1714169228\" alt=\"\"\u003e\u003c\/span\u003e\u003cspan\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2..jpg?v=1714169228\" alt=\"\"\u003e\u003c\/span\u003e商品コード｜911022k5600\u003cbr\u003e購入時納期｜3-4日\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"EVEN","offers":[{"title":"ホワイト \/ XS","offer_id":43759038726362,"sku":"911022k5611","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ S","offer_id":43759038759130,"sku":"911022k5612","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ M","offer_id":43759038791898,"sku":"911022k5613","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ L","offer_id":43759038824666,"sku":"911022k5614","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"レッド \/ XS","offer_id":43759038857434,"sku":"911022k5621","price":6600.0,"currency_code":"JPY","in_stock":true},{"title":"レッド \/ S","offer_id":43759038890202,"sku":"911022k5622","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"レッド \/ M","offer_id":43759038922970,"sku":"911022k5623","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"レッド \/ L","offer_id":43759038955738,"sku":"911022k5624","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"ネイビー \/ XS","offer_id":43759038988506,"sku":"911022k5631","price":6600.0,"currency_code":"JPY","in_stock":true},{"title":"ネイビー \/ S","offer_id":43759039021274,"sku":"911022k5632","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"ネイビー \/ M","offer_id":43759039054042,"sku":"911022k5633","price":6600.0,"currency_code":"JPY","in_stock":false},{"title":"ネイビー \/ L","offer_id":43759039086810,"sku":"911022k5634","price":6600.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even6235_aa450cbf-f4b5-44d5-a9b0-eae45432b296.jpg?v=1714169228"},{"product_id":"911022k5100","title":"KAHAKAI PILE POLO S\/S（DH PATCH)","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eハワイ語でビーチを意味する『Kahakai』とネーミングされたビーチパイルポロ。\u003cbr\u003eリラックスした雰囲気に仕上げたスキッパーポロシャツはハワイの正装とされるハワイアンシャツのオープンカラーからインスピレーションを得た襟元のデザインが特徴的。\u003cbr\u003e独自に開発したオリジナルパイルは驚きのストレッチ性を発揮してスムーズで快適なプレーをサポートします。\u003cbr\u003eUVカット、接触冷感、吸水性もあり。\u003cbr\u003eビーチカルチャーを背景にしたブランドらしくゆったりとしたシルエットに仕上げた1枚。\u003cbr\u003eスウィングを妨げる事のないラグランスリーブ仕様。\u003cbr\u003eメッシュ編みのブランドロゴ入りの襟もインパクトあり。\u003cbr\u003eシンプルに左胸に付けたダイアモンドヘッドロゴパッチが好印象。\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003c!-- 列の追加：\u003cth\u003e列名\u003c\/th\u003e を theadの\u003ctr\u003eに、\u003ctd\u003e数値\u003c\/td\u003e を各サイズ行に追加 --\u003e\n      \u003c!-- サイズ行の非表示：該当の \u003ctr\u003e〜\u003c\/tr\u003e を丸ごと削除またはコメントアウト --\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003e裄丈\u003c\/th\u003e\n\u003cth\u003e身幅\u003c\/th\u003e\n\u003cth\u003e着丈\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e44\u003c\/td\u003e\n\u003ctd\u003e51\u003c\/td\u003e\n\u003ctd\u003e62.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e46\u003c\/td\u003e\n\u003ctd\u003e54.5\u003c\/td\u003e\n\u003ctd\u003e65\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e48\u003c\/td\u003e\n\u003ctd\u003e58\u003c\/td\u003e\n\u003ctd\u003e68.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-ss-tshirt_d0868dc3-2734-4b77-82d4-592fc74c932f.png?v=1783049024\"\u003eS\u003c\/button\u003e\n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-ss-tshirt_dc3bdc42-dfea-4c03-8071-c4e6bdfef01d.png?v=1783049024\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-ss-tshirt_eb3ac34e-64b1-45f7-9975-8d9d04ab4425.png?v=1783049024\"\u003eL\u003c\/button\u003e\n            \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SIZE] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n      \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKS3021\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003e911022k5100\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eレーヨン52％、ポリエステル48％\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm \/ L着用\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main9.jpg?v=1685668749\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main9.jpg?v=1685668749\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main10.jpg?v=1685668749\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main10.jpg?v=1685668749\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_01.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_01.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_012.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_012.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_02.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_02.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main12.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main12.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main13.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main13.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main11.jpg?v=1685668749\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main11.jpg?v=1685668749\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC09070_ff0e660f-28cb-4789-b3fb-1d2201546711.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC09070_ff0e660f-28cb-4789-b3fb-1d2201546711.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC09080.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC09080.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main4.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main4.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main5.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main5.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main6.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main6.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_03.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_03.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_04.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/911022k5122_04.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main14.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main14.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 16\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main15.jpg?v=1695446410\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/even911022k5100_main15.jpg?v=1695446410\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 17\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2copy..jpg?v=1685669170\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2copy..jpg?v=1685669170\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 18\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\u003c\/div\u003e\n\n\n\n\n","brand":"EVEN","offers":[{"title":"オーシャン \/ S","offer_id":43796564672730,"sku":"911022k5131","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"オーシャン \/ M","offer_id":43796564705498,"sku":"911022k5132","price":10560.0,"currency_code":"JPY","in_stock":true},{"title":"オーシャン \/ L","offer_id":43796564738266,"sku":"911022k5133","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ S","offer_id":43796564476122,"sku":"911022k5111","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ M","offer_id":43796564508890,"sku":"911022k5112","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ L","offer_id":43796564541658,"sku":"911022k5113","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"グレージュ \/ S","offer_id":43796564574426,"sku":"911022k5121","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"グレージュ \/ M","offer_id":43796564607194,"sku":"911022k5122","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"グレージュ \/ L","offer_id":43796564639962,"sku":"911022k5123","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ S","offer_id":43796564771034,"sku":"911022k5141","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ M","offer_id":43796564803802,"sku":"911022k5142","price":10560.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ L","offer_id":43796564836570,"sku":"911022k5143","price":10560.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/products\/even911022k5100_main9.jpg?v=1685668749"},{"product_id":"9110210300","title":"mystical-g ゴルフキット","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cbr\u003e \u003cstrong\u003eクラブは自宅で、簡単ガラスコーティング\u003c\/strong\u003e\u003cbr\u003e \u003cbr\u003e 先日、久しぶりにゴルフをご一緒させていただいた先輩のキャディバッグを覗いた際、かれこれ十年以上前に発売されたアイアンセットが、その当時のコンディションを綺麗に保ったまま、収まっていたのが印象的に残っている。\u003cbr\u003e \u003cbr\u003e 多くのプロスポーツで、名選手と言われるプレーヤーほど、自身の道具を大事に扱うという話を聞いたことがあるが、ゴルフでもクラブやシューズの手入れをする時間が至福の時というゴルファーは多いだろう。そんな手入れやメンテナンスの力強い味方となるのが、「mystical-g」の『ゴルフキット』。\u003cbr\u003e \u003cbr\u003e 自身でクラブに塗ることができるプロ仕様ガラスコーティングキットで、密封包装された溶剤とマイクロファイバークロスを使用し、ナノレベルの超薄膜100％無機質ガラスコーティングを塗布、従来のコーティング剤をしのぐ保護性能で、クラブを小傷や汚れから守ってくれる。下ろし立てのクラブに施工すれば、綺麗な状態が持続。ピカピカのクラブで気持ちよくプレーできますよ！\u003cbr\u003e \u003cbr\u003e 容量：1キットで約3本分のクラブヘッドに施工可能\u003cbr\u003e \u003cbr\u003e\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【mystical-g】\u003cbr\u003e\n\u003cp\u003e防弾ガラスの技術を応用した、ナノレベルの超薄膜100％無機質ガラスコーティングブランドです。スマホや電子機器だけでなく、革製品、靴、車やバイク、ゴルフ用品など幅広いアイテムを傷や汚れから保護します。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n \n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003emystical-g\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003e9110210300\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:原産国] --\u003e\n\n\u003c!-- [VAL:素材] --\u003e\n\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/ev9110210300_main.jpg?v=1682123879\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/ev9110210300_main.jpg?v=1682123879\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/ev9110210300_s1.jpg?v=1682123878\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/ev9110210300_s1.jpg?v=1682123878\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n","brand":"EVEN","offers":[{"title":"Default Title","offer_id":43802018021594,"sku":"9110210300","price":4840.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/products\/ev9110210300_main.jpg?v=1682123879"},{"product_id":"911023b0600","title":"［ムータマリン］2TONE FUR ヘッドカバー／ユーティリティ用","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003eラグジュアリー感ある色と遊び心を感じるファー仕様\u003c\/strong\u003e\u003cbr\u003e\n\u003cbr\u003e\nEVEN別注としてムータマリン人気のクリアキャディバッグをご存知の方も多いでしょう。そう第1弾のクリアブルーが即完売となり、第２弾がクリアブラウンモデルも追加入荷されるほどの好評なキャデバッグ。そんな人気キャディバッグとぴったりのムータマリンのヘッドカバー各種が2月からEVEN公式サイトで販売開始になります。\u003cbr\u003e\n\u003cbr\u003e\nソリッドで濃いブラウンが大人顔の印象なキャディバッグと相性の良いベージューのヘッドカバー。異素材のファーが足されることによって、そんじょそこらのゴルフ場では同アイテムで被る人もいないはずですよ。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e\n          2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003ctable class=\"size-table\"\u003e\n        \u003cthead\u003e\n          \u003ctr\u003e\n            \u003cth\u003eSIZE\u003c\/th\u003e\n            \u003cth\u003eサイズ\u003c\/th\u003e\n          \u003c\/tr\u003e\n        \u003c\/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003cth\u003eF\u003c\/th\u003e\n            \u003ctd\u003e約25cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003e911023b0600\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eポリエステル\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main_1_85a312ea-87e4-4b18-9ecd-6a040ca615ce.jpg?v=1680346060\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main_1_85a312ea-87e4-4b18-9ecd-6a040ca615ce.jpg?v=1680346060\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main1_1.jpg?v=1680346061\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main1_1.jpg?v=1680346061\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main2_2.jpg?v=1680346061\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main2_2.jpg?v=1680346061\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main3_1.jpg?v=1680346060\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main3_1.jpg?v=1680346060\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main4_1.jpg?v=1680346060\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main4_1.jpg?v=1680346060\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main5_1.jpg?v=1680346060\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/products\/thumb_even911023b0600_main5_1.jpg?v=1680346060\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":43834931085530,"sku":"911023b0600","price":14300.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/products\/thumb_even911023b0600_main_1.jpg?v=1680347280"},{"product_id":"s25k0119k","title":"MAKALOA BLACK WITH PHOTOCHROMIC GREY LENSES","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== 商品紹介動画（レスポンシブ） ========== *\/\n    .ProductMeta__Video {\n      margin-bottom: 16px;\n    }\n    .ProductMeta__VideoWrapper {\n      position: relative;\n      width: 100%;\n      padding-top: 56.25%; \/* 16:9 *\/\n    }\n    .ProductMeta__VideoWrapper iframe {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      border: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eサルベージパブリックコレパのアイウェア、定番的なウェリントン型のモデルです。\u003cbr\u003e調光レンズを使用しているので、室内でも屋外でもゴルフプレイ中も最適な明るさでお使いいただけます。\u003cbr\u003eモデル名「MAKALOA」という言葉を二つに分けるとMaka(目)、Loa（長い）という意味になります。\u003cbr\u003e長い目とは先を見つめる事の出来る目”遠くまで見渡せる目”というメッセージを込めて付けられました。\u003cbr\u003eフレームはBio Glass（生分解性バイオマスプラスチック）で、環境にやさしい、すべて土に還る素材。安定感のあるフィッティングとクリアグレーの綺麗な色味が特徴です。\u003cbr\u003e世界屈指のメガネの産地である福井県\/鯖江で製作しました。\u003c\/p\u003e\n\u003cp\u003eそしてレンズには、シンボルマークでもあるダイヤモンドヘッドをレーザー刻印しています。\u003c\/p\u003e\n\u003cp\u003e\u003cimg height=\"500\" width=\"500\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/3-DSC099581.jpg?v=1715573663\" alt=\"\"\u003e\u003cbr\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\n\n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n               \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKE003\u003c\/td\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eS25K0119K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eレンズの材質：プラスチック\u003cbr\u003e\n継続光線透過率：93％ (最大濃色の時) \/ 22% (静かクリアに近い時)\u003cbr\u003e\n紫外線透過率 1.8％\u003cbr\u003e\nフレーム：生分解性プラスチック\u003cbr\u003e\nテンプル：生分解性プラスチック\u003cbr\u003e\n※光や角度により、実物と色味が異なる場合がございます\u003cbr\u003e\n付属品：収納ソフトケース\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:モデル] --\u003e\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKE003-BLK-PGR_MAKALOA_2.png?v=1781622935\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKE003-BLK-PGR_MAKALOA_2.png?v=1781622935\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKE003-BLK-PGR_MAKALOA_1.png?v=1781622935\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKE003-BLK-PGR_MAKALOA_1.png?v=1781622935\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2391.jpg?v=1693276464\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2391.jpg?v=1693276464\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2390.jpg?v=1693276464\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2390.jpg?v=1693276464\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2396.jpg?v=1693276464\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2396.jpg?v=1693276464\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2395.jpg?v=1693276464\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC2395.jpg?v=1693276464\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/3-DSC09958.jpg?v=1693276464\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/3-DSC09958.jpg?v=1693276464\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/4-DSC09968.jpg?v=1693276464\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/4-DSC09968.jpg?v=1693276464\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/5-DSC09972.jpg?v=1693276464\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/5-DSC09972.jpg?v=1693276464\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/3-DSC099581.jpg?v=1715573663\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/3-DSC099581.jpg?v=1715573663\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even49156.jpg?v=1694134342\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even49156.jpg?v=1694134342\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\n      \u003c\/div\u003e\n\n\n\n\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44043382685914,"sku":"S25K0119K-01-00","price":15400.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/SVKE003-BLK-PGR_MAKALOA_2.png?v=1781622935"},{"product_id":"ev23co0137a","title":"［GORILLA　COSMETICS］SE ウォッシュ＆シェーブ","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003e男性の肌を知り尽くした化粧品の安心感！\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e乾燥するこれからの季節に取り入れてもらいたいのが、ゴリラコスメティクス。美肌菌の肌に着目した男性肌のためのスキンケアアイテムには、男性50名のDNAレベルでのヒトゲノム解析データをもとにトラブルを起こしやすい肌、起こしにくい肌を分析。そこにアプローチできる独自成分を配合している。肌に優しいことも特徴なので美容初心者がまず手に取るアイテムとしても最適だ。\u003cbr\u003e\u003cbr\u003e清潔な肌を保つサポートに加えシェービングフォームにも\u003cbr\u003eポンプ式で泡作りが不要であり、濃密な泡が余分な皮脂や汚れを取り除く日本製の泡状洗顔料。4種のセラミドや2種のヒアルロン酸などうるおい成分も贅沢に配合されている。アロマテラピー効果のある天然の精油を処方し、ゼラニウムとラベンダーをブレンドした香りも男性好みだ。\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e＜香り＞\u003cbr\u003eアロマテラピー効果のある天然の精油を処方し、ゼラニウムとラベンダーの香りをブレンド。\u003cbr\u003eゼラニウムは、落ち着いたグリーン系の香りが感じられ、不安やストレスを和らげるだけでなく、皮脂分泌のバランスをとるスキンケア作用も期待できます。\u003cbr\u003eラベンダーは、フローラルな甘さの中にハーブ調のさわやかさを感じる柔らかな香りで、ストレスによる緊張や不安をやわらげ、安定した精神状態へ導きます。\u003cbr\u003e\u003cbr\u003e＜ご使用法＞\u003cbr\u003e１．ぬるま湯で顔を濡らし、3プッシュ（ピンポン玉程度）を手の平にのせ、顔全体に優しく塗布。\u003cbr\u003e２．泡をクッションにするイメージで優しく顔全体を洗う。Tゾーン（額や鼻）は皮脂などの汚れがたまりやすいので入念に。\u003cbr\u003e３．流水を手に摂ってしっかりと洗い流し、タオルで優しく拭く。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【GORILLA　COSMETICS】\u003cbr\u003e\n         男性美容クリニックの現場で培った知見から誕生したメンズスキンケアブランドです。皮膚常在菌に着目した「SEコンディショナー」などの基礎化粧品を中心に、洗顔、日焼け止め、ヘアケア製品などを展開しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n      \u003cth\u003e箱幅\u003c\/th\u003e\n      \u003cth\u003e箱奥行\u003c\/th\u003e\n      \u003cth\u003e箱高さ\u003c\/th\u003e\n      \u003cth\u003eボトル直径\u003c\/th\u003e\n      \u003cth\u003eボトル高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e49.5mm\u003c\/td\u003e\n      \u003ctd\u003e49.5mm\u003c\/td\u003e\n      \u003ctd\u003e167mm\u003c\/td\u003e\n      \u003ctd\u003e49mm\u003c\/td\u003e\n      \u003ctd\u003e165mm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n容量：150ml／重量：230g（化粧箱含む）\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eGORILLA　COSMETICS\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23co0137a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003e水、グリセリン、ＰＧ、カリ石ケン素地、ジグリセリン、エンテロコッカスフェカリス、α－グルカンオリゴサッカリド、クロレラエキス、加水分解ローヤルゼリータンパク、グルコシルセラミド、セラミドＮＧ、セラミドＮＰ、セラミドＡＰ、アセチルヒアルロン酸Ｎａ、ヒアルロン酸ヒドロキシプロピルトリモニウム、フランスカイガンショウ樹皮エキス、エーデルワイスカルス培養エキス、ロドデンドロンフェルギネウム葉培養細胞エキス、エリンギウムマリチムムカルス培養液、プロパンジオール、ベタイン、ペンテト酸５Ｎａ、セルロース、セルロースガム、キサンタンガム、イソマルト、ベヘニルアルコール、ペンタステアリン酸ポリグリセリル－１０、オレイン酸ポリグリセリル－１０、ステアロイルラクチレートＮａ、レシチン、イソステアリン酸フィトステリル、コメヌカ油、乳酸、ラベンダー油、ニオイテンジクアオイ油、安息香酸Ｎａ、フェノキシエタノール\u003cbr\u003e\n            \u003cbr\u003e\n※使用期期：製造後3年\u003cbr\u003e\n※テスト：パッチテスト　OK、アレルギーテスト（RIPTテスト）　OK、ノンコメドジェニックテスト　OK\u003cbr\u003e\n※フリー成分：パラベン、アルコール（エチルアルコール）、鉱物油、石油系界面活性剤、合成香料、着色料フリー\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284087_re.jpg?v=1695175309\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284087_re.jpg?v=1695175309\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51359.jpg?v=1695175310\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51359.jpg?v=1695175310\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12935.jpg?v=1695175326\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12935.jpg?v=1695175326\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51514.jpg?v=1695175326\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51514.jpg?v=1695175326\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44093702373594,"sku":"ev23co0137a","price":2000.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2112284087_re.jpg?v=1695175309"},{"product_id":"ev23co0138a","title":"［GORILLA　COSMETICS］SE コンディショナー","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003e男性の肌を知り尽くした化粧品の安心感！\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e乾燥するこれからの季節に取り入れてもらいたいのが、ゴリラコスメティクス。美肌菌の肌に着目した男性肌のためのスキンケアアイテムには、男性50名のDNAレベルでのヒトゲノム解析データをもとにトラブルを起こしやすい肌、起こしにくい肌を分析。そこにアプローチできる独自成分を配合している。肌に優しいことも特徴なので美容初心者がまず手に取るアイテムとしても最適だ。\u003cbr\u003e\u003cbr\u003e爽やかな香りと贅沢に配合されたうるおい成分でキメを整える\u003cbr\u003eうるおい成分ラ・フローラEC-12*1とバイオエコリア*2、4種のセラミド、2種のヒアルロン酸に加えて3種の植物幹細胞培養エキスを配合。うるおいを保ちキメを整えるので若々しい肌作りを助けてくれる。アフターシェーブにも最適で、さっぱりとしたテクスチャーは男性にも使いやすい。\u003cbr\u003e\u003cbr\u003e*1　エンテロコッカスフェカリス（ヒト由来乳酸菌）\u003cbr\u003e*2　αーグルカンオリゴサッカリド（オリゴ糖の一種）\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e＜香り＞\u003cbr\u003eアロマテラピー効果のある天然の精油を処方し、ゼラニウムとラベンダーの香りをブレンド。\u003cbr\u003eゼラニウムは、落ち着いたグリーン系の香りが感じられ、不安やストレスを和らげるだけでなく、皮脂分泌のバランスをとるスキンケア作用も期待できます。\u003cbr\u003eラベンダーは、フローラルな甘さの中にハーブ調のさわやかさを感じる柔らかな香りで、ストレスによる緊張や不安をやわらげ、安定した精神状態へ導きます。\u003cbr\u003e\u003cbr\u003e＜ご使用法＞\u003cbr\u003e１．洗顔や髭剃りの後、2プッシュ（500円硬貨大）を手に取り、顔全体に塗布。\u003cbr\u003e２．化粧水を肌の奥へ押し込むイメージで、指の腹を使いながら顔全体に優しくなじませる。\u003cbr\u003e３．耳周りや首元にも優しくしっかりなじませ、再度２プッシュ手に取り、同じように繰り返す。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【GORILLA　COSMETICS】\u003cbr\u003e\n         男性美容クリニックの現場で培った知見から誕生したメンズスキンケアブランドです。皮膚常在菌に着目した「SEコンディショナー」などの基礎化粧品を中心に、洗顔、日焼け止め、ヘアケア製品などを展開しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n      \u003cth\u003e箱幅\u003c\/th\u003e\n      \u003cth\u003e箱奥行\u003c\/th\u003e\n      \u003cth\u003e箱高さ\u003c\/th\u003e\n      \u003cth\u003eボトル直径\u003c\/th\u003e\n      \u003cth\u003eボトル高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e43mm\u003c\/td\u003e\n      \u003ctd\u003e43mm\u003c\/td\u003e\n      \u003ctd\u003e183mm\u003c\/td\u003e\n      \u003ctd\u003e42mm\u003c\/td\u003e\n      \u003ctd\u003e180mm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n容量：150ml／重量：222g（化粧箱含む）\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eGORILLA　COSMETICS\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23co0138a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003e水、ＢＧ、トレハロース、ペンチレングリコール、マルチトール、グリセリン、エンテロコッカスフェカリス、α－グルカンオリゴサッカリド、加水分解ローヤルゼリータンパク、グルコシルセラミド、クロレラエキス、セラミドＮＧ、セラミドＮＰ、セラミドＡＰ、ヒアルロン酸Ｎａ、アセチルヒアルロン酸Ｎａ、カルボキシメチルヒアルロン酸Ｎａ、フランスカイガンショウ樹皮エキス、パルミチン酸アスコルビルリン酸３Ｎａ、アラントイン、グリチルリチン酸２Ｋ、エーデルワイスカルス培養エキス、ロドデンドロンフェルギネウム葉培養細胞エキス、エリンギウムマリチムムカルス培養液、ＰＥＧ－４００、シクロヘキサン－１，４－ジカルボン酸ビスエトキシジグリコール、ＰＥＧ－４０水添ヒマシ油、クエン酸Ｎａ、セルロース、セルロースガム、クエン酸、キサンタンガム、加水分解シルク、イソマルト、ベヘニルアルコール、ペンタステアリン酸ポリグリセリル－１０、オレイン酸ポリグリセリル－１０、ステアロイルラクチレートＮａ、プロパンジオール、レシチン、イソステアリン酸フィトステリル、コメヌカ油、乳酸、ラベンダー油、ニオイテンジクアオイ油、安息香酸Ｎａ、フェノキシエタノール\u003cbr\u003e\n            \u003cbr\u003e\n※使用期期：製造後3年\u003cbr\u003e\n※テスト：パッチテスト　OK、アレルギーテスト（RIPTテスト）　OK、ノンコメドジェニックテスト　OK\u003cbr\u003e\n※フリー成分：パラベン、アルコール（エチルアルコール）、鉱物油、石油系界面活性剤、合成香料、着色料フリー\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284081_re.jpg?v=1695175774\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284081_re.jpg?v=1695175774\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51370.jpg?v=1695175788\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51370.jpg?v=1695175788\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12933.jpg?v=1695175788\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12933.jpg?v=1695175788\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44093712859354,"sku":"ev23co0138a","price":3200.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2112284081_re.jpg?v=1695175774"},{"product_id":"ev23co0139a","title":"［GORILLA　COSMETICS］SE ミルク","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003e男性の肌を知り尽くした化粧品の安心感！\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e乾燥するこれからの季節に取り入れてもらいたいのが、ゴリラコスメティクス。美肌菌の肌に着目した男性肌のためのスキンケアアイテムには、男性50名のDNAレベルでのヒトゲノム解析データをもとにトラブルを起こしやすい肌、起こしにくい肌を分析。そこにアプローチできる独自成分を配合している。肌に優しいことも特徴なので美容初心者がまず手に取るアイテムとしても最適だ。\u003cbr\u003e\u003cbr\u003e使いやすいのにしっかり保湿を叶える乳液\u003cbr\u003eうるおいとハリを保ち、つややかで若々しい印象の肌に導く乳液。うるおい成分ラ・フローラEC-12*1とバイオエコリア*2、4種のセラミド、2種のヒアルロン酸に加えて3種の植物幹細胞培養エキスが配合されている。乾燥をひどく感じる季節でもなめらかに整え長時間うるおいをキープ。\u003cbr\u003e\u003cbr\u003e*1　エンテロコッカスフェカリス（ヒト由来乳酸菌）\u003cbr\u003e*2　αーグルカンオリゴサッカリド（オリゴ糖の一種）\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e＜香り＞\u003cbr\u003eアロマテラピー効果のある天然の精油を処方し、ゼラニウムとラベンダーの香りをブレンド。\u003cbr\u003eゼラニウムは、落ち着いたグリーン系の香りが感じられ、不安やストレスを和らげるだけでなく、皮脂分泌のバランスをとるスキンケア作用も期待できます。\u003cbr\u003eラベンダーは、フローラルな甘さの中にハーブ調のさわやかさを感じる柔らかな香りで、ストレスによる緊張や不安をやわらげ、安定した精神状態へ導きます。\u003cbr\u003e\u003cbr\u003e＜ご使用法＞\u003cbr\u003e１．化粧水で肌を整えた後、2プッシュ（10円硬貨大）を手に取り、顔全体に塗布。\u003cbr\u003e２．乳液を肌の奥へ押し込むイメージで、指の腹を使って顔全体に優しくなじませる。\u003cbr\u003e３．再度2プッシュ手に取り、皮脂が多い所や乾燥している所、耳の周りや首元にも優しくしっかりなじませる。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【GORILLA　COSMETICS】\u003cbr\u003e\n         男性美容クリニックの現場で培った知見から誕生したメンズスキンケアブランドです。皮膚常在菌に着目した「SEコンディショナー」などの基礎化粧品を中心に、洗顔、日焼け止め、ヘアケア製品などを展開しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n      \u003cth\u003e箱幅\u003c\/th\u003e\n      \u003cth\u003e箱奥行\u003c\/th\u003e\n      \u003cth\u003e箱高さ\u003c\/th\u003e\n      \u003cth\u003eボトル直径\u003c\/th\u003e\n      \u003cth\u003eボトル高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e37.5mm\u003c\/td\u003e\n      \u003ctd\u003e37.5mm\u003c\/td\u003e\n      \u003ctd\u003e142mm\u003c\/td\u003e\n      \u003ctd\u003e37mm\u003c\/td\u003e\n      \u003ctd\u003e140mm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n容量：80ml／重量：123g（化粧箱含む）\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eGORILLA　COSMETICS\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23co0139a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003e水、ＢＧ、トリエチルヘキサノイン、シクロペンタシロキサン、イソノナン酸イソトリデシル、ペンチレングリコール、デキストラン、エンテロコッカスフェカリス、α－グルカンオリゴサッカリド、クロレラエキス、加水分解ローヤルゼリータンパク、グルコシルセラミド、セラミドＮＧ、セラミドＮＰ、セラミドＡＰ、３－Ｏ－エチルアスコルビン酸、スクワラン、グリセリン、フランスカイガンショウ樹皮エキス、パルミチン酸レチノール、加水分解ヒアルロン酸、オリゴペプチド－２０、トリフルオロアセチルトリペプチド－２、ロドデンドロンフェルギネウム葉培養細胞エキス、エーデルワイスカルス培養エキス、エリンギウムマリチムムカルス培養液、アセチルヒアルロン酸Ｎａ、ミツロウ、マカデミアナッツ脂肪酸フィトステリル、トリ（カプリル酸／カプリン酸）グリセリル、水添レシチン、（アクリル酸ヒドロキシエチル／アクリロイルジメチルタウリンＮａ）コポリマー、イソヘキサデカン、キサンタンガム、ポリソルベート６０、セタノール、カルノシン、イソマルト、トコフェロール、ベヘニルアルコール、コーン油、ペンタステアリン酸ポリグリセリル－１０、オレイン酸ポリグリセリル－１０、ステアロイルラクチレートＮａ、プロパンジオール、レシチン、イソステアリン酸フィトステリル、コメヌカ油、乳酸、ラベンダー油、ニオイテンジクアオイ油、安息香酸Ｎａ、フェノキシエタノール\u003cbr\u003e\n            \u003cbr\u003e\n※使用期期：製造後3年\u003cbr\u003e\n※テスト：パッチテスト　OK、アレルギーテスト（RIPTテスト）　OK、ノンコメドジェニックテスト　OK\u003cbr\u003e\n※フリー成分：パラベン、アルコール（エチルアルコール）、鉱物油、石油系界面活性剤、合成香料、着色料フリー\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284089_re.jpg?v=1695176017\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284089_re.jpg?v=1695176017\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51375.jpg?v=1695176017\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51375.jpg?v=1695176017\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12943.jpg?v=1695176017\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12943.jpg?v=1695176017\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44093722591450,"sku":"ev23co0139a","price":3800.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2112284089_re.jpg?v=1695176017"},{"product_id":"ev23co0140a","title":"［GORILLA　COSMETICS］SE UVプロテクション","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cbr\u003e\u003cstrong\u003e男性の肌を知り尽くした化粧品の安心感！\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e乾燥するこれからの季節に取り入れてもらいたいのが、ゴリラコスメティクス。美肌菌の肌に着目した男性肌のためのスキンケアアイテムには、男性50名のDNAレベルでのヒトゲノム解析データをもとにトラブルを起こしやすい肌、起こしにくい肌を分析。そこにアプローチできる独自成分を配合している。肌に優しいことも特徴なので美容初心者がまず手に取るアイテムとしても最適だ。\u003cbr\u003e\u003cbr\u003e保湿成分も配合された男性好みな日焼け止め\u003cbr\u003e洗顔で落とすことができ、白くなりずらい使用感など、男性が日焼け止めに求めたい要素を満たした一本。紫外線だけでなく大気中の汚れなどから肌を守ってくれることも特徴だ。また保湿成分も配合されている。爽やかな天然香料を使用したラベンダーゼラニウムの香りも男性好み。\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e＜香り＞\u003cbr\u003eアロマテラピー効果のある天然の精油を処方し、ゼラニウムとラベンダーの香りをブレンド。\u003cbr\u003eゼラニウムは、落ち着いたグリーン系の香りが感じられ、不安やストレスを和らげるだけでなく、皮脂分泌のバランスをとるスキンケア作用も期待できます。\u003cbr\u003eラベンダーは、フローラルな甘さの中にハーブ調のさわやかさを感じる柔らかな香りで、ストレスによる緊張や不安をやわらげ、安定した精神状態へ導きます。\u003cbr\u003e\u003cbr\u003e＜ご使用法＞\u003cbr\u003e１．小指の頭分程を手に取り、両頬・額・あごに日焼け止めを塗布。\u003cbr\u003e２．ムラにならないよう均一に、顔全体に優しくなじませる。\u003cbr\u003e３．頬・額・鼻などの焼けやすい部分には重ね付けをし、首の前後にも優しくしっかりなじませる。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【GORILLA　COSMETICS】\u003cbr\u003e\n         男性美容クリニックの現場で培った知見から誕生したメンズスキンケアブランドです。皮膚常在菌に着目した「SEコンディショナー」などの基礎化粧品を中心に、洗顔、日焼け止め、ヘアケア製品などを展開しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n      \u003cth\u003e箱幅\u003c\/th\u003e\n      \u003cth\u003e箱奥行\u003c\/th\u003e\n      \u003cth\u003e箱高さ\u003c\/th\u003e\n      \u003cth\u003eボトル直径\u003c\/th\u003e\n      \u003cth\u003eボトル高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e35mm\u003c\/td\u003e\n      \u003ctd\u003e25.5mm\u003c\/td\u003e\n      \u003ctd\u003e146mm\u003c\/td\u003e\n      \u003ctd\u003e20mm\u003c\/td\u003e\n      \u003ctd\u003e142mm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n容量：30g／重量：47g（化粧箱含む）\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eGORILLA　COSMETICS\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23co0140a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003e水、酸化亜鉛、ＢＧ、スクワラン、パルミチン酸エチルヘキシル、グリセリン、ポリヒドロキシステアリン酸、酸化チタン、エンテロコッカスフェカリス、クロレラエキス、トレハロース、グリコシルトレハロース、加水分解水添デンプン、加水分解ローヤルゼリータンパク、グルコシルセラミド、セラミドＮＧ、セラミドＮＰ、セラミドＡＰ、アセチルヒアルロン酸Ｎａ、加水分解ヒアルロン酸アルキル（Ｃ１２－１３）グリセリル、フランスカイガンショウ樹皮エキス、トリフルオロアセチルトリペプチド－２、オリゴペプチド－２０、エーデルワイスカルス培養エキス、ロドデンドロンフェルギネウム葉培養細胞エキス、エリンギウムマリチムムカルス培養液、パルミチン酸レチノール、ヒメフウロエキス、シロキクラゲ多糖体、トコフェロール、エルゴチオネイン、ジメチコン、ペンチレングリコール、ベヘニルアルコール、ポリメチルシルセスキオキサン、（アクリロイルジメチルタウリンアンモニウム／ＶＰ）コポリマー、ホホバエステル、メチコン、水酸化Ａｌ、イソステアリン酸、ヒドロキシプロピルメチルセルロースステアロキシエーテル、ｔ－ブタノール、ラフィノース、イソマルト、コーン油、ペンタステアリン酸ポリグリセリル－１０、オレイン酸ポリグリセリル－１０、ステアロイルラクチレートＮａ、プロパンジオール、レシチン、イソステアリン酸フィトステリル、コメヌカ油、乳酸、キサンタンガム、デキストラン、ラベンダー油、ニオイテンジクアオイ油、安息香酸Ｎａ、フェノキシエタノール\u003cbr\u003e\n            \u003cbr\u003e\n※使用期期：製造後3年\u003cbr\u003e\n※テスト：パッチテスト　OK、アレルギーテスト（RIPTテスト）　OK、ノンコメドジェニックテスト　OK\u003cbr\u003e\n※フリー成分：紫外線吸収剤、パラベン、アルコール（エチルアルコール）、鉱物油、石油系界面活性剤、合成香料、着色料フリー ※SPF35　PA+++\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284095_re.jpg?v=1695176699\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284095_re.jpg?v=1695176699\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH54727.jpg?v=1695176699\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH54727.jpg?v=1695176699\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12948.jpg?v=1695176699\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/1128_gorilla12948.jpg?v=1695176699\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44093724295386,"sku":"ev23co0140a","price":3000.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2112284095_re.jpg?v=1695176699"},{"product_id":"ev23co0141a","title":"［GORILLA　COSMETICS］SE メディカルセラム","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003e男性の肌を知り尽くした化粧品の安心感！\u003c\/strong\u003e\u003cbr\u003e\n\u003cbr\u003e\n乾燥するこれからの季節に取り入れてもらいたいのが、ゴリラコスメティクス。美肌菌の肌に着目した男性肌のためのスキンケアアイテムには、男性50名のDNAレベルでのヒトゲノム解析データをもとにトラブルを起こしやすい肌、起こしにくい肌を分析。そこにアプローチできる独自成分を配合している。肌に優しいことも特徴なので美容初心者がまず手に取るアイテムとしても最適だ。\u003cbr\u003e\n\u003cbr\u003e\n若々しさに必要なシミを予防*1しシワの改善を助ける美容液\u003cbr\u003e\nシミを予防*1、シワを改善する効果が認められた有効成分「ナイアシンアミド」やスクワランなどを配合。濃密なクリーム状美容液が悩み箇所にしっかりと密着してくれる。角質にうるおいももたらしてくれるゴルファー必携の一本。化粧水、乳液のあと、スキンケアの仕上げとして使用。\u003cbr\u003e\n\u003cbr\u003e\n*1　メラニンの生成を抑え、シミ・そばかすを防ぐこと\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n＜香り＞\u003cbr\u003e\n無香料\u003cbr\u003e\n\u003cbr\u003e\n＜ご使用法＞\u003cbr\u003e\n１．化粧水・乳液で肌を整えた後、目元・口元など悩みの気になる部分に、各部位につきお米1粒程度を塗布。\u003cbr\u003e\n２．摩擦しないよう優しく馴染ませる。\u003cbr\u003e\n３．より密着させるために薬指の広い面で軽くプレスする。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【GORILLA　COSMETICS】\u003cbr\u003e\n         男性美容クリニックの現場で培った知見から誕生したメンズスキンケアブランドです。皮膚常在菌に着目した「SEコンディショナー」などの基礎化粧品を中心に、洗顔、日焼け止め、ヘアケア製品などを展開しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n      \u003cth\u003e箱幅\u003c\/th\u003e\n      \u003cth\u003e箱奥行\u003c\/th\u003e\n      \u003cth\u003e箱高さ\u003c\/th\u003e\n      \u003cth\u003eボトル直径\u003c\/th\u003e\n      \u003cth\u003eボトル高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e35mm\u003c\/td\u003e\n      \u003ctd\u003e25.5mm\u003c\/td\u003e\n      \u003ctd\u003e129mm\u003c\/td\u003e\n      \u003ctd\u003e19mm\u003c\/td\u003e\n      \u003ctd\u003e127mm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n容量：20g／重量：36g（化粧箱含む）\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eGORILLA　COSMETICS\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23co0141a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003e有効成分：ナイアシンアミド\u003cbr\u003e\nその他の成分：スクワラン、酵母エキス（３）、セイヨウナシ果汁発酵液、アロエエキス（２）、シソエキス（１）、シア脂、ミツロウ、マカデミアナッツ油脂肪酸フィトステリル、濃グリセリン、精製水、ジグリセリン、硬化ナタネ油アルコール、セタノール、ミリスチン酸オクチルドデシル、キサンタンガム、１，３－ブチレングリコール、デカメチルシクロペンタシロキサン、メチルポリシロキサン、カルボキシビニルポリマー、疎水化ヒドロキシプロピルメチルセルロース、水酸化ナトリウム、グリセリル－Ｎ－(２－メタクリロイルオキシエチル)カルバメート・メタクリル酸ステアリル共重合体、ヒドロキシエチルセルロースヒドロキシプロピルステアリルエーテルヒドロキシプロピルスルホン酸ナトリウム、無水エタノール、１，２－ペンタンジオール、無水ケイ酸、ベヘニルアルコール、フェノキシエタノール\u003cbr\u003e\n            \u003cbr\u003e\n※使用期期：製造後3年\u003cbr\u003e\n※テスト：パッチテスト　OK、アレルギーテスト（RIPTテスト）　OK\u003cbr\u003e\n※フリー成分：パラベン、アルコール（エチルアルコール）、鉱物油、石油系界面活性剤、合成香料、着色料フリー\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284097_re.jpg?v=1695176957\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284097_re.jpg?v=1695176957\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51473.jpg?v=1695176957\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51473.jpg?v=1695176957\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44093729374426,"sku":"ev23co0141a","price":3500.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2112284097_re.jpg?v=1695176957"},{"product_id":"ev23co0143a","title":"［GORILLA　COSMETICS］SE　ハンドクリーム","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cbr\u003e\u003cstrong\u003e男性の肌を知り尽くした化粧品の安心感！\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e乾燥するこれからの季節に取り入れてもらいたいのが、ゴリラコスメティクス。美肌菌の肌に着目した男性肌のためのスキンケアアイテムには、男性50名のDNAレベルでのヒトゲノム解析データをもとにトラブルを起こしやすい肌、起こしにくい肌を分析。そこにアプローチできる独自成分を配合している。肌に優しいことも特徴なので美容初心者がまず手に取るアイテムとしても最適だ。\u003cbr\u003e\u003cbr\u003e使用感と香りの心地よさを備えたハンドクリーム\u003cbr\u003eうるおい成分ラ・フローラEC-12*1とバイオエコリア*2、4種のセラミド、2種のヒアルロン酸に加えて3種の植物幹細胞培養エキスが、手荒れやカサつきを防ぐ。菌バランスを整えて荒れにくく潤った手肌に導くとともにバリア機能もサポート。サラっとしたテクスチャーで使いやすさもあり。\u003cbr\u003e\u003cbr\u003e*1　エンテロコッカスフェカリス（ヒト由来乳酸菌）\u003cbr\u003e*2　αーグルカンオリゴサッカリド（オリゴ糖の一種）\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e＜香り＞\u003cbr\u003eアロマテラピー効果のある天然の精油を処方し、ゼラニウムとラベンダーの香りをブレンド。\u003cbr\u003eゼラニウムは、落ち着いたグリーン系の香りが感じられ、不安やストレスを和らげるだけでなく、皮脂分泌のバランスをとるスキンケア作用も期待できます。\u003cbr\u003eラベンダーは、フローラルな甘さの中にハーブ調のさわやかさを感じる柔らかな香りで、ストレスによる緊張や不安をやわらげ、安定した精神状態へ導きます。\u003cbr\u003e\u003cbr\u003e＜ご使用法＞\u003cbr\u003e１．乾燥が気になる時に、手の甲に1.5cm程度を出し、手の甲同士をすり合わせてクリームを伸ばす。\u003cbr\u003e２．乾燥しやすい指先や爪は、親指でもみ込むようにしてクリームをなじませる。\u003cbr\u003e３．余ったクリームを手の平・手首まで伸ばす。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【GORILLA　COSMETICS】\u003cbr\u003e\n         男性美容クリニックの現場で培った知見から誕生したメンズスキンケアブランドです。皮膚常在菌に着目した「SEコンディショナー」などの基礎化粧品を中心に、洗顔、日焼け止め、ヘアケア製品などを展開しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n      \u003cth\u003e箱幅\u003c\/th\u003e\n      \u003cth\u003e箱奥行\u003c\/th\u003e\n      \u003cth\u003e箱高さ\u003c\/th\u003e\n      \u003cth\u003eボトル直径\u003c\/th\u003e\n      \u003cth\u003eボトル高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e48mm\u003c\/td\u003e\n      \u003ctd\u003e48mm\u003c\/td\u003e\n      \u003ctd\u003e136mm\u003c\/td\u003e\n      \u003ctd\u003e37mm\u003c\/td\u003e\n      \u003ctd\u003e134mm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n容量：65g／重量：93.7g（化粧箱含む）\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eGORILLA　COSMETICS\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23co0143a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003e水、スクワラン、ＢＧ、ベヘニルアルコール、グリセリン、メドウフォーム油、ペンチレングリコール、バチルアルコール、フェノキシエタノール、ヒドロキシプロピルメチルセルロースステアロキシエーテル、カルボマー、ラベンダー油、水酸化Ｎａ、エリンギウムマリチムムカルス培養液、ホホバ種子油、イソマルト、エーデルワイスカルス培養エキス、ＰＣＡ－Ｎａ、乳酸Ｎａ、エンテロコッカスフェカリス、α－グルカンオリゴサッカリド、アセチルヒアルロン酸Ｎａ、フランスカイガンショウ樹皮エキス、プロパンジオール、アルギニン、アスパラギン酸、ＰＣＡ、ペンタステアリン酸ポリグリセリル－１０、加水分解ローヤルゼリータンパク、ライム果汁、オレンジ果汁、レシチン、オレイン酸ポリグリセリル－１０、グリシン、アラニン、ステアロイルラクチレートＮａ、クロレラエキス、レモン果汁、ロドデンドロンフェルギネウム葉培養細胞エキス、セリン、バリン、トレオニン、プロリン、イソステアリン酸フィトステリル、イソロイシン、乳酸、コメヌカ油、サンザシエキス、ナツメ果実エキス、グレープフルーツ果実エキス、リンゴ果実エキス、安息香酸Ｎａ、キサンタンガム、セラミドＮＰ、セラミドＡＰ、ヒスチジン、フェニルアラニン、セラミドＮＧ、グルコシルセラミド\u003cbr\u003e\n            \u003cbr\u003e\n            ※使用期期：製造後3年\u003cbr\u003e\n※テスト：パッチテスト　OK、アレルギーテスト（RIPTテスト）　OK\u003cbr\u003e\n※フリー成分：パラベン、アルコール（エチルアルコール）、鉱物油、石油系界面活性剤、合成香料、着色料フリー\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284092_re.jpg?v=1695177751\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284092_re.jpg?v=1695177751\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51381.jpg?v=1695177751\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51381.jpg?v=1695177751\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51649.jpg?v=1695177751\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51649.jpg?v=1695177751\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44093735993562,"sku":"ev23co0143a","price":1900.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2112284092_re.jpg?v=1695177751"},{"product_id":"ev23co0144a","title":"［GORILLA　COSMETICS］SE　ボディミルク","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003e男性の肌を知り尽くした化粧品の安心感！\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e乾燥するこれからの季節に取り入れてもらいたいのが、ゴリラコスメティクス。美肌菌の肌に着目した男性肌のためのスキンケアアイテムには、男性50名のDNAレベルでのヒトゲノム解析データをもとにトラブルを起こしやすい肌、起こしにくい肌を分析。そこにアプローチできる独自成分を配合している。肌に優しいことも特徴なので美容初心者がまず手に取るアイテムとしても最適だ。\u003cbr\u003e優しい使用感とべたつかないテクチャーで全身保湿。\u003cbr\u003e菌バランスを整えて肌トラブルの起きにくい健康的な素肌へと導いてくれる全身用乳液。水分を抱え込み逃さない保湿成分を高配合。べたつきのないサラっとしたテクスチャーで使いやすいこともポイント。敏感肌の方でも使える安心感を備え、全身を乾燥から守り、うるおいとハリを保つ。\u003cbr\u003e\u003cbr\u003e＜香り＞\u003cbr\u003eアロマテラピー効果のある天然の精油を処方し、ゼラニウムとラベンダーの香りをブレンド。\u003cbr\u003eゼラニウムは、落ち着いたグリーン系の香りが感じられ、不安やストレスを和らげるだけでなく、皮脂分泌のバランスをとるスキンケア作用も期待できます。\u003cbr\u003eラベンダーは、フローラルな甘さの中にハーブ調のさわやかさを感じる柔らかな香りで、ストレスによる緊張や不安をやわらげ、安定した精神状態へ導きます。\u003cbr\u003e\u003cbr\u003e＜ご使用法＞\u003cbr\u003e１．入浴後、体を拭いた後に２～３プッシュを手に取る。\u003cbr\u003e２．腕・脚など、からだ全体に優しくなじませる。\u003cbr\u003e３．さらに１プッシュ手に取り、乾燥しやすいひじ・ひざ・かかとなどに重ねて塗る。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【GORILLA　COSMETICS】\u003cbr\u003e\n         男性美容クリニックの現場で培った知見から誕生したメンズスキンケアブランドです。皮膚常在菌に着目した「SEコンディショナー」などの基礎化粧品を中心に、洗顔、日焼け止め、ヘアケア製品などを展開しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n      \u003cth\u003e箱幅\u003c\/th\u003e\n      \u003cth\u003e箱奥行\u003c\/th\u003e\n      \u003cth\u003e箱高さ\u003c\/th\u003e\n      \u003cth\u003eボトル直径\u003c\/th\u003e\n      \u003cth\u003eボトル高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e47mm\u003c\/td\u003e\n      \u003ctd\u003e47mm\u003c\/td\u003e\n      \u003ctd\u003e200mm\u003c\/td\u003e\n      \u003ctd\u003e45mm\u003c\/td\u003e\n      \u003ctd\u003e195mm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n容量：200ml／重量：269g（化粧箱含む）\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eGORILLA　COSMETICS\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23co0144a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003e水、BG、スクワラン、トリイソステアリン、グリセリン、ペンチレングリコール、ベヘニルアルコール、ジメチコン、フェノキシエタノール、キサンタンガム、ヒドロキシエチルセルロース、ヒドロキシプロピルメチルセルロースステアロキシエーテル、(アクリレーツ\/アクリル酸アルキル(C10-30))クロスポリマー、ラベンダー油、水酸化Na、ニオイテンジクアオイ油、ビスグリセリルアスコルビン酸、エーデルワイスカルス培養エキス、オレイン酸ポリグリセリル-10、エクトイン、α-グルカンオリゴサッカリド、アセチルヒアルロン酸Na、フランスカイガンショウ樹皮エキス、プロパンジオール、エンテロコッカスフェカリス、エリンギウムマリチムムカルス培養液、イソマルト、レシチン、オプンチアフィクスインジカ茎エキス、コメヌカ油、ペンタステアリン酸ポリグリセリル-1 0、加水分解ローヤルゼリータンパク、ヒアルロン酸クロスポリマーNa、ヒドロキシア セトフェノン、ステアロイルラクチレートNa、クロレラエキス、サガラメエキス、イソステ\nアリン酸フィトステリル、グルコシルセラミド、セラミドNP、セラミドAP、乳酸、セラミドN\nG、ロドデンドロンフェルギネウム葉培養細胞エキス、安息香酸Na\u003cbr\u003e\n            \u003cbr\u003e\n            ※使用期期：製造後3年\u003cbr\u003e\n※テスト：パッチテスト　OK・アレルギーテスト（RIPTテスト）　OK・ノンコメドジェニックテスト　OK\u003cbr\u003e\n※フリー成分：パラベン、アルコール（エチルアルコール）、鉱物油、石油系界面活性剤、合成香料、着色料フリー\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284079_re.jpg?v=1695177951\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2112284079_re.jpg?v=1695177951\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51455.jpg?v=1695177951\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51455.jpg?v=1695177951\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51666.jpg?v=1695177951\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/PGH51666.jpg?v=1695177951\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Default Title","offer_id":44093738385626,"sku":"ev23co0144a","price":3800.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/2112284079_re.jpg?v=1695177951"},{"product_id":"ev23bo0096k","title":"WELA FLEECE PANTS (SUN)","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e1タック入りのテイパードシルエットが美しいフリース素材のイージートラウザーパンツ。\u003cbr\u003eウエストはリフレクターのスピンドル＆ゴム入りのリラックスした雰囲気にしつつ、片玉縁仕様のバックポケットはスッキリと綺麗な仕上がりに。\u003cbr\u003eWaleとはハワイ語で暖かいを意味する言葉。\u003cbr\u003e保温性の高いマイクロフリースのイージーパンツ。\u003cbr\u003e抜群の保温性に加え、極端に厚過ぎないフリース生地を採用しているのでプレーの妨げにもならず手放せない１着。\u003cbr\u003e左腿にSUNとダイアモンドヘッドがデザインされた刺繍が入る。\u003cbr\u003eDO YOU PLAY UNDER THE SUN（太陽の下でプレーしますか）といかにもハワイならではのメッセージがハワイ語と英語で入ったSALVAGE PUBLICならではのデザインが◎\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003c!-- 列の追加：\u003cth\u003e列名\u003c\/th\u003e を theadの\u003ctr\u003eに、\u003ctd\u003e数値\u003c\/td\u003e を各サイズ行に追加 --\u003e\n      \u003c!-- サイズ行の非表示：該当の \u003ctr\u003e〜\u003c\/tr\u003e を丸ごと削除またはコメントアウト --\u003e\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003eウエスト\u003c\/th\u003e\n\u003cth\u003e股上\u003c\/th\u003e\n\u003cth\u003e股下\u003c\/th\u003e\n\u003cth\u003eわたり\u003c\/th\u003e\n\u003cth\u003e裾幅\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e99\u003c\/td\u003e\n\u003ctd\u003e26\u003c\/td\u003e\n\u003ctd\u003e66.4\u003c\/td\u003e\n\u003ctd\u003e34\u003c\/td\u003e\n\u003ctd\u003e17\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e103\u003c\/td\u003e\n\u003ctd\u003e26.5\u003c\/td\u003e\n\u003ctd\u003e67.8\u003c\/td\u003e\n\u003ctd\u003e35.5\u003c\/td\u003e\n\u003ctd\u003e18.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e107\u003c\/td\u003e\n\u003ctd\u003e26.5\u003c\/td\u003e\n\u003ctd\u003e69.3\u003c\/td\u003e\n\u003ctd\u003e36.2\u003c\/td\u003e\n\u003ctd\u003e19\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eXL\u003c\/th\u003e\n\u003ctd\u003e111\u003c\/td\u003e\n\u003ctd\u003e27.5\u003c\/td\u003e\n\u003ctd\u003e70.5\u003c\/td\u003e\n\u003ctd\u003e37.3\u003c\/td\u003e\n\u003ctd\u003e20\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-pants_a67faa5c-fa94-4936-a70a-c15824aa3b19.png?v=1783317102\"\u003eS\u003c\/button\u003e\n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-pants_cf244ca4-198c-4689-bc45-5e7cf27a04da.png?v=1783317102\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-pants_eec9807b-5f3f-45bd-84ae-318946a47cc1.png?v=1783317102\"\u003eL\u003c\/button\u003e\n            \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n                        \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-pants.png?v=1783317102\"\u003eXL\u003c\/button\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SIZE] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n      \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA3031\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev23bo0096k\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eポリエステル100％\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4272.jpg?v=1696224076\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4272.jpg?v=1696224076\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4274.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4274.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4267.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4267.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4269.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4269.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4276_4ed16a43-927e-41a6-b22c-8b7008373ada.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4276_4ed16a43-927e-41a6-b22c-8b7008373ada.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4277.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-_B7A4277.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_8.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_8.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_1.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_1.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_3.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_3.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_5.jpg?v=1697521075\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/2023-02-2714.55.02_5.jpg?v=1697521075\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\u003c\/div\u003e\n\n\n\n\n","brand":"EVEN","offers":[{"title":"タン \/ S","offer_id":44108589826266,"sku":"ev23bo0096k21","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"タン \/ M","offer_id":44108589859034,"sku":"ev23bo0096k22","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"タン \/ L","offer_id":44108589891802,"sku":"ev23bo0096k23","price":11880.0,"currency_code":"JPY","in_stock":true},{"title":"タン \/ XL","offer_id":44108589924570,"sku":"ev23bo0096k24","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"エメラルド \/ S","offer_id":44108589957338,"sku":"ev23bo0096k31","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"エメラルド \/ M","offer_id":44108589990106,"sku":"ev23bo0096k32","price":11880.0,"currency_code":"JPY","in_stock":true},{"title":"エメラルド \/ L","offer_id":44108590022874,"sku":"ev23bo0096k33","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"エメラルド \/ XL","offer_id":44108590055642,"sku":"ev23bo0096k34","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ S","offer_id":44108589695194,"sku":"ev23bo0096k11","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ M","offer_id":44108589727962,"sku":"ev23bo0096k12","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ L","offer_id":44108589760730,"sku":"ev23bo0096k13","price":11880.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ XL","offer_id":44108589793498,"sku":"ev23bo0096k14","price":11880.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DNP-_B7A4272_d3b08702-8b7d-40b1-a8dd-4c9d0dab7315.jpg?v=1697521075"},{"product_id":"ev24bo0229k","title":"［サルベージパブリックコレパ］カアラ テックショーツ","description":"\u003cp\u003e\u003cbr\u003e人気のベイカーショーツをUPデートしたモデル。\u003cbr\u003eさらっと肌離れの良いストレッチナイロンを使いストレスなくプレーを楽しめます。\u003cbr\u003e左裾ぐるりと入れたLei柄がSALVAGE PUBLICならではの特別な雰囲気に仕上がっています。これまで右バックポケットのみでしたが、左後ろにもスリットポケットを加え収納力を増したところも嬉しいポイント。\u003cbr\u003eウエストはIN／OUT仕様のスピンドル使いにベルトループも備えている。\u003cbr\u003e右後ろ裾には小さくダイアモンドヘッドロゴのリフレクタープリントが入りアクセントとなっています。\u003cbr\u003eKa'ala（カアラ）はオアフ島で最も高い山の名前ですが、Ka ＝The. ʻAla ＝ Fragranceというハワイ語でもあり「甘い香り」と訳す事も出来るSALVAGE PUBLICらしい素敵なネーミングです。\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e【素材】\u003cbr\u003eナイロン90％、ポリウレタン10％\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"2\"\u003e\n\u003ctbody\u003e\n\u003ctr bgcolor=\"#E9E9E9\"\u003e\n\u003ctd width=\"111\" bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eS\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eM\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eL\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eXL\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e脇丈\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e41.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e43.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e45.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e47.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003eウエスト\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e78\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e82\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e86\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e90\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003eヒップ\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e115\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e119\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e123\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e127\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e股上\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e28\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e28.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e29\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e29.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e股下\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e14\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e15.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e17\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e18.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e裾幅\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e30\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e31.2\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e32.4\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e33.6\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e渡り\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e35\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e36.3\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e37.6\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e38.9\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e※数値はセンチ、多少の誤差がございます\u003cbr\u003e\u003cbr\u003e製造国：中国製\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/230825_0440_02.jpg?v=1713148301\" alt=\"\"\u003e\u003cbr\u003e\u003cbr\u003e商品コード｜ev24bo0229k\u003cbr\u003e購入時納期｜3-4日\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e","brand":"EVEN","offers":[{"title":"セージ \/ S","offer_id":44355963650266,"sku":"ev24bo0229k21","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"セージ \/ M","offer_id":44355963683034,"sku":"ev24bo0229k22","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"セージ \/ L","offer_id":44355963715802,"sku":"ev24bo0229k23","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"セージ \/ XL","offer_id":44355963748570,"sku":"ev24bo0229k24","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"グリーン \/ S","offer_id":44355963781338,"sku":"ev24bo0229k31","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"グリーン \/ M","offer_id":44355963814106,"sku":"ev24bo0229k32","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"グリーン \/ L","offer_id":44355963846874,"sku":"ev24bo0229k33","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"グリーン \/ XL","offer_id":44355963879642,"sku":"ev24bo0229k34","price":17600.0,"currency_code":"JPY","in_stock":true},{"title":"ブラック \/ S","offer_id":44355963519194,"sku":"ev24bo0229k11","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ M","offer_id":44355963551962,"sku":"ev24bo0229k12","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ L","offer_id":44355963584730,"sku":"ev24bo0229k13","price":17600.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ XL","offer_id":44355963617498,"sku":"ev24bo0229k14","price":17600.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/230825_0440_02.jpg?v=1713148301"},{"product_id":"ev24to0256k","title":"SURF MOCKNECK S\/S(OAHU)","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n本拠地であるオアフ島をデザインした秀逸なグラフィックが映える1枚。\u003cbr\u003e\nラッシュガードとしても着用される水陸両用のストレッチ、吸水速乾、UVカットの高機能モックネックTee。\u003cbr\u003e\nプレー中の体の動きを考えて作られたオリジナルパターンのKolepaスリーブは肩回りの動きを妨げない。\u003cbr\u003e\nまた肩周りや脇ハギはフラットシーマにて縫製する事で肌触りもなめらかでプレー中のわずかなストレスも解消してくれます。ボックスフィットのリラックスした雰囲気はハワイらしい仕上がりでSALVAGE PUBLICの大人気アイテムとなりました。\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003c!-- 列の追加：\u003cth\u003e列名\u003c\/th\u003e を theadの\u003ctr\u003eに、\u003ctd\u003e数値\u003c\/td\u003e を各サイズ行に追加 --\u003e\n      \u003c!-- サイズ行の非表示：該当の \u003ctr\u003e〜\u003c\/tr\u003e を丸ごと削除またはコメントアウト --\u003e\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003e裄丈\u003c\/th\u003e\n\u003cth\u003e身幅\u003c\/th\u003e\n\u003cth\u003e着丈\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e53.55\u003c\/td\u003e\n\u003ctd\u003e52\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e55.59\u003c\/td\u003e\n\u003ctd\u003e55\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e57.62\u003c\/td\u003e\n\u003ctd\u003e58\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eXL\u003c\/th\u003e\n\u003ctd\u003e59.66\u003c\/td\u003e\n\u003ctd\u003e61\u003c\/td\u003e\n\u003ctd\u003e76\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-ss-tshirt_c594420e-efe5-4fbe-8429-34a7c45d1f7b.png?v=1783047491\"\u003eS\u003c\/button\u003e\n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-ss-tshirt_09c56356-2d59-4e37-a011-242398bcc97e.png?v=1783047491\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-ss-tshirt_386faa5c-05d2-4fca-a03b-97036a0595d8.png?v=1783047492\"\u003eL\u003c\/button\u003e\n            \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n                        \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-ss-tshirt.png?v=1783047491\"\u003eXL\u003c\/button\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SIZE] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n      \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKS4023\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24to0256k\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eポリエステル100％\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n         \n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/ev24to0256k_1080x1350_44e925da-5630-478f-ac23-4b40b61c33e6.png?v=1782977322\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/ev24to0256k_1080x1350_44e925da-5630-478f-ac23-4b40b61c33e6.png?v=1782977322\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7913.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7913.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7889_361a1e3f-6694-4f0d-834e-6a09e4d4d868.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7889_361a1e3f-6694-4f0d-834e-6a09e4d4d868.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7898.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7898.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7919.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7919.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7929.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7929.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7910.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7910.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7916.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7916.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7894.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7894.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7902.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7902.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7922.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7922.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7932.jpg?v=1713147859\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/Z0A7932.jpg?v=1713147859\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\u003c\/div\u003e\n\n\n\n\n","brand":"EVEN","offers":[{"title":"セージ \/ XS","offer_id":44456636711130,"sku":"ev24to0256k31","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"セージ \/ S","offer_id":44456636743898,"sku":"ev24to0256k32","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"セージ \/ M","offer_id":44456636776666,"sku":"ev24to0256k33","price":12100.0,"currency_code":"JPY","in_stock":true},{"title":"セージ \/ L","offer_id":44456636809434,"sku":"ev24to0256k34","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"セージ \/ XL","offer_id":44456636842202,"sku":"ev24to0256k35","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ XS","offer_id":44456636383450,"sku":"ev24to0256k11","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ S","offer_id":44456636416218,"sku":"ev24to0256k12","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ M","offer_id":44456636448986,"sku":"ev24to0256k13","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ L","offer_id":44456636481754,"sku":"ev24to0256k14","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ XL","offer_id":44456636514522,"sku":"ev24to0256k15","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ XS","offer_id":44456636547290,"sku":"ev24to0256k21","price":12100.0,"currency_code":"JPY","in_stock":true},{"title":"ブラック \/ S","offer_id":44456636580058,"sku":"ev24to0256k22","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ M","offer_id":44456636612826,"sku":"ev24to0256k23","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ L","offer_id":44456636645594,"sku":"ev24to0256k24","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ブラック \/ XL","offer_id":44456636678362,"sku":"ev24to0256k25","price":12100.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ev24to0256k_1080x1350_44e925da-5630-478f-ac23-4b40b61c33e6.png?v=1782977322"},{"product_id":"ev24to0257k","title":"［サルベージパブリックコレパ］サーフモックネック半袖(NEVER UP\/IN)","description":"\u003cbr\u003e\nNever Up Never In／届かなければ入らない のキャッチ－なメッセージが入った1枚。\u003cbr\u003e\nラッシュガードとしても着用される水陸両用のストレッチ、吸水速乾、UVカットの高機能モックネックTee。\u003cbr\u003e\nプレー中の体の動きを考えて作られたオリジナルパターンのKolepaスリーブは肩回りの動きを妨げない。\u003cbr\u003e\nまた肩周りや脇ハギはフラットシーマにて縫製する事で肌触りもなめらかでプレー中のわずかなストレスも解消してくれます。ボックスフィットのリラックスした雰囲気はハワイらしい仕上がりでSALVAGE PUBLICの大人気アイテムとなりました。\u003cbr\u003e\n左胸にはNEVERの刺繍が入る\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n【素材】\u003cbr\u003e\nポリエステル100％\u003cbr\u003e\n\u003cbr\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"2\"\u003e\n  \u003ctr bgcolor=\"#E9E9E9\"\u003e\n    \u003ctd width=\"111\" bgcolor=\"#E9E9E9\"\u003e\u003cdiv align=\"center\"\u003e\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd width=\"66\"\u003e\u003cdiv align=\"center\"\u003eXS\u003c\/div\u003e\u003c\/td\u003e    \n    \u003ctd width=\"66\"\u003e\u003cdiv align=\"center\"\u003eS\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd width=\"66\"\u003e\u003cdiv align=\"center\"\u003eM\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd width=\"66\"\u003e\u003cdiv align=\"center\"\u003eL\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd width=\"66\"\u003e\u003cdiv align=\"center\"\u003eXL\u003c\/div\u003e\u003c\/td\u003e    \n  \u003c\/tr\u003e\n  \u003ctr\u003e\n \u003ctd bgcolor=\"#E9E9E9\"\u003e\u003cdiv align=\"center\"\u003e着丈(NP)\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e60\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e70\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e72\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e74\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e74\u003c\/div\u003e\u003c\/td\u003e    \n  \u003c\/tr\u003e\n  \u003ctr\u003e\n \u003ctd bgcolor=\"#E9E9E9\"\u003e\u003cdiv align=\"center\"\u003e身幅\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e46\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e52\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e55\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e58\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e60\u003c\/div\u003e\u003c\/td\u003e    \n  \u003c\/tr\u003e\n  \u003ctr\u003e\n \u003ctd bgcolor=\"#E9E9E9\"\u003e\u003cdiv align=\"center\"\u003e裾幅\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e46\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e52\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e55\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e58\u003c\/div\u003e\u003c\/td\u003e\n    \u003ctd\u003e\u003cdiv align=\"center\"\u003e60\u003c\/div\u003e\u003c\/td\u003e    \n  \u003c\/tr\u003e\n\u003c\/table\u003e\n※数値はセンチ、多少の誤差がございます\u003cbr\u003e\n\u003cbr\u003e\n製造国：日本製\u003cbr\u003e\n\u003cbr\u003e\n商品コード｜ev24to0257k\u003cbr\u003e\n購入時納期｜3-4日\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e","brand":"EVEN","offers":[{"title":"ネイビー \/ XS","offer_id":44456700215514,"sku":"ev24to0257k21","price":12100.0,"currency_code":"JPY","in_stock":true},{"title":"ネイビー \/ S","offer_id":44456700248282,"sku":"ev24to0257k22","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ネイビー \/ M","offer_id":44456700313818,"sku":"ev24to0257k23","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ネイビー \/ L","offer_id":44456700346586,"sku":"ev24to0257k24","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ネイビー \/ XL","offer_id":44456700379354,"sku":"ev24to0257k25","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ XS","offer_id":44456700051674,"sku":"ev24to0257k11","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ S","offer_id":44456700084442,"sku":"ev24to0257k12","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ M","offer_id":44456700117210,"sku":"ev24to0257k13","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ L","offer_id":44456700149978,"sku":"ev24to0257k14","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"ホワイト \/ XL","offer_id":44456700182746,"sku":"ev24to0257k15","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"サンド \/ XS","offer_id":44456700412122,"sku":"ev24to0257k31","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"サンド \/ S","offer_id":44456700444890,"sku":"ev24to0257k32","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"サンド \/ M","offer_id":44456700477658,"sku":"ev24to0257k33","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"サンド \/ L","offer_id":44456700510426,"sku":"ev24to0257k34","price":12100.0,"currency_code":"JPY","in_stock":false},{"title":"サンド \/ XL","offer_id":44456700543194,"sku":"ev24to0257k35","price":12100.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Z0A7936.jpg?v=1713148195"},{"product_id":"ev24ob0262a","title":"［ムータマリン］クリアビッグトートバッグ","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eトラベルやレジャーに便利な大型トートバッグ。\u003cbr\u003e\nキャッチーなマルチロゴが映える涼し気なスケルトンデザイン。\u003cbr\u003e\nクリア素材でボリューム感をおさえ、すっきりとしたリッチ感のある印象に。\u003cbr\u003e\nサイドのスナップボタンで開口部の収縮可能、夏のレジャーやスポーツシーン、トラベルにもピッタリな大容量サイズ。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e\n          2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003c!-- 列の追加：\u003cth\u003e列名\u003c\/th\u003e を theadの\u003ctr\u003eに、\u003ctd\u003e数値\u003c\/td\u003e を各サイズ行に追加 --\u003e\n      \u003c!-- サイズ行の非表示：該当の \u003ctr\u003e〜\u003c\/tr\u003e を丸ごと削除またはコメントアウト --\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e幅\u003c\/th\u003e\n      \u003cth\u003e高さ\u003c\/th\u003e\n      \u003cth\u003eマチ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e約65(上辺)\u003cbr\u003e40(底辺)\u003c\/td\u003e\n      \u003ctd\u003e45\u003c\/td\u003e\n      \u003ctd\u003e22\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n  \u003cdiv class=\"size-visual__image\"\u003e\n    \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"size-visual__slider-container\"\u003e\n    \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n      \u003cbutton class=\"size-btn is-active\" data-size=\"F\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size-visualizer-bag_1.png?v=1785913447\"\u003eF\u003c\/button\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SIZE] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24ob0262a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003ePVC\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7706.jpg?v=1708913582\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7706.jpg?v=1708913582\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7709.jpg?v=1708913639\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7709.jpg?v=1708913639\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7714.jpg?v=1708913581\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7714.jpg?v=1708913581\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7715.jpg?v=1708913582\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7715.jpg?v=1708913582\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7712.jpg?v=1708913639\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7712.jpg?v=1708913639\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7707.jpg?v=1708913639\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7707.jpg?v=1708913639\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7708.jpg?v=1708913639\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7708.jpg?v=1708913639\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7718.jpg?v=1708913581\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7718.jpg?v=1708913581\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7719.jpg?v=1708913581\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7719.jpg?v=1708913581\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7720.jpg?v=1708913582\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7720.jpg?v=1708913582\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"ホワイト","offer_id":44481336672474,"sku":"ev24ob0262a11","price":44000.0,"currency_code":"JPY","in_stock":true},{"title":"ブラック","offer_id":44481336705242,"sku":"ev24ob0262a21","price":44000.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC7706.jpg?v=1708913582"},{"product_id":"ev24ot0264a","title":"［ムータマリン］GOLFクリアマーカーピン","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e気分を盛り上げてくれるポップなカラーリングのクリアマーカーピン。\u003cbr\u003e\nグリーンに映えるネオンカラーのWAVEモチーフが個性を演出するキーアイテムに、先端部分は簡易的なグリーンフォークとしても代用可能。\u003cbr\u003e\nゴルフ好きな方へのプチギフトにもオススメ。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e5×1×0.7cm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24ot0264a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eプラスチック\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:モデル] --\u003e\n \n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_4_87c54dee-73fd-4242-af91-c01a70cba132.jpg?v=1707361556\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_4_87c54dee-73fd-4242-af91-c01a70cba132.jpg?v=1707361556\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_2.jpg?v=1707361550\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_2.jpg?v=1707361550\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_3.jpg?v=1707361548\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_3.jpg?v=1707361548\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_5.jpg?v=1707361549\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_5.jpg?v=1707361549\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_1.jpg?v=1707361549\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MGBC-220307_1.jpg?v=1707361549\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"ピンク","offer_id":44481362264282,"sku":"ev24ot0264a11","price":2200.0,"currency_code":"JPY","in_stock":false},{"title":"ブルー","offer_id":44481362297050,"sku":"ev24ot0264a21","price":2200.0,"currency_code":"JPY","in_stock":false},{"title":"オレンジ","offer_id":44481362329818,"sku":"ev24ot0264a31","price":2200.0,"currency_code":"JPY","in_stock":true},{"title":"イエロー","offer_id":44481362362586,"sku":"ev24ot0264a41","price":2200.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/MGBC-220307_1.jpg?v=1707361549"},{"product_id":"ev24me0267a","title":"［ムータマリン］マーカー付きキャップ","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eつばに装着できるマグネットマーカーがセットになったキャップ。\u003cbr\u003e\nシーズレスで使いやすいコットン素材を使用、シンプルなデザインで合わせやすく、スマートなマーキングを演出。\u003cbr\u003e\nマジックテープ仕様のアジャスターにてサイズ調整可能。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e\n          2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e頭回り\u003c\/th\u003e\n      \u003cth\u003e高さ\u003c\/th\u003e\n      \u003cth\u003eツバ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e57～59cm\u003c\/td\u003e\n      \u003ctd\u003e17.5cm\u003c\/td\u003e\n      \u003ctd\u003e7.5cm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24me0267a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003e綿\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0194.jpg?v=1707359823\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0194.jpg?v=1707359823\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0198.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0198.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0187.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0187.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0192.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0192.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0169.jpg?v=1707359974\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0169.jpg?v=1707359974\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0183.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0183.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0193.jpg?v=1707359823\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0193.jpg?v=1707359823\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0195.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0195.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0186.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0186.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0190.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0190.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0168.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0168.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0184.jpg?v=1707359974\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0184.jpg?v=1707359974\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"ホワイト","offer_id":44481431208154,"sku":"ev24me0267a11","price":13200.0,"currency_code":"JPY","in_stock":true},{"title":"ネイビー","offer_id":44481431240922,"sku":"ev24me0267a21","price":13200.0,"currency_code":"JPY","in_stock":true},{"title":"ブラック","offer_id":44481431273690,"sku":"ev24me0267a31","price":13200.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/IMG_0194.jpg?v=1707359823"},{"product_id":"ev24ot0268a","title":"［ムータマリン］GOLFクリップマーカー (MMG)","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eキャップやバイザーに装着可能なクリップ式のマーカー。\u003cbr\u003e\n台座はクリップ式でお好みの場所に取り付け可能、キャッチーなロゴとポップなカラーリングが目を惹くデザイン。\u003cbr\u003e\nGOLFシリーズとの相性はもちろん、個性を演出するキーアイテムに。\u003cbr\u003e\nゴルフ好きな方へのプチギフトにもオススメ。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e直径\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e約2.8cm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24ot0268a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eニッケル合金\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:モデル] --\u003e\n \n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0228_5f509a93-00f2-455f-9a3b-d8bc06879293.jpg?v=1707362461\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0228_5f509a93-00f2-455f-9a3b-d8bc06879293.jpg?v=1707362461\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0245.jpg?v=1707363286\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0245.jpg?v=1707363286\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0249.jpg?v=1707363286\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0249.jpg?v=1707363286\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0232_70af354b-c00c-4e24-9b6a-441fe44d65c8.jpg?v=1707363286\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0232_70af354b-c00c-4e24-9b6a-441fe44d65c8.jpg?v=1707363286\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"A","offer_id":44481414693082,"sku":"ev24ot0268a11","price":2860.0,"currency_code":"JPY","in_stock":true},{"title":"B","offer_id":44481414725850,"sku":"ev24ot0268a21","price":2860.0,"currency_code":"JPY","in_stock":true},{"title":"C","offer_id":44481414758618,"sku":"ev24ot0268a31","price":2860.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/IMG_0228_5f509a93-00f2-455f-9a3b-d8bc06879293.jpg?v=1707362461"},{"product_id":"ev24ot0269a","title":"［ムータマリン］GOLFリバーシブルマーカー","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e気分を盛り上げてくれるポップなカラーリングの両面タイプのマーカー。\u003cbr\u003e\nグリーンに映えるカラーにロゴが引き立つデザイン、GOLFシリーズとの相性はもちろん、個性を演出するキーアイテムに。\u003cbr\u003e\nゴルフ好きな方へのプチギフトにもオススメ。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e直径\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e約4cm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24ot0269a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eニッケル合金\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:モデル] --\u003e\n \n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0314_467daeda-4631-4038-a595-047096085080.jpg?v=1707362792\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0314_467daeda-4631-4038-a595-047096085080.jpg?v=1707362792\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0290_11bf61d2-6b99-4a08-bde4-f1eb222a95cf.jpg?v=1707362802\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0290_11bf61d2-6b99-4a08-bde4-f1eb222a95cf.jpg?v=1707362802\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0317.jpg?v=1707362802\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0317.jpg?v=1707362802\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0288_1ef17a79-4339-4495-815b-de29c30dd79b.jpg?v=1707362802\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0288_1ef17a79-4339-4495-815b-de29c30dd79b.jpg?v=1707362802\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"オレンジ","offer_id":44481430454490,"sku":"ev24ot0269a11","price":3520.0,"currency_code":"JPY","in_stock":true},{"title":"イエロー","offer_id":44481430487258,"sku":"ev24ot0269a21","price":3520.0,"currency_code":"JPY","in_stock":true},{"title":"ピンク","offer_id":44481430520026,"sku":"ev24ot0269a31","price":3520.0,"currency_code":"JPY","in_stock":true},{"title":"グリーン","offer_id":44481430552794,"sku":"ev24ot0269a41","price":3520.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/IMG_0314.jpg?v=1707362802"},{"product_id":"ev24ot0270a","title":"［ムータマリン］GOLFクリップマーカー (5LINE)","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e伝統的なハワイアンキルトのデザインを歴史ある日本の技術で再現したハンドタオル。\u003c\/p\u003e\n\u003cp\u003eキャップやバイザーに装着可能なクリップ式のマーカー。\u003cbr\u003e\n台座はクリップ式でお好みの場所に取り付け可能、ポップなカラーリングが目を惹くデザイン。\u003cbr\u003e\nGOLFシリーズとの相性はもちろん、個性を演出するキーアイテムに。\u003cbr\u003e\nゴルフ好きな方へのプチギフトにもオススメ。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e\n          2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003ctable class=\"size-table\"\u003e\n        \u003cthead\u003e\n          \u003ctr\u003e\n            \u003cth\u003eSIZE\u003c\/th\u003e\n            \u003cth\u003e直径\u003c\/th\u003e\n          \u003c\/tr\u003e\n        \u003c\/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003cth\u003eF\u003c\/th\u003e\n            \u003ctd\u003e約2.8cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24ot0270a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eニッケル合金\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0250.jpg?v=1707363218\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0250.jpg?v=1707363218\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0255.jpg?v=1707363218\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0255.jpg?v=1707363218\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0252.jpg?v=1707363218\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0252.jpg?v=1707363218\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0232_e44a7713-7363-49dc-a418-b5e3688189e3.jpg?v=1707363218\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0232_e44a7713-7363-49dc-a418-b5e3688189e3.jpg?v=1707363218\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"A","offer_id":44481434976474,"sku":"ev24ot0270a11","price":2860.0,"currency_code":"JPY","in_stock":true},{"title":"B","offer_id":44481435009242,"sku":"ev24ot0270a21","price":2860.0,"currency_code":"JPY","in_stock":true},{"title":"C","offer_id":44481435042010,"sku":"ev24ot0270a31","price":2860.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/IMG_0250.jpg?v=1707363218"},{"product_id":"ev24ot0272a","title":"［ムータマリン］GOLFグリーンフォーク","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e気分を盛り上げてくれるポップなカラーリングのグリーンフォーク。GOLFシリーズとの相性はもちろん、個性を演出するキーアイテムに。\u003cbr\u003e\nゴルフ好きな方へのプチギフトにもオススメ。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e\n          2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003ctable class=\"size-table\"\u003e\n        \u003cthead\u003e\n          \u003ctr\u003e\n            \u003cth\u003eSIZE\u003c\/th\u003e\n            \u003cth\u003eサイズ\u003c\/th\u003e\n          \u003c\/tr\u003e\n        \u003c\/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003cth\u003eF\u003c\/th\u003e\n            \u003ctd\u003e8.5cmx1.8cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24ot0272a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eニッケル合金\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0326.jpg?v=1707364143\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0326.jpg?v=1707364143\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0327.jpg?v=1707364143\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0327.jpg?v=1707364143\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0323.jpg?v=1707364143\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0323.jpg?v=1707364143\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0324.jpg?v=1707364143\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0324.jpg?v=1707364143\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0328.jpg?v=1707364143\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0328.jpg?v=1707364143\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0329.jpg?v=1707364143\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0329.jpg?v=1707364143\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0332.jpg?v=1707364143\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0332.jpg?v=1707364143\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0330.jpg?v=1707364143\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0330.jpg?v=1707364143\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0331.jpg?v=1707364143\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0331.jpg?v=1707364143\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"レッド","offer_id":44507073446106,"sku":"ev24ot0272a11","price":3300.0,"currency_code":"JPY","in_stock":true},{"title":"ピンク","offer_id":44507073478874,"sku":"ev24ot0272a21","price":3300.0,"currency_code":"JPY","in_stock":true},{"title":"オレンジ","offer_id":44507073511642,"sku":"ev24ot0272a31","price":3300.0,"currency_code":"JPY","in_stock":false},{"title":"イエロー","offer_id":44507073544410,"sku":"ev24ot0272a41","price":3300.0,"currency_code":"JPY","in_stock":true},{"title":"グリーン","offer_id":44507073577178,"sku":"ev24ot0272a51","price":3300.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/IMG_0326.jpg?v=1707364143"},{"product_id":"ev24me0273a","title":"［Muta MARINE］ベーシックロゴキャップ","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eベーシックから差し色になる豊富なカラー展開のキャップ。\u003cbr\u003eリサイクルナイロンを使用、シーズレスで使いやすく、シンプルなデザインでスタイリングに程良い抜け感を与えるアイコンキャップ。\u003cbr\u003e撥水効果で軽い雨等を弾くので、デイリー使いからゴルフなどのスポーツシーンやアウトドアにも活躍するアイテム。\u003cbr\u003eマジックテープ式のアジャスターで調整可能。\u003c\/p\u003e\n\u003cbr\u003e\u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n\u003cp\u003e【ムータマリン】\u003cbr\u003e2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n\u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e \u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003e頭回り\u003c\/th\u003e\n\u003cth\u003e高さ\u003c\/th\u003e\n\u003cth\u003eツバ\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eF\u003c\/th\u003e\n\u003ctd\u003e58cm\u003c\/td\u003e\n\u003ctd\u003e17cm\u003c\/td\u003e\n\u003ctd\u003e7.5cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n\u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eev24me0273a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003eナイロン100％／生地製造工程で破棄される糸や生地を再利用したECO素材です。\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n\u003c\/tr\u003e\n\u003c!-- [VAL:モデル] --\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e \u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0212.jpg?v=1707364379\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0214.jpg?v=1707364379\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0210.jpg?v=1707364379\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0211.jpg?v=1707364379\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0204.jpg?v=1707364379\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0209.jpg?v=1707364379\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0199.jpg?v=1707364379\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0203.jpg?v=1707364379\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e \u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK","offer_id":44507078492378,"sku":"ev24me0273a11","price":8250.0,"currency_code":"JPY","in_stock":false},{"title":"GRAY","offer_id":44507078525146,"sku":"ev24me0273a21","price":8250.0,"currency_code":"JPY","in_stock":true},{"title":"GREEN","offer_id":44507078557914,"sku":"ev24me0273a31","price":8250.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY","offer_id":44507078590682,"sku":"ev24me0273a41","price":8250.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/15_12_55.png?v=1789452859"},{"product_id":"ev24me0274a","title":"［Muta MARINE］サークルロゴ8キャップ","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eキャッチーなロゴデザインが印象的なコットンキャップ。\u003cbr\u003e\nシーズレスで使いやすいコットン素材を使用、スタイリングに程良い抜け感を与えるアイコンキャップ。\u003cbr\u003e\nマジックテープ式のアジャスターで調整可能。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【ムータマリン】\u003cbr\u003e\n          2006年に誕生したラグジュアリーグッズブランド「muta（ムータ）」から、2013年に展開が始まったマリンアパレルラインです。「海上のラグジュアリー」をコンセプトに、機能性とファッション性を高めた大人のためのアイテムを提案しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e頭回り\u003c\/th\u003e\n      \u003cth\u003e高さ\u003c\/th\u003e\n      \u003cth\u003eツバ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e58cm\u003c\/td\u003e\n      \u003ctd\u003e17cm\u003c\/td\u003e\n      \u003ctd\u003e7.5cm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eムータマリン\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24me0274a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eコットン100％\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15620.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15620.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0124.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0124.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15617.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15617.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0120.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0120.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15618.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15618.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0108.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0108.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15621.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even15621.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0114.jpg?v=1707971789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0114.jpg?v=1707971789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"NAVY","offer_id":44507087143130,"sku":"ev24me0274a41","price":8250.0,"currency_code":"JPY","in_stock":false},{"title":"PINK","offer_id":44507087110362,"sku":"ev24me0274a31","price":8250.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK","offer_id":44507087044826,"sku":"ev24me0274a11","price":8250.0,"currency_code":"JPY","in_stock":false},{"title":"WHITE","offer_id":44507087077594,"sku":"ev24me0274a21","price":8250.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even15617.jpg?v=1707971789"},{"product_id":"ev24ot0296a","title":"［VIBSOX］消臭・抗菌リブソックス","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003e良質素材で多機能\u003cbr\u003e消臭・防菌・防臭の効果！\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e新登場のブランドの「VIBSOX」は、奈良産にこだわっているソックスブランドで、奈良県は日本一の靴下の生産地でもある。全ての工程を奈良県で行なっているため、一つ一つの工程が丁寧に行われ細部にまでこだわった高品質なソックスに出来上がっていて、嬉しい消臭、防菌、防臭の効果もある。ゴルファーの皆さんにも高品質で高機能なソックスを味わっていただきたいという想いで、FUNQ Shopでの取り扱いが決まった。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【VIBSOX】\u003cbr\u003e\n          抗菌・防臭・消臭機能を持つ加工技術「VIBTEX」のテクノロジーを活用し、日本一の靴下の産地である奈良県で生産されている日本の高機能ソックスブランドです。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003ctable class=\"size-table\"\u003e\n        \u003cthead\u003e\n          \u003ctr\u003e\n            \u003cth\u003eSIZE\u003c\/th\u003e\n            \u003cth\u003e対応サイズ\u003c\/th\u003e\n          \u003c\/tr\u003e\n        \u003c\/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003cth\u003eF\u003c\/th\u003e\n            \u003ctd\u003eL25-28cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eVIBSOX\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24ot0296a\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003e綿、ポリエステル、ポリウレタン\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/RIB-SOX_WHITE.jpg?v=1713166205\u0026amp;width=200\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/RIB-SOX_WHITE.jpg?v=1713166205\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/P7A2306.jpg?v=1713166205\u0026amp;width=200\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/P7A2306.jpg?v=1713166205\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/RIB-SOX_BLACK.jpg?v=1713166205\u0026amp;width=200\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/RIB-SOX_BLACK.jpg?v=1713166205\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/RIB-SOX_CHARCOAL_9595770c-001b-434d-9405-fdd538692f14.jpg?v=1713166205\u0026amp;width=200\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/RIB-SOX_CHARCOAL_9595770c-001b-434d-9405-fdd538692f14.jpg?v=1713166205\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0339_3c8cfc03-4968-467e-9a71-b155974a0b1b.jpg?v=1711415159\u0026amp;width=200\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0339_3c8cfc03-4968-467e-9a71-b155974a0b1b.jpg?v=1711415159\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0332_547deb6d-5181-453b-8420-db2c1492794a.jpg?v=1711415159\u0026amp;width=200\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0332_547deb6d-5181-453b-8420-db2c1492794a.jpg?v=1711415159\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/10292_1430b58d-eb78-40c6-9687-6c788af54bba.jpg?v=1711415159\u0026amp;width=200\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/10292_1430b58d-eb78-40c6-9687-6c788af54bba.jpg?v=1711415159\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\n      \u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"LIGHT HEATHER GRAY","offer_id":44697298272474,"sku":"ev24ot0296a41","price":1870.0,"currency_code":"JPY","in_stock":false},{"title":"WHITE","offer_id":44697298174170,"sku":"ev24ot0296a11","price":1870.0,"currency_code":"JPY","in_stock":false},{"title":"BLACK","offer_id":44697298206938,"sku":"ev24ot0296a21","price":1870.0,"currency_code":"JPY","in_stock":true},{"title":"CHARCOAL GRAY","offer_id":44697298239706,"sku":"ev24ot0296a31","price":1870.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/RIB-SOX_WHITE.jpg?v=1713166205"},{"product_id":"ev24bo0302k","title":"［サルベージパブリックコレパ］Uka Corduroy(8W)スカート（レディス）","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003e\u003c\/p\u003e\n\u003cp\u003eメンズで毎シーズン大人気のコーデュロイショーツが、レディスモデルにアップデートして新登場。\u003cbr\u003e\n8ウェルコーデュロイを使用してベイカータイプのルーズフィットに仕上げています。\u003cbr\u003e\nウエストは内側にジャカードゴムを配置してストレッチ性が高くプレーの邪魔をしないデザイン。\u003cbr\u003e\nバックポケットは右側のみスナップボタンを付け、スコアカードなどを収め、左バックポケットにはグローブを収める事を想定した仕様になっています。\u003cbr\u003e\n左裾にはダイアモンドヘッドロゴ刺繍入りです。\u003c\/p\u003e\n\n\u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003eEVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003eウエスト\u003c\/th\u003e\n      \u003cth\u003eスカート丈\u003c\/th\u003e\n      \u003cth\u003e裾幅\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eS\u003c\/th\u003e\n      \u003ctd\u003e65～80.5\u003c\/td\u003e\n      \u003ctd\u003e37\u003c\/td\u003e\n      \u003ctd\u003e54.2\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eM\u003c\/th\u003e\n      \u003ctd\u003e68～83.5\u003c\/td\u003e\n      \u003ctd\u003e38\u003c\/td\u003e\n      \u003ctd\u003e55.2\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-skirt_73c8c431-41af-45d1-bd81-272dbb6259e3.png?v=1787791518\"\u003eS\u003c\/button\u003e\n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-skirt.png?v=1787791518\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003c!--\u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-shorts_d25979b3-aff5-4296-9eae-71f02426e0b6.png?v=1787790637\"\u003eL\u003c\/button\u003e--\u003e\n            \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n            \u003c!--\u003cbutton class=\"size-btn\" data-size=\"XL\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-shorts_7bb6532b-479b-4d84-a624-fdf0aa4cb7fa.png?v=1787790637\"\u003eXL\u003c\/button\u003e --\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e品番\u003c\/td\u003e\n\u003ctd\u003eSVKW002\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eev24bo0302k\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e日本\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003e綿100%\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0557.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0557.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0565.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0565.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0550.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0550.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0554.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0554.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0560.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0560.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0561.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0561.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0559.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0559.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0566.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0566.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0568.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0568.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0552.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0552.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0553.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0553.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0551.jpg?v=1713528584\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0551.jpg?v=1713528584\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0555.jpg?v=1713528578\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0555.jpg?v=1713528578\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0556.jpg?v=1713528578\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC0556.jpg?v=1713528578\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能 (スワイプダウン閉じる \u0026 サムネイル遷移追加)\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      \/\/ モーダル内のサムネイル動的生成\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        \/\/ サムネイルクリック時の直接ジャンプ処理\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) {\n          indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        }\n        \/\/ サムネイルのアクティブ状態を更新\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0;\n      let touchStartY = 0;\n      let currentTranslateX = 0;\n      let currentTranslateY = 0;\n      let isDragging = false;\n      let isPinching = false;\n      let swipeDirection = null;\n      let initialPinchDistance = 0;\n      let currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e {\n          modal.style.display = 'none';\n        }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) {\n          closeModal();\n        }\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showPrevImage();\n      });\n      modalNextBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showNextImage();\n      });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true;\n          isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true;\n          swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) {\n              swipeDirection = 'h';\n            } else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) {\n              swipeDirection = 'v';\n            }\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false;\n          currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) {\n              showNextImageFromSwipe(currentTranslateX);\n            } else if (currentTranslateX \u003e swipeThreshold) {\n              showPrevImageFromSwipe(currentTranslateX);\n            } else {\n              currentTranslateX = 0;\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          } else if (swipeDirection === 'v') {\n            const swipeDownThreshold = 100;\n            if (currentTranslateY \u003e swipeDownThreshold || currentTranslateY \u003c -swipeDownThreshold) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') {\n          showPrevImage();\n        } else if (e.key === 'ArrowRight') {\n          showNextImage();\n        } else if (e.key === 'Escape') {\n          closeModal();\n        }\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"エクリュ \/ S","offer_id":44746004398298,"sku":"ev24bo0302k11","price":18700.0,"currency_code":"JPY","in_stock":true},{"title":"エクリュ \/ M","offer_id":44746004431066,"sku":"ev24bo0302k12","price":18700.0,"currency_code":"JPY","in_stock":true},{"title":"ネイビー \/ S","offer_id":44746004463834,"sku":"ev24bo0302k21","price":18700.0,"currency_code":"JPY","in_stock":true},{"title":"ネイビー \/ M","offer_id":44746004496602,"sku":"ev24bo0302k22","price":18700.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC0557.jpg?v=1713528584"},{"product_id":"ev24to0303k","title":"［サルベージパブリックコレパ］SURF Mockneckノースリーブ（レディス）","description":"\u003cp\u003e\u003cbr\u003e毎年大人気のSURF Mockneckシリーズにウィメンズモデルが登場。\u003cbr\u003eラッシュガードとしても着用される水陸両用のストレッチ、吸水速乾、UVカットの高機能素材を使用したノースリーブのプルオーバー。\u003cbr\u003e肩周りや脇ハギはフラットシーマにて縫製する事で肌触りもなめらかでプレー中のわずかなストレスも解消してくれます。\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"2\"\u003e\n\u003ctbody\u003e\n\u003ctr bgcolor=\"#E9E9E9\"\u003e\n\u003ctd width=\"111\" bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eS\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd width=\"66\"\u003e\n\u003cdiv align=\"center\"\u003eM\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e着丈(NP)\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e60\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e62\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e肩幅\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e36.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e38.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e身幅\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e50.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e52.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e裾幅\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e51\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e53\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd bgcolor=\"#E9E9E9\"\u003e\n\u003cdiv align=\"center\"\u003e天幅(襟ぐり)\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e17.5\u003c\/div\u003e\n\u003c\/td\u003e\n\u003ctd\u003e\n\u003cdiv align=\"center\"\u003e18\u003c\/div\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e※数値はセンチ、多少の誤差がございます\u003cbr\u003e\u003cbr\u003e素材：ポリエステル100%\u003cbr\u003e製造国：日本製\u003cbr\u003e\u003cbr\u003e商品コード｜ev24to0303k\u003cbr\u003e購入時納期｜3-4日\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003c\/p\u003e","brand":"EVEN","offers":[{"title":"サンド \/ S","offer_id":44826941817050,"sku":"ev24to0303k11","price":11000.0,"currency_code":"JPY","in_stock":true},{"title":"サンド \/ M","offer_id":44826941849818,"sku":"ev24to0303k12","price":11000.0,"currency_code":"JPY","in_stock":true},{"title":"ホワイト \/ S","offer_id":44826941882586,"sku":"ev24to0303k21","price":11000.0,"currency_code":"JPY","in_stock":true},{"title":"ホワイト \/ M","offer_id":44826941915354,"sku":"ev24to0303k22","price":11000.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC0539.jpg?v=1713529094"},{"product_id":"ev24me0306k","title":"POLOLEI INDIGO POLARISED PHOTOCHROMIC GREY LENSES","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== 商品紹介動画（レスポンシブ） ========== *\/\n    .ProductMeta__Video {\n      margin-bottom: 16px;\n    }\n    .ProductMeta__VideoWrapper {\n      position: relative;\n      width: 100%;\n      padding-top: 56.25%; \/* 16:9 *\/\n    }\n    .ProductMeta__VideoWrapper iframe {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      border: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003ch3\u003e\u003cstrong\u003e大人気の調光サングラスに新モデル登場\u003c\/strong\u003e\u003c\/h3\u003e\n\u003c!-- ▼ [VIDEO] 商品紹介動画（レスポンシブ） --\u003e\n\u003cdiv class=\"ProductMeta__Video\"\u003e\n  \u003cdiv class=\"ProductMeta__VideoWrapper\"\u003e\n    \u003ciframe src=\"https:\/\/www.youtube.com\/embed\/ZeCbua7Wifc?si=BOPk5iE1d9ZfzWTl\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen\u003e\u003c\/iframe\u003e\n  \u003c\/div\u003e\n  \u003cp class=\"size-note\"\u003e※動画内の商品はサンプルを使用しています。フレームの色は画像を参照ください。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [VIDEO] ここまで --\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eサルベージパブリックコレパで人気の調光サングラスに新モデルが登場。\u003cbr\u003eテンプル内側にはラバーが入りプレー中にもズレにくく、前モデルよりさらにフィット感の高いモデルとなりました。\u003cbr\u003e調光レンズを使用しているので、室内でも屋外でもゴルフプレー中も最適な明るさでお使いいただけます。\u003cbr\u003eモデル名「POLOLEI」はハワイ語で「真っすぐ」または「正しい」という意味。\u003cbr\u003eテンプルが真っすぐなデザインであることと、ゴルフでも「真っすぐに狙ったところに」という意味を込めました。\u003cbr\u003eフレームはBio Glass（生分解性バイオマスプラスチック）で、環境にやさしい、すべて土に還る素材。\u003cbr\u003eタンのナチュラルな色味とベーシックなグレーレンズがどんなシーンでも活躍します。\u003cbr\u003e世界屈指のメガネの産地である福井県\/鯖江で製作。\u003cbr\u003eそしてレンズ（左上）には、シンボルマークでもあるダイヤモンドヘッドをレーザー刻印しています。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\n\n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n               \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKE002\u003c\/td\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24me0306k\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eレンズの材質：プラスチック\u003cbr\u003e\n継続光線透過率：93％ (最大濃色の時) \/ 22% (静かクリアに近い時)\u003cbr\u003e\n紫外線透過率 1.8％\u003cbr\u003e\nフレーム：生分解性プラスチック\u003cbr\u003e\nテンプル：生分解性プラスチック\u003cbr\u003e\n※光や角度により、実物と色味が異なる場合がございます\u003cbr\u003e\n付属品：収納ソフトケース\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_39.jpg?v=1781617642\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_39.jpg?v=1781617642\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_40.jpg?v=1781617642\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_40.jpg?v=1781617642\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_38.jpg?v=1781617642\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_38.jpg?v=1781617642\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_35_aca33e0b-e5a0-4363-b00f-2996f5991de6.jpg?v=1781617643\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_35_aca33e0b-e5a0-4363-b00f-2996f5991de6.jpg?v=1781617643\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_36_de28f073-d2c9-4e01-9596-7594b8c58861.jpg?v=1781617643\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/06152_36_de28f073-d2c9-4e01-9596-7594b8c58861.jpg?v=1781617643\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/0617_re3.jpg?v=1781771724\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/0617_re3.jpg?v=1781771724\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/0617_re4.jpg?v=1781771727\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/0617_re4.jpg?v=1781771727\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI7.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI7.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI4.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI4.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI2.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI2.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI1.jpg?v=1716340508\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI1.jpg?v=1716340508\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI3.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI3.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI5.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI5.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/17083967128860_1.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/17083967128860_1.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 16\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI6.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI6.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 17\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI8.jpg?v=1743496875\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/POLOLEI8.jpg?v=1743496875\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\n      \u003c\/div\u003e\n\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"Brown","offer_id":46339835035866,"sku":"ev24me0306k","price":15400.0,"currency_code":"JPY","in_stock":false},{"title":"Indigo","offer_id":46339835068634,"sku":"ev24me0306k-44-00","price":15400.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/06152_39.jpg?v=1781617642"},{"product_id":"ev24cb0307j","title":"［tovho×Dan Imai］ハンドペイントキャディバッグ","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003cp\u003e\u003cspan style=\"color: #ff0000; font-size: small;\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003cstrong\u003eイラストが”手描き”だからその佇まいも絵になる\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003ciframe title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/VggqHaODBGE?si=oZpSOC9nxJ616KtN\" height=\"240\" width=\"426\" allowfullscreen=\"\" referrerpolicy=\"strict-origin-when-cross-origin\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" frameborder=\"0\"\u003e\u003c\/iframe\u003e\u003cbr\u003e\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003c\/p\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cbr\u003e\u003cspan style=\"color: #ff0000; font-size: small;\"\u003e※こちらの商品は予約商品となっております。【ご注文から2カ月前後で発送予定です。】\u003cbr\u003e※他の通常商品との同時購入はできません\u003cbr\u003e※お客様のご都合（サイズ違いやイメージ違いなど）による返品・交換はお受けしておりません\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: #ff0000; font-size: small;\"\u003e※ご購入の翌営業日中にご登録のメールアドレス宛に当事務局よりご連絡いたします（土・日・祝日は休業）。\u003cbr\u003eそのメールに返信いただく形でご希望のイニシャル（2文字）の表記をお知らせください。\u003cbr\u003e1週間以内にお返事いただけない場合は「名入れなし」での発注となりますのでご了承ください。\u003cbr\u003e※商品はメーカーから直送させて頂きます。\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eキャディバッグ本体の表地には国産の8号帆布をベースに特殊ワッシャー加工を施した天然素材のキャンパスを採用している。イラスト部分には簡単には取れにくいと言われる顔料系のプリント剤を使用し、今井氏の写真を「手描き」で表現した。品格さを添えるレザーを使いながら、カラー切替えによるコントラストを強調していたり、デザイン性が良い。本体外側のポケット下部にはイニシャルで”名入れ”もできる。\u003c\/p\u003e\n\u003cp\u003e※イニシャルのサイズ、フォントは商品画像でご確認ください。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【tovho】\u003cbr\u003e\n         京都発祥のゴルフウェアブランドです。伝統技術を現代的な感性で再構築する「温故創新」をテーマに、リゾートの開放感と都会的な上質さを融合した独自のスタイルを提案しています。\u003c\/p\u003e\n          \n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e対応長さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9型\u003c\/th\u003e\n      \u003ctd\u003e47インチ\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003etovho\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24cb0307j\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003eインドネシア\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003e綿100％\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1775.jpg?v=1713511010\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1775.jpg?v=1713511010\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1776.jpg?v=1713511009\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1776.jpg?v=1713511009\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1778.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1778.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1777.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1777.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1779.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1779.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1781.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1781.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1780.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1780.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1782.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1782.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1783.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1783.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1787.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1787.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1784.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1784.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1785.jpg?v=1713511222\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1785.jpg?v=1713511222\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1761.jpg?v=1714457450\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1761.jpg?v=1714457450\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1760.jpg?v=1714457456\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1760.jpg?v=1714457456\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1762.jpg?v=1714457456\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bb1762.jpg?v=1714457456\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/6274c8f5db6d39a58766d32a0715b93b.jpg?v=1715043789\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/6274c8f5db6d39a58766d32a0715b93b.jpg?v=1715043789\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 16\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"日本／美らオーチャード ゴルフクラブ「Horizon」","offer_id":45053185720538,"sku":"ev24cb0307j11","price":149600.0,"currency_code":"JPY","in_stock":true},{"title":"日本／美らオーチャード ゴルフクラブ「Sunset」","offer_id":45053185753306,"sku":"ev24cb0307j21","price":149600.0,"currency_code":"JPY","in_stock":true},{"title":"ドバイ／エミレーツGC","offer_id":45053185786074,"sku":"ev24cb0307j31","price":149600.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/bb1775.jpg?v=1713511010"},{"product_id":"ev24co0322k","title":"［STYLE EVEN］オールインワンジェル","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cstrong\u003eEVEN初のオリジナルコスメで手軽にスキンケア\u003c\/strong\u003e\u003cbr\u003e\u003cbr\u003e魅力はシンプルに「これ1本でケアが完了」できること。\u003cbr\u003eゴルフ狂が集まるEVEN編集部でコスメ開発が盛り上がっていたのだが、試行錯誤しながらついに商品化。\u003cbr\u003e香りはみんな好きな化粧品を持ち寄ったりして、シトラス、ハーバル系の爽やかな香りに。\u003cbr\u003e日焼けで乾燥しがちな肌にハリを与え、キメを整えてくれるし、携帯しやすいように持ち運びに便利なコンパクトサイズ。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【STYLE EVEN】\u003cbr\u003e\n雑誌のコンセプトに基づいたライフスタイル関連商品や、ゴルフに必要な便利グッズなどを展開。\u003c\/p\u003e\n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSTYLE EVEN\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eev24co0322k\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原料\u003c\/td\u003e\n            \u003ctd\u003eヒアルロン酸Na、アセチルヒアルロン酸Na、フラーレン、グリチルリチン酸2K、酵母エキス、テトラヘキシルデカン酸アスコルビル、ソメイヨシノ葉エキス、アロエベラ葉エキス、セイヨウトチノキ種子エキス、アーチチョーク葉エキス\u003cbr\u003e\n            \u003cbr\u003e\n            内容量：48g\u003cbr\u003e\n            ※お肌に異常が生じていないかよく注意して使用してください。\u003cbr\u003e\n化粧品がお肌に合わないときは使用を中止してください。\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/05151951.jpg?v=1716520070\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/05151951.jpg?v=1716520070\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/05151953.jpg?v=1716520074\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/05151953.jpg?v=1716520074\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MG_2095.jpg?v=1716520080\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/MG_2095.jpg?v=1716520080\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even2807.jpg?v=1716520092\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even2807.jpg?v=1716520092\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n","brand":"EVEN","offers":[{"title":"Default Title","offer_id":45214686183642,"sku":"ev24co0322k","price":2860.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/05151951.jpg?v=1716520070"},{"product_id":"s24a0006k","title":"［サルベージパブリックコレパ］ハクニットモックネックS\/S（Tropical Performance）","description":"\u003cp\u003e \u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003eHaku（ハク）とは織りという意味のハワイ語。 \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e特殊な編み機をもちいて表現したバスケット状のジャガード編みは肌との接地面が減る事によりドライタッチで快適な着心地。 \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e再生ポリエステルを使用したCOOLMAX®EcoMade糸をブレンドする事で吸水速乾性も上がっています。 \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eプレー中の体の動きを考えて作られたオリジナルパターンのKolepaスリーブは肩回りの動きを妨げないデザイン。 \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eまた肩周りや脇ハギはフラットシーマで縫製する事で肌触りもなめらかでプレー中のわずかなストレスも解消してくれます。\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e ボックスフィットのリラックスした雰囲気はハワイらしい仕上がりでSALVAGE PUBLIC Kolepaを代表するスタイルとなりました。\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e フロントにはAlohaロゴ、バックにはTropical Performanceのプリントが入ったSALVAGE PUBLICならではのデザインが◎\u003c\/span\u003e\u003c\/p\u003e\n\u003cstyle type=\"text\/css\"\u003e\u003c!--td {border: 1px solid #cccccc;}br {mso-data-placement:same-cell;}--\u003e\u003c\/style\u003e\n\u003ctable data-sheets-root=\"1\" border=\"1\" dir=\"ltr\" cellpadding=\"0\" cellspacing=\"0\" xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\u003e\n\u003ccolgroup\u003e \u003ccol width=\"77\"\u003e \u003ccol width=\"77\"\u003e \u003ccol width=\"77\"\u003e \u003ccol width=\"77\"\u003e \u003ccol width=\"77\"\u003e \u003ccol width=\"77\"\u003e \u003c\/colgroup\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"サイズ\"}'\u003eサイズ\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"XS\"}'\u003eXS\u003c\/td\u003e\n\u003ctd data-sheets-numberformat='{\"1\":5,\"2\":\"m\\\"月\\\"d\\\"日\\\"\",\"3\":1}' data-sheets-value='{\"1\":2,\"2\":\"S\"}'\u003eS\u003c\/td\u003e\n\u003ctd data-sheets-numberformat='{\"1\":5,\"2\":\"m\\\"月\\\"d\\\"日\\\"\",\"3\":1}' data-sheets-value='{\"1\":2,\"2\":\"M\"}'\u003eM\u003c\/td\u003e\n\u003ctd data-sheets-numberformat='{\"1\":5,\"2\":\"m\\\"月\\\"d\\\"日\\\"\",\"3\":1}' data-sheets-value='{\"1\":2,\"2\":\"L\"}'\u003eL\u003c\/td\u003e\n\u003ctd data-sheets-numberformat='{\"1\":5,\"2\":\"m\\\"月\\\"d\\\"日\\\"\",\"3\":1}' data-sheets-value='{\"1\":2,\"2\":\"XL\"}'\u003eXL\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"身丈\"}'\u003e身丈\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":60}'\u003e60\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":70}'\u003e70\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":72}'\u003e72\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":74}'\u003e74\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":76}'\u003e76\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"肩幅\"}'\u003e肩幅\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":42.8}'\u003e42.8\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":50}'\u003e50\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":52}'\u003e52\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":54}'\u003e54\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":56}'\u003e56\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"身幅\"}'\u003e身幅\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":46}'\u003e46\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":52}'\u003e52\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":55}'\u003e55\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":58}'\u003e58\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":61}'\u003e61\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"袖丈\"}'\u003e袖丈\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":26}'\u003e26\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":27}'\u003e27\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":28}'\u003e28\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":29}'\u003e29\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":30}'\u003e30\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd data-sheets-value='{\"1\":2,\"2\":\"裄丈\"}'\u003e裄丈\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":44.9}'\u003e44.9\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":53.55}'\u003e53.55\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":55.59}'\u003e55.59\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":57.62}'\u003e57.62\u003c\/td\u003e\n\u003ctd data-sheets-value='{\"1\":3,\"3\":59.65}'\u003e59.65\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e※数値はセンチ、多少の誤差がございます\u003cbr\u003e\u003cbr\u003e※光や角度により、実物と色味が異なる場合がございます\u003c\/p\u003e\n\u003cp\u003e商品コード｜S24A0006K\u003cbr\u003e購入時納期｜3-4日\u003cbr\u003e\u003c\/p\u003e\n\u003c!----\u003e","brand":"EVEN","offers":[{"title":"WHITE \/ XS","offer_id":45487973990618,"sku":"S24A0006K-10-02","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"WHITE \/ S","offer_id":45487974023386,"sku":"S24A0006K-10-03","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"WHITE \/ M","offer_id":45487974056154,"sku":"S24A0006K-10-04","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"WHITE \/ L","offer_id":45487974088922,"sku":"S24A0006K-10-05","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"WHITE \/ XL","offer_id":45487974121690,"sku":"S24A0006K-10-06","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ XS","offer_id":45487974154458,"sku":"S24A0006K-40-02","price":13200.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ S","offer_id":45487974187226,"sku":"S24A0006K-40-03","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ M","offer_id":45487974219994,"sku":"S24A0006K-40-04","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ L","offer_id":45487974252762,"sku":"S24A0006K-40-05","price":13200.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ XL","offer_id":45487974285530,"sku":"S24A0006K-40-06","price":13200.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/SVKA4001_298.jpg?v=1722669382"},{"product_id":"s24j0005k","title":"UKA CORDUROY BUCKET HAT","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003e太畝コーデュロイを使用した使い易いバケットハット。 \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eチンストラップ（顎ヒモ）が付いてアクティブシーンで活躍するバケットハットは顎ヒモを絞れば風などによってキャップが脱げ難くする。 \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eまたバンジーコード（ゴムコード）入りでフィット感を高める事が出来るのも嬉しいところ。 \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eフロントにはシンプルにSALVAGE PUBLICロゴの刺繍入り。\u003c\/span\u003e\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003ctable class=\"size-table\"\u003e\n        \u003cthead\u003e\n          \u003ctr\u003e\n            \u003cth\u003eSIZE\u003c\/th\u003e\n            \u003cth\u003e頭囲\u003c\/th\u003e\n            \u003cth\u003eブリム\u003c\/th\u003e\n            \u003cth\u003e高さ\u003c\/th\u003e\n          \u003c\/tr\u003e\n        \u003c\/thead\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003cth\u003eF\u003c\/th\u003e\n            \u003ctd\u003e61cm\u003c\/td\u003e\n            \u003ctd\u003e5cm\u003c\/td\u003e\n            \u003ctd\u003e8cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n               \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA4027\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eS24J0005K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eポリエステル\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_565_dc5fa036-5256-4e7e-966e-48dd166e76ee.jpg?v=1728294360\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_565_dc5fa036-5256-4e7e-966e-48dd166e76ee.jpg?v=1728294360\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_577.jpg?v=1722668601\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_577.jpg?v=1722668601\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_562.jpg?v=1722668601\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_562.jpg?v=1722668601\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_575.jpg?v=1722668600\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_575.jpg?v=1722668600\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_567.jpg?v=1722668600\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_567.jpg?v=1722668600\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_573.jpg?v=1722668600\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_573.jpg?v=1722668600\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_579.jpg?v=1722668600\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_579.jpg?v=1722668600\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_580.jpg?v=1722668601\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_580.jpg?v=1722668601\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_581.jpg?v=1722668600\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_581.jpg?v=1722668600\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_EVEN20240209_25782.jpg?v=1722668589\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/SVKA4027_EVEN20240209_25782.jpg?v=1722668589\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK \/ F","offer_id":45494586736858,"sku":"S24J0005K-01-00","price":8800.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ F","offer_id":45494586769626,"sku":"S24J0005K-27-00","price":8800.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ F","offer_id":45494586802394,"sku":"S24J0005K-40-00","price":8800.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/SVKA4027_565.jpg?v=1722668600"},{"product_id":"e24h0003k","title":"［BRIEFING別注］シューズコンテナー","description":"\u003cp\u003e\u003cvideo playsinline=\"\" muted=\"\" loop=\"loop\" autoplay=\"autoplay\" controls=\"controls\" height=\"auto\" width=\"100%\"\u003e\n  \u003csource type=\"video\/mp4\" src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/b1b782cc450e455a975d1e22b5869fdd.mp4\"\u003e\u003c\/video\u003e\u003c\/p\u003e\n\u003cp\u003eお使いのブラウザはこの動画に対応しておりません。\u003c\/p\u003e\n\u003ch2\u003e\u003cstrong\u003eEVEN別注　FUNQ Shopだけでしか買えない逸品「BRIEFING」とのコラボアイテムが、いよいよ入荷。\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cp\u003e\u003cbr\u003e車のトランクでシューズを整頓して積んでおきたいという要望から生まれたシューズボックス。\u003c\/p\u003e\n\u003cp\u003eゴルフ狂が集うEVENならではの着眼点で、こだわりを詰め込んだ別注商品がついに完成しました。\u003c\/p\u003e\n\u003cp\u003eシューズ2足が収納できるサイズ感。\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003e内装にはマジックテープで取り外し可能な間仕切りを中央に設置しているので、シューズ以外の収納も可能です。\u003c\/p\u003e\n\u003cp\u003e同じ商品を複数積んでも倒れないようにスナップボタンで連結可能。\u003c\/p\u003e\n\u003cp\u003e上蓋のポケットには乾燥剤や消臭剤を入れておけるよう、内側がメッシュ仕様に。\u003c\/p\u003e\n\u003cp\u003eハンドル部分を使用すれば持ち運びも可能。\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e中空構造の高強力糸を織り交ぜて強度を維持しながら軽量化した素材、AIR BALLISTIC NYLONを採用。\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e優れた強度を維持しながらも非常に軽量な仕上がりです。\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e別注商品の証、\"EVEN\"と\"BRIEFING\"のダブルネームを使用。　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003eサイズ：W:420mm H:115mm D:330mm\u003c\/span\u003e\u003cbr\u003e\u003cspan\u003e素材：1680D × 840D AIR BALLISTIC NYLON\u003c\/span\u003e\u003cbr\u003e\u003cspan\u003e製造国：中国\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003e商品コード｜E24H0003K\u003cbr\u003e購入時納期｜3-4日\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003c!----\u003e","brand":"EVEN","offers":[{"title":"BLACK","offer_id":45556536246490,"sku":"E24H0003K-01-00","price":31900.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/17_20_20.png?v=1789460446"},{"product_id":"e25k0056k","title":"［カルデサック］抗菌消臭シューズバッグ（ヒバ消臭剤付き）","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e青森ヒバの特性を活かした、Even x Cul de Sac-JAPONの限定シューズバッグ＋靴用消臭・除湿材です。\u003cbr\u003eシンプルかつ多機能なセットに仕上げました。\u003cbr\u003e青森ヒバの持つ抗菌・防臭を維持した繊維 Filhiba®（フィリバ）の裏毛を内側に使い、表地は、撥水機能があり通気性の優れたリップストップを使用したシューズバッグ。\u003cbr\u003e\n青森ヒバの一枚板で作った靴用消臭・抗菌除湿材 1足分、そしてタオルや着替えがコンパクトに収納できる圧縮袋の多機能なセットです。\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【カルデサック】\u003cbr\u003e\n日本三大美林の一つである「青森ヒバ」の魅力を活かし、現代のライフスタイルに合わせたアイテムを提案する日本のプロダクトブランドです。青森ヒバの材木屋で生まれ育ったデザイナーが立ち上げ、木の温もりや優れた機能性を日常に届けています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n \n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eカルデサック\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eE25K0056K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:原産国] --\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e日本\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c!-- [VAL:素材] --\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003e表地：ポリステル100％\u003cbr\u003e\n  裏地：綿70％、レーヨン(フィリバ)30%\u003c\/td\u003e\n\u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3263.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3263.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3264.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3264.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3265.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3265.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3266.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3266.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3269.jpg?v=1743412132\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3269.jpg?v=1743412132\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3276.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even3276.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/03139009.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/03139009.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/03139017.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/03139017.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/03139021.jpg?v=1743412133\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/03139021.jpg?v=1743412133\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n","brand":"EVEN","offers":[{"title":"BLACK","offer_id":46295946232026,"sku":"E25K0056K-01-00","price":15400.0,"currency_code":"JPY","in_stock":true},{"title":"WHITE","offer_id":46295946264794,"sku":"E25K0056K-10-00","price":15400.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/03139009.jpg?v=1743412133"},{"product_id":"e25a0144k","title":"［LACOSTE別注］ L.12.12 ポロシャツ","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e1933年に誕生し、全てのラコステポロシャツの＜原型＞である『L.12.12』のEVEN別注モデル。\u003cbr\u003e胸元のワニのデザインや、右袖の刺繍をEVEN仕様にカスタマイズ。\u003cbr\u003eさらに後ろ身頃の右裾には「STYLE EVEN」のロゴマークを特別に刺繍。\u003cbr\u003eブランド創設時から変わらぬデザインや機能性を受け継ぎ、単一の高級糸のみで編み上げた鹿の子による贅沢な光沢と耐久性を持つ、『ラコステ』のDNAを形にしたポロシャツが、世界で１つだけのEVEN別注モデルで登場です。\u003c\/p\u003e\n\u003cbr\u003e\u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n\u003cp\u003e【ラコステ】\u003cbr\u003e1933年にフランスの伝説的テニスプレーヤーであるルネ・ラコステが創業した、ワニのロゴで有名なプレミアム・ファッションスポーツブランドです。フレンチ・エレガンスとスポーツを融合させた、上品で快適なスタイルを提案しています。\u003c\/p\u003e\n\u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e \u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003e肩幅\u003c\/th\u003e\n\u003cth\u003e身幅\u003c\/th\u003e\n\u003cth\u003e袖丈\u003c\/th\u003e\n\u003cth\u003e着丈\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e44\u003c\/td\u003e\n\u003ctd\u003e50.5\u003c\/td\u003e\n\u003ctd\u003e21\u003c\/td\u003e\n\u003ctd\u003e70.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e46\u003c\/td\u003e\n\u003ctd\u003e54\u003c\/td\u003e\n\u003ctd\u003e22\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e48\u003c\/td\u003e\n\u003ctd\u003e57.5\u003c\/td\u003e\n\u003ctd\u003e23\u003c\/td\u003e\n\u003ctd\u003e73.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n\u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n\u003cdiv class=\"size-visual\"\u003e\n\u003cdiv class=\"size-visual__image\"\u003e\u003cimg id=\"sizeVisualImage\" alt=\"サイズ寸法イメージ\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"size-visual__slider-container\"\u003e\n\u003cbutton class=\"slider-arrow slider-arrow--prev\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n\u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e \u003cbutton class=\"size-btn is-active\"\u003eS\u003c\/button\u003e \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e \u003cbutton class=\"size-btn\"\u003eM\u003c\/button\u003e \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e \u003cbutton class=\"size-btn\"\u003eL\u003c\/button\u003e \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n\u003c\/div\u003e\n\u003cbutton class=\"slider-arrow slider-arrow--next\"\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: SIZE] ここまで --\u003e \u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eラコステ\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n\u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eE25A0144K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003e綿 100%\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n\u003c\/tr\u003e\n\u003c!-- [VAL:モデル] --\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e \u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0260.jpg?v=1745405749\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0264.jpg?v=1745405764\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0261.jpg?v=1745405764\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0262.jpg?v=1745405764\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0263.jpg?v=1745405764\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e \u003c!-- ============================================================ --\u003e \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e \u003c!-- ============================================================ --\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"WHITE \/ S","offer_id":46339702325466,"sku":"E25A0144K-10-03","price":20900.0,"currency_code":"JPY","in_stock":true},{"title":"WHITE \/ M","offer_id":46339697967322,"sku":"E25A0144K-10-04","price":20900.0,"currency_code":"JPY","in_stock":true},{"title":"WHITE \/ L","offer_id":46339698000090,"sku":"E25A0144K-10-05","price":20900.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/15_38_001.png?v=1789459973"},{"product_id":"e25k0147k","title":"［BRIEFING GOLF別注］アジャスタブルキャップ","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eEVEN創刊200号を記念して作成したキャップ。\u003cbr\u003eハイネックシャツとトーンを合わせたグレーのロゴ刺繡を施しました。\u003cbr\u003eダブルネームの特別仕様ピスネームを挟み込み、バックのサイズアジャスター部分にはロゴテープを配しました。\u003c\/p\u003e\n\u003cp\u003eバックに搭載したアジャスターは、フィット感を調整できるベルクロ仕様。　\u003c\/p\u003e\n\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【BRIEFING GOLF】\u003cbr\u003eミリタリズムをベースにした機能美と都会的なデザインを融合させた、人気ラゲッジブランド「BRIEFING」のゴルフラインです。「URBAN GOLF」をコンセプトに、タフな素材や優れた機能性を備えたウェアやキャディバッグを展開しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e頭回り\u003c\/th\u003e\n      \u003cth\u003e高さ\u003c\/th\u003e\n      \u003cth\u003eツバ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e58～60cm\u003c\/td\u003e\n      \u003ctd\u003e11cm\u003c\/td\u003e\n      \u003ctd\u003e6.5cm\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eBRIEFING GOLF\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n\u003c!-- [VAL:品番] --\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eE25K0147K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003eベトナム\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eポリエステル 65% コットン35%\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:モデル] --\u003e\n  \u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-even3227_k_0327.jpg?v=1743492815\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-even3227_k_0327.jpg?v=1743492815\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0948.jpg?v=1743804880\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/IMG_0948.jpg?v=1743804880\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-03139064_0327_83fe080a-29c2-4071-bdce-473ef8d5d1c3.jpg?v=1743492815\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-03139064_0327_83fe080a-29c2-4071-bdce-473ef8d5d1c3.jpg?v=1743492815\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-03139054_0327_5d0ecb45-e897-4546-a017-9ade172524be.jpg?v=1743492814\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DNP-03139054_0327_5d0ecb45-e897-4546-a017-9ade172524be.jpg?v=1743492814\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK \/ FREE","offer_id":46339726115034,"sku":"E25K0147K-01-00","price":7700.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DNP-even3227_k_0327.jpg?v=1743492815"},{"product_id":"e25a0148k","title":"［CHERVO］別注ドライマティック加工ポロシャツ","description":"\u003cp\u003e洗練された機能性と美しいディティールを兼ね備えたメンズポロシャツ。\u003cbr\u003e立体ジャージー素材とシェルボ独自のドライマティック加工により、優れた通気性と速乾性を実現。\u003cbr\u003eやや丸みを帯びた襟が特徴的で、刺繍ロゴとマッチしたコントラストの効いた細いラインをあしらい、スポーティーながらも上品な仕上がりを演出しています。\u003cbr\u003e背面左裾にはEVENの「E」ロゴを刺繍した別注デザイン。\u003c\/p\u003e\n\u003cp\u003e▶　ストレッチ\u003cbr\u003e「ドライマティック加工」\u003cbr\u003e▶　肌に優しく、バクテリアの繁殖を抑える効果が不快な臭いを防ぐ\u003cbr\u003e▶　洗濯後の速乾性\u003cbr\u003eらせん状にマイクロファイバーを織り込んで、究極の透湿性と速乾性を追求。汗をかいたり、にわか雨で多少、濡れても、生地がベタつかず、フレッシュ感を保ちます。\u003c\/p\u003e\n\u003ctable style=\"width: 100.098%; height: 219.219px;\" data-sheets-root=\"1\" border=\"1\" dir=\"ltr\" cellpadding=\"0\" cellspacing=\"0\" xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"\u003e\n\u003ccolgroup\u003e \u003ccol style=\"width: 15.6637%;\" width=\"77\"\u003e \u003ccol style=\"width: 17.4851%;\" width=\"77\"\u003e \u003ccol style=\"width: 18.9422%;\" width=\"77\"\u003e \u003ccol style=\"width: 16.7565%;\" width=\"77\"\u003e \u003ccol style=\"width: 16.7565%;\"\u003e \u003ccol style=\"width: 14.3888%;\"\u003e \u003c\/colgroup\u003e\n\u003ctbody\u003e\n\u003ctr style=\"height: 42.7891px;\"\u003e\n\u003ctd height=\"25\" class=\"xl72\" width=\"89\" style=\"height: 42.7891px; width: 67pt;\"\u003eサイズ\u003c\/td\u003e\n\u003ctd class=\"xl70\" width=\"89\" style=\"width: 67pt; height: 42.7891px;\"\u003eS\u003c\/td\u003e\n\u003ctd class=\"xl69\" width=\"89\" style=\"border-left: none; width: 67pt; height: 42.7891px;\"\u003eM\u003c\/td\u003e\n\u003ctd class=\"xl71\" width=\"89\" style=\"border-left: none; width: 33.5pt; height: 42.7891px;\"\u003eL\u003c\/td\u003e\n\u003ctd style=\"border-left: none; width: 16.75pt;\"\u003eXL\u003c\/td\u003e\n\u003ctd style=\"border-left: none; width: 16.75pt;\"\u003eXXL\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 47.1641px;\"\u003e\n\u003ctd height=\"28\" class=\"xl75\" style=\"height: 47.1641px;\"\u003e肩幅\u003c\/td\u003e\n\u003ctd class=\"xl74\" style=\"border-left: none; height: 47.1641px;\"\u003e42\u003c\/td\u003e\n\u003ctd class=\"xl74\" style=\"border-left: none; height: 47.1641px;\"\u003e43\u003c\/td\u003e\n\u003ctd class=\"xl73\" style=\"border-left: none; height: 47.1641px;\"\u003e44\u003c\/td\u003e\n\u003ctd style=\"border-left: none;\"\u003e46\u003c\/td\u003e\n\u003ctd style=\"border-left: none;\"\u003e47\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 44.3125px;\"\u003e\n\u003ctd height=\"27\" class=\"xl75\" style=\"height: 44.3125px; border-top: none;\"\u003e身幅\u003c\/td\u003e\n\u003ctd class=\"xl74\" style=\"border-top: none; border-left: none; height: 44.3125px;\"\u003e49\u003c\/td\u003e\n\u003ctd class=\"xl74\" style=\"border-top: none; border-left: none; height: 44.3125px;\"\u003e51\u003c\/td\u003e\n\u003ctd class=\"xl73\" style=\"border-top: none; border-left: none; height: 44.3125px;\"\u003e53\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none;\"\u003e55\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none;\"\u003e58\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 40.5938px;\"\u003e\n\u003ctd style=\"border-top: none; height: 40.5938px;\"\u003e着丈\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 40.5938px;\"\u003e72\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 40.5938px;\"\u003e74\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 40.5938px;\"\u003e75\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none;\"\u003e77\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none;\"\u003e78\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 44.3594px;\"\u003e\n\u003ctd height=\"27\" class=\"xl75\" style=\"height: 44.3594px; border-top: none;\"\u003e袖丈\u003c\/td\u003e\n\u003ctd class=\"xl74\" style=\"border-top: none; border-left: none; height: 44.3594px;\"\u003e24\u003c\/td\u003e\n\u003ctd class=\"xl74\" style=\"border-top: none; border-left: none; height: 44.3594px;\"\u003e24.5\u003c\/td\u003e\n\u003ctd class=\"xl73\" style=\"border-top: none; border-left: none; height: 44.3594px;\"\u003e25\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none;\"\u003e25.5\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none;\"\u003e26\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e※数値はセンチ、多少の誤差がございます\u003cbr\u003e※光や角度により、実物と色味が異なる場合がございます\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003e素材：ナイロン87％　ポリウレタン13％\u003cbr\u003e製造国：モルドバ\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even31568.jpg?v=1747029387\" alt=\"\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even31511.jpg?v=1747029387\" alt=\"\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even31479.jpg?v=1747029387\" alt=\"\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even31462.jpg?v=1747029387\" alt=\"\"\u003e\u003c\/span\u003e\u003cmeta charset=\"utf-8\"\u003e商品コード｜E25A0148K\u003cbr\u003e購入時納期｜3-4日\u003c\/p\u003e\n\u003c!----\u003e","brand":"EVEN","offers":[{"title":"NAVY \/ S","offer_id":46339736404186,"sku":"E25A0148K-40-03","price":44000.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ M","offer_id":46339736436954,"sku":"E25A0148K-40-04","price":44000.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ L","offer_id":46339736469722,"sku":"E25A0148K-40-05","price":44000.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ XL","offer_id":46339736502490,"sku":"E25A0148K-40-06","price":44000.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ 2XL","offer_id":46339736535258,"sku":"E25A0148K-40-07","price":44000.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even0274.jpg?v=1745928066"},{"product_id":"e25f0156k","title":"［CALZONI］EVEN別注 ライトウエイトサッカーショーツ","description":"\u003cp\u003eEVENとCALZONIがｺﾗﾎﾞすることによってｺﾞﾙﾌｼｰﾝに必要な快適性、機能性を重要視しながらもﾌｧｯｼｮﾝ要素を取り入れてﾀｳﾝﾕｰｽもできるｼｮｰﾄﾊﾟﾝﾂを開発した限定商品。\u003c\/p\u003e\n\u003cp\u003e■非常に軽さのあるｻｯｶｰ素材を使用しているので、汗ばむ時期でも肌へのはりつきが少なく快適に着用できます。\u003c\/p\u003e\n\u003cp\u003e■脇ｼｬｰﾘﾝｸﾞｺﾞﾑ仕様のため、ﾘﾗｯｸｽしつつも快適に身体にﾌｨｯﾄします。\u003c\/p\u003e\n\u003cp\u003e■ｺﾞﾙﾌPLAY時に手を入れる機会も多い、ﾎﾟｹｯﾄ口には同系色の汚れ防止の別布をあしらい、機能性と装飾性を兼ねたﾃﾞｨﾃｨｰﾙとなっています。\u003c\/p\u003e\n\u003cp\u003e■ﾋﾟｽﾎﾟｹｯﾄ口にはEVENの刺繍ﾛｺﾞを入れた限定商品となっています。\u003c\/p\u003e\n\u003ctable style=\"border-collapse: collapse; width: 335pt; height: 199.313px;\" width=\"445\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"\u003e\n\u003ccolgroup\u003e\u003ccol style=\"width: 89px;\" span=\"5\" width=\"89\"\u003e\u003c\/colgroup\u003e\n\u003ctbody\u003e\n\u003ctr style=\"height: 27.9844px;\" height=\"25\"\u003e\n\u003ctd style=\"height: 27.9844px; width: 67pt;\" width=\"89\" class=\"xl70\" height=\"25\"\u003eサイズcm\u003c\/td\u003e\n\u003ctd style=\"border-left: none; width: 67pt; height: 27.9844px;\" width=\"89\" class=\"xl77\"\u003eM\u003c\/td\u003e\n\u003ctd style=\"border-left: none; width: 67pt; height: 27.9844px;\" width=\"89\" class=\"xl77\"\u003eL\u003c\/td\u003e\n\u003ctd style=\"border-left: none; width: 67pt; height: 27.9844px;\" width=\"89\" class=\"xl69\"\u003eXL\u003c\/td\u003e\n\u003ctd style=\"border-left: none; width: 67pt; height: 27.9844px;\" width=\"89\" class=\"xl71\"\u003eXXL\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 28.3672px;\" height=\"27\"\u003e\n\u003ctd style=\"height: 28.3672px; border-top: none;\" class=\"xl78\" height=\"24\"\u003eウエスト\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e78-82\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e82-88\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl79\"\u003e88-94\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl74\"\u003e94-100\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 28.3672px;\" height=\"27\"\u003e\n\u003ctd style=\"height: 28.3672px; border-top: none;\" class=\"xl78\" height=\"24\"\u003eヒップ\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e100\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e105\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl79\"\u003e110\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl74\"\u003e115\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 29.4688px;\" height=\"27\"\u003e\n\u003ctd style=\"height: 29.4688px;\" class=\"xl74\" height=\"27\"\u003e股上\u003c\/td\u003e\n\u003ctd style=\"border-left: none; height: 29.4688px;\" class=\"xl80\"\u003e23.9\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 29.4688px;\" class=\"xl76\"\u003e24.8\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 29.4688px;\" class=\"xl79\"\u003e25.4\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 29.4688px;\" class=\"xl74\"\u003e26\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 28.3672px;\" height=\"27\"\u003e\n\u003ctd style=\"height: 28.3672px;\" class=\"xl78\" height=\"24\"\u003eワタリ\u003c\/td\u003e\n\u003ctd style=\"border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e32\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e33.6\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl79\"\u003e35.2\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl74\"\u003e36.8\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 28.3672px;\" height=\"27\"\u003e\n\u003ctd style=\"height: 28.3672px; border-top: none;\" class=\"xl78\" height=\"24\"\u003e裾巾\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e23.2\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl76\"\u003e24\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl79\"\u003e24.8\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3672px;\" class=\"xl74\"\u003e25.6\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr style=\"height: 28.3906px;\" height=\"27\"\u003e\n\u003ctd style=\"height: 28.3906px; border-top: none;\" class=\"xl78\" height=\"24\"\u003e股下\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3906px;\" class=\"xl81\"\u003e28\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3906px;\" class=\"xl81\"\u003e28\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3906px;\" class=\"xl75\"\u003e28\u003c\/td\u003e\n\u003ctd style=\"border-top: none; border-left: none; height: 28.3906px;\" class=\"xl74\"\u003e28\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cp\u003e※数値はセンチ、多少の誤差がございます\u003cbr\u003e※光や角度により、実物と色味が異なる場合がございます\u003c\/p\u003e\n\u003cp\u003e\u003cmeta charset=\"utf-8\"\u003e\u003cspan\u003e素材：綿 74%　ポリエステル 26%\u003cbr\u003e製造国：日本\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eモデル身長181㎝\u003c\/span\u003e\u003cspan\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/03139096.jpg?v=1744255046\" alt=\"\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/03139140.jpg?v=1744255046\" alt=\"\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/03139143.jpg?v=1744255046\" alt=\"\"\u003e\u003c\/span\u003e商品コード｜E25F0156K\u003cbr\u003e購入時納期｜3-4日\u003c\/p\u003e","brand":"EVEN","offers":[{"title":"NAVY \/ M","offer_id":46366662230234,"sku":"E25F0156K-40-04","price":23100.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ L","offer_id":46366662263002,"sku":"E25F0156K-40-05","price":23100.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ XL","offer_id":46366670749914,"sku":"E25F0156K-40-06","price":23100.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ 2XL","offer_id":46366670782682,"sku":"E25F0156K-40-07","price":23100.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/03139096.jpg?v=1744255046"},{"product_id":"e25h0159k","title":"［rough and swell別注］EVEN200号 コラボカートバッグ","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eコットンキャンパス素材を用いたカートバッグハンドルのストライプが良いアクセントゴルフ以外の日常使いにもちょうどいい大きさお買い物やランチバッグとしても活躍します。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【rough and swell】\u003cbr\u003e\n          ゴルフとサーフィン（波のうねり）をコンセプトに2012年に誕生した日本発のカジュアルゴルフウェア＆デイリーブランドです。カモフラやカレッジ風のポップなグラフィック、ブランドアイコンである「カモノハシ」が特徴で、コースからタウンユースまで幅広く活躍します。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003c!-- 列の追加：\u003cth\u003e列名\u003c\/th\u003e を theadの\u003ctr\u003eに、\u003ctd\u003e数値\u003c\/td\u003e を各サイズ行に追加 --\u003e\n      \u003c!-- サイズ行の非表示：該当の \u003ctr\u003e〜\u003c\/tr\u003e を丸ごと削除またはコメントアウト --\u003e\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e幅\u003c\/th\u003e\n      \u003cth\u003e高さ\u003c\/th\u003e\n      \u003cth\u003eマチ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e23\u003c\/td\u003e\n      \u003ctd\u003e26\u003c\/td\u003e\n      \u003ctd\u003e12\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"F\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size-visualizer-bag_bec757ef-823f-434b-952a-c73d59234772.png?v=1786360099\"\u003eF\u003c\/button\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SIZE] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003erough and swell\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eE25H0159K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003e本体：COTTON 100%\u003cbr\u003e\n              持ち手：ACRYLIC 100％\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0250.jpg?v=1745408395\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0250.jpg?v=1745408395\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0252.jpg?v=1745408395\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0252.jpg?v=1745408395\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0245.jpg?v=1745408395\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0245.jpg?v=1745408395\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0247.jpg?v=1745408395\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0247.jpg?v=1745408395\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0251.jpg?v=1745408395\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0251.jpg?v=1745408395\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0253.jpg?v=1745408396\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0253.jpg?v=1745408396\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0254.jpg?v=1745408395\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0254.jpg?v=1745408395\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0246.jpg?v=1745408395\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0246.jpg?v=1745408395\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0248.jpg?v=1745408395\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0248.jpg?v=1745408395\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0255.jpg?v=1745408395\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0255.jpg?v=1745408395\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even10055.jpg?v=1745408396\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even10055.jpg?v=1745408396\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"ホワイト \/ FREE","offer_id":46406813253850,"sku":"E25H0159K-10-00","price":11000.0,"currency_code":"JPY","in_stock":true},{"title":"ブルー \/ FREE","offer_id":46406813286618,"sku":"E25H0159K-73-00","price":11000.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even0245.jpg?v=1745408395"},{"product_id":"e25h0160k","title":"［MARK ＆ LONA別注］FER クロスオーバーサコッシュ","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003eFERの象徴であるワールドロゴを大胆にプリントした、EVEN × MARK \u0026amp; LONA FER限定ショルダーバッグ。\u003c\/p\u003e\n\u003cp\u003e自転車レースなどでも使用されるショルダーバッグ “サコッシュ” をモチーフに、ゴルフやアウトドアシーンにも適したコンパクトながらも実用性に優れたサイズ感が特徴です。\u003c\/p\u003e\n\u003cp\u003e大きめのフロントポケットにはファスナー付きで、サングラスや日焼け止めなどすぐに取り出したいアイテムの収納にも便利です。\u003c\/p\u003e\n\u003cp\u003e本体メインポケットはボトム部分にマチを設けており、厚みのあるアイテムも収納しやすく、身体にフィットする快適な仕様となっています。\u003cbr\u003e\u003c\/p\u003e\n  \n\u003cp\u003e【MARK \u0026amp; LONA】\u003cbr\u003e100年以上の歴史を持つグローバルスポーツブランドです。2008年にロサンゼルスで誕生し、「ラグジュアリーゴルフ」をコンセプトにしたゴルフアパレルブランドです。\n  ゴルフウェア界にて、アートやパンク、ストリートの要素を取り入れた斬新なデザインを展開しています。\u003c\/p\u003e\n\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e幅\u003c\/th\u003e\n      \u003cth\u003e高さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eF\u003c\/th\u003e\n      \u003ctd\u003e30\u003c\/td\u003e\n      \u003ctd\u003e24\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n   \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"F\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size-visualizer-bag_980ab9a7-d631-4338-99c7-a22420a7a3eb.png?v=1785914960\"\u003eF\u003c\/button\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eMARK ＆ LONA\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eE25H0160K\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e台湾\u003c\/td\u003e\n\u003c\/tr\u003e\n\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n   \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0236.jpg?v=1748586388\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0236.jpg?v=1748586388\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0237.jpg?v=1748586388\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0237.jpg?v=1748586388\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0242.jpg?v=1748586388\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0242.jpg?v=1748586388\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0243.jpg?v=1748586388\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/even0243.jpg?v=1748586388\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\n      \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"ブラック \/ FREE","offer_id":46418764497114,"sku":"E25H0160K-01-00","price":16500.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/even0236.jpg?v=1748586388"},{"product_id":"s25a0097k","title":"SVKS5008［サルベージパブリックコレパ］クリナポハポハモックネック S\/S","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003e\u003c\/p\u003e\n\u003cp\u003e特殊な糸を使って編まれたポップコーンニット素材の半袖モックネック。\u003c\/p\u003e\n\u003cp\u003e遮熱性、UVカット、吸水速乾性、ストレッチ性、更に抗菌消臭機能を併せ持った夏場にこれ以上ない最強な1枚。\u003c\/p\u003e\n\u003cp\u003e太幅のボーダー切り替えがレトロサーフを彷彿させつつも爽やかな仕上がりで好印象。\u003c\/p\u003e\n\u003cp\u003e襟と袖口はピンストライプが入りのリブ仕様。\u003c\/p\u003e\n\u003cp\u003e両裾にはスリット入り。胸にはSALVAGE PUBLIC Kolepaブランドスタンプロゴのプリント入り。\u003c\/p\u003e\n\n\u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003eEVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e肩幅\u003c\/th\u003e\n      \u003cth\u003e身幅\u003c\/th\u003e\n      \u003cth\u003e袖丈\u003c\/th\u003e\n      \u003cth\u003e着丈\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eS\u003c\/th\u003e\n      \u003ctd\u003e45.3\u003c\/td\u003e\n      \u003ctd\u003e51\u003c\/td\u003e\n      \u003ctd\u003e23\u003c\/td\u003e\n      \u003ctd\u003e68\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eM\u003c\/th\u003e\n      \u003ctd\u003e47.3\u003c\/td\u003e\n      \u003ctd\u003e54\u003c\/td\u003e\n      \u003ctd\u003e24\u003c\/td\u003e\n      \u003ctd\u003e71\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eL\u003c\/th\u003e\n      \u003ctd\u003e49.3\u003c\/td\u003e\n      \u003ctd\u003e57\u003c\/td\u003e\n      \u003ctd\u003e25\u003c\/td\u003e\n      \u003ctd\u003e74\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-ss-tshirt_4398966f-7b0c-43ec-a4e3-0e14d6465ab6.png?v=1787797325\"\u003eS\u003c\/button\u003e\n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-ss-tshirt_45440621-666d-45a8-b359-5ee4d372fb41.png?v=1787797325\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-ss-tshirt_02a01b0a-88c1-45cb-9e24-30aa99f12307.png?v=1787797325\"\u003eL\u003c\/button\u003e\n            \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n            \u003c!--\u003cbutton class=\"size-btn\" data-size=\"XL\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-ss-tshirt_88a976f0-f5be-4b94-a46e-5df833911cbd.png?v=1787794007\"\u003eXL\u003c\/button\u003e--\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e品番\u003c\/td\u003e\n\u003ctd\u003eSVKS5008\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eS25A0097K\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e中国\u003c\/td\u003e\n\u003c\/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003eポリエステル100%\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm \/ L着用\u003c\/td\u003e\n          \u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8061.jpg?v=1759224493\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8061.jpg?v=1759224493\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8063.jpg?v=1759224493\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8063.jpg?v=1759224493\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8059.jpg?v=1759224493\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8059.jpg?v=1759224493\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8060.jpg?v=1759224493\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8060.jpg?v=1759224493\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8054.jpg?v=1759224493\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8054.jpg?v=1759224493\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8058.jpg?v=1759224493\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8058.jpg?v=1759224493\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8055.jpg?v=1750229993\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8055.jpg?v=1750229993\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8056.jpg?v=1750229993\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8056.jpg?v=1750229993\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7219.jpg?v=1751364232\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7219.jpg?v=1751364232\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7226.jpg?v=1751364232\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7226.jpg?v=1751364232\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7238.jpg?v=1751364231\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7238.jpg?v=1751364231\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7242.jpg?v=1751364232\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7242.jpg?v=1751364232\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7244.jpg?v=1751364232\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7244.jpg?v=1751364232\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能 (スワイプダウン閉じる \u0026 サムネイル遷移追加)\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      \/\/ モーダル内のサムネイル動的生成\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        \/\/ サムネイルクリック時の直接ジャンプ処理\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) {\n          indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        }\n        \/\/ サムネイルのアクティブ状態を更新\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0;\n      let touchStartY = 0;\n      let currentTranslateX = 0;\n      let currentTranslateY = 0;\n      let isDragging = false;\n      let isPinching = false;\n      let swipeDirection = null;\n      let initialPinchDistance = 0;\n      let currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e {\n          modal.style.display = 'none';\n        }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) {\n          closeModal();\n        }\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showPrevImage();\n      });\n      modalNextBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showNextImage();\n      });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true;\n          isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true;\n          swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) {\n              swipeDirection = 'h';\n            } else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) {\n              swipeDirection = 'v';\n            }\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false;\n          currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) {\n              showNextImageFromSwipe(currentTranslateX);\n            } else if (currentTranslateX \u003e swipeThreshold) {\n              showPrevImageFromSwipe(currentTranslateX);\n            } else {\n              currentTranslateX = 0;\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          } else if (swipeDirection === 'v') {\n            const swipeDownThreshold = 100;\n            if (currentTranslateY \u003e swipeDownThreshold || currentTranslateY \u003c -swipeDownThreshold) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') {\n          showPrevImage();\n        } else if (e.key === 'ArrowRight') {\n          showNextImage();\n        } else if (e.key === 'Escape') {\n          closeModal();\n        }\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK \/ S","offer_id":46576710877402,"sku":"S25A0097K-01-03","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"BLACK \/ M","offer_id":46576710910170,"sku":"S25A0097K-01-04","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"BLACK \/ L","offer_id":46576710942938,"sku":"S25A0097K-01-05","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"グレーベージュ \/ S","offer_id":46576710975706,"sku":"S25A0097K-26-03","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"グレーベージュ \/ M","offer_id":46576711008474,"sku":"S25A0097K-26-04","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"グレーベージュ \/ L","offer_id":46576711041242,"sku":"S25A0097K-26-05","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"OLIVE \/ S","offer_id":46576708255962,"sku":"S25A0097K-36-03","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"OLIVE \/ M","offer_id":46576708288730,"sku":"S25A0097K-36-04","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"OLIVE \/ L","offer_id":46576708321498,"sku":"S25A0097K-36-05","price":16500.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC8059.jpg?v=1759224493"},{"product_id":"s25a0102k","title":"［SALVAGE PUBLIC Kolepa］MALOʻO MOCKNECK L\/S（GOLFBOY）","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003eMaloʻoとはDryを意味するハワイ語で気化促進繊維が汗の蒸発を加速させる生地を採用した長袖モックネック。\u003c\/p\u003e\n\u003cp\u003eプレー中の体の動きを考えて作られたオリジナルパターンのKolepaスリーブは肩回りの動きを妨げない。\u003c\/p\u003e\n\u003cp\u003e肩周りや脇ハギはフラットシーマで縫製する事で肌触りもなめらかでプレー中のわずかなストレスも解消してくれます。\u003c\/p\u003e\n\u003cp\u003eフロント左胸に小さくSALVAGE PUBLIC Kolepaブランドスタンプロゴ入り。\u003c\/p\u003e\n\u003cp\u003eバックにはGOLFBOY AROUND THE WORLD のメッセージが入った1着。\u003c\/p\u003e\n  \n\u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003eEVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n\"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003e裄丈\u003c\/th\u003e\n\u003cth\u003e身幅\u003c\/th\u003e\n\u003cth\u003e着丈\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e83\u003c\/td\u003e\n\u003ctd\u003e49\u003c\/td\u003e\n\u003ctd\u003e68\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e85.5\u003c\/td\u003e\n\u003ctd\u003e52\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e88\u003c\/td\u003e\n\u003ctd\u003e55\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eXL\u003c\/th\u003e\n\u003ctd\u003e90.5\u003c\/td\u003e\n\u003ctd\u003e58\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n           \n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-ls-tshirt_d75d5cb3-509b-45e1-83ae-293155efbce8.png?v=1784095294\"\u003eS\u003c\/button\u003e\n            \n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-ls-tshirt_6a28b0cd-4d94-499d-a2bb-2f029b740734.png?v=1784095293\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-ls-tshirt_6ca4a487-defa-4c8c-8c0e-5f7898db740a.png?v=1784095293\"\u003eL\u003c\/button\u003e\n\n            \u003c!-- [BTN:L] data-image にXLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"XL\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-ls-tshirt_519de0d5-01f8-496b-85d4-7709816a82ba.png?v=1784095293\"\u003eXL\u003c\/button\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c\/tr\u003e\n\n\u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA5013\u003c\/td\u003e\n\u003c\/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eS25A0102K\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e日本\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003eポリエステル100%\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm \/ L着用\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8112.jpg?v=1759216015\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8112.jpg?v=1759216015\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8116.jpg?v=1759216015\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8116.jpg?v=1759216015\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8117.jpg?v=1759216015\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8117.jpg?v=1759216015\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8118.jpg?v=1759216015\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8118.jpg?v=1759216015\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8113.jpg?v=1750235030\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8113.jpg?v=1750235030\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8114.jpg?v=1750235030\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8114.jpg?v=1750235030\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8115.jpg?v=1750235030\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8115.jpg?v=1750235030\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7455.jpg?v=1751365078\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7455.jpg?v=1751365078\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7486.jpg?v=1751365078\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7486.jpg?v=1751365078\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7494.jpg?v=1751365078\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7494.jpg?v=1751365078\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7497.jpg?v=1751365078\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7497.jpg?v=1751365078\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n  \n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能 (スワイプダウン閉じる \u0026 サムネイル遷移追加)\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      \/\/ モーダル内のサムネイル動的生成\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        \/\/ サムネイルクリック時の直接ジャンプ処理\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) {\n          indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        }\n        \/\/ サムネイルのアクティブ状態を更新\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0;\n      let touchStartY = 0;\n      let currentTranslateX = 0;\n      let currentTranslateY = 0;\n      let isDragging = false;\n      let isPinching = false;\n      let swipeDirection = null;\n      let initialPinchDistance = 0;\n      let currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e {\n          modal.style.display = 'none';\n        }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) {\n          closeModal();\n        }\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showPrevImage();\n      });\n      modalNextBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showNextImage();\n      });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true;\n          isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true;\n          swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) {\n              swipeDirection = 'h';\n            } else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) {\n              swipeDirection = 'v';\n            }\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false;\n          currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) {\n              showNextImageFromSwipe(currentTranslateX);\n            } else if (currentTranslateX \u003e swipeThreshold) {\n              showPrevImageFromSwipe(currentTranslateX);\n            } else {\n              currentTranslateX = 0;\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          } else if (swipeDirection === 'v') {\n            const swipeDownThreshold = 100;\n            if (currentTranslateY \u003e swipeDownThreshold || currentTranslateY \u003c -swipeDownThreshold) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') {\n          showPrevImage();\n        } else if (e.key === 'ArrowRight') {\n          showNextImage();\n        } else if (e.key === 'Escape') {\n          closeModal();\n        }\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"ICE GRAY \/ S","offer_id":46576768975066,"sku":"S25A0102K-02-03","price":14850.0,"currency_code":"JPY","in_stock":true},{"title":"ICE GRAY \/ M","offer_id":46576771399898,"sku":"S25A0102K-02-04","price":14850.0,"currency_code":"JPY","in_stock":true},{"title":"ICE GRAY \/ L","offer_id":46576771432666,"sku":"S25A0102K-02-05","price":14850.0,"currency_code":"JPY","in_stock":true},{"title":"ICE GRAY \/ XL","offer_id":46576771465434,"sku":"S25A0102K-02-06","price":14850.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ S","offer_id":46576771498202,"sku":"S25A0102K-40-03","price":14850.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ M","offer_id":46576771530970,"sku":"S25A0102K-40-04","price":14850.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ L","offer_id":46576771563738,"sku":"S25A0102K-40-05","price":14850.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ XL","offer_id":46576771596506,"sku":"S25A0102K-40-06","price":14850.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC8118.jpg?v=1759216015"},{"product_id":"s25a0107k","title":"［SALVAGE PUBLIC Kolepa］ALAPAINA VNECK POLO L\/S（BIG ALOHA）","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003eオールシーズンで快適さを保つ為に開発された長袖Vネックポロ。\u003c\/p\u003e\n\u003cp\u003e特殊糸を用いた生地は肌面をドライに保ち夏はサラっと涼しく、冬は冷え感がなく温かさを感じる１着。\u003c\/p\u003e\n\u003cp\u003e肩回りの切り替えや脇下ガセットなどは動きを妨げずプレーに集中できる。\u003c\/p\u003e\n\u003cp\u003eフロント\/バックに大きく入った ALOHAプリントはインパクトがあり人気のデザイン。\u003c\/p\u003e\n\u003cp\u003e襟にジャガードで入れられた2本ラインもアクセントになっている。\u003c\/p\u003e\n  \n\u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003eEVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n\"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003e裄丈\u003c\/th\u003e\n\u003cth\u003e身幅\u003c\/th\u003e\n\u003cth\u003e着丈\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e53.55\u003c\/td\u003e\n\u003ctd\u003e52\u003c\/td\u003e\n\u003ctd\u003e70\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e55.59\u003c\/td\u003e\n\u003ctd\u003e55\u003c\/td\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e57.62\u003c\/td\u003e\n\u003ctd\u003e58\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eXL\u003c\/th\u003e\n\u003ctd\u003e59.66\u003c\/td\u003e\n\u003ctd\u003e61\u003c\/td\u003e\n\u003ctd\u003e76\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n           \n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-ls-tshirt_966fb89e-4d59-41d6-8c86-6702859bf1cd.png?v=1784093050\"\u003eS\u003c\/button\u003e\n            \n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-ls-tshirt_7e91ed23-1f67-42dd-967d-fcd0cf0b719c.png?v=1784093050\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-ls-tshirt_634b183b-7b5f-4694-a93f-ac6494c0a235.png?v=1784093051\"\u003eL\u003c\/button\u003e\n\n            \u003c!-- [BTN:L] data-image にXLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"XL\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-ls-tshirt_f165fc9d-3882-429e-bcbf-d6fef1539339.png?v=1784093050\"\u003eXL\u003c\/button\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c\/tr\u003e\n\n\u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA5018\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eS25A0107K\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e中国\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003eポリエステル100%\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm \/ L着用\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5250.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5250.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5251.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5251.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5243.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5243.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5244.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5244.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5252.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5252.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5253.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5253.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5245.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5245.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5246.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5246.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5247.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5247.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5249.jpg?v=1750240754\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5249.jpg?v=1750240754\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7694.jpg?v=1751365495\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7694.jpg?v=1751365495\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7707_6213b0c5-53e7-4679-a7e6-f2a37fa4c18c.jpg?v=1751365495\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7707_6213b0c5-53e7-4679-a7e6-f2a37fa4c18c.jpg?v=1751365495\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7720_787ca32a-41ba-441a-9af6-41e182715210.jpg?v=1751365495\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7720_787ca32a-41ba-441a-9af6-41e182715210.jpg?v=1751365495\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7727.jpg?v=1751365495\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7727.jpg?v=1751365495\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0498_8b27ced0-ab31-442e-884c-880f6f4701b3.jpg?v=1763698360\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0498_8b27ced0-ab31-442e-884c-880f6f4701b3.jpg?v=1763698360\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0507_c914db41-ecef-4944-9609-721b6e38caf2.jpg?v=1763698360\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0507_c914db41-ecef-4944-9609-721b6e38caf2.jpg?v=1763698360\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 16\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0581_f6c391d4-f83d-42a3-90a2-76352d845770.jpg?v=1763698361\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0581_f6c391d4-f83d-42a3-90a2-76352d845770.jpg?v=1763698361\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 17\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0641_f32b0254-4b60-4511-9d00-7e8342d1de4a.jpg?v=1763698361\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A0641_f32b0254-4b60-4511-9d00-7e8342d1de4a.jpg?v=1763698361\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 18\"\u003e\u003c\/div\u003e\n  \n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能 (スワイプダウン閉じる \u0026 サムネイル遷移追加)\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      \/\/ モーダル内のサムネイル動的生成\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        \/\/ サムネイルクリック時の直接ジャンプ処理\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) {\n          indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        }\n        \/\/ サムネイルのアクティブ状態を更新\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0;\n      let touchStartY = 0;\n      let currentTranslateX = 0;\n      let currentTranslateY = 0;\n      let isDragging = false;\n      let isPinching = false;\n      let swipeDirection = null;\n      let initialPinchDistance = 0;\n      let currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e {\n          modal.style.display = 'none';\n        }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) {\n          closeModal();\n        }\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showPrevImage();\n      });\n      modalNextBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showNextImage();\n      });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true;\n          isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true;\n          swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) {\n              swipeDirection = 'h';\n            } else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) {\n              swipeDirection = 'v';\n            }\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false;\n          currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) {\n              showNextImageFromSwipe(currentTranslateX);\n            } else if (currentTranslateX \u003e swipeThreshold) {\n              showPrevImageFromSwipe(currentTranslateX);\n            } else {\n              currentTranslateX = 0;\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          } else if (swipeDirection === 'v') {\n            const swipeDownThreshold = 100;\n            if (currentTranslateY \u003e swipeDownThreshold || currentTranslateY \u003c -swipeDownThreshold) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') {\n          showPrevImage();\n        } else if (e.key === 'ArrowRight') {\n          showNextImage();\n        } else if (e.key === 'Escape') {\n          closeModal();\n        }\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK \/ S","offer_id":46576829202650,"sku":"S25A0107K-01-03","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ M","offer_id":46576829235418,"sku":"S25A0107K-01-04","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ L","offer_id":46576829268186,"sku":"S25A0107K-01-05","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"WHITE \/ S","offer_id":46576829300954,"sku":"S25A0107K-10-03","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"WHITE \/ M","offer_id":46576829333722,"sku":"S25A0107K-10-04","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"WHITE \/ L","offer_id":46576829366490,"sku":"S25A0107K-10-05","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ S","offer_id":46576829399258,"sku":"S25A0107K-40-03","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ M","offer_id":46576829432026,"sku":"S25A0107K-40-04","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ L","offer_id":46576829464794,"sku":"S25A0107K-40-05","price":19800.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/A7R5250.jpg?v=1750240754"},{"product_id":"s25d0111k","title":"ALA WAI SNAP PADDED JACKET","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e超軽量なスウェットシャツ感覚で着用できる防寒ジャケット。\u003c\/p\u003e\n\u003cp\u003e極細ナイロン糸を用いた生地は撥水性、防風性がありながらストレッチも効いたユースフル仕上がり。\u003c\/p\u003e\n\u003cp\u003e中綿には『COREBRID ™B』を採用。\u003c\/p\u003e\n\u003cp\u003eボリュームを抑え薄手に仕上げているがしっかり保温しつつふわっと優しい着心地。\u003c\/p\u003e\n\u003cp\u003eまた中綿のデメリットである静電気も抑制する最新の機能中綿。\u003c\/p\u003e\n\u003cp\u003e首元は３つ釦が付いているので脱着も容易です。両脇にはスリットポケット付き。\u003c\/p\u003e\n\u003cp\u003eフロント左胸にはSALVAGE PUBLIC Kolepaティースタンプのプリント入り。\u003c\/p\u003e\n\u003cp\u003eバックにはLOCAL GOLFERS UNIONのプリント。\u003c\/p\u003e\n\u003cp\u003e気の合う仲間達とお揃いでもスタイリッシュな印象で良い。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n      \u003c!-- 列の追加：\u003cth\u003e列名\u003c\/th\u003e を theadの\u003ctr\u003eに、\u003ctd\u003e数値\u003c\/td\u003e を各サイズ行に追加 --\u003e\n      \u003c!-- サイズ行の非表示：該当の \u003ctr\u003e〜\u003c\/tr\u003e を丸ごと削除またはコメントアウト --\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003e裄丈\u003c\/th\u003e\n\u003cth\u003e身幅\u003c\/th\u003e\n\u003cth\u003e着丈\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e88\u003c\/td\u003e\n\u003ctd\u003e62\u003c\/td\u003e\n\u003ctd\u003e68\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e89\u003c\/td\u003e\n\u003ctd\u003e65\u003c\/td\u003e\n\u003ctd\u003e68\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e91\u003c\/td\u003e\n\u003ctd\u003e68\u003c\/td\u003e\n\u003ctd\u003e71\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-ls-tshirt_28e7ab84-f760-4a37-a98c-bb8b89ebc050.png?v=1783394982\"\u003eS\u003c\/button\u003e\n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-ls-tshirt_13bdf500-fe01-45f5-8e38-484f535dbbd8.png?v=1783394982\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-ls-tshirt_786d26ac-a16b-471c-ae95-85398865c40c.png?v=1783394982\"\u003eL\u003c\/button\u003e\n            \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SIZE] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n         \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA5020\u003c\/td\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eS25D0111K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003e表地\/ナイロン85% ポリウレタン15%\u003cbr\u003e\n              裏地\/ポリエステル95% ポリウレタン 5%\u003cbr\u003e\n              中綿\/ポリエステル100%\u003cbr\u003e\n              リブ\/ポリエステル100％\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm \/ L着用\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n   \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5317.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5317.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5318.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5318.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5315.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5315.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5316.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5316.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5310.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5310.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5311.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5311.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5312.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5312.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5314.jpg?v=1764567671\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/A7R5314.jpg?v=1764567671\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7597_32987e17-1d35-4bc4-a57f-f53ccfd6e869.jpg?v=1751367009\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7597_32987e17-1d35-4bc4-a57f-f53ccfd6e869.jpg?v=1751367009\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7602_e7d41665-a6cd-46c7-9ffc-8d51964e3576.jpg?v=1751367009\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7602_e7d41665-a6cd-46c7-9ffc-8d51964e3576.jpg?v=1751367009\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7617_81fda815-bdf1-456d-bbed-a84db98c94c9.jpg?v=1751367009\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7617_81fda815-bdf1-456d-bbed-a84db98c94c9.jpg?v=1751367009\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1169_91313df4-caac-40e6-a0a6-496f601e08ca.jpg?v=1763699065\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1169_91313df4-caac-40e6-a0a6-496f601e08ca.jpg?v=1763699065\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1182_ac42e7fe-7b9c-4b13-bb3e-c481d552ac87.jpg?v=1763699065\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1182_ac42e7fe-7b9c-4b13-bb3e-c481d552ac87.jpg?v=1763699065\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1222_b9175a5b-8fef-43f7-9df3-94c33d60dfc7.jpg?v=1763699065\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1222_b9175a5b-8fef-43f7-9df3-94c33d60dfc7.jpg?v=1763699065\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1235_f0668501-1ae2-4f9d-a554-6056be4b06fd.jpg?v=1763699065\u0026amp;width=700\"\u003e\n        \u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/326A1235_f0668501-1ae2-4f9d-a554-6056be4b06fd.jpg?v=1763699065\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\n      \u003c\/div\u003e\n\n\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\u003c\/div\u003e\n\n\n\n\n","brand":"EVEN","offers":[{"title":"BLACK \/ S","offer_id":46578409603290,"sku":"S25D0111K-01-03","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ M","offer_id":46578409636058,"sku":"S25D0111K-01-04","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ L","offer_id":46578409668826,"sku":"S25D0111K-01-05","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"OLIVE \/ S","offer_id":46578413797594,"sku":"S25D0111K-36-03","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"OLIVE \/ M","offer_id":46578413830362,"sku":"S25D0111K-36-04","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"OLIVE \/ L","offer_id":46578413863130,"sku":"S25D0111K-36-05","price":28600.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/A7R5317.jpg?v=1764567671"},{"product_id":"s25f0093k","title":"HERBERT PAPER NYLON SHORTS","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003e紙の様な風合いと驚きのストレッチ性がゴルフをはじめとしたハワイの様々なフィールドで活躍するテクニカルなナイロンショーツ。\u003c\/p\u003e\n\u003cp\u003e夏場に嬉しい吸水速乾性のあるメッシュライナーを付けておりサラッとした履き心地に加えウエストはゴム入り＆IN\/OUT仕様のスピンドルなども使い勝手を考慮した作りです。\u003c\/p\u003e\n\u003cp\u003eフラップ付きの右バックポケットにはスコアカードなどを収め、左バックポケットにはグローブを収める事を想定した仕様にしている。\u003c\/p\u003e\n\u003cp\u003e右バックポケット上にリフレクターパッチ付き。\u003c\/p\u003e\n\u003cp\u003e左裾にはTi Leaf＆Laua‘eのダブルキルト柄がプリントされたSALVAGE PUBLICならではのデザインが特徴的な1本。\u003c\/p\u003e\n  \n\u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003eEVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n\"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003eウエスト\u003c\/th\u003e\n\u003cth\u003e股上\u003c\/th\u003e\n\u003cth\u003e股下\u003c\/th\u003e\n\u003cth\u003eわたり\u003c\/th\u003e\n\u003cth\u003e裾幅\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e72\u003c\/td\u003e\n\u003ctd\u003e17.5\u003c\/td\u003e\n\u003ctd\u003e23.2\u003c\/td\u003e\n\u003ctd\u003e31.5\u003c\/td\u003e\n\u003ctd\u003e26.7\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e78\u003c\/td\u003e\n\u003ctd\u003e18\u003c\/td\u003e\n\u003ctd\u003e24.7\u003c\/td\u003e\n\u003ctd\u003e33\u003c\/td\u003e\n\u003ctd\u003e27.7\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e84\u003c\/td\u003e\n\u003ctd\u003e18.5\u003c\/td\u003e\n\u003ctd\u003e26.2\u003c\/td\u003e\n\u003ctd\u003e34.5\u003c\/td\u003e\n\u003ctd\u003e28.7\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n           \n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-shorts_12ae2e4e-eaeb-4c18-9905-648bb11662e8.png?v=1784079412\"\u003eS\u003c\/button\u003e\n            \n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-shorts_6268a9f0-60c7-4d4c-aea7-b241dd97cede.png?v=1784079413\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-shorts_f2c624e4-c102-4b33-91bf-b72c1e9443f3.png?v=1784079412\"\u003eL\u003c\/button\u003e\n\n            \u003c!-- [BTN:L] data-image にXLサイズの画像URLを入れる --\u003e\n       \u003c!--     \u003cbutton class=\"size-btn\" data-size=\"XL\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-ss-tshirt_eae98dc6-538e-444f-8889-a7e5fc600fef.png?v=1783920238\"\u003eXL\u003c\/button\u003e--\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c\/tr\u003e\n\n\u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA5004\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eS25F0093K\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e中国\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003e本体\/ナイロン90％ ポリウレタン10％ \u003cbr\u003e\n  裏地\/ポリエステル100%\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm \/ L着用\u003c\/td\u003e\n          \u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8023.jpg?v=1750315324\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8023.jpg?v=1750315324\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8024.jpg?v=1750315324\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8024.jpg?v=1750315324\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8016.jpg?v=1750315324\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8016.jpg?v=1750315324\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8019.jpg?v=1750315324\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8019.jpg?v=1750315324\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8017.jpg?v=1750315324\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8017.jpg?v=1750315324\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8018.jpg?v=1750315324\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8018.jpg?v=1750315324\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8020.jpg?v=1750315322\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8020.jpg?v=1750315322\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8021.jpg?v=1750315322\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8021.jpg?v=1750315322\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7127.jpg?v=1751363626\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7127.jpg?v=1751363626\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7131.jpg?v=1751363626\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7131.jpg?v=1751363626\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7142.jpg?v=1751363626\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7142.jpg?v=1751363626\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7151.jpg?v=1751363626\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7151.jpg?v=1751363626\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7155.jpg?v=1751363626\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7155.jpg?v=1751363626\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7195.jpg?v=1751363745\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7195.jpg?v=1751363745\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7204.jpg?v=1751363745\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7204.jpg?v=1751363745\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7206.jpg?v=1751363745\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7206.jpg?v=1751363745\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 16\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7208.jpg?v=1751363745\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7208.jpg?v=1751363745\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 17\"\u003e\u003c\/div\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能 (スワイプダウン閉じる \u0026 サムネイル遷移追加)\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      \/\/ モーダル内のサムネイル動的生成\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        \/\/ サムネイルクリック時の直接ジャンプ処理\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) {\n          indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        }\n        \/\/ サムネイルのアクティブ状態を更新\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0;\n      let touchStartY = 0;\n      let currentTranslateX = 0;\n      let currentTranslateY = 0;\n      let isDragging = false;\n      let isPinching = false;\n      let swipeDirection = null;\n      let initialPinchDistance = 0;\n      let currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e {\n          modal.style.display = 'none';\n        }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) {\n          closeModal();\n        }\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showPrevImage();\n      });\n      modalNextBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showNextImage();\n      });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true;\n          isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true;\n          swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) {\n              swipeDirection = 'h';\n            } else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) {\n              swipeDirection = 'v';\n            }\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false;\n          currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) {\n              showNextImageFromSwipe(currentTranslateX);\n            } else if (currentTranslateX \u003e swipeThreshold) {\n              showPrevImageFromSwipe(currentTranslateX);\n            } else {\n              currentTranslateX = 0;\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          } else if (swipeDirection === 'v') {\n            const swipeDownThreshold = 100;\n            if (currentTranslateY \u003e swipeDownThreshold || currentTranslateY \u003c -swipeDownThreshold) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') {\n          showPrevImage();\n        } else if (e.key === 'ArrowRight') {\n          showNextImage();\n        } else if (e.key === 'Escape') {\n          closeModal();\n        }\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK \/ S","offer_id":46578444697818,"sku":"S25F0093K-01-03","price":19800.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ M","offer_id":46578444730586,"sku":"S25F0093K-01-04","price":19800.0,"currency_code":"JPY","in_stock":false},{"title":"BLACK \/ L","offer_id":46578444763354,"sku":"S25F0093K-01-05","price":19800.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ S","offer_id":46578441650394,"sku":"S25F0093K-26-03","price":19800.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ M","offer_id":46578441683162,"sku":"S25F0093K-26-04","price":19800.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ L","offer_id":46578441715930,"sku":"S25F0093K-26-05","price":19800.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC8023.jpg?v=1750315324"},{"product_id":"s25f0105k","title":"MAKANI TROUSERS","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003e“美脚”の名を欲しいままに手に入れる人気の1タックトラウザーズ。\u003c\/p\u003e\n\u003cp\u003e程よくゆとりのある腰回りとワタリから綺麗なテーパードを掛けたシルエットは珠玉な1本。\u003c\/p\u003e\n\u003cp\u003e4WAYストレッチの心地良い着心地、接触冷感、撥水性も兼ね備えたナイロン素材を採用している。\u003c\/p\u003e\n\u003cp\u003eウエスト内側に滑り止めテープ＆INOUT仕様のスピンドルなども使い勝手を考慮した作りです。　\u003c\/p\u003e\n\u003cp\u003e右側面の圧着ZIPポケットはボールやティーなどを収めておくのに重宝する。フラップ付きの右バックポケットにはスコアカードなどを収め、左バックポケットにはグローブを収める事を想定した仕様にしている。\u003c\/p\u003e\n\u003cp\u003e左腿に小さくSALVAGE PUBLIC Kolepaスタンプロゴのリフレクタープリント入り。　\u003c\/p\u003e\n\u003cp\u003e右バックポケット上にリフレクターパッチ付き。\u003c\/p\u003e\n  \n\u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003eEVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n\"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSIZE\u003c\/th\u003e\n\u003cth\u003eウエスト\u003c\/th\u003e\n\u003cth\u003e股上\u003c\/th\u003e\n\u003cth\u003e股下\u003c\/th\u003e\n\u003cth\u003eわたり\u003c\/th\u003e\n\u003cth\u003e裾幅\u003c\/th\u003e\n\u003c\/tr\u003e\n\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003cth\u003eS\u003c\/th\u003e\n\u003ctd\u003e82\u003c\/td\u003e\n\u003ctd\u003e25\u003c\/td\u003e\n\u003ctd\u003e68\u003c\/td\u003e\n\u003ctd\u003e34.2\u003c\/td\u003e\n\u003ctd\u003e17.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eM\u003c\/th\u003e\n\u003ctd\u003e86\u003c\/td\u003e\n\u003ctd\u003e25.5\u003c\/td\u003e\n\u003ctd\u003e71\u003c\/td\u003e\n\u003ctd\u003e35.5\u003c\/td\u003e\n\u003ctd\u003e18\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003cth\u003eL\u003c\/th\u003e\n\u003ctd\u003e90\u003c\/td\u003e\n\u003ctd\u003e26\u003c\/td\u003e\n\u003ctd\u003e74\u003c\/td\u003e\n\u003ctd\u003e36.8\u003c\/td\u003e\n\u003ctd\u003e18.5\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n           \n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-pants_cd53c2a9-5402-4a76-a191-2395e8ab03fa.png?v=1784077561\"\u003eS\u003c\/button\u003e\n            \n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-pants_b2acda56-b4e5-47f5-867b-6055ca0af99c.png?v=1784077561\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size-visualizer-pants.png?v=1784077561\"\u003eL\u003c\/button\u003e\n\n            \u003c!-- [BTN:L] data-image にXLサイズの画像URLを入れる --\u003e\n       \u003c!--     \u003cbutton class=\"size-btn\" data-size=\"XL\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-ss-tshirt_eae98dc6-538e-444f-8889-a7e5fc600fef.png?v=1783920238\"\u003eXL\u003c\/button\u003e--\u003e\n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c\/tr\u003e\n\n\u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA5016\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eS25F0105K\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e中国\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003e本体\/ナイロン88％ ポリウレタン12％\u003cbr\u003e\n  ポケット袋布\/ポリエステル100%\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm \/ L着用\u003c\/td\u003e\n          \u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8147.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8147.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8149.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8149.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8137.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8137.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8143.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8143.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8144.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8144.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8145.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8145.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8138.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8138.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8139.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8139.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8140.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8140.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8141.jpg?v=1750316053\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8141.jpg?v=1750316053\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7283_f0e5b616-32fb-442a-aff5-751349d07a2f.jpg?v=1751364670\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7283_f0e5b616-32fb-442a-aff5-751349d07a2f.jpg?v=1751364670\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7295_3e7d9a42-9ac4-4420-9847-3e9dce25f8f7.jpg?v=1751364670\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7295_3e7d9a42-9ac4-4420-9847-3e9dce25f8f7.jpg?v=1751364670\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7326.jpg?v=1751364670\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7326.jpg?v=1751364670\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7504.jpg?v=1751364723\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7504.jpg?v=1751364723\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7511.jpg?v=1751364723\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7511.jpg?v=1751364723\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7520.jpg?v=1751364723\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7520.jpg?v=1751364723\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 16\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7532.jpg?v=1751364723\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7532.jpg?v=1751364723\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 17\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7597.jpg?v=1751366960\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7597.jpg?v=1751366960\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 18\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7602.jpg?v=1751366960\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7602.jpg?v=1751366960\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 19\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7617.jpg?v=1751366960\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7617.jpg?v=1751366960\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 20\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7624.jpg?v=1751366960\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7624.jpg?v=1751366960\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 21\"\u003e\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能 (スワイプダウン閉じる \u0026 サムネイル遷移追加)\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      \/\/ モーダル内のサムネイル動的生成\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        \/\/ サムネイルクリック時の直接ジャンプ処理\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) {\n          indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        }\n        \/\/ サムネイルのアクティブ状態を更新\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0;\n      let touchStartY = 0;\n      let currentTranslateX = 0;\n      let currentTranslateY = 0;\n      let isDragging = false;\n      let isPinching = false;\n      let swipeDirection = null;\n      let initialPinchDistance = 0;\n      let currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e {\n          modal.style.display = 'none';\n        }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) {\n          closeModal();\n        }\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showPrevImage();\n      });\n      modalNextBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showNextImage();\n      });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true;\n          isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true;\n          swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) {\n              swipeDirection = 'h';\n            } else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) {\n              swipeDirection = 'v';\n            }\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false;\n          currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) {\n              showNextImageFromSwipe(currentTranslateX);\n            } else if (currentTranslateX \u003e swipeThreshold) {\n              showPrevImageFromSwipe(currentTranslateX);\n            } else {\n              currentTranslateX = 0;\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          } else if (swipeDirection === 'v') {\n            const swipeDownThreshold = 100;\n            if (currentTranslateY \u003e swipeDownThreshold || currentTranslateY \u003c -swipeDownThreshold) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') {\n          showPrevImage();\n        } else if (e.key === 'ArrowRight') {\n          showNextImage();\n        } else if (e.key === 'Escape') {\n          closeModal();\n        }\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"ICE GRAY \/ S","offer_id":46578466095322,"sku":"S25F0105K-02-03","price":27500.0,"currency_code":"JPY","in_stock":false},{"title":"ICE GRAY \/ M","offer_id":46578481135834,"sku":"S25F0105K-02-04","price":27500.0,"currency_code":"JPY","in_stock":false},{"title":"ICE GRAY \/ L","offer_id":46578481168602,"sku":"S25F0105K-02-05","price":27500.0,"currency_code":"JPY","in_stock":false},{"title":"チャコール \/ S","offer_id":46578481201370,"sku":"S25F0105K-09-03","price":27500.0,"currency_code":"JPY","in_stock":false},{"title":"チャコール \/ M","offer_id":46578481234138,"sku":"S25F0105K-09-04","price":27500.0,"currency_code":"JPY","in_stock":true},{"title":"チャコール \/ L","offer_id":46578481266906,"sku":"S25F0105K-09-05","price":27500.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ S","offer_id":46578481299674,"sku":"S25F0105K-40-03","price":27500.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ M","offer_id":46578481332442,"sku":"S25F0105K-40-04","price":27500.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ L","offer_id":46578481365210,"sku":"S25F0105K-40-05","price":27500.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC8137.jpg?v=1750316053"},{"product_id":"s25f0162k","title":"SVKA4026［サルベージパブリックコレパ］ウカコーデュロイトラウザーズ","description":"\u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    \/* 見出しアイコンとテキストのレイアウト用 *\/\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px; \/* アイコンとテキストの間隔 *\/\n    }\n    \/* ★ ベースのアイコンスタイル (Size, Detail, Shipping, Gallery) *\/\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    \/* ★ Descriptionアイコン専用の調整 (少し小さくする) *\/\n    .accordion-icon--description {\n      width: 15px; \/* ここでサイズを調整します *\/\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    \/* サイズテーブルのスタイル *\/\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア（Description等用） ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px; \/* 表示領域の最大高さ *\/\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar {\n      width: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-track {\n      background: #f5f5f5;\n      border-radius: 4px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar-thumb {\n      background: #ccc;\n      border-radius: 4px;\n    }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar {\n      display: none;\n    }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover {\n      opacity: 0.7;\n    }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル (拡大表示) ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    \/* インジケーター位置調整 *\/\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    \/* サムネイル一覧コンテナ *\/\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover {\n      opacity: 0.8;\n    }\n    .gallery-modal__thumb.is-active {\n      border-color: #fff;\n      opacity: 1;\n    }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover {\n      opacity: 0.7;\n    }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP (スマホ) 用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent {\n        padding-bottom: 0 !important;\n      }\n      .size-visual {\n        margin-top: 16px;\n        margin-bottom: 20px;\n      }\n      .size-visual__image {\n        max-width: 100%;\n      }\n      .size-visual__slider-container {\n        padding: 0 24px;\n      }\n      .slider-arrow {\n        width: 24px;\n      }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid {\n        grid-template-columns: repeat(2, 1fr);\n        gap: 4px;\n      }\n      #galleryModalImg {\n        max-width: 100vw;\n        max-height: 80vh;\n      }\n      .gallery-modal__thumbnails {\n        bottom: 20px;\n      }\n      .gallery-modal__thumb {\n        width: 40px;\n        height: 40px;\n      }\n      .gallery-modal__close {\n        top: 16px;\n        right: 16px;\n        font-size: 40px;\n      }\n      .gallery-modal__arrow {\n        padding: 15px;\n      }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"ProductMeta__Specification\"\u003e\n\u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e \u003cspan\u003eDescription\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"accordion-scroll-area\"\u003e\n\u003cp\u003e“美脚”パンツとしてKolepa定番となっているMakani Trousersのコーデュロイモデル。\u003c\/p\u003e\n\u003cp\u003eこれまでの一般的な太畝コーデュロイだと生地の硬さや厚さ重さがありゴルフのプレーには適しておりませんでしたが、新たに開発された新感覚のコーデュロイ生地を採用した1本です。\u003c\/p\u003e\n\u003cp\u003e８ウェルの太畝な存在感はそのままにジャージー感覚の軽さやナチュラルなストレッチ性がありリラックスした雰囲気に仕上げています。\u003c\/p\u003e\n\u003cp\u003e程よくゆとりのある腰回りとワタリから綺麗なテーパードを掛けた珠玉なシルエット。\u003c\/p\u003e\n\u003cp\u003eウエスト内側に滑り止めテープ＆INOUT仕様のスピンドルなども使い勝手を考慮した作りです。\u003c\/p\u003e\n\u003cp\u003eフロントポケット右側には小さなZIPポケットを配しマーカーやティーなどを収めておくのに重宝します。\u003c\/p\u003e\n\u003cp\u003eフラップ付きの右バックポケットにはスコアカードなどを収め、左バックポケットにはグローブを収める事を想定した仕様。\u003c\/p\u003e\n\u003cp\u003e右前にAlohaロゴの刺繍入り。\u003c\/p\u003e\n\u003cp\u003e右バックポケット上にリフレクターロゴ付き。\u003c\/p\u003e\n\n\u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003eEVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eSize\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003eウエスト\u003c\/th\u003e\n      \u003cth\u003e股上\u003c\/th\u003e\n      \u003cth\u003e股下\u003c\/th\u003e\n      \u003cth\u003eわたり\u003c\/th\u003e\n      \u003cth\u003e裾幅\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eS\u003c\/th\u003e\n      \u003ctd\u003e82\u003c\/td\u003e\n      \u003ctd\u003e25\u003c\/td\u003e\n      \u003ctd\u003e68\u003c\/td\u003e\n      \u003ctd\u003e34.2\u003c\/td\u003e\n      \u003ctd\u003e17.5\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eM\u003c\/th\u003e\n      \u003ctd\u003e86\u003c\/td\u003e\n      \u003ctd\u003e25.5\u003c\/td\u003e\n      \u003ctd\u003e71\u003c\/td\u003e\n      \u003ctd\u003e35.5\u003c\/td\u003e\n      \u003ctd\u003e18\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eL\u003c\/th\u003e\n      \u003ctd\u003e90\u003c\/td\u003e\n      \u003ctd\u003e26\u003c\/td\u003e\n      \u003ctd\u003e74\u003c\/td\u003e\n      \u003ctd\u003e36.8\u003c\/td\u003e\n      \u003ctd\u003e18.5\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eXL\u003c\/th\u003e\n      \u003ctd\u003e94\u003c\/td\u003e\n      \u003ctd\u003e26.5\u003c\/td\u003e\n      \u003ctd\u003e77\u003c\/td\u003e\n      \u003ctd\u003e38.1\u003c\/td\u003e\n      \u003ctd\u003e19\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n\n\u003cp class=\"size-note\"\u003e※ 表記サイズは目安となります。\u003cbr\u003e※ 採寸方法により多少の誤差が生じる場合がございます。\u003c\/p\u003e\n      \u003c!-- ▼ [EDIT: サイズビジュアル] 寸法イメージ画像 \u0026 サイズボタン --\u003e\n      \u003c!-- ボタン非表示：該当の \u003cbutton class=\"size-btn\"〜\u003e\u003c\/button\u003e を丸ごと削除 --\u003e\n      \u003c!-- 画像URL変更：data-image=\"...\" の中のURLを書き換え --\u003e\n      \u003cdiv class=\"size-visual\"\u003e\n        \u003cdiv class=\"size-visual__image\"\u003e\n          \u003cimg id=\"sizeVisualImage\" src=\"\" alt=\"サイズ寸法イメージ\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"size-visual__slider-container\"\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--prev\" aria-label=\"前へ\"\u003e\u003c\/button\u003e\n          \u003cdiv class=\"size-visual__buttons\" id=\"sizeButtonsContainer\"\u003e\n            \u003c!-- [BTN:S] data-image にSサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn is-active\" data-size=\"S\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/ssize-visualizer-pants_6901cc56-2697-44bd-9594-f5b34a9bc03e.png?v=1787549742\"\u003eS\u003c\/button\u003e\n            \u003c!-- [BTN:M] data-image にMサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"M\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/msize-visualizer-pants_bebffad2-ee6a-47a6-9112-059fb2e6d4d8.png?v=1787549742\"\u003eM\u003c\/button\u003e\n            \u003c!-- [BTN:L] data-image にLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"L\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/lsize-visualizer-pants_9581cb33-084c-4446-a827-ddab5e7ecf41.png?v=1787549742\"\u003eL\u003c\/button\u003e\n            \u003c!-- [BTN:XL] data-image にXLサイズの画像URLを入れる --\u003e\n            \u003cbutton class=\"size-btn\" data-size=\"XL\" data-image=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/xlsize-visualizer-pants_63bbb8e1-1373-49b6-91e1-ee4d66d13645.png?v=1787549742\"\u003eXL\u003c\/button\u003e \n          \u003c\/div\u003e\n          \u003cbutton class=\"slider-arrow slider-arrow--next\" aria-label=\"次へ\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: サイズビジュアル] ここまで --\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eDetail\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eブランド名\u003c\/td\u003e\n\u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e品番\u003c\/td\u003e\n\u003ctd\u003eSVKA4026\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eS25F0162K\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e原産国\u003c\/td\u003e\n\u003ctd\u003e中国\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e素材\u003c\/td\u003e\n\u003ctd\u003eポリエステル100％\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eGallery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9951.jpg?v=1762415255\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9951.jpg?v=1762415255\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9958.jpg?v=1762415255\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9958.jpg?v=1762415255\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9959.jpg?v=1762415254\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9959.jpg?v=1762415254\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9960.jpg?v=1762415254\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9960.jpg?v=1762415254\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9961.jpg?v=1762415254\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9961.jpg?v=1762415254\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9962.jpg?v=1762415254\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9962.jpg?v=1762415254\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9963.jpg?v=1762415254\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9963.jpg?v=1762415254\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9964.jpg?v=1762415254\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9964.jpg?v=1762415254\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__Accordion\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n\u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e \u003cspan\u003eShipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\u003cul class=\"shipping-list\"\u003e\n\u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n\u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp class=\"shipping-policy\"\u003e\u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" rel=\"noopener\" target=\"_blank\"\u003e配送ポリシーはこちら\u003c\/a\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n\u003cdiv class=\"gallery-modal__content\"\u003e\n\u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e \u003cimg id=\"galleryModalImg\" alt=\"Expanded Image\"\u003e \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n\u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能 (スワイプダウン閉じる \u0026 サムネイル遷移追加)\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      \/\/ モーダル内のサムネイル動的生成\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        \/\/ サムネイルクリック時の直接ジャンプ処理\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) {\n          indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        }\n        \/\/ サムネイルのアクティブ状態を更新\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0;\n      let touchStartY = 0;\n      let currentTranslateX = 0;\n      let currentTranslateY = 0;\n      let isDragging = false;\n      let isPinching = false;\n      let swipeDirection = null;\n      let initialPinchDistance = 0;\n      let currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e {\n          modal.style.display = 'none';\n        }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0;\n          currentTranslateY = 0;\n          currentScale = 1;\n          swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) {\n          closeModal();\n        }\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showPrevImage();\n      });\n      modalNextBtn.addEventListener('click', (e) =\u003e {\n        e.stopPropagation();\n        showNextImage();\n      });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true;\n          isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true;\n          swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) {\n              swipeDirection = 'h';\n            } else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) {\n              swipeDirection = 'v';\n            }\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false;\n          currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) {\n              showNextImageFromSwipe(currentTranslateX);\n            } else if (currentTranslateX \u003e swipeThreshold) {\n              showPrevImageFromSwipe(currentTranslateX);\n            } else {\n              currentTranslateX = 0;\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          } else if (swipeDirection === 'v') {\n            const swipeDownThreshold = 100;\n            if (currentTranslateY \u003e swipeDownThreshold || currentTranslateY \u003c -swipeDownThreshold) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') {\n          showPrevImage();\n        } else if (e.key === 'ArrowRight') {\n          showNextImage();\n        } else if (e.key === 'Escape') {\n          closeModal();\n        }\n      });\n    });\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK \/ S","offer_id":46578551619802,"sku":"S25F0162K-01-03","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ M","offer_id":46578551652570,"sku":"S25F0162K-01-04","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ L","offer_id":46578551685338,"sku":"S25F0162K-01-05","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"BLACK \/ XL","offer_id":46578553716954,"sku":"S25F0162K-01-06","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"アイボリー \/ S","offer_id":46578553749722,"sku":"S25F0162K-15-03","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"アイボリー \/ M","offer_id":46578553782490,"sku":"S25F0162K-15-04","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"アイボリー \/ L","offer_id":46578553815258,"sku":"S25F0162K-15-05","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"アイボリー \/ XL","offer_id":46578553848026,"sku":"S25F0162K-15-06","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ S","offer_id":46578553880794,"sku":"S25F0162K-27-03","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"BEIGE \/ M","offer_id":46578553913562,"sku":"S25F0162K-27-04","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"BEIGE \/ L","offer_id":46578553946330,"sku":"S25F0162K-27-05","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ XL","offer_id":46578553979098,"sku":"S25F0162K-27-06","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"OLIVE \/ S","offer_id":46578551718106,"sku":"S25F0162K-36-03","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"OLIVE \/ M","offer_id":46578551750874,"sku":"S25F0162K-36-04","price":28600.0,"currency_code":"JPY","in_stock":false},{"title":"OLIVE \/ L","offer_id":46578551783642,"sku":"S25F0162K-36-05","price":28600.0,"currency_code":"JPY","in_stock":true},{"title":"OLIVE \/ XL","offer_id":46578554011866,"sku":"S25F0162K-36-06","price":28600.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC9951.jpg?v=1762415255"},{"product_id":"s25k0095k","title":"SVKA5006［サルベージパブリックコレパ］マカメッシュベルト","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003eスタイリッシュと機能性を両立させたエラスティックメッシュベルト。\u003c\/p\u003e\n\u003cp\u003e伸縮性のあるエラスティック素材をベースに世界有数のレザーメーカーであるHORWEEN（ホーウィン社）のクロムエクセルレザーをコンビネーションさせた唯一無二のメッシュベルト。\u003c\/p\u003e\n\u003cp\u003eバックルではなくギボシですっきりと仕上げ5つ穴でサイズ調整も可能。\u003c\/p\u003e\n\u003cp\u003eM\/Lで75㎝～84㎝相当、 L\/XLで81㎝～91㎝相当に対応する。\u003c\/p\u003e\n\u003cp\u003eスマートなデザインはゴルフだけでなくドレス・カジュアルと幅広いスタイルに相性が良く汎用性が高い。\u003c\/p\u003e\n\u003cp\u003e本ベルトの作製工程で出た廃材を利用したHORWEENレザーのレザーフック付き。\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n          \u003cp\u003e【SALVAGE PUBLIC Kolepa】\u003cbr\u003e\n          EVENが監修するハワイで人気の「サルベージ パブリック」のゴルフライン「サルベージ パブリック コレパ」\u003cbr\u003e\n          \"Kolepa\"とはハワイの言葉でゴルフを意味し、リラックス感と都会的なモダンテイストが融合する機能性を備えたゴルファー目線たっぷりなコレクションを展開する。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n \n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003eサイズ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eM\/L\u003c\/th\u003e\n      \u003ctd\u003e75㎝～84㎝\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eL\/XL\u003c\/th\u003e\n      \u003ctd\u003e81㎝～91㎝\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eSALVAGE PUBLIC Kolepa\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\n         \u003ctr\u003e\n            \u003ctd\u003e品番\u003c\/td\u003e\n            \u003ctd\u003eSVKA5006\u003c\/td\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eS25K0095K\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e日本\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eメッシュ／ポリプロピレン50% , ゴム50％  レザー／牛革\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n\u003ctr\u003e\n            \u003ctd\u003eモデル\u003c\/td\u003e\n            \u003ctd\u003e181cm\u003c\/td\u003e\n          \u003c\/tr\u003e\n\n\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8046.jpg?v=1750319854\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8046.jpg?v=1750319854\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8038.jpg?v=1750319854\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8038.jpg?v=1750319854\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8048.jpg?v=1750319854\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8048.jpg?v=1750319854\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8042.jpg?v=1750319854\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8042.jpg?v=1750319854\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8041.jpg?v=1750319854\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8041.jpg?v=1750319854\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8044.jpg?v=1750319854\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8044.jpg?v=1750319854\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7373_101b0233-cefa-4a70-accc-c00135b77cfc.jpg?v=1751366485\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7373_101b0233-cefa-4a70-accc-c00135b77cfc.jpg?v=1751366485\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7380_cde49262-8c8f-4955-a288-0315b8d0ef11.jpg?v=1751366485\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7380_cde49262-8c8f-4955-a288-0315b8d0ef11.jpg?v=1751366485\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7407_2886be51-dd28-4a77-9ff3-6ced9e610fda.jpg?v=1751366485\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7407_2886be51-dd28-4a77-9ff3-6ced9e610fda.jpg?v=1751366485\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7151_648f7b71-16ce-4df0-89da-ed49f3c9341f.jpg?v=1751366518\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7151_648f7b71-16ce-4df0-89da-ed49f3c9341f.jpg?v=1751366518\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7155_250d9a85-6547-4814-9749-66cacef8a008.jpg?v=1751366517\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC7155_250d9a85-6547-4814-9749-66cacef8a008.jpg?v=1751366517\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"グレー \/ M","offer_id":46578575147226,"sku":"S25K0095K-07-04","price":13200.0,"currency_code":"JPY","in_stock":true},{"title":"グレー \/ L","offer_id":46578577473754,"sku":"S25K0095K-07-05","price":13200.0,"currency_code":"JPY","in_stock":true},{"title":"ベージュ \/ M","offer_id":46578575179994,"sku":"S25K0095K-27-04","price":13200.0,"currency_code":"JPY","in_stock":true},{"title":"ベージュ \/ L","offer_id":46578577506522,"sku":"S25K0095K-27-05","price":13200.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC8046.jpg?v=1750319854"},{"product_id":"e25g0189a","title":"［BACK SPIN!］CORDURA STAND CADDIE BAG SOLID","description":"\u003cdiv class=\"ProductMeta__Specification\"\u003e\n \n\n \u003cstyle\u003e\n    \/* ========== ベーススタイル ========== *\/\n    .ProductMeta__Specification {\n      font-family: \"hiraginoW3\", Arial, sans-serif;\n    }\n    .ProductMeta__Accordion {\n      border-top: 1px solid #e5e5e5;\n    }\n    .ProductMeta__Accordion:last-child {\n      border-bottom: 1px solid #e5e5e5;\n    }\n    .ProductMeta__AccordionHeading {\n      cursor: pointer;\n      padding: 16px 0;\n      font-weight: bold;\n      position: relative;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    .ProductMeta__AccordionHeading::after {\n      content: \"+\";\n      font-weight: normal;\n      font-size: 16px;\n    }\n    .ProductMeta__AccordionHeading.c-show::after {\n      content: \"−\";\n    }\n    .ProductMeta__AccordionTitle {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .accordion-icon {\n      width: 18px;\n      height: 18px;\n      object-fit: contain;\n      display: block;\n    }\n    .accordion-icon--description {\n      width: 15px;\n      height: 15px;\n    }\n    .ProductMeta__AccordionContent {\n      overflow: hidden;\n      height: 0;\n      transition: height 0.35s ease;\n      padding-bottom: 0;\n    }\n    \/* ========== テーブル共通設定 ========== *\/\n    .ProductMeta__AccordionContent table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-bottom: 16px;\n    }\n    .ProductMeta__AccordionContent th,\n    .ProductMeta__AccordionContent td {\n      border: 1px solid #ddd;\n      padding: 8px;\n      font-size: 11px;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td {\n      text-align: left;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:first-child {\n      width: 30%;\n      color: #666;\n      border-right: none;\n    }\n    .ProductMeta__AccordionContent table:not(.size-table) td:last-child {\n      border-left: none;\n    }\n    .size-table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 12px;\n      font-size: 10px;\n    }\n    .size-table thead th {\n      background: #f5f5f5;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody th {\n      background: #fafafa;\n      font-weight: 600;\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table tbody td {\n      border: 1px solid #ddd;\n      padding: 10px 8px;\n    }\n    .size-table th, .size-table td {\n      text-align: center;\n    }\n    .size-note {\n      font-size: 12px;\n      color: #666;\n      margin-top: 8px;\n      line-height: 1.6;\n    }\n    \/* ========== スクロールエリア ========== *\/\n    .accordion-scroll-area {\n      max-height: 160px;\n      overflow-y: auto;\n      padding-right: 8px;\n      margin-bottom: 16px;\n    }\n    .accordion-scroll-area::-webkit-scrollbar { width: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-track { background: #f5f5f5; border-radius: 4px; }\n    .accordion-scroll-area::-webkit-scrollbar-thumb { background: #ccc; border-radius: 4px; }\n    \/* ========== テキストスタイル ========== *\/\n    .ProductMeta__AccordionContent p,\n    .ProductMeta__AccordionContent li {\n      font-size: 12px;\n      line-height: 1.8;\n    }\n    .accordion-description .ProductMeta__AccordionContent p {\n      font-size: 12px;\n      font-weight: 300;\n      line-height: 2;\n      letter-spacing: 0.06em;\n      text-align: left;\n      margin: 0;\n    }\n    .accordion-description .ProductMeta__AccordionContent p + p {\n      margin-top: 12px;\n    }\n    \/* ========== サイズ視覚イメージ \u0026 スライダー ========== *\/\n    .size-visual {\n      margin-top: 24px;\n      margin-bottom: 24px;\n    }\n    .size-visual__image {\n      max-width: 55%;\n      margin: 0 auto;\n    }\n    .size-visual__image img {\n      width: 100%;\n      height: auto;\n      display: block;\n    }\n    .size-visual__slider-container {\n      position: relative;\n      margin-top: 16px;\n      padding: 0 30px;\n      display: flex;\n      align-items: center;\n    }\n    .size-visual__buttons {\n      display: flex;\n      gap: 8px;\n      overflow-x: auto;\n      scroll-behavior: smooth;\n      width: 100%;\n      -ms-overflow-style: none;\n      scrollbar-width: none;\n    }\n    .size-visual__buttons::-webkit-scrollbar { display: none; }\n    .size-btn {\n      flex: 0 0 28%;\n      padding: 12px 0;\n      font-size: 12px;\n      border: 1px solid #ddd;\n      background: #fff;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: background 0.2s, color 0.2s;\n    }\n    .size-btn.is-active {\n      background: #111;\n      color: #fff;\n      border-color: #111;\n    }\n    .slider-arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 30px;\n      height: 100%;\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      z-index: 2;\n      padding: 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    .slider-arrow--prev { left: -5px; }\n    .slider-arrow--next { right: -5px; }\n    .slider-arrow::before {\n      content: '';\n      display: block;\n      width: 10px;\n      height: 10px;\n      border-top: 2px solid #333;\n      border-right: 2px solid #333;\n    }\n    .slider-arrow--prev::before { transform: rotate(-135deg); }\n    .slider-arrow--next::before { transform: rotate(45deg); }\n    .slider-arrow:focus { outline: none; }\n    \/* ========== Gallery グリッド設定 ========== *\/\n    .gallery-grid {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 8px;\n      margin-bottom: 16px;\n    }\n    .gallery-item-wrapper {\n      width: 100%;\n      display: block;\n      cursor: pointer;\n      transition: opacity 0.2s ease;\n      -webkit-tap-highlight-color: transparent;\n    }\n    .gallery-item-wrapper:hover { opacity: 0.7; }\n    .gallery-item {\n      width: 100%;\n      height: auto;\n      display: block;\n      object-fit: cover;\n      aspect-ratio: 3 \/ 4;\n      pointer-events: none;\n    }\n    \/* ========== ギャラリーモーダル ========== *\/\n    .gallery-modal {\n      display: none;\n      position: fixed;\n      z-index: 999999;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 100%;\n      background-color: rgba(0, 0, 0, 0.85);\n      opacity: 0;\n      transition: opacity 0.35s ease, background-color 0.3s ease;\n      touch-action: none;\n    }\n    .gallery-modal.is-open {\n      display: flex;\n      opacity: 1;\n      justify-content: center;\n      align-items: center;\n    }\n    .gallery-modal__content {\n      position: relative;\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      width: auto;\n      height: auto;\n    }\n    #galleryModalImg {\n      max-height: 85vh;\n      max-width: calc(100vw - 160px);\n      width: auto;\n      height: auto;\n      display: block;\n      user-select: none;\n      transform: translate(0, 0) scale(1);\n      transition: transform 0.3s ease-out, opacity 0.3s ease;\n      box-shadow: 0 10px 40px rgba(0,0,0,0.3);\n    }\n    .gallery-modal__indicator {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      color: #fff;\n      font-size: 14px;\n      font-family: \"futura\", Arial, sans-serif;\n      letter-spacing: 0.15em;\n      z-index: 1000000;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.8);\n      font-weight: 400;\n      pointer-events: none;\n    }\n    .gallery-modal__thumbnails {\n      position: absolute;\n      bottom: 24px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n      z-index: 1000000;\n    }\n    .gallery-modal__thumb {\n      width: 48px;\n      height: 48px;\n      object-fit: cover;\n      cursor: pointer;\n      border: 2px solid transparent;\n      border-radius: 4px;\n      opacity: 0.5;\n      transition: all 0.2s ease;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__thumb:hover { opacity: 0.8; }\n    .gallery-modal__thumb.is-active { border-color: #fff; opacity: 1; }\n    .gallery-modal__close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      color: #fff;\n      font-size: 44px;\n      font-weight: 200;\n      cursor: pointer;\n      z-index: 1000000;\n      line-height: 1;\n      user-select: none;\n      transition: opacity 0.2s;\n      text-shadow: 0 2px 6px rgba(0,0,0,0.5);\n    }\n    .gallery-modal__close:hover { opacity: 0.7; }\n    .gallery-modal__arrow {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: transparent;\n      border: none;\n      cursor: pointer;\n      padding: 20px;\n      z-index: 1000000;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5));\n    }\n    .gallery-modal__arrow--prev { left: -70px; }\n    .gallery-modal__arrow--next { right: -70px; }\n    .gallery-modal__arrow::before {\n      content: '';\n      display: block;\n      width: 26px;\n      height: 26px;\n      border-top: 3px solid #fff;\n      border-right: 3px solid #fff;\n    }\n    .gallery-modal__arrow--prev::before { transform: rotate(-135deg); }\n    .gallery-modal__arrow--next::before { transform: rotate(45deg); }\n    \/* ========== SP用調整 ========== *\/\n    @media screen and (max-width: 768px) {\n      .ProductMeta__AccordionContent { padding-bottom: 0 !important; }\n      .size-visual { margin-top: 16px; margin-bottom: 20px; }\n      .size-visual__image { max-width: 100%; }\n      .size-visual__slider-container { padding: 0 24px; }\n      .slider-arrow { width: 24px; }\n      .slider-arrow--prev { left: 0; }\n      .slider-arrow--next { right: 0; }\n      .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; }\n      #galleryModalImg { max-width: 100vw; max-height: 80vh; }\n      .gallery-modal__thumbnails { bottom: 20px; }\n      .gallery-modal__thumb { width: 40px; height: 40px; }\n      .gallery-modal__close { top: 16px; right: 16px; font-size: 40px; }\n      .gallery-modal__arrow { padding: 15px; }\n      .gallery-modal__arrow--prev { left: 0; }\n      .gallery-modal__arrow--next { right: 0; }\n    }\n  \u003c\/style\u003e\n\n\n\n  \n\n\u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DESCRIPTION] アコーディオン「Description」       --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion accordion-description\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading c-show\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/description.png?v=1775810343\" alt=\"\" class=\"accordion-icon accordion-icon--description\"\u003e\n        \u003cspan\u003eDescription\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cdiv class=\"accordion-scroll-area\"\u003e\n\n        \u003c!-- ▼ [EDIT: 商品説明] ここから〜ここまでが商品説明テキスト --\u003e\n\u003cp\u003e生地はINVISTA社のCORDURA 1000を仕様。\u003c\/p\u003e\n\u003cp\u003eナイロンの7倍の強度を持つ耐久性に優れた丈夫で強い生地。\u003c\/p\u003e\n\u003cp\u003eファスナーとホックには、耐久性が高いYKK製を使用。\u003c\/p\u003e\n\u003cp\u003eマグネットポケット、収納袋、貴重品入れ、隠しポケット、撥水加工など機能も満載。\u003c\/p\u003e\n\u003cp\u003eBACKSPIN！オリジナルネームプレート付き\u003cbr\u003e\u003c\/p\u003e\n\u003cbr\u003e\u003cbr\u003e\n        \u003c!-- ▲ [EDIT: 商品説明] ここまで --\u003e\n\n        \u003c!-- ▼ [EDIT: ブランド説明] ここから〜ここまでがブランド説明テキスト --\u003e\n        \u003cp\u003e【BACK SPIN!】\u003cbr\u003e\n         遊び心と実用性を両立した大人のためのゴルフライフスタイルブランドです。音楽やアートなどのサブカルチャーを背景に、ポップで洗練されたデザインと高い機能性を融合させたアイテムを展開しています。\u003c\/p\u003e\n        \n        \u003c!-- ▲ [EDIT: ブランド説明] ここまで --\u003e\n\n      \n\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DESCRIPTION] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SIZE] アコーディオン「Size」                     --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/size.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eSize\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003c!-- ▼ [EDIT: サイズテーブル] 採寸表 --\u003e\n\n\n\u003ctable class=\"size-table\"\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSIZE\u003c\/th\u003e\n      \u003cth\u003e口枠\u003c\/th\u003e\n      \u003cth\u003eセパレート\u003c\/th\u003e\n      \u003cth\u003e対応長さ\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9インチ\u003c\/th\u003e\n      \u003ctd\u003e4分割\u003c\/td\u003e\n      \u003ctd\u003e3分割\u003c\/td\u003e\n      \u003ctd\u003e47インチ\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\n\n      \u003c!-- ▲ [EDIT: サイズテーブル] ここまで --\u003e\n      \u003cp class=\"size-note\"\u003e\n        タイプ：スタンド／重さ：3.0kg\u003cbr\u003e\u003cbr\u003e\n        ※ 表記サイズは目安となります。\u003cbr\u003e\n        ※ 採寸方法により多少の誤差が生じる場合がございます。\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: DETAIL] アコーディオン「Detail」                 --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/detail.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eDetail\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: 詳細テーブル] 各行の右側（2列目の\u003ctd\u003e）が編集対象 --\u003e\n      \u003ctable\u003e\n        \u003ctbody\u003e\n          \u003ctr\u003e\n            \u003ctd\u003eブランド名\u003c\/td\u003e\n            \u003ctd\u003eBACK SPIN!\u003c\/td\u003e\n\u003c!-- [VAL:ブランド名] --\u003e\n          \u003c\/tr\u003e\n\u003c!-- [VAL:品番] --\u003e\n\n          \u003ctr\u003e\n            \u003ctd\u003e商品コード\u003c\/td\u003e\n            \u003ctd\u003eE25G0189A\u003c\/td\u003e\n\u003c!-- [VAL:商品コード] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e原産国\u003c\/td\u003e\n            \u003ctd\u003e中国\u003c\/td\u003e\n\u003c!-- [VAL:原産国] --\u003e\n          \u003c\/tr\u003e\n          \u003ctr\u003e\n            \u003ctd\u003e素材\u003c\/td\u003e\n            \u003ctd\u003eコーデュラナイロン\u003c\/td\u003e\n\u003c!-- [VAL:素材] --\u003e\n          \u003c\/tr\u003e\n         \n\u003c!-- [VAL:モデル] --\u003e\n        \u003c\/tbody\u003e\n      \u003c\/table\u003e\n      \u003c!-- ▲ [EDIT: 詳細テーブル] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: DETAIL] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: GALLERY] アコーディオン「Gallery」               --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/gallery.svg?v=1775810342\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eGallery\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n\n      \u003c!-- ▼ [EDIT: ギャラリー画像] --\u003e\n      \u003c!-- 画像追加：下記ブロックをコピーして末尾に追加し、URLとalt番号を書き換える --\u003e\n      \u003c!--\n      \u003cdiv class=\"gallery-item-wrapper\" data-src=\"【画像URL】\"\u003e\n        \u003cimg src=\"【画像URL】\" class=\"gallery-item\" alt=\"Gallery 【番号】\"\u003e\n      \u003c\/div\u003e\n      --\u003e\n      \u003cdiv class=\"gallery-grid\"\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1967_2.jpg?v=1750667690\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1967_2.jpg?v=1750667690\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 1\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1969_2.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1969_2.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 2\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1935.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1935.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 3\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1936.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1936.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 4\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1937.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1937.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 5\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1938.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1938.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 6\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1939.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1939.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 7\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1940.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1940.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 8\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK001.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK001.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 9\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1948.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1948.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 10\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1949.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1949.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 11\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1950.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1950.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 12\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1951.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1951.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 13\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK002.jpg?v=1750667690\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK002.jpg?v=1750667690\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 14\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK003.jpg?v=1750667690\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK003.jpg?v=1750667690\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 15\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK004.jpg?v=1750667690\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK004.jpg?v=1750667690\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 16\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK005.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK005.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 17\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK006.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/BLACK006.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 18\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1941.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1941.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 25\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1959_2.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1959_2.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 19\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1960_2.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1960_2.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 20\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1961_2.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1961_2.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 21\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1962_2.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1962_2.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 22\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1963_2.jpg?v=1750667690\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1963_2.jpg?v=1750667690\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 23\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1964_2.jpg?v=1750667691\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1964_2.jpg?v=1750667691\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 24\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1942.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1942.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 26\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1943.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1943.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 27\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1944.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1944.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 28\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1945.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1945.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 29\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1946.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1946.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 30\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"gallery-item-wrapper\" data-src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1947.jpg?v=1750667738\u0026amp;width=200\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/bs1947.jpg?v=1750667738\u0026amp;width=200\" class=\"gallery-item\" alt=\"Gallery 31\"\u003e\u003c\/div\u003e\n  \n      \u003c\/div\u003e\n      \u003c!-- ▲ [EDIT: ギャラリー画像] ここまで --\u003e\n\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: GALLERY] ここまで --\u003e\n\n  \u003c!-- ============================================================ --\u003e\n  \u003c!-- ▼ [SECTION: SHIPPING] アコーディオン「Shipping」             --\u003e\n  \u003c!-- ============================================================ --\u003e\n  \u003cdiv class=\"ProductMeta__Accordion\"\u003e\n    \u003cdiv class=\"ProductMeta__AccordionHeading\"\u003e\n      \u003cdiv class=\"ProductMeta__AccordionTitle\"\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/Shipping.png?v=1775810343\" alt=\"\" class=\"accordion-icon\"\u003e\n        \u003cspan\u003eShipping\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ProductMeta__AccordionContent\"\u003e\n      \u003cul class=\"shipping-list\"\u003e\n        \u003cli\u003e￥11,000以上購入で全国送料無料\u003c\/li\u003e\n        \u003cli\u003e通常3-4営業日以内に出荷いたします。\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp class=\"shipping-policy\"\u003e\n        \u003ca href=\"https:\/\/addix.co.jp\/ec-help\/\" target=\"_blank\" rel=\"noopener\"\u003e配送ポリシーはこちら\u003c\/a\u003e\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003c!-- ▲ [SECTION: SHIPPING] ここまで --\u003e\n\n  \u003c!-- ギャラリーモーダル（編集不要） --\u003e\n  \u003cdiv id=\"galleryModal\" class=\"gallery-modal\"\u003e\n    \u003cdiv class=\"gallery-modal__content\"\u003e\n      \u003cspan class=\"gallery-modal__close\" id=\"galleryModalClose\"\u003e×\u003c\/span\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--prev\" id=\"galleryPrevBtn\"\u003e\u003c\/button\u003e\n      \u003cimg id=\"galleryModalImg\" src=\"\" alt=\"Expanded Image\"\u003e\n      \u003cbutton class=\"gallery-modal__arrow gallery-modal__arrow--next\" id=\"galleryNextBtn\"\u003e\u003c\/button\u003e\n      \u003cdiv class=\"gallery-modal__indicator\" id=\"galleryModalIndicator\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gallery-modal__thumbnails\" id=\"galleryModalThumbnails\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n  \n\n\u003cscript\u003e\n    document.addEventListener('DOMContentLoaded', function () {\n      \/\/ 1. アコーディオン開閉ロジック\n      document.querySelectorAll('.ProductMeta__Accordion').forEach(function (accordion) {\n        const heading = accordion.querySelector('.ProductMeta__AccordionHeading');\n        const content = accordion.querySelector('.ProductMeta__AccordionContent');\n        if (heading.classList.contains('c-show')) {\n          content.style.height = 'auto';\n        }\n        heading.addEventListener('click', function () {\n          const isOpen = heading.classList.contains('c-show');\n          heading.classList.toggle('c-show');\n          if (isOpen) {\n            content.style.height = content.scrollHeight + 'px';\n            setTimeout(() =\u003e { content.style.height = '0px'; }, 10);\n          } else {\n            content.style.height = content.scrollHeight + 'px';\n            content.addEventListener('transitionend', function onTransitionEnd() {\n              if (heading.classList.contains('c-show')) {\n                content.style.height = 'auto';\n              }\n              content.removeEventListener('transitionend', onTransitionEnd);\n            }, { once: true });\n          }\n        });\n      });\n      \/\/ 2. サイズ視覚イメージ \u0026 スライダー機能\n      const image = document.getElementById('sizeVisualImage');\n      const buttonsContainer = document.getElementById('sizeButtonsContainer');\n      const buttons = document.querySelectorAll('.size-btn');\n      const prevBtn = document.querySelector('.slider-arrow--prev');\n      const nextBtn = document.querySelector('.slider-arrow--next');\n      if (image \u0026\u0026 buttons.length \u003e 0) {\n        image.src = buttons[0].dataset.image;\n        buttons[0].classList.add('is-active');\n        buttons.forEach(btn =\u003e {\n          btn.addEventListener('click', () =\u003e {\n            image.src = btn.dataset.image;\n            buttons.forEach(b =\u003e b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n          });\n        });\n        if (buttonsContainer \u0026\u0026 prevBtn \u0026\u0026 nextBtn) {\n          const scrollAmount = 100;\n          prevBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n          });\n          nextBtn.addEventListener('click', (e) =\u003e {\n            e.preventDefault();\n            buttonsContainer.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n          });\n        }\n      }\n      \/\/ 3. Gallery モーダル機能\n      const galleryWrappers = document.querySelectorAll('.gallery-item-wrapper');\n      const modal = document.getElementById('galleryModal');\n      const modalImg = document.getElementById('galleryModalImg');\n      const closeBtn = document.getElementById('galleryModalClose');\n      const modalPrevBtn = document.getElementById('galleryPrevBtn');\n      const modalNextBtn = document.getElementById('galleryNextBtn');\n      const indicator = document.getElementById('galleryModalIndicator');\n      const thumbnailsContainer = document.getElementById('galleryModalThumbnails');\n      let currentGalleryIndex = 0;\n      const galleryImages = Array.from(galleryWrappers).map(wrapper =\u003e wrapper.dataset.src);\n      galleryImages.forEach((src, index) =\u003e {\n        const img = document.createElement('img');\n        img.src = src;\n        img.classList.add('gallery-modal__thumb');\n        if (index === 0) img.classList.add('is-active');\n        img.addEventListener('click', (e) =\u003e {\n          e.stopPropagation();\n          if (currentGalleryIndex !== index) {\n            const direction = index \u003e currentGalleryIndex ? 'next' : 'prev';\n            animateImageTransition(index, direction);\n          }\n        });\n        thumbnailsContainer.appendChild(img);\n      });\n      function updateModalImage(index) {\n        modalImg.src = galleryImages[index];\n        currentGalleryIndex = index;\n        if(indicator) indicator.textContent = `${index + 1} \/ ${galleryImages.length}`;\n        const thumbs = thumbnailsContainer.querySelectorAll('.gallery-modal__thumb');\n        thumbs.forEach((t, i) =\u003e {\n          if (i === index) t.classList.add('is-active');\n          else t.classList.remove('is-active');\n        });\n      }\n      let touchStartX = 0, touchStartY = 0, currentTranslateX = 0, currentTranslateY = 0;\n      let isDragging = false, isPinching = false, swipeDirection = null;\n      let initialPinchDistance = 0, currentScale = 1;\n      function getDistance(touches) {\n        return Math.hypot(touches[1].clientX - touches[0].clientX, touches[1].clientY - touches[0].clientY);\n      }\n      function animateImageTransition(newIndex, direction) {\n        const outX = direction === 'next' ? '-50px' : '50px';\n        const inX = direction === 'next' ? '50px' : '-50px';\n        modalImg.style.transform = `translate(${outX}, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(${inX}, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showNextImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        modalImg.style.transform = `translate(${startX - 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImageFromSwipe(startX) {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        modalImg.style.transform = `translate(${startX + 50}px, 0) scale(1)`;\n        modalImg.style.opacity = '0';\n        setTimeout(() =\u003e {\n          updateModalImage(newIndex);\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = `translate(-50px, 0) scale(1)`;\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1;\n          setTimeout(() =\u003e {\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n            modalImg.style.transform = 'translate(0, 0) scale(1)';\n            modalImg.style.opacity = '1';\n          }, 30);\n        }, 150);\n      }\n      function showPrevImage() {\n        let newIndex = currentGalleryIndex - 1;\n        if (newIndex \u003c 0) newIndex = galleryImages.length - 1;\n        animateImageTransition(newIndex, 'prev');\n      }\n      function showNextImage() {\n        let newIndex = currentGalleryIndex + 1;\n        if (newIndex \u003e= galleryImages.length) newIndex = 0;\n        animateImageTransition(newIndex, 'next');\n      }\n      function closeModal() {\n        modal.classList.remove('is-open');\n        modal.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n        modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n        setTimeout(() =\u003e { modal.style.display = 'none'; }, 350);\n        document.body.style.overflow = '';\n      }\n      galleryWrappers.forEach((wrapper, index) =\u003e {\n        wrapper.addEventListener('click', (e) =\u003e {\n          e.preventDefault();\n          e.stopImmediatePropagation();\n          updateModalImage(index);\n          currentTranslateX = 0; currentTranslateY = 0; currentScale = 1; swipeDirection = null;\n          modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n          modalImg.style.transition = 'none';\n          modalImg.style.transform = 'translate(0, 0) scale(1)';\n          modalImg.style.opacity = '1';\n          modal.style.display = 'flex';\n          setTimeout(() =\u003e {\n            modal.classList.add('is-open');\n            modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          }, 10);\n          document.body.style.overflow = 'hidden';\n        }, { capture: true });\n      });\n      closeBtn.addEventListener('click', closeModal);\n      modal.addEventListener('click', (e) =\u003e {\n        if (e.target === modal || e.target === document.querySelector('.gallery-modal__content')) closeModal();\n      });\n      modalPrevBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showPrevImage(); });\n      modalNextBtn.addEventListener('click', (e) =\u003e { e.stopPropagation(); showNextImage(); });\n      modal.addEventListener('touchstart', e =\u003e {\n        if (e.touches.length === 2) {\n          isPinching = true; isDragging = false;\n          initialPinchDistance = getDistance(e.touches);\n          modalImg.style.transition = 'none';\n        } else if (e.touches.length === 1 \u0026\u0026 !isPinching) {\n          isDragging = true; swipeDirection = null;\n          touchStartX = e.touches[0].clientX;\n          touchStartY = e.touches[0].clientY;\n          modalImg.style.transition = 'none';\n        }\n      }, { passive: false });\n      modal.addEventListener('touchmove', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length === 2) {\n          e.preventDefault();\n          const currentDistance = getDistance(e.touches);\n          currentScale = Math.max(1, currentDistance \/ initialPinchDistance);\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(${currentScale})`;\n        } else if (isDragging \u0026\u0026 e.touches.length === 1 \u0026\u0026 currentScale === 1) {\n          const deltaX = e.touches[0].clientX - touchStartX;\n          const deltaY = e.touches[0].clientY - touchStartY;\n          if (!swipeDirection) {\n            if (Math.abs(deltaX) \u003e Math.abs(deltaY) \u0026\u0026 Math.abs(deltaX) \u003e 5) swipeDirection = 'h';\n            else if (Math.abs(deltaY) \u003e Math.abs(deltaX) \u0026\u0026 Math.abs(deltaY) \u003e 5) swipeDirection = 'v';\n          }\n          if (swipeDirection === 'h') {\n            e.preventDefault();\n            currentTranslateX = deltaX;\n            modalImg.style.transform = `translate(${currentTranslateX}px, 0) scale(1)`;\n          } else if (swipeDirection === 'v') {\n            e.preventDefault();\n            currentTranslateY = deltaY;\n            const opacity = Math.max(0, 1 - Math.abs(currentTranslateY) \/ (window.innerHeight \/ 1.5));\n            modalImg.style.transform = `translate(0, ${currentTranslateY}px) scale(1)`;\n            modal.style.backgroundColor = `rgba(0, 0, 0, ${0.85 * opacity})`;\n          }\n        }\n      }, { passive: false });\n      modal.addEventListener('touchend', e =\u003e {\n        if (isPinching \u0026\u0026 e.touches.length \u003c 2) {\n          isPinching = false; currentScale = 1;\n          modalImg.style.transition = 'transform 0.3s ease-out';\n          modalImg.style.transform = `translate(${currentTranslateX}px, ${currentTranslateY}px) scale(1)`;\n        } else if (isDragging) {\n          isDragging = false;\n          if (currentScale \u003e 1) return;\n          modalImg.style.transition = 'transform 0.3s ease-out, opacity 0.3s ease';\n          if (swipeDirection === 'h') {\n            const swipeThreshold = 50;\n            if (currentTranslateX \u003c -swipeThreshold) showNextImageFromSwipe(currentTranslateX);\n            else if (currentTranslateX \u003e swipeThreshold) showPrevImageFromSwipe(currentTranslateX);\n            else { currentTranslateX = 0; modalImg.style.transform = `translate(0, 0) scale(1)`; }\n          } else if (swipeDirection === 'v') {\n            if (currentTranslateY \u003e 100 || currentTranslateY \u003c -100) {\n              closeModal();\n            } else {\n              currentTranslateY = 0;\n              modal.style.transition = 'background-color 0.3s ease';\n              modal.style.backgroundColor = 'rgba(0, 0, 0, 0.85)';\n              modalImg.style.transform = `translate(0, 0) scale(1)`;\n            }\n          }\n          swipeDirection = null;\n        }\n      });\n      document.addEventListener('keydown', e =\u003e {\n        if (!modal.classList.contains('is-open')) return;\n        if (e.key === 'ArrowLeft') showPrevImage();\n        else if (e.key === 'ArrowRight') showNextImage();\n        else if (e.key === 'Escape') closeModal();\n      });\n    });\n  \u003c\/script\u003e\n\n\n\n\n\n\n\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"EVEN","offers":[{"title":"BLACK","offer_id":46585179799770,"sku":"E25G0189A-01-00","price":53900.0,"currency_code":"JPY","in_stock":true},{"title":"レッド","offer_id":46585179832538,"sku":"E25G0189A-60-00","price":53900.0,"currency_code":"JPY","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/BLACK001.jpg?v=1750667691"}],"url":"https:\/\/shop.funq.jp\/collections\/even12%e6%9c%88%e5%8f%b7%e6%8e%b2%e8%bc%89%e5%95%86%e5%93%81evenvol218.oembed?page=3","provider":"FUNQTEN","version":"1.0","type":"link"}