app/template/default/index.twig line 1

Open in your IDE?
  1. {% extends 'default_frame.twig' %}
  2. {% set body_class = 'front_page' %}
  3. {% block stylesheet %}
  4.   <link rel="stylesheet" href="{{ asset('assets/css/home.css') }}">
  5.   <link rel="stylesheet" href="{{ asset('assets/css/news-list.css') }}">
  6.   <link rel="stylesheet" href="{{ asset('assets/css/swiper-bundle.min.css') }}" defer>
  7.   <style>
  8.     .header-section {
  9.         display: none;
  10.     }
  11.     @media (max-width: 1200px) {
  12.         .header-section {
  13.             display: block;
  14.         }
  15.     }
  16.   </style>
  17. {% endblock %}
  18. {% block javascript %}
  19.     <!-- Swiper JS cdn -->
  20.   <script src="{{ asset('assets/js/swiper-bundle.min.js') }}" defer></script>
  21.   <script defer>
  22.   $(document).ready(function() {
  23.     // Product Slider
  24.     const productSwiper = new Swiper('#bannerSliderId', {
  25.       slidesPerView: 3,
  26.       spaceBetween: 16,
  27.       loop: true,
  28.       centeredSlides: false,
  29.       breakpoints: {
  30.         1200: {
  31.           slidesPerView: 3,
  32.           spaceBetween: 16,
  33.         },
  34.         768: {
  35.           slidesPerView: 3,
  36.           spaceBetween: 16,
  37.         },
  38.         0: {
  39.           centeredSlides: true,
  40.           slidesPerView: 1.2,
  41.           spaceBetween: 16,
  42.         }
  43.       },
  44.       pagination: {
  45.         el: '.productSlider-pagination',
  46.         clickable: true,
  47.         bulletClass: 'productSlider-bullet',
  48.         bulletActiveClass: 'productSlider-bullet-active',
  49.       },
  50.       navigation: {
  51.         nextEl: '.productSlider-button-next',
  52.         prevEl: '.productSlider-button-prev',
  53.       },
  54.     });
  55.     const howToUseSwiper = new Swiper('#howToUseSwiperId', {
  56.       slidesPerView: 'auto',
  57.       spaceBetween: 20,
  58.       centeredSlides: false,
  59.       grabCursor: true,
  60.       freeMode: {
  61.         enabled: true,
  62.         sticky: false,
  63.       },
  64.       navigation: {
  65.         nextEl: '.slider-nav-next',
  66.         prevEl: '.slider-nav-prev',
  67.       },
  68.       on: {
  69.         init: function() {
  70.           updateProgressBar(this);
  71.         },
  72.         progress: function(swiper, progress) {
  73.           updateProgressBar(swiper);
  74.         },
  75.         slideChange: function() {
  76.           updateProgressBar(this);
  77.         },
  78.       },
  79.       breakpoints: {
  80.         1200: {
  81.           spaceBetween: 20,
  82.         },
  83.         0: {
  84.           spaceBetween: 12,
  85.         }
  86.       },
  87.     });
  88.     function updateProgressBar(swiper) {
  89.       const progressBar = document.querySelector('.slider-progress-bar');
  90.       if (!progressBar) return;
  91.       // Calculate progress based on scroll position
  92.       // Start from 60% and scale to 100%
  93.       const progress = swiper.progress || 0;
  94.       const percentage = 60 + (progress * 40);
  95.       progressBar.style.width = Math.min(percentage, 100) + '%';
  96.     }
  97.     setTimeout(() => {
  98.         // Banner Slide - Pure CSS animation, no Swiper needed
  99.         // Banner Slide Text - Pure CSS animation, no Swiper needed
  100.         // click spec table top item
  101.         const specTableTopItems = document.querySelectorAll('.spec-table-top-item');
  102.         specTableTopItems.forEach(item => {
  103.         item.addEventListener('click', () => {
  104.             specTableTopItems.forEach(item => {
  105.             item.classList.remove('spec-table-top-item-active');
  106.             });
  107.             item.classList.add('spec-table-top-item-active');
  108.             // show spec table body
  109.             document.querySelectorAll('.spec-table-body').forEach(item => {
  110.             if (item.id !== `spec_${item.dataset.id}`) {
  111.                 item.style.display = 'none';
  112.             }
  113.             });
  114.             document.getElementById(`spec_${item.dataset.id}`).style.display = 'flex';
  115.         });
  116.         });
  117.     }, 0);
  118. });
  119.   </script>
  120. {% endblock %}
  121. {% block main %}
  122. {% set totalQuantity = get_carts_total_quantity() %}
  123.   <!-- Banner Section -->
  124.   <div class="banner">
  125.     {# banner slide image #}
  126.     <div class="banner-slide-swiper-wrapper">
  127.       <div class="banner-slide-container" id="bannerSlideContainerId">
  128.         <div class="banner-slide-track">
  129.           <div class="banner-slide-item">
  130.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_long.webp') }}" alt="Banner Slide 1" >
  131.           </div>
  132.           <div class="banner-slide-item">
  133.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_long.webp') }}" alt="Banner Slide 2" >
  134.           </div>
  135.           <div class="banner-slide-item">
  136.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_long.webp') }}" alt="Banner Slide 3" >
  137.           </div>
  138.           {# Duplicate for seamless loop #}
  139.           <div class="banner-slide-item">
  140.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_long.webp') }}" alt="Banner Slide 1" >
  141.           </div>
  142.           <div class="banner-slide-item">
  143.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_long.webp') }}" alt="Banner Slide 2" >
  144.           </div>
  145.           <div class="banner-slide-item">
  146.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_long.webp') }}" alt="Banner Slide 3" >
  147.           </div>
  148.         </div>
  149.       </div>
  150.     </div>
  151.     {# banner slide text #}
  152.     <div class="banner-slide-swiper-wrapper banner-slide-text-swiper-text">
  153.       <div class="banner-slide-container" id="bannerSlideTextContainerId">
  154.         <div class="banner-slide-track banner-slide-track-reverse">
  155.           <div class="banner-slide-item">
  156.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_bottom_long.png') }}" alt="Banner Slide 1" >
  157.           </div>
  158.           <div class="banner-slide-item">
  159.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_bottom_long.png') }}" alt="Banner Slide 2" >
  160.           </div>
  161.           <div class="banner-slide-item">
  162.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_bottom_long.png') }}" alt="Banner Slide 3" >
  163.           </div>
  164.           {# Duplicate for seamless loop #}
  165.           <div class="banner-slide-item">
  166.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_bottom_long.png') }}" alt="Banner Slide 1" >
  167.           </div>
  168.           <div class="banner-slide-item">
  169.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_bottom_long.png') }}" alt="Banner Slide 2" >
  170.           </div>
  171.           <div class="banner-slide-item">
  172.             <img class="banner-slide-image" src="{{ asset('assets/img/default/banner/full_bg_bottom_long.png') }}" alt="Banner Slide 3" >
  173.           </div>
  174.         </div>
  175.       </div>
  176.     </div>
  177.     <!-- Decorative Text Left -->
  178.     <div class="banner__text-left">
  179.     </div>
  180.     <div class="container-desktop relative">
  181.       <!-- Logo Header -->
  182.       <div class="banner__logo">
  183.           <img src="{{ asset('assets/img/default/icons/logo.png') }}" alt="Logo">
  184.       </div>
  185.       <!-- Navigation Menu -->
  186.       <nav class="banner__nav">
  187.         {% if is_granted('ROLE_USER') %}
  188.           <a href="{{ url('mypage') }}" class="nav__item text-black">
  189.             <img src="{{ asset('assets/img/default/icons/icon-user.svg') }}" alt="User" class="nav__icon">
  190.             <span>マイページ</span>
  191.           </a>
  192.           <a href="{{ url('logout') }}" class="nav__item text-black">
  193.             <img src="{{ asset('assets/img/default/icons/icon-logout.svg') }}" alt="Logout" class="nav__icon">
  194.             <span>ログアウト</span>
  195.           </a>
  196.         {% else %}
  197.             <a href="{{ url('entry') }}" class="nav__item text-black">
  198.                 <img src="{{ asset('assets/img/default/icons/icon-edit.svg') }}" alt="Register" class="nav__icon">
  199.                 <span>会員登録</span>
  200.             </a>
  201.             <a href="{{ url('mypage_login') }}" class="nav__item text-black">
  202.                 <img src="{{ asset('assets/img/default/icons/icon-lock.svg') }}" alt="Login" class="nav__icon">
  203.                 <span>ログイン</span>
  204.             </a>
  205.         {% endif %}
  206.         <a href="{{ url('product_list') }}" class="nav__item nav__item--search text-black">
  207.           <img src="{{ asset('assets/img/default/icons/icon-search.svg') }}" alt="Search" class="nav__icon">
  208.           <span>商品を探す</span>
  209.         </a>
  210.         <a href="{{ url('cart') }}" class="nav__item text-black relative">
  211.           {% if totalQuantity > 0 %}
  212.             <span class="nav__item-badge">{{ totalQuantity|number_format }}</span>
  213.           {% endif %}
  214.           <img src="{{ asset('assets/img/default/icons/icon-cart.svg') }}" alt="Cart" class="nav__icon">
  215.           <span>カート</span>
  216.         </a>
  217.         <a href="{{ url('contact') }}" class="nav__item text-black">
  218.           <img src="{{ asset('assets/img/default/icons/icon-email.svg') }}" alt="Contact" class="nav__icon">
  219.           <span>お問い合わせ</span>
  220.         </a>
  221.         <a href="javascript:void(0);" onclick="linkToMypage()" class="nav__item nav__item--primary">
  222.           <img src="{{ asset('assets/img/default/icons/icon-charger.svg') }}" alt="Charge" class="nav__icon">
  223.           <span>ギガをチャージ</span>
  224.         </a>
  225.       </nav>
  226.     </div>
  227.     <!-- Decorative Text Right -->
  228.     <div class="banner__text-right">
  229.     </div>
  230.   </div>
  231.   <!-- slider section -->
  232.   <div class="slider">
  233.     <div class="swiper productSlider" id="bannerSliderId">
  234.       <div class="swiper-wrapper">
  235.         {% if banners|length > 0 %}
  236.           {% for Banner in banners %}
  237.             <div class="swiper-slide">
  238.               <div class="slider__card">
  239.                 <a onclick="if ('{{ Banner.linkUrl }}') { window.open('{{ Banner.linkUrl }}', '_blank') }">
  240.                   <div class="slider__card-image">
  241.                     <img src="{{ asset(Banner.imagePath, 'save_image') }}" alt="{{ Banner.title }}">
  242.                   </div>
  243.                 </a>
  244.               </div>
  245.             </div>
  246.           {% endfor %}
  247.         {% endif %}
  248.       </div>
  249.       <!-- Pagination dots -->
  250.       <div class="swiper-pagination productSlider-pagination"></div>
  251.       <!-- Navigation buttons -->
  252.       <div class="productSlider-navigation">
  253.         <button class="productSlider-button productSlider-button-prev">
  254.           <img src="{{ asset('assets/img/default/icons/icon-arrow-left-nav.svg') }}" alt="Previous">
  255.         </button>
  256.         <button class="productSlider-button productSlider-button-next">
  257.           <img src="{{ asset('assets/img/default/icons/icon-arrow-right-nav.svg') }}" alt="Next">
  258.         </button>
  259.       </div>
  260.     </div>
  261.   </div>
  262.   <!-- section 1 -->
  263.   <div class="section-1">
  264.     <div class="top-image-mobile">
  265.       <img src="{{ asset('assets/img/default/banner/right_banner.png') }}" alt="section-1" loading="lazy">
  266.     </div>
  267.     <div class="section-1-wrapper container-1200">
  268.       <div class="left_content">
  269.           <img class="left_content_image" src="{{ asset('assets/img/default/banner/top_banner.png') }}" alt="section-1" loading="lazy">
  270.           <div class="left_content_text container-desktop">
  271.             <p class="mb-8">CHEETAH WiFiとは契約、返却や月額料金なし、必要な時に必要な分ギガを買い切りで追加<br>チャージするだけですぐに利用できるポケットWiFiです。</p>
  272.             <p>追加できるギガは10GB・30GB・50GB・100GB、追加から365日間の有効期間があります。docomo・au・Softbankの3大キャリアはもちろん、主要な136カ国に対応しています。</p>
  273.           </div>
  274.           <div class="left_content_text container-mobile">
  275.             <p class="mb-8">CHEETAH WiFiとは契約、返却や月額料金なし、必要な時に必要な分ギガを買い切りで追加チャージするだけですぐに利用できるポケットWiFiです。</p>
  276.             <p>追加できるギガは10GB・30GB・50GB・100GB、追加から365日間の有効期間があります。docomo・au・Softbankの3大キャリアはもちろん、主要な136カ国に対応しています。</p>
  277.           </div>
  278.         </div>
  279.       <div class="right_content">
  280.         <img class="right_content_image" src="{{ asset('assets/img/default/banner/right_banner.png') }}" alt="section-1" loading="lazy">
  281.       </div>
  282.     </div>
  283.     <div class="curved-background"></div>
  284.   </div>
  285.   <!-- ranking section -->
  286.   <div class="ranking-section">
  287.     <div class="container-1200">
  288.     <div class="title-base-header">
  289.       <div class="title-base-subtitle">
  290.         <img src="{{ asset('assets/img/default/icons/icon-ranking.svg') }}" alt="Ranking" class="title-base-icon" loading="lazy">
  291.         <span>人気ランキング</span>
  292.       </div>
  293.       <h2 class="title-base-title">RANKING</h2>
  294.     </div>
  295.     {% if top_ranking_products|length > 0 %}
  296.       {% set firstProduct = top_ranking_products[0] %}
  297.       {% set otherProducts = top_ranking_products|slice(1, 4) %}
  298.       <!-- Main Ranking Item (No.1) -->
  299.       <div class="ranking-main">
  300.         <div class="ranking-card ranking-card--large">
  301.           <a href="{{ url('product_detail', {'id': firstProduct.id}) }}">
  302.             <div class="ranking-card__image">
  303.               <img src="{{ asset(firstProduct.main_list_image|no_image_product, 'save_image') }}" alt="{{ firstProduct.name }}" loading="lazy">
  304.             </div>
  305.           </a>
  306.           <div class="ranking-card__badge">No.1</div>
  307.           <div class="ranking-card__favorite">
  308.             <img src="{{ asset('assets/img/default/icons/icon-heart.svg') }}" alt="Favorite" loading="lazy">
  309.           </div>
  310.         </div>
  311.         <div class="ranking-info">
  312.           <h3 class="ranking-info__title">{{ firstProduct.name }}</h3>
  313.           <div class="ranking-info__price">
  314.             <span class="price-symbol">¥</span>
  315.             <span class="price-amount">
  316.               {% if firstProduct.hasProductClass %}
  317.                 {% if firstProduct.getPrice02Min == firstProduct.getPrice02Max %}
  318.                   {{ firstProduct.getPrice02IncTaxMin|number_format }}
  319.                 {% else %}
  320.                   {{ firstProduct.getPrice02IncTaxMin|number_format }} ~ {{ firstProduct.getPrice02IncTaxMax|number_format }}
  321.                 {% endif %}
  322.               {% else %}
  323.                 {{ firstProduct.getPrice02IncTaxMin|number_format }}
  324.               {% endif %}
  325.             </span>
  326.             <span class="price-tax">(税込)</span>
  327.           </div>
  328.           <!-- View More Button -->
  329.           <div class="ranking-view-more">
  330.             <a href="{{ url('product_detail', {'id': firstProduct.id}) }}" class="btn-primary">
  331.               <span>詳しくみる</span>
  332.               <img src="{{ asset('assets/img/default/icons/icon-arrow-right.svg') }}" alt="Arrow" class="btn-arrow" loading="lazy">
  333.             </a>
  334.           </div>
  335.         </div>
  336.       </div>
  337.       <!-- Divider Line -->
  338.       <div class="ranking-divider"></div>
  339.       <!-- Other Ranking Items (No.2 - No.5) -->
  340.       <div class="ranking-grid">
  341.         {% for Product in otherProducts %}
  342.           <div class="ranking-item">
  343.             <div class="ranking-card ranking-card--small">
  344.               <a href="{{ url('product_detail', {'id': Product.id}) }}">
  345.                 <div class="ranking-card__image">
  346.                   <img src="{{ asset(Product.main_list_image|no_image_product, 'save_image') }}" alt="{{ Product.name }}" loading="lazy">
  347.                 </div>
  348.               </a>
  349.               <div class="ranking-card__badge">No.{{ loop.index + 1 }}</div>
  350.               <div class="ranking-card__favorite">
  351.                 <img src="{{ asset('assets/img/default/icons/icon-heart.svg') }}" alt="Favorite" loading="lazy">
  352.               </div>
  353.             </div>
  354.             <div class="ranking-item__info">
  355.               <a href="{{ url('product_detail', {'id': Product.id}) }}">
  356.                 <h4 class="ranking-item__title">{{ Product.name }}</h4>
  357.               </a>
  358.               <div class="ranking-item__price">
  359.                 <span class="price-symbol">¥</span>
  360.                 <span class="price-amount">
  361.                   {% if Product.hasProductClass %}
  362.                     {% if Product.getPrice02Min == Product.getPrice02Max %}
  363.                       {{ Product.getPrice02IncTaxMin|number_format }}
  364.                     {% else %}
  365.                       {{ Product.getPrice02IncTaxMin|number_format }} ~ {{ Product.getPrice02IncTaxMax|number_format }}
  366.                     {% endif %}
  367.                   {% else %}
  368.                     {{ Product.getPrice02IncTaxMin|number_format }}
  369.                   {% endif %}
  370.                 </span>
  371.                 <span class="price-tax">(税込)</span>
  372.               </div>
  373.             </div>
  374.           </div>
  375.         {% endfor %}
  376.       </div>
  377.     {% else %}
  378.       <!-- Fallback nếu không có sản phẩm ranking -->
  379.     {% endif %}
  380.   </div>
  381.   </div>
  382.   <!-- banner 2 -->
  383.   <div class="banner-2">
  384.   </div>
  385.   <!-- news -->
  386.   <div class="news-section">
  387.     <div class="container-1200">
  388.       <div class="news-header">
  389.         <div class="news-title-wrapper">
  390.           <div class="title-base-subtitle" style="margin-top: 16px;">
  391.             <img src="{{ asset('assets/img/default/icons/icon-news.svg') }}" alt="News" class="title-base-icon" loading="lazy">
  392.             <span>お知らせ</span>
  393.           </div>
  394.           <h2 class="title-base-title news-title-desktop">NEWS</h2>
  395.           <a class="btn-primary" href="{{ url('news_list') }}">
  396.             <span>お知らせ一覧をみる</span>
  397.             <img src="{{ asset('assets/img/default/icons/icon-arrow-right-black.svg') }}" alt="Arrow" class="btn-arrow-black" loading="lazy">
  398.           </a>
  399.         </div>
  400.         <div class="news-list-wrapper pt-0" id="news-list-id">
  401.             {% set NewsList = repository('Eccube\\Entity\\News').getList()|slice(0, 5) %}
  402.             <div class="news-list">
  403.             {% for News in NewsList %}
  404.                 <a href="{{ url('news_detail', {id: News.id}) }}" class="news-item">
  405.                   <div class="news-date container-desktop">{{ News.publishDate|date('Y.m.d') }}</div>
  406.                   <div class="news-title container-desktop text-black">
  407.                     <span class="text-black">{{ News.title }}</span>
  408.                   </div>
  409.                   <div class="news-wrapper-mobile container-mobile">
  410.                     <div class="news-date news-date-mobile">{{ News.publishDate|date('Y.m.d') }}</div>
  411.                     <div class="news-title news-title-mobile text-black">
  412.                       <span class="text-black">{{ News.title }}</span>
  413.                     </div>
  414.                   </div>
  415.                   <div class="news-arrow">
  416.                     <img src="{{ asset('assets/img/default/icons/icon-arrow-gray.svg') }}" alt="Arrow">
  417.                   </div>
  418.                 </a>
  419.             {% else %}
  420.                 <p class="no-news">お知らせはありません。</p>
  421.             {% endfor %}
  422.             </div>
  423.         </div>
  424.       </div>
  425.     </div>
  426.   </div>
  427.   <!-- feature section -->
  428.   <div class="feature-section">
  429.     <div class="container-1200">
  430.       <div class="feature-header mt-120 mb-40">
  431.         <div class="title-base-subtitle">
  432.           <img src="{{ asset('assets/img/default/icons/icon-features.svg') }}" alt="Feature" class="title-base-icon" loading="lazy">
  433.           <span>サービスの特徴</span>
  434.         </div>
  435.         <h2 class="title-base-title">FEATURES</h2>
  436.       </div>
  437.     </div>
  438.     <div class="container-1200 container-1200-desktop">
  439.       <div class="feature-grid">
  440.       <!-- Feature Card 1 -->
  441.       <div class="feature-card">
  442.         <div class="feature-card__icon">
  443.           <img src="{{ asset('assets/img/default/icons/icon-yen.svg') }}" alt="Yen" loading="lazy">
  444.         </div>
  445.         <div class="feature-card__content">
  446.           <div class="feature-card__badge">月額費用なし</div>
  447.           <p class="feature-card__description">必要な時だけチャージして使用可能</p>
  448.         </div>
  449.       </div>
  450.       <!-- Feature Card 2 -->
  451.       <div class="feature-card">
  452.         <div class="feature-card__icon">
  453.           <img src="{{ asset('assets/img/default/icons/icon-clock.svg') }}" alt="Clock" loading="lazy">
  454.         </div>
  455.         <div class="feature-card__content">
  456.           <div class="feature-card__badge">即時チャージ対応</div>
  457.           <p class="feature-card__description">マイページから24時間いつでも即チャージ</p>
  458.         </div>
  459.       </div>
  460.       <!-- Feature Card 3 -->
  461.       <div class="feature-card">
  462.         <div class="feature-card__icon">
  463.           <img src="{{ asset('assets/img/default/icons/icon-easy.svg') }}" alt="Easy" loading="lazy">
  464.         </div>
  465.         <div class="feature-card__content">
  466.           <div class="feature-card__badge">簡単すぐ使える</div>
  467.           <p class="feature-card__description">面倒な手続き不要、届いたらすぐ利用可能</p>
  468.         </div>
  469.       </div>
  470.       <!-- Feature Card 4 -->
  471.       <div class="feature-card">
  472.         <div class="feature-card__icon">
  473.           <img src="{{ asset('assets/img/default/icons/icon-world.svg') }}" alt="World" loading="lazy">
  474.         </div>
  475.         <div class="feature-card__content">
  476.           <div class="feature-card__badge">世界130カ国対応</div>
  477.           <p class="feature-card__description">海外でもそのまま使える</p>
  478.         </div>
  479.       </div>
  480.       <!-- Star Icon -->
  481.       <div class="feature-star">
  482.         <img src="{{ asset('assets/img/default/icons/icon-star.svg') }}" alt="Star" loading="lazy">
  483.       </div>
  484.       </div>
  485.     </div>
  486.   </div>
  487.   <!-- how to use section -->
  488.   <div class="how-to-use-section">
  489.     <div class="container-1200">
  490.       <div class="how-to-use-wrapper mt-120 mb-40">
  491.         <img class="how-to-use-header-image" src="{{ asset('assets/img/default/banner/how-to-use-header.png') }}" alt="how-to-use-header">
  492.         <div class="how-to-use-header mr-40">
  493.           <div class="title-base-subtitle">
  494.             <img src="{{ asset('assets/img/default/icons/icon-how-to-use.svg') }}" alt="How to Use" class="title-base-icon">
  495.             <span>チャージ方法</span>
  496.           </div>
  497.           <h2 class="title-base-title m-0">HOW TO USE</h2>
  498.         </div>
  499.         <a href="{{ url('users_guide') }}" class="btn-primary">
  500.           <span>ご利用ガイドをみる</span>
  501.           <img src="{{ asset('assets/img/default/icons/icon-arrow-right-black.svg') }}" alt="Arrow" class="btn-arrow-black">
  502.         </a>
  503.       </div>
  504.     </div>
  505.     <div class="how-to-use-slider container-1200">
  506.       <div class="swiper howToUseSwiper" id="howToUseSwiperId">
  507.         <div class="swiper-wrapper">
  508.           <!-- Slide 1 -->
  509.           <div class="swiper-slide">
  510.             <div class="step-card">
  511.               <div class="step-card__header">
  512.                 <div class="step-card__badge">STEP01</div>
  513.                 <h3 class="step-card__title">届いたその日から、すぐに使える</h3>
  514.               </div>
  515.               <div class="step-card__image">
  516.                 <img src="{{ asset('assets/img/default/banner/slider-1.png') }}" alt="Step 1">
  517.               </div>
  518.               <p class="step-card__description">初回購入時にデータがセットになっているため、端末が届いたら電源を入れるだけですぐにインターネットをご利用いただけます。面倒な開通手続きは一切ありません。</p>
  519.             </div>
  520.           </div>
  521.           <!-- Slide 2 -->
  522.           <div class="swiper-slide">
  523.             <div class="step-card">
  524.               <div class="step-card__header">
  525.                 <div class="step-card__badge">STEP02</div>
  526.                 <h3 class="step-card__title">データ残量はいつでも確認</h3>
  527.               </div>
  528.               <div class="step-card__image">
  529.                 <img src="{{ asset('assets/img/default/banner/slider-2.png') }}" alt="Step 2">
  530.               </div>
  531.               <p class="step-card__description">「あとどれくらい使えるかな?」と思ったら、24時間いつでもお客様専用の<a href="{{ url('mypage') }}" class="">マイページ</a>で現在のデータ残量をご確認いただけます。</p>
  532.             </div>
  533.           </div>
  534.           <!-- Slide 3 -->
  535.           <div class="swiper-slide">
  536.             <div class="step-card">
  537.               <div class="step-card__header">
  538.                 <div class="step-card__badge">STEP03</div>
  539.                 <h3 class="step-card__title">オンラインで手軽に追加チャージ</h3>
  540.               </div>
  541.               <div class="step-card__image">
  542.                 <img src="{{ asset('assets/img/default/banner/slider-3.png') }}" alt="Step 3">
  543.               </div>
  544.               <p class="step-card__description">データ残量が少なくなってきたら、<a href="{{ url('mypage') }}" class="">マイページ</a>から簡単に追加データを購入(チャージ)できます。お店へ行く必要もなく、すべてオンラインで完結します。</p>
  545.             </div>
  546.           </div>
  547.           <!-- Slide 4 -->
  548.           <div class="swiper-slide">
  549.             <div class="step-card">
  550.               <div class="step-card__header">
  551.                 <div class="step-card__badge">STEP04</div>
  552.                 <h3 class="step-card__title">購入後、待ち時間なしで即反映</h3>
  553.               </div>
  554.               <div class="step-card__image">
  555.                 <img src="{{ asset('assets/img/default/banner/slider-4.png') }}" alt="Step 4">
  556.               </div>
  557.               <p class="step-card__description">チャージしたデータは、購入手続き完了後すぐに反映されます。急にデータが必要になった時でも、待つことなくインターネットを使い続けられます。</p>
  558.             </div>
  559.           </div>
  560.         </div>
  561.       </div>
  562.       <!-- Navigation and Progress Bar -->
  563.       <div class="slider-controls">
  564.         <!-- Progress Bar -->
  565.         <div class="slider-progress">
  566.           <div class="slider-progress-bar"></div>
  567.         </div>
  568.         <!-- Navigation Buttons -->
  569.         <div class="slider-navigation">
  570.           <button class="slider-nav-btn slider-nav-prev">
  571.             <img src="{{ asset('assets/img/default/icons/icon-arrow-left-nav.svg') }}" alt="Previous">
  572.           </button>
  573.           <button class="slider-nav-btn slider-nav-next">
  574.             <img src="{{ asset('assets/img/default/icons/icon-arrow-right-nav.svg') }}" alt="Next">
  575.           </button>
  576.         </div>
  577.       </div>
  578.     </div>
  579.   </div>
  580.   <!-- my page section -->
  581.   <div class="my-page-section">
  582.     <div class="container-1200">
  583.       <div class="my-page-wrapper mt-120 mb-40">
  584.         <img class="my-page-header-image container-desktop" src="{{ asset('assets/img/default/banner/my-page-header.png') }}" alt="my-page-header" loading="lazy">
  585.         <div class="my-page-header mr-40">
  586.           <div class="title-base-subtitle">
  587.             <img src="{{ asset('assets/img/default/icons/icon-my-page.svg') }}" alt="My Page" class="title-base-icon" loading="lazy">
  588.             <span>マイページ機能について</span>
  589.           </div>
  590.           <h2 class="title-base-title m-0">MY PAGE</h2>
  591.         </div>
  592.         <a href="{{ url('mypage') }}" class="btn-primary">
  593.           <span>マイページをみる</span>
  594.           <img src="{{ asset('assets/img/default/icons/icon-arrow-right-black.svg') }}" alt="Arrow" class="btn-arrow-black" loading="lazy">
  595.         </a>
  596.       </div>
  597.        <div class="my-page-grid">
  598.          <!-- Card 1: ギガのリチャージ -->
  599.          <div class="my-page-card">
  600.            <div class="my-page-card__image">
  601.              <img src="{{ asset('assets/img/default/banner/my-page-1.png') }}" alt="ギガのリチャージ" loading="lazy">
  602.            </div>
  603.            <div class="my-page-card__label">ギガのリチャージ</div>
  604.          </div>
  605.          <!-- Card 2: ギガ使用量、有効期間の確認 -->
  606.          <div class="my-page-card">
  607.            <div class="my-page-card__image">
  608.              <img src="{{ asset('assets/img/default/banner/my-page-2.png') }}" alt="ギガ使用量、有効期間の確認" loading="lazy">
  609.            </div>
  610.            <div class="my-page-card__label">ギガ使用量、有効期間の確認</div>
  611.          </div>
  612.          <!-- Card 3: 購入情報の確認 -->
  613.          <div class="my-page-card">
  614.            <div class="my-page-card__image">
  615.              <img src="{{ asset('assets/img/default/banner/my-page-3.png') }}" alt="購入情報の確認" loading="lazy">
  616.            </div>
  617.            <div class="my-page-card__label">購入情報の確認</div>
  618.          </div>
  619.          <!-- Card 4: サポート -->
  620.          <div class="my-page-card">
  621.            <div class="my-page-card__image">
  622.              <img src="{{ asset('assets/img/default/banner/my-page-4.png') }}" alt="サポート" loading="lazy">
  623.            </div>
  624.            <div class="my-page-card__label">サポート</div>
  625.          </div>
  626.        </div>
  627.     </div>
  628.     <img src="{{ asset('assets/img/default/banner/my-page-header.png') }}" alt="My Page" class="my-page-header-mobile container-mobile" loading="lazy">
  629.   </div>
  630.   <!-- SPECIFICATIONS SECTION -->
  631.   <div class="specifications-section">
  632.     <div class="container-1200">
  633.       <div class="specifications-header mt-120 mb-40">
  634.         <div class="title-base-subtitle">
  635.           <img src="{{ asset('assets/img/default/icons/icon-specifications.svg') }}" alt="Specifications" class="title-base-icon" loading="lazy">
  636.           <span>商品スペック・仕様</span>
  637.         </div>
  638.         <h2 class="title-base-title m-0">SPECIFICATIONS</h2>
  639.       </div>
  640.       <div class="specifications-wrapper">
  641.          <div class="specifications-left">
  642.            <div class="specifications-left-table mb-80">
  643.              <!-- Table Header -->
  644.              <div class="spec-table-header">
  645.                <h3>端末スペック</h3>
  646.              </div>
  647.              <div class="spec-table-top">
  648.                 <div class="spec-table-top-item spec-table-top-item-active" data-id="mr1">
  649.                   <div class="spec-table-top-item-text">MR1</div>
  650.                 </div>
  651.                 <div class="spec-table-top-item" data-id="u20">
  652.                   <div class="spec-table-top-item-text">U20</div>
  653.                 </div>
  654.                 <div class="spec-table-top-item" data-id="u3">
  655.                   <div class="spec-table-top-item-text">U3</div>
  656.                 </div>
  657.              </div>
  658.              <!-- Table Body -->
  659.              <div class="spec-table-body" style="display: flex;" id="spec_mr1">
  660.               {% set specs = [
  661.                 { label: '最大接続数', value: '10台 (推奨5台)' },
  662.                 { label: 'サイズ', value: '125×68×12mm' },
  663.                 { label: '重量', value: '約133g' },
  664.                 { label: 'バッテリー', value: '3000mAh' },
  665.                 { label: '連続通信時間', value: '約13時間' },
  666.                 { label: '最大通信速度', value: '50Mbps/150Mbps' },
  667.                 { label: 'USBポート', value: 'Type-C(充電用)' },
  668.                 { label: 'WCDMA', value: 'バンド 1/2/4/5/8/19' },
  669.                 { label: 'GSM', value: '850/900/1800/1900' },
  670.                 { label: 'Wi-Fi', value: 'IEEE802.11b/g/n' }
  671.               ] %}
  672.                {% for spec in specs %}
  673.                  <div class="spec-table-row{% if spec.isLast is defined and spec.isLast %} spec-table-row--last{% endif %}">
  674.                    <div class="spec-table-label">{{ spec.label }}</div>
  675.                    <div class="spec-table-value">{{ spec.value|raw }}</div>
  676.                  </div>
  677.                {% endfor %}
  678.              </div>
  679.              <div class="spec-table-body" style="display: none;" id="spec_u20">
  680.               {% set specs = [
  681.                 { label: '最大接続数', value: '8台(推奨5台)' },
  682.                 { label: 'サイズ', value: '120×64×12mm' },
  683.                 { label: '重量', value: '約112g' },
  684.                 { label: 'バッテリー', value: '3000mAh' },
  685.                 { label: '連続通信時間', value: '約13時間' },
  686.                 { label: '最大通信速度', value: '50Mbps/150Mbps' },
  687.                 { label: 'USBポート', value: 'Type-C(充電用)' },
  688.                 { label: 'WCDMA', value: 'バンド 1/2/4/5/8/' },
  689.                 { label: 'GSM', value: '850/900/1800/1900' },
  690.                 { label: 'Wi-Fi', value: 'IEEE802.11b/g/n' }
  691.               ] %}
  692.                {% for spec in specs %}
  693.                  <div class="spec-table-row{% if spec.isLast is defined and spec.isLast %} spec-table-row--last{% endif %}">
  694.                    <div class="spec-table-label">{{ spec.label }}</div>
  695.                    <div class="spec-table-value">{{ spec.value|raw }}</div>
  696.                  </div>
  697.                {% endfor %}
  698.              </div>
  699.              <div class="spec-table-body" style="display: none;" id="spec_u3">
  700.               {% set specs = [
  701.                 { label: '最大接続数', value: '10台 (推奨 5台)' },
  702.                 { label: 'サイズ', value: '126×68×12mm' },
  703.                 { label: '重量', value: '約125 g' },
  704.                 { label: 'バッテリー', value: '3000mAh' },
  705.                 { label: '連続通信時間', value: '約12時間' },
  706.                 { label: '最大通信速度', value: '50Mbps/150Mbps' },
  707.                 { label: 'USBポート', value: 'Type-C (充電用)' },
  708.                 { label: 'WCDMA', value: 'バンド 1/2/4/5/6/8/9/19' },
  709.                 { label: 'GSM', value: '850/900/1800/1900' },
  710.                 { label: 'Wi-Fi', value: 'IEEE802.11b/g/n' }
  711.               ] %}
  712.                {% for spec in specs %}
  713.                  <div class="spec-table-row{% if spec.isLast is defined and spec.isLast %} spec-table-row--last{% endif %}">
  714.                    <div class="spec-table-label">{{ spec.label }}</div>
  715.                    <div class="spec-table-value">{{ spec.value|raw }}</div>
  716.                  </div>
  717.                {% endfor %}
  718.              </div>
  719.            </div>
  720.            <div class="specifications-left-image container-desktop-768">
  721.             <img src="{{ asset('assets/img/default/banner/specifi.png') }}" alt="Specifications Left Image" loading="lazy">
  722.            </div>
  723.          </div>
  724.          <div class="specifications-right">
  725.           <div class="specifications-top-image container-mobile-768 container-1200-full-mobile">
  726.             <img src="{{ asset('assets/img/default/banner/specifi_left.png') }}" alt="Specifications Left Image" loading="lazy">
  727.           </div>
  728.            <!-- Product Card 1: MR1 -->
  729.            <div class="product-card">
  730.              <div class="product-card__image">
  731.                <img src="{{ asset('assets/img/default/banner/spec_1.png') }}" alt="MR1" loading="lazy">
  732.                <div class="product-card__label">MR1</div>
  733.              </div>
  734.              <p class="product-card__description">契約不要、月額料金0円の国内外利用可能なクラウドSIM型Wi-Fiルーター3大キャリアに対応し、選べるギガをチャージして利用できます。</p>
  735.            </div>
  736.            <!-- Product Card 2: U20 -->
  737.            <div class="product-card">
  738.              <div class="product-card__image">
  739.                <img src="{{ asset('assets/img/default/banner/spec_2.png') }}" alt="U20" loading="lazy">
  740.                <div class="product-card__label">U20</div>
  741.              </div>
  742.              <p class="product-card__description">MR1に比べ価格が安く、液晶をなくした事で軽量、薄型を実現し、持ち運びが便利になりました。5GB〜100GBからギガを選び、期間は50日、100日、365日から選べます。30日間無制限プランも用意しています。</p>
  743.            </div>
  744.            <!-- Product Card 3: U3 -->
  745.            <div class="product-card">
  746.              <div class="product-card__image">
  747.                <img src="{{ asset('assets/img/default/banner/spec_3.png') }}" alt="U3" loading="lazy">
  748.                <div class="product-card__label">U3</div>
  749.              </div>
  750.              <p class="product-card__description">U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。U3の特徴が入ります。</p>
  751.            </div>
  752.            <div class="specifications-bottom-image container-mobile-768 container-1200-full-mobile">
  753.             <img src="{{ asset('assets/img/default/banner/specifi_right.png') }}" alt="Specifications Right Image" loading="lazy">
  754.           </div>
  755.          </div>
  756.       </div>
  757.     </div>
  758.   </div>
  759.   <div class="text_footer_top">
  760.     <img src="{{ asset('assets/img/default/footer/footer-text-top.png') }}" alt="Footer Text Top" loading="lazy">
  761.   </div>
  762. {% endblock %}