{"product_id":"s26a0223k","title":"SVKS6020［サルベージパブリックコレパ］JQリブモックネック S\/S(EXELLENCE)","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超軽量、吸水速乾、遮熱、UVカットを兼ね合わせたハイブリッドなモックネックシャツ。\u003c\/p\u003e\n\u003cp\u003e『DRY FEEL_（ドライフィール）AS』は2種類の特殊な糸を複合する事で高い吸水速乾性、遮熱性を誇りサラッとドライタッチで軽量な仕上がりを実現している。\u003c\/p\u003e\n\u003cp\u003e衿にALOHAとダイアモンドヘッドロゴのジャガードリブ、裾もリブ仕様になっておりタックアウトで快適に着用出来ます。\u003c\/p\u003e\n\u003cp\u003eプレー中の体の動きを考えて作られたオリジナルパターンのKolepaスリーブは肩回りの動きを妨げない。\u003c\/p\u003e\n\u003cp\u003eまた肩周りや脇ハギはフラットシーマにて縫製する事で肌触りもなめらかでプレー中のわずかなストレスも解消してくれます。\u003c\/p\u003e\n\u003cp\u003eフロントにSALVAGE PUBLIC Kolepaブランドスタンプ、背中にも独特なレイアウトで入れられたSTRIVE FOR EXCELLENCE／卓越するため（上手くなるため）に努力するが秀逸な仕上がり。\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\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\u003e67\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\u003e69\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\u003e71\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\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\/S-size-visualizer-ss-tshirt_4237459e-0913-4a04-9d1c-d57287b4f1ec.png?v=1782889433\"\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.png?v=1782889433\"\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.png?v=1782889433\"\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\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\u003eSVKS6020\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e商品コード\u003c\/td\u003e\n\u003ctd\u003eS26A0223K\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%\u003cbr\u003e\n衿リブ : ポリエステル 98％ ポリウレタン 2%\u003cbr\u003e\n裾リブ : ポリエステル 95% ポリウレタン 5%\u003cbr\u003e\n\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\/DSC9076_52aaef83-35c9-4d85-b958-bf7c092d728e.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9076_52aaef83-35c9-4d85-b958-bf7c092d728e.jpg?v=1774425513\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\/DSC9077.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9077.jpg?v=1774425513\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\/DSC9070.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9070.jpg?v=1774425513\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\/DSC9073.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9073.jpg?v=1774425513\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\/DSC9078.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9078.jpg?v=1774425513\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\/DSC9079.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9079.jpg?v=1774425513\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\/DSC9071.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9071.jpg?v=1774425513\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\/DSC9072.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC9072.jpg?v=1774425513\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\/DSC8820_fa7a5e5f-e95b-49be-a62c-7b46c595756d.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8820_fa7a5e5f-e95b-49be-a62c-7b46c595756d.jpg?v=1774425513\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\/DSC8836_8cc1e050-620a-4946-9f60-9b62bb674eb8.jpg?v=1774425513\u0026amp;width=700\"\u003e\u003cimg src=\"https:\/\/shop.funq.jp\/cdn\/shop\/files\/DSC8836_8cc1e050-620a-4946-9f60-9b62bb674eb8.jpg?v=1774425513\u0026amp;width=700\" class=\"gallery-item\" alt=\"Gallery 10\"\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":"LIGHT GRAY \/ S","offer_id":46834678366426,"sku":"S26A0223K-08-03","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"LIGHT GRAY \/ M","offer_id":46834678399194,"sku":"S26A0223K-08-04","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"LIGHT GRAY \/ L","offer_id":46834678431962,"sku":"S26A0223K-08-05","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"LIGHT GRAY \/ XL","offer_id":46834678464730,"sku":"S26A0223K-08-06","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"BEIGE \/ S","offer_id":46834678497498,"sku":"S26A0223K-27-03","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ M","offer_id":46834678530266,"sku":"S26A0223K-27-04","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"BEIGE \/ L","offer_id":46834678563034,"sku":"S26A0223K-27-05","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"BEIGE \/ XL","offer_id":46834678595802,"sku":"S26A0223K-27-06","price":16500.0,"currency_code":"JPY","in_stock":false},{"title":"NAVY \/ S","offer_id":46834678628570,"sku":"S26A0223K-40-03","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ M","offer_id":46834678661338,"sku":"S26A0223K-40-04","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ L","offer_id":46834678694106,"sku":"S26A0223K-40-05","price":16500.0,"currency_code":"JPY","in_stock":true},{"title":"NAVY \/ XL","offer_id":46834678726874,"sku":"S26A0223K-40-06","price":16500.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0654\/2609\/6346\/files\/DSC9076_52aaef83-35c9-4d85-b958-bf7c092d728e.jpg?v=1774425513","url":"https:\/\/shop.funq.jp\/products\/s26a0223k","provider":"FUNQTEN","version":"1.0","type":"link"}