PageSourceSearch

https://byodoin.com/

html byodoin.com collected 2026-10-07 17:36:44 UTC 84,137 bytes, 1,805 lines download raw bytes

1<!doctype html>
2<html>
3  <head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>平等院ミュージアムショップ | </title>
7    <meta name="description" content="">
8    <link rel="canonical" href="https://www.byodoin.com/">
9    <meta property="og:type" content="website">
10    <meta property="og:title" content="平等院ミュージアムショップ | ">
11    <meta property="og:description" content="">
12    <meta property="og:site_name" content="平等院ミュージアムショップ">
13    <meta name="twitter:card" content="summary_large_image">
14    <link rel="shortcut icon" type="image/ico" href="">
15    <!-- Icon -->
16    <link
17      rel="stylesheet"
18      href="https://cdn-uicons.flaticon.com/2.6.0/uicons-regular-rounded/css/uicons-regular-rounded.css"
19      media="print"
20      onload="this.media='all'"
21    >
22    <link rel="stylesheet" href="https://cdn-uicons.flaticon.com/2.6.0/uicons-brands/css/uicons-brands.css" media="print" onload="this.media='all'">
23    <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet" media="print" onload="this.media='all'">
24    <noscript>
25      <link rel="stylesheet" href="https://cdn-uicons.flaticon.com/2.6.0/uicons-regular-rounded/css/uicons-regular-rounded.css">
26      <link rel="stylesheet" href="https://cdn-uicons.flaticon.com/2.6.0/uicons-brands/css/uicons-brands.css">
27      <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css">
28    </noscript>
29    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&family=Noto+Serif+JP:wght@200;300;400;500;600;700;900&display=swap" rel="stylesheet">
30        <!-- Alpine.js -->
31    
31<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js"></script>
31
32    <!-- Anime.js -->
33    
33<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
33
34    <!-- Swiper -->
35    <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
36    
36<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
36
37    <!-- GLightbox -->
38    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/glightbox.min.css" media="print" onload="this.media='all'">
39    <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/glightbox.min.css"></noscript>
40    
40<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/glightbox.min.js"></script>
40
41
42    <link rel="stylesheet" href="/js/jqueryplugin/remodal/1.1.1/remodal.css">
43<link rel="stylesheet" href="/js/jqueryplugin/remodal/1.1.1/remodal-default-theme.css">
44<link rel="stylesheet" href="/view/asset/system-99999-1-2-78e567dc05121ea6e0c5107158f4037f.css">
45<script>(function u(){var u=document.createElement("script");u.type="text/javascript",u.async=true,u.src="//api.u-komi.com/a2b868a6048d232165038c4f37fbb60a54b7b2dfd40cef9d30a6a7b8d981dbc2/widget.js";var k=document.getElementsByTagName("script")[0];k.parentNode.insertBefore(u,k)})();</script>
45
46
47
48    <style>
49      [x-cloak] {
50        display: none !important;
51      }
52      .common-item-swiper {
53        overflow: visible !important;
54        position: relative;
55        padding-bottom: 80px !important;
56      }
57      /* カルーセルがコンテナ幅を超えて横にはみ出すのを防ぐ。
58         左右ナビ矢印はラッパーの左右余白(padding)内に配置されるためクリップされない。 */
59      div:has(> .common-item-swiper) {
60        overflow-x: clip;
61      }
62      .common-item-swiper .swiper-pagination-progressbar.swiper-pagination-horizontal {
63        top: auto !important;
64        bottom: 0 !important;
65        left: 0 !important;
66        width: 100% !important;
67        height: 2px !important;
68        background: rgba(0, 0, 0, 0.1) !important;
69        position: absolute !important;
70      }
71      .common-item-swiper .swiper-pagination-progressbar-fill {
72        background: #000 !important;
73        height: 2px !important;
74      }
75      .common-item-swiper .custom-arrow {
76        width: 44px !important;
77        height: 44px !important;
78        position: absolute !important;
79        top: 40% !important;
80        z-index: 20 !important;
81        background: #fff !important;
82        border: 1px solid #e5e7eb !important;
83        color: transparent !important;
84        display: flex !important;
85        align-items: center !important;
86        justify-content: center !important;
87        transition: all 0.3s ease !important;
88      }
89      .common-item-swiper .custom-arrow::after {
90        display: none !important;
91        content: none !important;
92      }
93      .common-item-swiper .custom-arrow::before {
94        content: '';
95        display: block;
96        width: 10px;
97        height: 10px;
98        border-top: 1.5px solid #333;
99        border-right: 1.5px solid #333;
100        position: absolute;
101      }
102      .swiper-button-prev.custom-arrow {
103        left: -22px !important;
104      }
105      .swiper-button-prev.custom-arrow::before {
106        transform: rotate(-135deg);
107        left: 18px;
108      }
109      .swiper-button-next.custom-arrow {
110        right: -22px !important;
111      }
112      .swiper-button-next.custom-arrow::before {
113        transform: rotate(45deg);
114        right: 18px;
115      }
116      .common-item-swiper .custom-arrow:hover {
117        border-color: #000 !important;
118        background: #f9f9f9 !important;
119      }
120      .common-item-swiper .swiper-button-disabled {
121        opacity: 0 !important;
122        cursor: default;
123      }
124      @media (max-width: 767px) {
125        .relative.px-12 {
126          padding-left: 0 !important;
127          padding-right: 0 !important;
128        }
129        .common-item-swiper {
130          overflow: hidden !important;
131          padding-left: 15px !important;
132          padding-right: 15px !important;
133          padding-bottom: 50px !important;
134        }
135        .common-item-swiper .custom-arrow {
136          display: none !important;
137        }
138        .common-item-swiper .swiper-pagination-progressbar.swiper-pagination-horizontal {
139          bottom: 15px !important;
140          width: calc(100% - 40px) !important;
141          left: 20px !important;
142        }
143      }
144      /*
145        position: sticky の containing block 制約を回避するため、
146        sticky 要素を直接子に持つセクションラッパー div を display: contents にして、
147        スクロール文脈の祖先(body の直下 div)まで containing block を引き上げる。
148        ヘッダー固定表示などのために必要
149      */
150      body > div > div:has(> .sticky) {
151        display: contents;
152      }
153    </style>
154    <!-- Theme CSS Custom Properties -->
155    <style>
156      :root {
157        --theme-bg: #F5F5F5;
158        --theme-heading-size: 20px;
159        --theme-body-size: 12px;
160        --theme-text: #424242;
161        --theme-normal-button: #5E35B1;
162        --theme-normal-button-text: #FFFFFF;
163        --theme-normal-button-border: 0 solid transparent;
164        --theme-cart-button: #5E35B1;
165        --theme-cart-button-text: #FFFFFF;
166        --theme-cart-button-border: 0 solid transparent;
167        --theme-icon: #BDBDBD;
168        --theme-horizontal-padding: 32px;
169        --theme-border-radius: 8px;
170        --theme-product-card-bg: #FFFFFF;
171        --theme-product-card-border: 1px solid #E5E7EB;
172        --theme-product-card-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
173        --theme-point-color: #C62828;
174        --theme-anim-distance: 0px;
175        --theme-anim-duration: 0ms;
176        --theme-anim-easing: linear;
177        --theme-anim-image-duration: 0ms;
178      }
179
180      body {
181        background-color: var(--theme-bg);
182        font-size: var(--theme-body-size);
183        color: var(--theme-text);
184      }
185
186      .theme-heading {
187        font-size: var(--theme-heading-size);
188      }
189
190      .theme-container {
191        padding-left: var(--theme-horizontal-padding);
192        padding-right: var(--theme-horizontal-padding);
193      }
194
195      .theme-rounded {
196        border-radius: var(--theme-border-radius);
197      }
198
199      .theme-icon-color {
200        color: var(--theme-icon);
201      }
202
203      .theme-button-normal {
204        background-color: var(--theme-normal-button);
205        color: var(--theme-normal-button-text);
206        border: var(--theme-normal-button-border);
207      }
208
209      .theme-button-cart {
210        background-color: var(--theme-cart-button);
211        color: var(--theme-cart-button-text);
212        border: var(--theme-cart-button-border);
213      }
214
215      .theme-product-card {
216        background-color: var(--theme-product-card-bg);
217        border: var(--theme-product-card-border);
218        box-shadow: var(--theme-product-card-shadow);
219        border-radius: var(--theme-border-radius);
220      }
221
222      /*
223        スクロールイン。
224        JS が html に scroll-in-enabled を付けたときだけ隠す。こうしないと JavaScript 無効時に
225        コンテンツが永久に見えなくなる(opacity: 0 のまま解除されない)。
226      */
227      .scroll-in-enabled [data-scroll-in] {
228        opacity: 0;
229        transform: translateY(var(--theme-anim-distance));
230        transition:
231          opacity var(--theme-anim-duration) var(--theme-anim-easing),
232          transform var(--theme-anim-duration) var(--theme-anim-easing);
233      }
234
235      /* 完了状態は transform: none。translateY(0) を残すと position: fixed の containing block になる */
236      .scroll-in-enabled [data-scroll-in].is-visible {
237        opacity: 1;
238        transform: none;
239      }
240
241      /* 読み込み時点で画面内にあるセクション用。LCP を落とさないようアニメーションさせず即表示する */
242      .scroll-in-enabled [data-scroll-in].is-instant {
243        transition: none;
244      }
245
246      @media (prefers-reduced-motion: reduce) {
247        .scroll-in-enabled [data-scroll-in] {
248          opacity: 1;
249          transform: none;
250          transition: none;
251        }
252      }
253
254      /*
255        画像の遅延読み込みフェード。
256        JS が読み込み完了を検知して is-loaded を付けるまで透明にする。門番クラスの配下だけに
257        効かせるので、JavaScript 無効なら画像は最初から見える。
258        読み込みに失敗した場合は is-loaded が付かず、透明のままになる。プレースホルダの単色は
259        画像自身ではなく枠側に持たせる(opacity: 0 は自身の背景色ごと透明にするため)。
260      */
261      .img-fade-enabled img[data-img-fade] {
262        opacity: 0;
263      }
264
265      /*
266        transition ではなく animation でフェードさせる。transition ショートハンドはこのセレクタの
267        詳細度が Tailwind ユーティリティより高く、商品カードや関連商品の transition-transform を
268        opacity だけに上書きしてしまい、ホバー拡大がアニメーションしなくなる。
269      */
270      .img-fade-enabled img[data-img-fade].is-loaded {
271        opacity: 1;
272        animation: img-fade-in var(--theme-anim-image-duration) ease;
273      }
274
275      @keyframes img-fade-in {
276        from {
277          opacity: 0;
278        }
279      }
280
281      @media (prefers-reduced-motion: reduce) {
282        .img-fade-enabled img[data-img-fade] {
283          opacity: 1;
284          animation: none;
285        }
286      }
287    </style>
288
289
290    <link rel="stylesheet" href="/view/asset/user-99999-1-2-3d8032052026e9cd2036043b205566c3.css">
291  </head>
292
293
294  <body x-data class="font-serif">
295    
296
297    <div>
298      <!-- nocode:module:header -->
299        <div >
300          <div class="w-full py-[0px] bg-[#424242]">
301            <p class="px-4 my-0 text-[16px] text-[#FFFFFF] whitespace-pre-wrap text-center"></p>
302          </div>
303
304        </div>
305
306        <div >
307          <header
308            class="bg-[#F5F5F5] text-[#616161] shadow-md sticky top-0 z-50"
309            x-data="{
310              searchOpen: false,
311              logoIsCenter: false,
312              navOverflow: false,
313              init() {
314                this.$nextTick(() => this.measureNavOverflow());
315                window.addEventListener('load', () => this.measureNavOverflow());
316                const ro = new ResizeObserver(() => this.measureNavOverflow());
317                ro.observe(document.body);
318              },
319              measureNavOverflow() {
320                // 中央配置は常に 2 行レイアウト(CSS 側で完結)
321                if (this.logoIsCenter) return;
322                // モバイル(< md)は nav 非表示のため 1 行扱い
323                if (window.innerWidth < 768) {
324                  this.navOverflow = false;
325                  return;
326                }
327                const row = this.$refs.headerRow;
328                const logo = this.$refs.headerLogo;
329                const nav = this.$refs.headerNav;
330                const icons = this.$refs.headerIcons;
331                if (!row || !logo || !nav || !icons) return;
332                // 子要素の自然幅を合計して nav とアイコン群の真の必要幅を求める
333                const sumChildren = (parent, gapPx) => {
334                  let total = 0;
335                  let count = 0;
336                  for (const child of parent.children) {
337                    const w = child.offsetWidth;
338                    if (w > 0) { total += w; count++; }
339                  }
340                  if (count > 1) total += (count - 1) * gapPx;
341                  return total;
342                };
343                const navWidth = sumChildren(nav, 32);   // gap-x-8 = 32px
344                const iconsWidth = sumChildren(icons, 20); // space-x-5 = 20px
345                const minGap = 32; // logo&#8596;nav, nav&#8596;icons の最小余白
346                const required = logo.offsetWidth + navWidth + iconsWidth + minGap * 2;
347                this.navOverflow = required > row.clientWidth;
348              }
349            }"
350            @keydown.escape.window="searchOpen = false"
351          >
352            <div class="container mx-auto px-4 max-w-[1240px]">
353              <span class="hidden !order-4 md:!min-h-16" aria-hidden="true"></span>
354              <div
355                x-ref="headerRow"
356                class="flex items-center min-h-16 justify-between md:min-h-24"
357                :class="navOverflow ? 'flex-wrap md:pt-3 md:!min-h-16' : ''"
358              >
359                <div
360                  x-ref="headerLogo"
361                  class="flex-shrink-0 order-1"
362                >
363                  <a href="/" class="block">
364                                                    <span class="text-xl md:text-2xl font-bold tracking-[0.1em]">
365                      平等院ミュージアムショップ
366                    </span>
367                                      </a>
368                </div>
369
370                <nav
371                  x-ref="headerNav"
372                  class="hidden md:flex flex-wrap items-center gap-x-8 gap-y-2 text-[14px] font-bold tracking-widest uppercase order-2"
373                  :class="navOverflow ? '!order-4 md:w-full md:justify-center md:pt-2 md:pb-3' : ''"
374                >
375                                        <div
376                      x-data="{ open: false }"
377                      class="relative whitespace-nowrap"
378                      @mouseenter="open = true"
379                      @mouseleave="open = false"
380                      @keydown.escape.window="open = false"
381                    >
382                      <button
383                        type="button"
384                        class="hover:opacity-60 transition-opacity flex items-center gap-1"
385                        @click="open = !open"
386                        :aria-expanded="open"
387                        aria-haspopup="true"
388                      >
389                        カテゴリから選ぶ
390                        <i class="fi fi-rr-angle-small-down text-xs transition-transform" :class="open ? 'rotate-180' : ''"></i>
391                      </button>
392                      <div
393                        x-show="open"
394                        @click.outside="open = false"
395                        x-transition:enter="transition ease-out duration-150"
396                        x-transition:enter-start="opacity-0 translate-y-1"
397                        x-transition:enter-end="opacity-100 translate-y-0"
398                        x-transition:leave="transition ease-in duration-100"
399                        x-transition:leave-start="opacity-100 translate-y-0"
400                        x-transition:leave-end="opacity-0 translate-y-1"
401                        class="absolute top-full left-0 mt-2 bg-white text-[#333] rounded-lg shadow-xl min-w-[200px] py-2 z-50"
402                        role="menu"
403                        x-cloak
404                      >
405                                                <div class="group">
406                          <a
407                            href="/view/category/all_items"
408                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
409                            role="menuitem"
410                          >
411                            すべての商品
412                          </a>
413                                                  </div>
414                                                <div class="group">
415                          <a
416                            href="/view/category/book"
417                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
418                            role="menuitem"
419                          >
420                            書籍
421                          </a>
422                                                  </div>
423                                                <div class="group">
424                          <a
425                            href="/view/category/stationary"
426                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
427                            role="menuitem"
428                          >
429                            文具
430                          </a>
431                                                  </div>
432                                                <div class="group">
433                          <a
434                            href="/view/category/cosme"
435                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
436                            role="menuitem"
437                          >
438                            化粧雑貨
439                          </a>
440                                                  </div>
441                                                <div class="group">
442                          <a
443                            href="/view/category/key"
444                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
445                            role="menuitem"
446                          >
447                            根付・キーホルダー
448                          </a>
449                                                  </div>
450                                                <div class="group">
451                          <a
452                            href="/view/category/goods"
453                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
454                            role="menuitem"
455                          >
456                            雑貨
457                          </a>
458                                                  </div>
459                                                <div class="group">
460                          <a
461                            href="/view/category/cloth"
462                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
463                            role="menuitem"
464                          >
465                            布製品
466                          </a>
467                                                  </div>
468                                                <div class="group">
469                          <a
470                            href="/view/category/fragrance"
471                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
472                            role="menuitem"
473                          >
474                            香り製品
475                          </a>
476                                                  </div>
477                                                <div class="group">
478                          <a
479                            href="/view/category/tea"
480                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
481                            role="menuitem"
482                          >
483                            お茶
484                          </a>
485                                                  </div>
486                                                <div class="group">
487                          <a
488                            href="/view/category/ct11"
489                            class="block px-4 py-2 text-xs font-semibold hover:bg-black/5 transition-colors normal-case tracking-normal"
490                            role="menuitem"
491                          >
492                            集印帖
493                          </a>
494                                                  </div>
495                                              </div>
496                    </div>
497                                            <a
498                          href="https://www.byodoin.or.jp/learn/"
499                          class="hover:opacity-60 transition-opacity whitespace-nowrap"
500                          target="_blank"
501                          rel="noopener noreferrer"
502                        >平等院を知る</a>
503                        <a
504                          href="https://www.byodoin.com/html/page1.html"
505                          class="hover:opacity-60 transition-opacity whitespace-nowrap"
506                          target="_blank"
507                          rel="noopener noreferrer"
508                        >ご利用ガイド</a>
509                  <div class="flex items-center gap-x-2 whitespace-nowrap">
510                                            <a href="/view/member/login" class="hover:opacity-60 transition-opacity">ログイン</a>
511                                                                                  <sp
511an class="opacity-50">/</span>
512                                            <a href="/shop/idinfo.html" class="hover:opacity-60 transition-opacity">新規登録</a>
513                                                            </div>
514                </nav>
515
516                <div
517                  x-ref="headerIcons"
518                  class="flex items-center space-x-5 order-3 "
519                  :class="navOverflow ? 'flex-1 justify-end' : ''"
520                >
521                  <button
522                    type="button"
523                    class="hover:opacity-60 transition-opacity"
524                    aria-label="検索"
525                    @click="searchOpen = !searchOpen"
526                    :aria-expanded="searchOpen"
527                    aria-controls="header-search-panel"
528                  >
529                    <i class="fi fi-rr-search text-lg" aria-hidden="true"></i>
530                  </button>
531
532                  <div
533                    x-data="
534                      {
535                        cartQuantity: 0,
536                        updateCartQuantity(detail) {
537                          if (!detail) return;
538                          if (typeof detail.totalQuantity === 'number' && !isNaN(detail.totalQuantity)) {
539                            this.cartQuantity = detail.totalQuantity;
540                            return;
541                          }
542                          if (typeof detail.addedQuantity === 'number' && !isNaN(detail.addedQuantity)) {
543                            this.cartQuantity = this.cartQuantity + detail.addedQuantity;
544                          }
545                        }
546                      }
547                    "
548                    x-init="window.addEventListener('makeshop:cart-entry', (e) => updateCartQuantity(e.detail))"
549                    class="relative"
550                  >
551                    <a
552                      href="/view/cart"
553                      class="relative hover:opacity-60 transition-opacity block"
554                      :aria-label="cartQuantity > 0 ? 'カート ' + cartQuantity + '件' : 'カート'"
555                    >
556                      <i class="fi fi-rr-shopping-cart text-lg" aria-hidden="true"></i>
557                      <span
558                        class="absolute -top-2 -right-2 bg-[#C62828] text-white text-[9px] font-bold rounded-full h-4 w-4 flex items-center justify-center"
559                        x-show="cartQuantity > 0"
560                        x-text="cartQuantity"
561                        aria-hidden="true"
562                        x-cloak
563                      ></span>
564                    </a>
565                  </div>
566
567                  <div x-data="{ menuOpen: false }" class="md:hidden">
568                    <button
569                      type="button"
570                      class="hover:opacity-60"
571                      @click="menuOpen = true"
572                      :aria-expanded="menuOpen"
573                      aria-controls="mobile-menu-drawer"
574                      aria-label="メニューを開く"
575                    >
576                      <i class="fi fi-rr-menu-burger text-xl" aria-hidden="true"></i>
577                    </button>
578
579                    <div
580                      x-show="menuOpen"
581                      @click="menuOpen = false"
582                      @keydown.escape.window="menuOpen = false"
583                      x-transition:enter="transition ease-out duration-200"
584                      x-transition:enter-start="opacity-0"
585                      x-transition:enter-end="opacity-100"
586                      x-transition:leave="transition ease-in duration-150"
587                      x-transition:leave-start="opacity-100"
588                      x-transition:leave-end="opacity-0"
589                      class="fixed inset-0 bg-black/50 z-[60]"
590                      aria-hidden="true"
591                      x-cloak
592                    ></div>
593
594                    <aside
595                      id="mobile-menu-drawer"
596                      x-show="menuOpen"
597                      x-transition:enter="transition ease-out duration-200"
598                      x-transition:enter-start="translate-x-full"
599                      x-transition:enter-end="translate-x-0"
600                      x-transition:leave="transition ease-in duration-150"
601                      x-transition:leave-start="translate-x-0"
602                      x-transition:leave-end="translate-x-full"
603                      class="fixed top-0 right-0 h-full w-72 max-w-[80%] bg-[#F5F5F5] text-[#616161] shadow-xl z-[60] flex flex-col overflow-y-auto"
604                      role="dialog"
605                      aria-modal="true"
606                      aria-label="メニュー"
607                      x-cloak
608                    >
609                      <div class="flex justify-end p-4">
610                        <button
611                          type="button"
612                          class="hover:opacity-60"
613                          @click="menuOpen = false"
614                          aria-label="メニューを閉じる"
615                        >
616                          <i class="fi fi-rr-cross text-xl" aria-hidden="true"></i>
617                        </button>
618                      </div>
619
620                      <nav
621                        class="flex flex-col px-6 pb-6 space-y-4 text-[14px] font-bold tracking-widest uppercase"
622                        aria-label="モバイルメニュー"
623                      >
624                                                    <div x-data="{ subOpen: false }">
625                            <button
626                              type="button"
627                              class="w-full flex items-center justify-between hover:opacity-60 transition-opacity"
628                              @click="subOpen = !subOpen"
629                              :aria-expanded="subOpen"
630                              aria-haspopup="true"
631                            >
632                              <span>カテゴリから選ぶ</span>
633                              <i
634                                class="fi fi-rr-angle-small-down text-xs transition-transform"
635                                :class="subOpen ? 'rotate-180' : ''"
636                                aria-hidden="true"
637                              ></i>
638                            </button>
639                            <div x-show="subOpen" class="mt-2 pl-4 space-y-2" x-cloak>
640                                                            <div>
641                                <a
642                                  href="/view/category/all_items"
643                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
644                                >
645                                  すべての商品
646                                </a>
647                                                              </div>
648                                                            <div>
649                                <a
650                                  href="/view/category/book"
651                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
652                                >
653                                  書籍
654                                </a>
655                                                              </div>
656                                                            <div>
657                                <a
658                                  href="/view/category/stationary"
659                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
660                                >
661                                  文具
662                                </a>
663                                                              </div>
664                                                            <div>
665                                <a
666                                  href="/view/category/cosme"
667                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
668                                >
669                                  化粧雑貨
670                                </a>
671                                                              </div>
672                                                            <div>
673                                <a
674                                  href="/view/category/key"
675                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
676                                >
677                                  根付・キーホルダー
678                                </a>
679                                                              </div>
680                                                            <div>
681                                <a
682                                  href="/view/category/goods"
683                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
684                                >
685                                  雑貨
686                                </a>
687                                                              </div>
688                                                            <div>
689                                <a
690                                  href="/view/category/cloth"
691                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
692                                >
693                                  布製品
694                                </a>
695                                                              </div>
696                                                            <div>
697                                <a
698                                  href="/view/category/fragrance"
699                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
700                                >
701                                  香り製品
702                                </a>
703                                                              </div>
704                                                            <div>
705                                <a
706                                  href="/view/category/tea"
707                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
708                                >
709                                  お茶
710                                </a>
711                                                              </div>
712                                                            <div>
713                                <a
714                                  href="/view/category/ct11"
715                                  class="block py-1 text-xs font-semibold normal-case tracking-normal hover:opacity-60 transition-opacity"
716                                >
717                                  集印帖
718                                </a>
719                                                              </div>
720                                                          </div>
721                          </div>
722                                                        <a
723                                href="https://www.byodoin.or.jp/learn/"
724                                class="hover:opacity-60 transition-opacity"
725                                target="_blank"
726                                rel="noopener noreferrer"
727                              >平等院を知る</a>
728                              <a
729                                href="https://www.byodoin.com/html/page1.html"
730                                class="hover:opacity-60 transition-opacity"
731                                target="_blank"
732                                rel="noopener noreferrer"
733                              >ご利用ガイド</a>
734                                                    <a href="/view/member/login" class="hover:opacity-60 transition-opacity">ログイン</a>
735                                                                                                      <a href="/shop/idinfo.html" class="hover:opacity-60 transition-opacity">新規登録</a>
736                                                                        </nav>
737                    </aside>
738                  </div>
739                </div>
740              </div>
741            </div>
742
743            <div
744              id="header-search-panel"
745              x-show="searchOpen"
746              @click.outside="searchOpen = false"
747              x-transition:enter="transition ease-out duration-200"
748              x-transition:enter-start="opacity-0 -translate-y-2"
749              x-transition:enter-end="opacity-100 translate-y-0"
750              x-transition:leave="transition ease-in duration-150"
751              x-transition:leave-start="opacity-100 translate-y-0"
752              x-transition:leave-end="opacity-0 -translate-y-2"
753              class="absolute top-full left-0 right-0 bg-white text-[#333] shadow-xl border-t border-black/10 z-40"
754              role="dialog"
755              aria-label="商品検索"
756              x-cloak
757            >
758              <div class="container mx-auto px-4 max-w-[1240px] py-4 md:py-6">
759                <div class="flex items-center gap-2 md:gap-3">
760                  <input
761                    type="text"
762                    data-id="makeshop-search-keyword"
763                    placeholder="キーワードで検索"
764                    class="flex-1 min-w-0 py-2 md:py-3 px-3 md:px-4 border border-[#ddd] text-sm text-[#333] outline-none focus:border-black transition-colors normal-case tracking-normal"
765                    @keydown.enter.prevent="$refs.searchSubmit.click()"
766                  >
767                  <a
768                    x-ref="searchSubmit"
769                    href="#makeshop-common-search-url"
770                    class="theme-button-normal theme-rounded inline-flex items-center justify-center gap-1.5 py-2 md:py-3 px-4 md:px-6 text-xs hover:opacity-80 transition-opacity shrink-0 normal-case tracking-normal"
771                    aria-label="検索"
772                  >
773                    <i class="fi fi-rr-search" aria-hidden="true"></i>
774                    <span class="hidden md:inline">検索</span>
775                  </a>
776                </div>
777              </div>
778            </div>
779          </header>
780
781        </div>
782
783<!-- /nocode:module:header -->
784      <!-- nocode:module:body -->
785        <div data-scroll-in>
786          <section class="relative w-full overflow-hidden h-[120px] md:h-[200px]">
787            <img data-img-fade loading="lazy"
788              src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/YdtoBYd.jpg"
789              class="absolute inset-0 w-full h-full object-cover"
790              alt="online store"
791            >
792            <div class="absolute inset-0" style="background-color:#000000;opacity:0.3" aria-hidden="true"></div>
793            <div class="relative z-10 flex h-full w-full flex-col justify-center gap-4 px-8 items-center text-center">
794              <h2 class="font-serif text-[36px] text-[#FFFFFF] font-light whitespace-pre-line">online store</h2>
795              <p class="font-serif text-[16px] text-[#FFFFFF] whitespace-pre-wrap"></p>
796            </div>
797          </section>
798
799        </div>
800
801        <div data-scroll-in>
802          <section class="w-full px-4 md:px-8 py-[32px] bg-[#F5F5F5]">
803            <div class="mx-auto flex max-w-6xl flex-col gap-4 text-center">
804                <p class="w-full text-[14px] text-[#424242] whitespace-pre-line leading-relaxed">平等院ミュージアム鳳翔館には併設されたミュージアムショップがございます。ミュージアムショップでは平等院オリジナルグッズを取り揃えております。</p>
805            </div>
806          </section>
807
808        </div>
809
810        <div data-scroll-in>
811          <section class="w-full px-4 md:px-8 py-[32px] bg-[#F5F5F5]">
812            <div class="mx-auto flex max-w-6xl flex-col gap-4 text-center">
813                <h2 class="w-full text-[20px] text-[#424242] font-bold leading-tight">
814                  商品一覧
815                </h2>
816                <p class="w-full text-[14px] text-[#424242] whitespace-pre-line leading-relaxed">一部の商品は、オンラインで購入できます。
817          以下より、購入したい商品のカテゴリをお選びください。</p>
818            </div>
819          </section>
820
821        </div>
822
823        <div data-scroll-in>
824          <section
825            class="w-full py-[0px] bg-[#F5F5F5]"
826          >
827            <div class="mx-auto max-w-[1240px] px-4 md:px-8">
828
829                <ul class="grid gap-3 md:gap-4 list-none p-0 m-0 grid-cols-2 md:grid-cols-3">
830                      <li>
831                          <a
832                            href="https://www.byodoin.com/shopbrand/book"
833                            class="block transition-opacity hover:opacity-90"
834                          >
835                            <div class="relative aspect-[4/3]  w-full overflow-hidden bg-[#eeeeee]">
836                              <img data-img-fade
837                                src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/OZK0IRw.jpg"
838                                alt="バナー画像1"
839                                class="absolute inset-0 h-full w-full object-cover"
840                                loading="lazy"
841                              >
842                            </div>
843                              <div class="mt-3">
844                                  <h3 class="text-[16px] text-[#424242] text-left font-medium leading-snug">|書籍</h3>
845                              </div>
846
847
848                          </a>
849                      </li>
850                      <li>
851                          <a
852                            href="https://www.byodoin.com/shopbrand/stationary"
853                            class="block transition-opacity hover:opacity-90"
854                          >
855                            <div class="relative aspect-[4/3]  w-full overflow-hidden bg-[#eeeeee]">
856                              <img data-img-fade
857                                src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/MfWqgIO.jpg"
858                                alt="バナー画像2"
859                                class="absolute inset-0 h-full w-full object-cover"
860                                loading="lazy"
861                              >
862                            </div>
863                              <div class="mt-3">
864                                  <h3 class="text-[16px] text-[#424242] text-left font-medium leading-snug">|文具</h3>
865                              </div>
866
867
868                          </a>
869                      </li>
870                      <li>
871                          <a
872                            href="https://www.byodoin.com/shopbrand/cosme"
873                            class="block transition-opacity hover:opacity-90"
874                          >
875                            <div class="relative aspect-[4/3]  w-full overflow-hidden bg-[#eeeeee]">
876                              <img data-img-fade
877                                src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/jbLwBkb.jpg"
878                                alt="バナー画像3"
879                                class="absolute inset-0 h-full w-full object-cover"
880                                loading="lazy"
881                              >
882                            </div>
883                              <div class="mt-3">
884                                  <h3 class="text-[16px] text-[#424242] text-left font-medium leading-snug">|化粧雑貨</h3>
885                              </div>
886
887
888                          </a>
889                      </li>
890                      <li>
891                          <a
892                            href="https://www.byodoin.com/shopbrand/key"
893                            class="block transition-opacity hover:opacity-90"
894                          >
895                            <div class="relative aspect-[4/3]  w-full overflow-hidden bg-[#eeeeee]">
896                              <img data-img-fade
897                                src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/iGVqOQ9.jpg"
898                                alt="バナー画像4"
899                                class="absolute inset-0 h-full w-full object-cover"
900                                loading="lazy"
901                              >
902                            </div>
903                              <div class="mt-3">
904                                  <h3 class="text-[16px] text-[#424242] text-left font-medium leading-snug">|根付・キーホルダー</h3>
905                              </div>
906
907
908                          </a>
909                      </li>
910                      <li>
911                          <a
912                            href="https://www.byodoin.com/shopbrand/goods"
913                            class="block transition-opacity hover:opacity-90"
914                          >
915                            <div class="relative aspect-[4/3]  w-full overflow-hidden bg-[#eeeeee]">
916                              <img data-img-fade
917                                src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/X5wfmOf.jpg"
918                                alt="バナー画像5"
919                                class="absolute inset-0 h-full w-full object-cover"
920                                loading="lazy"
921                              >
922                            </div>
923                              <div class="mt-3">
924                                  <h3 class="text-[16px] text-[#424242] text-left font-medium leading-snug">|雑貨</h3>
925                              </div>
926
927
928                          </a>
929                      </li>
930                      <li>
931                          <a
932                            href="https://www.byodoin.com/shopbrand/cloth"
933                            class="block transition-opacity hover:opacity-90"
934                          >
935                            <div class="relative aspect-[4/3]  w-full overflow-hidden bg-[#eeeeee]">
936                              <img data-img-fade
937                                src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/94ReQk2.jpg"
938                                alt="バナー画像6"
939                                class="absolute inset-0 h-full w-full object-cover"
940                                loading="lazy"
941                              >
942                            </div>
943                              <div class="mt-3">
944                                  <h3 class="text-[16px] text-[#424242] text-left font-medium leading-snug">|布製品</h3>
945                              </div>
946
947
948                          </a>
949                      </li>
950                      <li>
951                          <a
952                            href="https://www.byodoin.com/shopbrand/fragrance"
953                            class="block transition-opacity hover:opacity-90"
954                          >
955                            <div class="relative aspect-[4/3]  w-full overflow-hidden bg-[#eeeeee]">
956                              <img data-img-fade
957                                src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/MEkvPzF.jpg"
958                                alt="バナー画像7"
959                                class="absolute inset-0 h-full w-full object-cover"
960                                loading="lazy"
961                              >
962                            </div>
963                              <div class="mt-3">
964                                  <h3 class="text-[16px] text-[#424242] text-left font-medium leading-snug">|香り製品</h3>
965                              </div>
966
967
968                          </a>
969                      </li>
970                </ul>
971            </div>
972          </section>
973
974        </div>
975
976        <div data-scroll-in>
977          <section class="w-full px-4 md:px-8 py-[32px] bg-[#F5F5F5]">
978            <div class="mx-auto flex max-w-6xl flex-col gap-4 text-center">
979                <p class="w-full text-[16px] text-[#C62828] whitespace-pre-line leading-relaxed">※ご購入の際は、ご利用ガイドを必ずお読みください。
980          ※ご不明な点がございましたら、お気軽にお問い合わせください。</p>
981            </div>
982          </section>
983
984        </div>
985
986        <div data-scroll-in>
987          
988        </div>
989
990        <div data-scroll-in>
991          <section
992            class="w-full py-[48px] bg-[#F5F5F5]"
993          >
994            <div class="mx-auto max-w-[1240px] px-4 md:px-8">
995
996                <div class="relative px-8 md:px-12">
997                  <div class="swiper common-item-swiper relative">
998                    <div class="swiper-wrapper">
999                          <div class="swiper-slide h-auto">
1000                              <a
1001                                href="https://www.byodoin.or.jp/museum/"
1002                                class="block transition-opacity hover:opacity-90"
1003                              >
1004                                <div class="relative aspect-[16/9]  w-full overflow-hidden bg-[#eeeeee]">
1005                                  <img data-img-fade
1006                                    src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/XE4Q5xM.jpg"
1007                                    alt="バナー画像1"
1008                                    class="absolute inset-0 h-full w-full object-cover"
1009                                    loading="lazy"
1010                                  >
1011                                </div>
1012                                
1013
1014                              </a>
1015                          </div>
1016                          <div class="swiper-slide h-auto">
1017                              <a
1018                                href="https://www.byodoin.or.jp/touka/"
1019                                class="block transition-opacity hover:opacity-90"
1020                              >
1021                                <div class="relative aspect-[16/9]  w-full overflow-hidden bg-[#eeeeee]">
1022                                  <img data-img-fade
1023                                    src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/1rgvnQZ.jpg"
1024                                    alt="バナー画像2"
1025                                    class="absolute inset-0 h-full w-full object-cover"
1026                                    loading="lazy"
1027                                  >
1028                                </div>
1029                                
1030
1031                              </a>
1032                          </div>
1033                          <div class="swiper-slide h-auto">
1034                              <a
1035                                href="http://www.byodoin.com/"
1036                                class="block transition-opacity hover:opacity-90"
1037                              >
1038                                <div class="relative aspect-[16/9]  w-full overflow-hidden bg-[#eeeeee]">
1039                                  <img data-img-fade
1040                                    src="https://makeshop-multi-images.akamaized.net/byodoin/nocodeimages/IEE3tq0.jpg"
1041                                    alt="バナー画像3"
1042                                    class="absolute inset-0 h-full w-full object-cover"
1043                                    loading="lazy"
1044                                  >
1045                                </div>
1046                                
1047
1048                              </a>
1049                          </div>
1050                    </div>
1051                    <div class="swiper-button-prev custom-arrow"></div>
1052                    <div class="swiper-button-next custom-arrow"></div>
1053                    <div class="swiper-pagination"></div>
1054                  </div>
1055                </div>
1056            </div>
1057          </section>
1058
1059        </div>
1060
1061<!-- /nocode:module:body -->
1062      <!-- nocode:module:footer -->
1063        <div data-scroll-in>
1064          <div class="flex flex-wrap items-center gap-[16px] justify-center py-[16px] bg-[#F5F5F5] px-4">
1065              <a href="https://www.facebook.com/byodoin.official/" target="_blank" rel="noopener noreferrer" aria-label="Facebook">
1066                <i class="fi fi-brands-facebook text-[32px] transition-opacity hover:opacity-60 text-[#1877F2]" aria-hidden="true"></i>
1067              </a>
1068
1069
1070              <a href="https://www.instagram.com/byodoin_temple_official/" target="_blank" rel="noopener noreferrer" aria-label="Instagram">
1071                <i
1072                  class="fi fi-brands-instagram text-[32px] transition-opacity hover:opacity-60 bg-gradient-to-tr from-[#f9ce34] via-[#ee2a7b] to-[#6228d7] bg-clip-text text-transparent"
1073                  aria-hidden="true"
1074                ></i>
1075              </a>
1076
1077
1078          </div>
1079
1080        </div>
1081
1082        <div data-scroll-in>
1083          <footer class="bg-[#424242] text-[#FFFFFF] py-12">
1084            <div class="container mx-auto px-4 flex flex-col gap-10">
1085              <div class="flex flex-col items-center gap-6">
1086
1087                <div class="flex flex-col items-center gap-6 w-full">
1088                  <div class="flex flex-wrap justify-center gap-x-10 gap-y-5 text-[11px] tracking-[0.05em] font-medium">
1089                    <a href="/view/contract" class="hover:opacity-70 transition-opacity">特定商取引法</a>
1090                    <a href="/view/policy" class="hover:opacity-70 transition-opacity">プライバシーポリシー</a>
1091                  </div>
1092
1093                    <div class="flex flex-wrap justify-center gap-x-10 gap-y-5 text-[11px] tracking-[0.2em]">
1094                            <a
1095                              href="https://www.byodoin.com/html/page1.html"
1096                              class="hover:opacity-70 transition-opacity"
1097                              target="_blank"
1098                              rel="noopener noreferrer"
1099                            >ご利用ガイド</a>
1100                            <a
1101                              href="https://www.byodoin.or.jp/contact/public/"
1102                              class="hover:opacity-70 transition-opacity"
1103                              target="_blank"
1104                              rel="noopener noreferrer"
1105                            >お問い合わせ</a>
1106                            <a
1107                              href="https://www.byodoin.or.jp/museum/"
1108                
1108              class="hover:opacity-70 transition-opacity"
1109                              target="_blank"
1110                              rel="noopener noreferrer"
1111                            >ミュージアム鳳翔館について</a>
1112                    </div>
1113
1114                </div>
1115              </div>
1116
1117              <div class="text-center">
1118                <p class="text-[10px] tracking-[0.2em] text-[#FFFFFF]">
1119                  Copyright &#169; 平等院ミュージアムショップ All Rights Reserved.
1120                </p>
1121              </div>
1122            </div>
1123          </footer>
1124
1125        </div>
1126
1127<!-- /nocode:module:footer -->
1128    </div>
1129
1130    <!-- nocode:module:javascript -->
1131    
1131<script>
1132      document.addEventListener('DOMContentLoaded', () => {
1133  document.querySelectorAll('.day-list').forEach((el) => {
1134    const month = el.getAttribute('data-month');
1135    const day = el.getAttribute('data-day');
1136    const color = el.getAttribute('data-color');
1137
1138    const section = el.closest('section');
1139    if (!section) return;
1140    const cell = section.querySelector(`.makeshop-calendar${month} td.day${day}`);
1141    if (!cell) return;
1142
1143    cell.style.backgroundColor = color;
1144    cell.style.color = '#fff';
1145    cell.style.fontWeight = 'bold';
1146  });
1147});
1148
1149      (function () {
1150  // 買い物かご画面の数量ステッパー(&#8722;/+)。
1151  //
1152  // MakeShop は数量変更URL(quantity_url)のアンカークリックを検知し、同一商品の
1153  // data-id を持つ入力欄の値を読んで数量を更新する。そのため &#8722;/+ 押下時に入力欄の
1154  // 値を先に書き換えてから、非表示アンカーをプログラム的にクリックして数量変更を確定する。
1155  // (確定後は MakeShop 側でカート画面が再表示される)
1156  document.addEventListener("DOMContentLoaded", function () {
1157    var steppers = document.querySelectorAll("[data-cart-quantity]");
1158
1159    steppers.forEach(function (stepper) {
1160      var input = stepper.querySelector("[data-cart-quantity-input]");
1161      var applyAnchor = stepper.querySelector("[data-cart-quantity-apply]");
1162      var decreaseBtn = stepper.querySelector("[data-cart-quantity-decrease]");
1163      var increaseBtn = stepper.querySelector("[data-cart-quantity-increase]");
1164      var isApplying = false;
1165
1166      if (!input || !applyAnchor) return;
1167
1168      function applyQuantity(nextQuantity) {
1169        if (isApplying) return;
1170        // 0以下は不可(数量0での削除はゴミ箱ボタンから行う)
1171        if (nextQuantity < 1) return;
1172        var current = parseInt(input.value, 10) || 1;
1173        if (nextQuantity === current) return;
1174
1175        // MakeShop が data-id の入力値を読むため、先に値を書き換える
1176        isApplying = true;
1177        input.value = nextQuantity;
1178        applyAnchor.click();
1179
1180        // リロードが発生しない場合のフォールバック(pagehide 時はタイマーを破棄)
1181        var resetTimer = setTimeout(function () {
1182          isApplying = false;
1183        }, 2000);
1184        window.addEventListener(
1185          "pagehide",
1186          function () {
1187            clearTimeout(resetTimer);
1188          },
1189          { once: true }
1190        );
1191      }
1192
1193      if (decreaseBtn) {
1194        decreaseBtn.addEventListener("click", function () {
1195          applyQuantity((parseInt(input.value, 10) || 1) - 1);
1196        });
1197      }
1198
1199      if (increaseBtn) {
1200        increaseBtn.addEventListener("click", function () {
1201          applyQuantity((parseInt(input.value, 10) || 1) + 1);
1202        });
1203      }
1204    });
1205  });
1206})();
1207
1208(function () {
1209  function toFiniteNumberOrUndefined(value) {
1210    if (value === undefined || value === null || value === '') {
1211      return undefined;
1212    }
1213    var n = Number(value);
1214    return isFinite(n) ? n : undefined;
1215  }
1216  // 一覧で最後にクリックされた「カートに入れる」ボタンの商品詳細URL。
1217  // オプション/カスタムセレクト/定期購入商品などはそのままカゴに入らず MakeShop が
1218  // エラーを返すため、エラー時のモーダルOKでこのURL(商品詳細)へ遷移させる。
1219  var lastListCartProductUrl = '';
1220  document.addEventListener('click', function (e) {
1221    var link = e.target.closest('a[data-product-url]');
1222    if (!link) return;
1223    lastListCartProductUrl = link.getAttribute('data-product-url') || '';
1224  }, true);
1225
1226  function dispatchCartEntry(data, redirectUrl) {
1227    var isError = !!(data && data.result === false);
1228    var detail = {
1229      isError: isError,
1230      message: isError
1231        ? (data && data.error && data.error.message) || 'カートに追加できませんでした'
1232        : '商品が追加されました',
1233      // 商品詳細/一覧はカゴ追加後の合計数(totalQuantity)を持つため、ヘッダーはこの値で上書きする。
1234      totalQuantity: toFiniteNumberOrUndefined(data && data.totalQuantity),
1235      // カタログ注文は合計数を取得できないため、追加した数量(addedQuantity)を渡し、
1236      // ヘッダー側で現在のカート数へ加算してもらう。
1237      addedQuantity: toFiniteNumberOrUndefined(data && data.addedQuantity),
1238      // エラー時にモーダルのOKから遷移する商品詳細URL(一覧からの追加時のã
1238¿ï¼‰ã€‚
1239      redirectUrl: isError ? (redirectUrl || '') : '',
1240    };
1241    window.dispatchEvent(new CustomEvent('makeshop:cart-entry', { detail: detail }));
1242  }
1243  // 商品詳細画面からカゴに入れた直後
1244  window.MakeShop_afterCartEntry = function (data) {
1245    dispatchCartEntry(data);
1246    return false;
1247  };
1248  // 一覧画面(商品カード等)からカゴに入れた直後
1249  window.MakeShop_afterListCartEntry = function (data) {
1250    dispatchCartEntry(data, lastListCartProductUrl);
1251    return false;
1252  };
1253
1254  // カタログ注文のかご入れは MakeShop_afterCartEntry / MakeShop_afterListCartEntry を発火しない。
1255  // また、追加処理は MakeShop 側 JS が画面遷移なし(同一ページ内)で行うが、その通信手段は
1256  // fetch / XMLHttpRequest ではない(hidden iframe への form 送信とみられる)ため、
1257  // それらをフックしても応答を捕捉できない。
1258  // 通信手段に依存せず確実にフィードバックを返すため、クリック時に楽観的にモーダルを表示する。
1259  // 加えて、合計数が取得できない代わりに、追加される数量の合計(addedQuantity)を算出して
1260  // ヘッダーのカート数へ楽観的に加算する。
1261  document.addEventListener('click', function (e) {
1262    var link = e.target.closest('[data-catalog-cart-entry]');
1263    if (!link) return;
1264    var section = link.closest('[data-catalog-section]');
1265    if (!section) return;
1266    // 「カタログ番号が入力済み かつ 数量が 1 以上」の行のみが実際にカゴへ追加される。
1267    // 番号と数量は行(id 末尾の連番)でペアとして判定する。
1268    // ただし MakeShop バックエンドは同一カタログ番号(同一 data-id)を重複とみなã
1268—
1269    // 1 件分しかカゴに追加しないため、フロントの楽観的加算もカタログ番号で重複排除する。
1270    // 同一番号が複数行にある場合は後勝ち(最後の行の数量)で上書きしてバックエンドに揃える。
1271    // カタログ番号はユーザー入力なので、プロトタイプ汚染を避けるためプロトタイプを持たない
1272    // オブジェクトをキーストアとして使う。
1273    var quantityByCatalogNumber = Array.from(section.querySelectorAll('[id^=catalog-number-]'))
1274        .reduce(function (acc, numberEl) {
1275          var catalogNumber = numberEl.value.trim();
1276          if (catalogNumber === '') return acc;
1277          var index = numberEl.id.replace('catalog-number-', '');
1278          var qtyEl = section.querySelector('#catalog-qty-' + index);
1279          if (!qtyEl) return acc;
1280          var qty = qtyEl.value.trim();
1281          if (/^\d+$/.test(qty) && Number(qty) > 0) {
1282            acc[catalogNumber] = Number(qty);
1283          }
1284          return acc;
1285        }, Object.create(null));
1286    var addedQuantity = Object.keys(quantityByCatalogNumber)
1287        .reduce(function (sum, key) { return sum + quantityByCatalogNumber[key]; }, 0);
1288    // 有効な行が 1 つも無ければ実際の追加は起きないため発火しない。
1289    if (addedQuantity <= 0) return;
1290    dispatchCartEntry({ result: true, addedQuantity: addedQuantity });
1291  }, true);
1292})();
1293
1294      (function () {
1295  function findAnchorByHref(href) {
1296    var anchors = document.querySelectorAll('a[href]');
1297    for (var i = 0; i < anchors.length; i++) {
1298      if (anchors[i].getAttribute('href') === href) {
1299        return anchors[i];
1300      }
1301    }
1302    return null;
1303  }
1304
1305  window.MakeShop_afterFavoriteEntry = function (data) {
1306    if (!data.result) {
1307      data.method.modal((data.error && data.error.message) || "");
1308      return false;
1309    }
1310
1311    var source = findAnchorByHref(data.source);
1312    if (source) {
1313      source.classList.add("hidden");
1314      var parent = source.parentElement;
1315      if (parent) {
1316        var onEl = parent.querySelector(".item-favorite-on, .item-sku-favorite-on");
1317        if (onEl) onEl.classList.remove("hidden");
1318      }
1319    }
1320
1321    return false;
1322  };
1323
1324  window.MakeShop_afterFavoriteRemove = function (data) {
1325    if (!data.result) {
1326      data.method.modal((data.error && data.error.message) || "");
1327      return false;
1328    }
1329
1330    var source = findAnchorByHref(data.source);
1331    if (source) {
1332      source.classList.add("hidden");
1333      var parent = source.parentElement;
1334      if (parent) {
1335        var offEl = parent.querySelector(
1336          ".item-favorite-off, .item-sku-favorite-off"
1337        );
1338        if (offEl) offEl.classList.remove("hidden");
1339      }
1340    }
1341
1342    return false;
1343  };
1344})();
1345
1346      // スクロールインと画像フェード。
1347//
1348// どちらもテーマ全体設定の「アニメーション」(theme.animation_level) に連動する。
1349// このファイルが common.js に含まれなかった場合にコンテンツが隠れたままにならないよう、
1350// 読み込まれたことを同期的に知らせる(layout.liquid 側の load ハンドラと対)。
1351window.__scrollInReady = true;
1352
1353(function () {
1354  const root = document.documentElement;
1355
1356  function prefersReducedMotion() {
1357    return !!(window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches);
1358  }
1359
1360  // 隠す指定を解除して全セクションを見えるようにする。初期化できないときの最終防衛線。
1361  function disableScrollIn() {
1362    root.classList.remove("scroll-in-enabled");
1363  }
1364
1365  // ---------------------------------------------------------------------------
1366  // ① スクロールイン
1367  // ---------------------------------------------------------------------------
1368  function initScrollIn() {
1369    // 門番クラスが無い = アニメーション「なし」。CSS 側で隠れていないので何もしない。
1370    if (!root.classList.contains("scroll-in-enabled")) return;
1371
1372    // OS 設定で動きを減らす指定があるときは、設定値によらず即表示に倒す。
1373    // 未対応ブラウザでも隠したままにしないよう、IntersectionObserver が無ければ解除する。
1374    if (prefersReducedMotion() || typeof IntersectionObserver === "undefined") {
1375      disableScrollIn();
1376      return;
1377    }
1378
1379    const targets = document.querySelectorAll("[data-scroll-in]");
1380    if (!targets.length) return;
1381
1382    // 読み込み時点で画面内にあるセクションは、アニメーションさせず即表示する(LCP を落とさない)。
1383    // 初回コールバックに入ってくるのが「最初から交差していた要素」なので、それだけ別扱いにする。
1384    // is-instant は解除しない。解除を次フレームに回すと、スタイルが確定する前に transition が
1385    // 戻ってしまい結局フェードが再生される。表示後は監視も外すので付けたままで実害がない。
1386    let isFirstCallback = true;
1387
1388    function reveal(el, instant) {
1389      if (instant) el.classList.add("is-instant");
1390      el.classList.add("is-visible");
1391      // observer は下で const 宣言しているが、この関数が呼ばれるのは初期化後(IntersectionObserver の
1392      // コールバック内、または末尾の checkBottomReached から)なので、一時的死角には入らない。
1393      // これより前で reveal を同期的に呼ぶ処理を追加すると ReferenceError になる点に注意。
1394      observer.unobserve(el);
1395    }
1396
1397    const observer = new IntersectionObserver(
1398      function (entries) {
1399        entries.forEach(function (entry) {
1400          if (!entry.isIntersecting) return;
1401          reveal(entry.target, isFirstCallback);
1402        });
1403        isFirstCallback = false;
1404      },
1405      // セクション上端が画面下端から 10% 入った時点で再生する。
1406      { threshold: 0, rootMargin: "0px 0px -10% 0px" }
1407    );
1408
1409    targets.forEach(function (el) {
1410      observer.observe(el);
1411    });
1412
1413    // 上の rootMargin は画面下端を 10% 詰めているため、ページ最下部まで来ても
1414    // その線を越えられない末尾セクションが残りうる。最下部に到達したら取りこぼしを表示する。
1415    // スクロールが発生しない短いページも初回評価でここに入る。
1416    function revealRemaining(instant) {
1417      const remaining = document.querySelectorAll("[data-scroll-in]:not(.is-visible)");
1418      remaining.forEach(function (el) {
1419        reveal(el, instant);
1420      });
1421    }
1422
1423    // scroll / resize から呼ばれるときは第1引数に Event が入るため、厳密比較で初回だけを instant にする。
1424    // 初回はこの関数が IntersectionObserver の初回コールバック(非同期)より先に同期実行されるので、
1425    // ここを instant にしないと、スクロールが発生しない短いページで読み込み直後にフェードが再生される。
1426    function checkBottomReached(instant) {
1427      const scrolled = window.scrollY || window.pageYOffset || 0;
1428      if (window.innerHeight + scrolled >= root.scrollHeight - 2) revealRemaining(instant === true);
1429
1430      // 出し切ったら監視をやめる
1431      if (!document.querySelector("[data-scroll-in]:not(.is-visible)")) {
1432        window.removeEventListener("scroll", checkBottomReached);
1433        window.removeEventListener("resize", checkBottomReached);
1434      }
1435    }
1436
1437    window.addEventListener("scroll", checkBottomReached, { passive: true });
1438    window.addEventListener("resize", checkBottomReached, { passive: true });
1439    checkBottomReached(true);
1440  }
1441
1442  // ---------------------------------------------------------------------------
1443  // ② 画像の遅延読み込みフェード
1444  // ---------------------------------------------------------------------------
1445  function initImageFade() {
1446    // 門番クラスが無い = アニメーション「なし」。CSS 側で透明になっていないので何もしない。
1447    // 遅延読み込み自体は loading="lazy" 任せなので、ここを抜けても効いたままになる。
1448    if (!root.classList.contains("img-fade-enabled")) return;
1449
1450    // 実行時点の DOM を1回だけ走査する。これ以降に動的挿入された img に data-img-fade を
1451    // 付けると、is-loaded が付かず永久に透明になる点に注意(商品詳細のオプション変更で
1452    // 再生成されるサムネイルは、あえて属性を付けずに即時表示させている)。
1453    const images = document.querySelectorAll("img[data-img-fade]");
1454
1455    images.forEach(function (img) {
1456      // キャッシュ済みなどで既に読み終わっている場合は load が飛ばないため、先に判定する。
1457      if (img.complete && img.naturalWidth > 0) {
1458        img.classList.add("is-loaded");
1459        return;
1460      }
1461      img.addEventListener(
1462        "load",
1463        function () {
1464          img.classList.add("is-loaded");
1465        },
1466        { once: true }
1467      );
1468      // 失敗時は is-loaded を付けない。プレースホルダの単色が残り、壊れた表示にならない。
1469    });
1470  }
1471
1472  // スクロールインは DOMContentLoaded を待たずに初期化する。アセットはセクションより後ろに
1473  // 展開されるため対象要素は既に存在しており、待つと head の同期スクリプト(CDN)が詰まった間
1474  // 本文が opacity: 0 のまま真っ白になる。
1475  // 初期化に失敗しても、隠したままにだけはしない。
1476  try {
1477    initScrollIn();
1478  } catch (e) {
1479    disableScrollIn();
1480  }
1481
1482  try {
1483    initImageFade();
1484  } catch (e) {
1485    root.classList.remove("img-fade-enabled");
1486  }
1487})();
1488
1489      document.addEventListener('DOMContentLoaded', () => {
1490  const target = document.querySelectorAll('.common-item-swiper');
1491  if (target.length > 0) {
1492    target.forEach((el) => {
1493      const slidesPerViewDesktop = Number(el.dataset.slidesPerView) || 3;
1494      new Swiper(el, {
1495        slidesPerView: 1.5,
1496        spaceBetween: 10,
1497        loop: false,
1498        mousewheel: {
1499          forceToAxis: true,
1500        },
1501        pagination: {
1502          el: el.querySelector('.swiper-pagination'),
1503          type: 'progressbar',
1504        },
1505        navigation: {
1506          nextEl: el.querySelector('.swiper-button-next'),
1507          prevEl: el.querySelector('.swiper-button-prev'),
1508        },
1509        breakpoints: {
1510          768: {
1511            slidesPerView: slidesPerViewDesktop,
1512            spaceBetween: 12,
1513          },
1514        },
1515      });
1516    });
1517  }
1518
1519  const calendarTarget = document.querySelector('.calendar-swiper-container');
1520  if (calendarTarget) {
1521    new Swiper('.calendar-swiper-container', {
1522      slidesPerView: 1,
1523      centeredSlides: true,
1524      autoHeight: true,
1525      navigation: {
1526        nextEl: '.calendar-swiper-button-next',
1527        prevEl: '.calendar-swiper-button-prev',
1528      },
1529    });
1530  }
1531
1532  // スクロールインはテーマ設定「アニメーション」に連動するセクション単位(scroll-effect.js)に
1533  // 一本化した。かつてここにあった .observe-item を要素単位でフェードさせる処理は、
1534  // どの設定でも再生しないため削除している。
1535  //   なし      : スクロールインを行わない
1536  //   弱 / 標準 : セクション単位で1回だけ再生する(要素単位と二重に再生させない)
1537  // .observe-item クラスは各セクションの markup に残っているが、参照する処理は無く無効。
1538});
1539
1540    </script>
1540
1541    <!-- /nocode:module:javascript -->
1542
1543
1544    <div
1545      x-data="
1546        {
1547          open: false,
1548          isError: false,
1549          message: '',
1550          redirectUrl: '',
1551          previousActiveElement: null,
1552          show(detail) {
1553            this.isError = !!(detail && detail.isError);
1554            this.redirectUrl = (detail && detail.redirectUrl) || '';
1555            const nextMessage = (detail && detail.message)
1556              ? detail.message
1557              : (this.isError ? 'カートに追加できませんでした' : '商品が追加されました');
1558            // 同一メッセージを連続表示しても DOM 変化が起きるよう、一度空文字にしてから次 tick で再設定する
1559            this.message = '';
1560            this.previousActiveElement = document.activeElement;
1561            this.open = true;
1562            this.$nextTick(() => {
1563              this.message = nextMessage;
1564              if (this.$refs.closeButton) this.$refs.closeButton.focus();
1565            });
1566          },
1567          // エラー時に商品詳細URLが渡されていれば、その商品ページへ遷移する(オプション選択等のため)
1568          confirm() {
1569            if (this.redirectUrl) {
1570              window.location.href = this.redirectUrl;
1571              return;
1572            }
1573            this.close();
1574          },
1575          close() {
1576            this.open = false;
1577            this.$nextTick(() => {
1578              if (this.previousActiveElement && this.previousActiveElement.focus) {
1579                this.previousActiveElement.focus();
1580              }
1581            });
1582          }
1583        }
1584      "
1585      x-init="window.addEventListener('makeshop:cart-entry', (e) => show(e.detail))"
1586      x-show="open"
1587      x-transition:enter="transition ease-out duration-200"
1588      x-transition:enter-start="opacity-0"
1589      x-transition:enter-end="opacity-100"
1590      x-transition:leave="transition ease-in duration-150"
1591      x-transition:leave-start="opacity-100"
1592      x-transition:leave-end="opacity-0"
1593      class="fixed inset-0 z-[100] flex items-center justify-center px-4 py-6"
1594      @keydown.escape.window="open && close()"
1595      x-cloak
1596    >
1597      <div class="absolute inset-0 bg-black/40" aria-hidden="true" @click="close()"></div>
1598      <div
1599        class="relative w-full max-w-[420px] bg-white text-[#333] theme-rounded shadow-2xl px-6 py-7 text-center"
1600        :role="isError ? 'alertdialog' : 'dialog'"
1601        aria-modal="true"
1602        aria-labelledby="cart-entry-modal-title"
1603        aria-describedby="cart-entry-modal-description"
1604      >
1605        <button
1606          type="button"
1607          x-ref="closeButton"
1608          @click="close()"
1609          class="absolute right-4 top-4 flex h-8 w-8 items-center justify-center rounded-full text-[#333]/70 transition-colors hover:bg-black/5 hover:text-[#333] focus:outline-none focus:ring-2 focus:ring-black/50"
1610        >
1611          <span class="sr-only">閉じる</span>
1612          <span aria-hidden="true" class="text-xl leading-none">&times;</span>
1613        </button>
1614        <div
1615          class="mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full text-2xl"
1616          :class="isError ? 'bg-red-50 text-red-500' : 'bg-green-50 text-green-600'"
1617          aria-hidden="true"
1618        >
1619          <i class="fi" :class="isError ? 'fi-rr-cross-circle' : 'fi-rr-check-circle'"></i>
1620        </div>
1621        <h2 id="cart-entry-modal-title" class="text-lg font-bold tracking-[0.05em]" x-text="message"></h2>
1622        <p
1623          id="cart-entry-modal-description"
1624          class="mt-3 text-sm leading-6 text-[#333]/80"
1625          x-text="isError ? (redirectUrl ? 'オプションの選択などが必要な商品です。商品ページで内容をご確認ください。' : '内容をご確認のうえ、もう一度お試しください。') : 'カートに商品が追加されました。内容を確認するか、購入手続きへお進みください。'"
1626        ></p>
1627        <div class="mt-6 grid gap-3 sm:grid-cols-2" x-show="!isError">
1628          <a
1629            href="/view/cart"
1630            class="theme-button-normal theme-rounded flex h-11 items-center justify-center px-4 text-sm font-bold transition-opacity hover:opacity-80"
1631          >
1632            カートを見る
1633          </a>
1634          <a
1635            href="#makeshop-common-order-url"
1636            class="theme-button-cart theme-rounded flex h-11 items-center justify-center px-4 text-sm font-bold transition-opacity hover:opacity-80"
1637          >
1638            ご購入手続きへ進む
1639          </a>
1640        </div>
1641        <div class="mt-6" x-show="isError && redirectUrl">
1642          <button
1643            type="button"
1644            @click="confirm()"
1645            class="theme-button-cart theme-rounded flex h-11 w-full items-center justify-center px-4 text-sm font-bold transition-opacity hover:opacity-80"
1646          >
1647            商品ページへ進む
1648          </button>
1649        </div>
1650        <div class="mt-4" x-show="!(isError && redirectUrl)">
1651          <button
1652            type="button"
1653            @click="confirm()"
1654            class="inline-flex h-10 items-center justify-center px-5 text-sm text-[#333]/80 transition-colors hover:text-[#333] focus:outline-none focus:ring-2 focus:ring-black/50"
1655            x-text="isError ? 'OK' : '買い物を続ける'"
1656          ></button>
1657        </div>
1658      </div>
1659    </div>
1660
1661    
1661<script src="/view/asset/user-99999-1-2-d41d8cd98f00b204e9800998ecf8427e.js"></script>
1661
1662
1663        <form name="ssl_login_form" method="post" action="https://www.byodoin.com/ssl/slogin/" target="_top" style="margin:0;padding:0;">
1664        <input type="hidden" name="db" value="byodoin">
1665        <input type="hidden" name="type" value="">
1666        <input type="hidden" name="opt" value="">
1667        <input type="hidden" name="ssl_login_return_url" value="%2Findex.html">
1668        <input type="hidden" name="user_id" value="">
1669        <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1670    </form>
1671
1672    
1672<script language="JavaScript">
1673    function ssl_login(type, etc, user_id){
1674        var etc = (typeof(etc) != "undefined") ? etc : '';
1675        var user_id = (typeof(user_id) != "undefined") ? user_id : '';
1676
1677        document.ssl_login_form.type.value = type;
1678        document.ssl_login_form.opt.value = etc;
1679        document.ssl_login_form.user_id.value = user_id;
1680        document.ssl_login_form.submit();
1681    }
1682    </script>
1682
1683    <form name="ssl_idinfo_form" style="margin:0;padding:0;" method="post" action="https://www.byodoin.com/ssl/ssl_idinfo/ssl_idinfo.html">
1684        <input type="hidden" name="db" value="byodoin">
1685        <input type="hidden" name="login_id" value="">
1686        <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1687    </form>
1688    
1688<script>
1689    function ssl_idinfo() {
1690        document.ssl_idinfo_form.submit();
1691    }
1692    </script>
1692
1693    <form name="ssl_confirm_form" style="margin:0;padding:0;" method="post" action="https://www.byodoin.com/ssl/ssl_confirm/confirm.html">
1694        <input type="hidden" name="db" value="byodoin">
1695        <input type="hidden" name="login_id" value="">
1696        <input type="hidden" name="type" value="confirm">
1697        <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1698    </form>
1699    
1699<script>
1700    function ssl_confirm(){
1701        document.ssl_confirm_form.submit();
1702    }
1703    </script>
1703
1704    <form name="ssl_point_form" style="margin:0;padding:0;" method="post" action="https://www.byodoin.com/ssl/mypage/point.html">
1705        <input type="hidden" name="db" value="byodoin">
1706        <input type="hidden" name="login_id" value="">
1707        <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1708    </form>
1709    
1709<script>
1710    function ssl_point(){
1711        document.ssl_point_form.submit();
1712    }
1713    </script>
1713
1714    <form name="ssl_favorite_form" style="margin:0;padding:0;" method="post" action="https://www.byodoin.com/ssl/mypage/favorite.html">
1715        <input type="hidden" name="db" value="byodoin">
1716        <input type="hidden" name="login_id" value="">
1717        <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1718    </form>
1719    
1719<script>
1720    function ssl_favorite(){
1721        document.ssl_favorite_form.submit();
1722    }
1723    </script>
1723
1724    <form name="ssl_external_login_form" style="margin:0;padding:0;" method="post" action="https://www.byodoin.com/ssl/mypage/external_login.html">
1725        <input type="hidden" name="db" value="byodoin">
1726        <input type="hidden" name="login_id" value="">
1727        <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1728    </form>
1729    
1729<script>
1730    function ssl_external_login() {
1731        document.ssl_external_login_form.submit();
1732    }
1733    </script>
1733
1734    <form name="ssl_address_book" style="margin:0;padding:0;" method="post" action="https://www.byodoin.com/ssl/mypage/address_book.html">
1735        <input type="hidden" name="db" value="byodoin">
1736        <input type="hidden" name="login_id" value="">
1737        <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1738    </form>
1739    
1739<script>
1740    function ssl_address_book() {
1741        document.ssl_address_book.submit();
1742    }
1743    </script>
1743
1744<div class="makeshop-modal-window" data-remodal-id="makeshop-common-modal">
1745    <button data-remodal-action="close" class="remodal-close"></button>
1746    <p class="error-text"></p>
1747    <button data-remodal-action="confirm" class="remodal-confirm">OK</button>
1748</div>
1749
1750<input type="hidden" id="makeshop-page-common-cart-data"
1751    data-cart-url="/view/cart"
1752    data-cart-entry-url-prefix="#makeshop-common-cart-entry-url:"
1753    data-cart-remove-url-prefix="#makeshop-common-cart-remove-url:"
1754    data-cart-quantity-url-prefix="#makeshop-common-cart-quantity-url:"
1755    data-id-quantity-prefix="makeshop-common-cart-quantity:"
1756>
1757
1758<form id="makeshop-form-common-order" method="post" action="">
1759    <input type="hidden" name="ssl_login_id" value="">
1760    <input type="hidden" name="ssl_tempid" value="c2c5e8b306f9f4a161e974f63c8c06aa">
1761</form>
1762<input type="hidden" id="makeshop-page-common-order-data"
1763    data-order-url="#makeshop-common-order-url"
1764>
1765
1766<input type="hidden" id="makeshop-page-common-favorite-data"
1767    data-favorite-entry-url-prefix="#makeshop-common-favorite-entry-url:"
1768    data-favorite-remove-url-prefix="#makeshop-common-favorite-remove-url:"
1769>
1770
1771<input type="hidden" id="makeshop-page-common-search-data"
1772    data-id-keyword="makeshop-search-keyword"
1773    data-id-name="makeshop-search-name"
1774    data-id-price-low="makeshop-search-price-low"
1775    data-id-price-high="makeshop-search-price-high"
1776    data-id-category="makeshop-search-category"
1777    data-id-original-code="makeshop-search-original-code"
1778    data-search-url="#makeshop-common-search-url"
1779>
1780
1781<form id="makeshop-form-common-contact" method="post" action="https://www.byodoin.com/ssl/contact/">
1782    <input type="hidden" name="admin_id" value="byodoin">
1783    <input type="hidden" name="login_id" value="">
1784    <input type="hidden" name="return_path" value="/">
1785</form>
1786<input type="hidden" id="makeshop-page-common-contact-data"
1787    data-contact-url="#makeshop-common-contact-url"
1788>
1789
1790<input type="hidden" id="makeshop-page-common-slideshow-data"
1791    data-enabled="N"
1792    data-pause="5000"
1793    data-speed="1500"
1794    data-controls="N"
1795    data-captions="Y"
1796    data-mode="horizontal"
1797>
1798
1799
1800<script src="/js/jquery/3.7.1/jquery.min.js" defer></script>
vendor: 1 bytes, line 1800
1800
1801<script src="/js/jqueryplugin/remodal/1.1.1/remodal.min.js" defer></script>
vendor: 1 bytes, line 1801
1801
1802<script src="/view/asset/system-99999-1-2-24bbcddf73da439e84deb1fe53df7470.js" defer></script>
1802
1803<!--4c2540ebc9c4201654d70381669c29d2d989e17238de59-->
1804  </body>
1805</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.