app/template/bynoiezam/Block/new_item.twig line 1

Open in your IDE?
  1. {#
  2. This file is part of EC-CUBE
  3. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  4. http://www.ec-cube.co.jp/
  5. For the full copyright and license information, please view the LICENSE
  6. file that was distributed with this source code.
  7. #}
  8. {% block javascript %}
  9.     <script>
  10.         {% set arrowLeft = asset('assets/icon/slick-arrow-left-white.svg') %}
  11.         {% set arrowRight = asset('assets/icon/slick-arrow-right-white.svg') %}
  12.         $(function() {
  13.             $('.ec-newItemRole__list').slick({
  14.                 slidesToShow: 4,
  15.                 dots: false,
  16.                 arrows: true,
  17.                 autoplay: false,
  18.                 speed: 300,
  19.                 infinite: false,
  20.                 appendArrows: $('.item-arrows'),
  21.                 prevArrow: '<button type="button" class="btn"><img src="{{ arrowLeft }}" alt=""></button>',
  22.                 nextArrow: '<button type="button" class="btn btn-juliet"><img src="{{ arrowRight }}" alt=""></button>',
  23.                 responsive: [{
  24.                     breakpoint: 768,
  25.                     settings: {
  26.                       slidesToShow: 2
  27.                     }
  28.                 }]
  29.             });
  30.             $('.ec-campaignRole__List').slick({
  31.                 slidesToShow: 4,
  32.                 dots: false,
  33.                 arrows: true,
  34.                 autoplay: false,
  35.                 speed: 300,
  36.                 infinite: false,
  37.                 appendArrows: $('.campaign-arrows'),
  38.                 prevArrow: '<button type="button" class="btn"><img src="{{ arrowLeft }}" alt=""></button>',
  39.                 nextArrow: '<button type="button" class="btn btn-juliet"><img src="{{ arrowRight }}" alt=""></button>',
  40.                 responsive: [{
  41.                     breakpoint: 768,
  42.                     settings: {
  43.                       slidesToShow: 2
  44.                     }
  45.                 }]
  46.             });
  47.             $('.ec-rankingRole__List').slick({
  48.                 slidesToShow: 4,
  49.                 dots: false,
  50.                 arrows: true,
  51.                 autoplay: false,
  52.                 speed: 300,
  53.                 infinite: false,
  54.                 appendArrows: $('.ranking-arrows'),
  55.                 prevArrow: '<button type="button" class="btn"><img src="{{ arrowLeft }}" alt=""></button>',
  56.                 nextArrow: '<button type="button" class="btn btn-juliet"><img src="{{ arrowRight }}" alt=""></button>',
  57.                 responsive: [{
  58.                     breakpoint: 768,
  59.                     settings: {
  60.                       slidesToShow: 2
  61.                     }
  62.                 }]
  63.             });
  64.             $(".ec-headerCategoryAreaSp__heading").on("click", function() {
  65.                 $(this).next().slideToggle();
  66.                 if($(this).hasClass('active')) {
  67.                     $(this).find('img').attr('src','{{ asset("assets/icon/side-arrow-right-gray.svg") }}');
  68.                     $(this).removeClass('active');
  69.                 } else {
  70.                     $(this).find('img').attr('src','{{ asset("assets/icon/side-arrow-down-gray.svg") }}');
  71.                     $(this).addClass('active');
  72.                 }
  73.             });
  74.             $(".ec-headerCategoryAreaSp .ec-itemNav__nav a").on("click", function() {
  75.                 if($(this).hasClass('active')) {
  76.                     $(this).find('img').attr('src','{{ asset("assets/icon/side-arrow-right-gray.svg") }}');
  77.                     $(this).removeClass('active');
  78.                 } else {
  79.                     $(this).css({
  80.                         'border':'none'
  81.                     });
  82.                     $(this).find('img').attr('src','{{ asset("assets/icon/side-arrow-down-gray.svg") }}');
  83.                     $(this).addClass('active');
  84.                 }
  85.             });
  86.         });
  87.     </script>
  88. {% endblock javascript %}
  89. {# 2カラムレイアウト: 抽選バナー画像 + ゲーミングPC見積もりシミュレーター #}
  90. <!-- ▼バナー -->
  91. <div class="ec-role">
  92.     <div class="ec-banner ec-banner--two-column">
  93.         <!-- 左バナー: 毎月抽選 -->
  94. <div class="ec-banner__item ec-banner__item--lottery">
  95.     <a href="https://noiezam.com/nzcustomplugin/supergamingpc" class="lottery-banner-link">
  96.         <div class="lottery-banner-stylish">
  97.             <!-- 背景装飾 -->
  98.             <div class="lottery-banner-bg">
  99.                 <div class="lottery-circle lottery-circle1"></div>
  100.                 <div class="lottery-circle lottery-circle2"></div>
  101.                 <div class="lottery-circle lottery-circle3"></div>
  102.             </div>
  103.             
  104.             <!-- 光のライン -->
  105.             <div class="lottery-light-lines">
  106.                 <div class="light-line line1"></div>
  107.                 <div class="light-line line2"></div>
  108.                 <div class="light-line line3"></div>
  109.             </div>
  110.             
  111.             <!-- コンテンツ -->
  112.             <div class="lottery-content">
  113.                 <div class="lottery-badge">
  114.                     <span class="badge-icon">🎯</span>
  115.                     <span class="badge-text">毎月抽選</span>
  116.                 </div>
  117.                 <h2 class="lottery-main-title">
  118.                     赤字覚悟の<br>ゲーミングPC
  119.                 </h2>
  120.                 <div class="lottery-tags">
  121.                     <div class="lottery-tag tag-limited">
  122.                         <span class="tag-icon">⚡</span>
  123.                         台数限定
  124.                     </div>
  125.                     <div class="lottery-tag tag-entry">
  126.                         <span class="tag-icon">👉</span>
  127.                         今すぐエントリー
  128.                     </div>
  129.                 </div>
  130.             </div>
  131.         </div>
  132.     </a>
  133. </div>
  134.         
  135.         <!-- 右バナー: 見積もりシミュレーター -->
  136.         <div class="ec-banner__item ec-banner__item--simulator">
  137.             <a href="https://noiezam.com/estimate/simulator" class="simulator-banner-link">
  138.                 <div class="simulator-banner-compact">
  139.                     <div class="simulator-banner-compact__bg">
  140.                         <div class="circle circle1"></div>
  141.                         <div class="circle circle2"></div>
  142.                     </div>
  143.                     <div class="simulator-banner-compact__content">
  144.                         <h2 class="simulator-banner-compact__title">ゲーミングPC見積もりシミュレーター</h2>
  145.                         <p class="simulator-banner-compact__subtitle">パーツを選んで簡単見積</p>
  146.                         <div class="simulator-banner-compact__icons">
  147.                             <span class="icon">🎮</span>
  148.                             <span class="icon">⚡</span>
  149.                             <span class="icon">💰</span>
  150.                             <span class="icon">✨</span>
  151.                         </div>
  152.                         <div class="simulator-banner-compact__cta">今すぐ始める!</div>
  153.                     </div>
  154.                 </div>
  155.             </a>
  156.         </div>
  157.     </div>
  158. </div>
  159. <!-- ▲バナー -->
  160. <style>
  161. /* ========================================
  162.    画像の超強力鮮明化設定(800px画像用に最適化)
  163. ======================================== */
  164. /* 基本の画像鮮明化 - すべてのコンテンツ画像に適用 */
  165. .ec-contentRole__listItem img {
  166.     /* 最高品質のレンダリング */
  167.     image-rendering: -webkit-optimize-contrast;
  168.     image-rendering: -moz-crisp-edges;
  169.     image-rendering: crisp-edges;
  170.     image-rendering: high-quality;
  171.     
  172.     /* ブラウザのスムージングを無効化 */
  173.     -ms-interpolation-mode: nearest-neighbor;
  174.     
  175.     /* GPU アクセラレーションで鮮明化 */
  176.     backface-visibility: hidden;
  177.     -webkit-backface-visibility: hidden;
  178.     transform: translateZ(0) scale(1.0);
  179.     -webkit-transform: translateZ(0) scale(1.0);
  180.     transform-style: preserve-3d;
  181.     -webkit-transform-style: preserve-3d;
  182.     
  183.     /* アンチエイリアシング最適化 */
  184.     -webkit-font-smoothing: subpixel-antialiased;
  185.     -moz-osx-font-smoothing: grayscale;
  186.     
  187.     /* シャープネス強化フィルター */
  188.     filter: contrast(1.08) saturate(1.05) brightness(1.01);
  189.     -webkit-filter: contrast(1.08) saturate(1.05) brightness(1.01);
  190.     
  191.     /* 最大幅の確保 */
  192.     width: 100%;
  193.     height: auto;
  194.     display: block;
  195.     
  196.     /* サブピクセルレンダリング */
  197.     -webkit-perspective: 1000;
  198.     perspective: 1000;
  199. }
  200. /* Slickスライダー専用の超強力鮮明化 */
  201. .ec-rankingRole__List .ec-contentRole__listItem img,
  202. .ec-newItemRole__list .ec-contentRole__listItem img,
  203. .ec-campaignRole__List .ec-contentRole__listItem img {
  204.     /* さらに強力なシャープネス */
  205.     filter: contrast(1.1) saturate(1.08) brightness(1.02) unsharp-mask(1.5);
  206.     -webkit-filter: contrast(1.1) saturate(1.08) brightness(1.02);
  207.     
  208.     /* 縮小時の最高品質アルゴリズム */
  209.     image-rendering: -webkit-optimize-contrast;
  210.     image-rendering: high-quality;
  211.     
  212.     /* 完全なGPUアクセラレーション */
  213.     will-change: transform;
  214.     transform: translate3d(0, 0, 0) scale(1.0);
  215.     -webkit-transform: translate3d(0, 0, 0) scale(1.0);
  216. }
  217. /* Slickスライド内の画像(アクティブスライド) */
  218. .slick-slide img {
  219.     image-rendering: -webkit-optimize-contrast;
  220.     image-rendering: crisp-edges;
  221.     backface-visibility: hidden;
  222.     transform: translateZ(0);
  223.     filter: contrast(1.08) saturate(1.05);
  224. }
  225. /* アクティブなスライドの画像をさらに鮮明に */
  226. .slick-active img {
  227.     filter: contrast(1.1) saturate(1.08) brightness(1.02);
  228.     image-rendering: high-quality;
  229. }
  230. /* Slickクローンの画像も同様に処理 */
  231. .slick-cloned img {
  232.     image-rendering: -webkit-optimize-contrast;
  233.     backface-visibility: hidden;
  234.     transform: translateZ(0);
  235. }
  236. /* リンク要素内の画像(ホバー時も鮮明に) */
  237. .ec-contentRole__listItem a img {
  238.     transition: transform 0.3s ease, filter 0.3s ease;
  239. }
  240. .ec-contentRole__listItem a:hover img {
  241.     /* ホバー時はさらに鮮明に */
  242.     filter: contrast(1.12) saturate(1.1) brightness(1.03);
  243.     transform: translateZ(0) scale(1.02);
  244. }
  245. /* 高解像度ディスプレイ用の追加設定 */
  246. @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  247.     .ec-contentRole__listItem img {
  248.         /* Retinaディスプレイでさらに鮮明化 */
  249.         filter: contrast(1.12) saturate(1.1) brightness(1.02);
  250.         image-rendering: -webkit-optimize-contrast;
  251.     }
  252. }
  253. /* WebKit/Blink専用の最適化 */
  254. @supports (-webkit-appearance: none) {
  255.     .ec-contentRole__listItem img {
  256.         -webkit-backface-visibility: hidden;
  257.         -webkit-transform: translateZ(0) scale(1.0);
  258.         -webkit-font-smoothing: subpixel-antialiased;
  259.     }
  260. }
  261. /* Firefox専用の最適化 */
  262. @-moz-document url-prefix() {
  263.     .ec-contentRole__listItem img {
  264.         image-rendering: -moz-crisp-edges;
  265.         image-rendering: crisp-edges;
  266.     }
  267. }
  268. /* 画像読み込み完了後の鮮明化 */
  269. .ec-contentRole__listItem img[src] {
  270.     opacity: 1;
  271.     animation: sharpen 0.3s ease-in;
  272. }
  273. @keyframes sharpen {
  274.     0% {
  275.         filter: blur(0.5px);
  276.     }
  277.     100% {
  278.         filter: contrast(1.08) saturate(1.05) brightness(1.01);
  279.     }
  280. }
  281. /* ========================================
  282.    共通レイアウト
  283. ======================================== */
  284. .ec-banner--two-column {
  285.     display: flex;
  286.     gap: 20px;
  287.     justify-content: center;
  288.     align-items: stretch;
  289.     flex-wrap: wrap;
  290. }
  291. .ec-banner__item {
  292.     flex: 1;
  293.     min-width: 320px;
  294.     max-width: 600px;
  295. }
  296. /* ========================================
  297.    左バナー: モダンな抽選バナー
  298. ======================================== */
  299. .lottery-banner-link {
  300.     display: block;
  301.     text-decoration: none;
  302.     height: 100%;
  303. }
  304. .lottery-banner-stylish {
  305.     background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 50%, #0a0a0a 100%);
  306.     border-radius: 15px;
  307.     padding: 25px 30px;
  308.     height: 256px;
  309.     display: flex;
  310.     align-items: center;
  311.     box-shadow: 0 10px 35px rgba(0,0,0,0.5);
  312.     position: relative;
  313.     overflow: hidden;
  314.     transition: transform 0.3s ease, box-shadow 0.3s ease;
  315. }
  316. .lottery-banner-stylish:hover {
  317.     transform: translateY(-5px);
  318.     box-shadow: 0 15px 45px rgba(255,0,100,0.4);
  319. }
  320. /* 背景装飾 */
  321. .lottery-banner-bg {
  322.     position: absolute;
  323.     width: 100%;
  324.     height: 100%;
  325.     top: 0;
  326.     left: 0;
  327.     z-index: 1;
  328. }
  329. .lottery-circle {
  330.     position: absolute;
  331.     border-radius: 50%;
  332.     opacity: 0.15;
  333. }
  334. .lottery-circle1 {
  335.     width: 200px;
  336.     height: 200px;
  337.     background: radial-gradient(circle, rgba(255,0,100,0.2) 0%, transparent 70%);
  338.     top: -80px;
  339.     right: -50px;
  340.     animation: float-lottery 8s ease-in-out infinite;
  341. }
  342. .lottery-circle2 {
  343.     width: 150px;
  344.     height: 150px;
  345.     background: radial-gradient(circle, rgba(255,255,255,0.08) 0%, transparent 70%);
  346.     bottom: -60px;
  347.     left: -40px;
  348.     animation: float-lottery 10s ease-in-out infinite reverse;
  349. }
  350. .lottery-circle3 {
  351.     width: 120px;
  352.     height: 120px;
  353.     background: radial-gradient(circle, rgba(255,0,100,0.15) 0%, transparent 70%);
  354.     top: 50%;
  355.     left: 30%;
  356.     animation: pulse-lottery 6s ease-in-out infinite;
  357. }
  358. @keyframes float-lottery {
  359.     0%, 100% { transform: translate(0, 0) scale(1); }
  360.     50% { transform: translate(20px, -20px) scale(1.1); }
  361. }
  362. @keyframes pulse-lottery {
  363.     0%, 100% { transform: scale(1); opacity: 0.15; }
  364.     50% { transform: scale(1.3); opacity: 0.25; }
  365. }
  366. /* 光のライン */
  367. .lottery-light-lines {
  368.     position: absolute;
  369.     width: 100%;
  370.     height: 100%;
  371.     top: 0;
  372.     left: 0;
  373.     z-index: 1;
  374. }
  375. .light-line {
  376.     position: absolute;
  377.     height: 2px;
  378.     background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.6) 50%, transparent 100%);
  379.     animation: slide-light 3s ease-in-out infinite;
  380. }
  381. .line1 {
  382.     width: 40%;
  383.     top: 20%;
  384.     left: -40%;
  385.     animation-delay: 0s;
  386. }
  387. .line2 {
  388.     width: 50%;
  389.     top: 50%;
  390.     left: -50%;
  391.     animation-delay: 1s;
  392. }
  393. .line3 {
  394.     width: 35%;
  395.     top: 75%;
  396.     left: -35%;
  397.     animation-delay: 2s;
  398. }
  399. @keyframes slide-light {
  400.     0% { left: -50%; opacity: 0; }
  401.     50% { opacity: 1; }
  402.     100% { left: 100%; opacity: 0; }
  403. }
  404. /* コンテンツ */
  405. .lottery-content {
  406.     position: relative;
  407.     z-index: 2;
  408.     width: 100%;
  409.     display: flex;
  410.     flex-direction: column;
  411.     gap: 12px;
  412. }
  413. /* バッジ */
  414. .lottery-badge {
  415.     display: inline-flex;
  416.     align-items: center;
  417.     gap: 6px;
  418.     background: rgba(255,255,255,0.1);
  419.     color: #fff;
  420.     font-size: 1.2em;
  421.     font-weight: 900;
  422.     padding: 6px 20px;
  423.     border-radius: 50px;
  424.     box-shadow: 0 0 0 2px rgba(255,0,100,0.5), 0 6px 25px rgba(0,0,0,0.3);
  425.     border: 2px solid rgba(255,0,100,0.8);
  426.     width: fit-content;
  427.     backdrop-filter: blur(10px);
  428.     animation: glow-badge 2s ease-in-out infinite;
  429. }
  430. @keyframes glow-badge {
  431.     0%, 100% { 
  432.         box-shadow: 0 0 0 2px rgba(255,0,100,0.5), 0 6px 25px rgba(0,0,0,0.3);
  433.         border-color: rgba(255,0,100,0.8);
  434.     }
  435.     50% { 
  436.         box-shadow: 0 0 0 2px rgba(255,0,100,0.8), 0 8px 35px rgba(255,0,100,0.4);
  437.         border-color: rgba(255,0,100,1);
  438.     }
  439. }
  440. .badge-icon {
  441.     font-size: 1.1em;
  442.     animation: rotate-icon 3s ease-in-out infinite;
  443. }
  444. @keyframes rotate-icon {
  445.     0%, 100% { transform: rotate(0deg); }
  446.     50% { transform: rotate(15deg); }
  447. }
  448. /* メインタイトル */
  449. .lottery-main-title {
  450.     font-size: 2.3em;
  451.     font-weight: 900;
  452.     color: #fff;
  453.     text-shadow: 
  454.         3px 3px 0 rgba(0,0,0,0.5),
  455.         0 0 40px rgba(255,0,100,0.5);
  456.     line-height: 1.15;
  457.     letter-spacing: 2px;
  458.     margin: 0;
  459. }
  460. /* タグエリア */
  461. .lottery-tags {
  462.     display: flex;
  463.     gap: 10px;
  464.     flex-wrap: wrap;
  465. }
  466. .lottery-tag {
  467.     display: inline-flex;
  468.     align-items: center;
  469.     gap: 5px;
  470.     font-size: 1em;
  471.     font-weight: 900;
  472.     padding: 6px 16px;
  473.     border-radius: 25px;
  474.     border: 2px solid rgba(255,255,255,0.7);
  475.     letter-spacing: 0.5px;
  476. }
  477. .tag-limited {
  478.     background: rgba(255,255,255,0.08);
  479.     color: #fff;
  480.     box-shadow: 0 0 0 2px rgba(255,255,255,0.2), 0 5px 20px rgba(0,0,0,0.3);
  481.     border: 2px solid rgba(255,255,255,0.3);
  482.     backdrop-filter: blur(10px);
  483.     animation: pulse-limited 2s ease-in-out infinite;
  484. }
  485. @keyframes pulse-limited {
  486.     0%, 100% { 
  487.         transform: scale(1);
  488.         border-color: rgba(255,255,255,0.3);
  489.     }
  490.     50% { 
  491.         transform: scale(1.03);
  492.         border-color: rgba(255,255,255,0.5);
  493.     }
  494. }
  495. .tag-entry {
  496.     background: linear-gradient(135deg, #ff0064 0%, #ff0050 100%);
  497.     color: #fff;
  498.     box-shadow: 0 5px 25px rgba(255,0,100,0.5), inset 0 -2px 0 rgba(0,0,0,0.2);
  499.     border: 2px solid rgba(255,255,255,0.3);
  500.     animation: shake-entry 3s ease-in-out infinite;
  501. }
  502. @keyframes shake-entry {
  503.     0%, 100% { 
  504.         transform: translateX(0);
  505.         box-shadow: 0 5px 25px rgba(255,0,100,0.5), inset 0 -2px 0 rgba(0,0,0,0.2);
  506.     }
  507.     25% { transform: translateX(-3px); }
  508.     50% { 
  509.         box-shadow: 0 5px 30px rgba(255,0,100,0.7), inset 0 -2px 0 rgba(0,0,0,0.2);
  510.     }
  511.     75% { transform: translateX(3px); }
  512. }
  513. .tag-icon {
  514.     font-size: 1.1em;
  515. }
  516. /* ========================================
  517.    右バナー: 見積もりシミュレーター
  518. ======================================== */
  519. .simulator-banner-link {
  520.     display: block;
  521.     text-decoration: none;
  522.     height: 100%;
  523. }
  524. .simulator-banner-compact {
  525.     background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
  526.     border-radius: 10px;
  527.     padding: 20px 20px;
  528.     height: 100%;
  529.     min-height: 200px;
  530.     display: flex;
  531.     align-items: center;
  532.     justify-content: center;
  533.     box-shadow: 0 10px 30px rgba(0,0,0,0.3);
  534.     position: relative;
  535.     overflow: hidden;
  536.     transition: transform 0.3s ease, box-shadow 0.3s ease;
  537. }
  538. .simulator-banner-compact:hover {
  539.     transform: translateY(-5px);
  540.     box-shadow: 0 15px 40px rgba(0,212,255,0.4);
  541. }
  542. /* 背景装飾 */
  543. .simulator-banner-compact__bg {
  544.     position: absolute;
  545.     width: 100%;
  546.     height: 100%;
  547.     top: 0;
  548.     left: 0;
  549.     overflow: hidden;
  550.     z-index: 1;
  551. }
  552. .simulator-banner-compact .circle {
  553.     position: absolute;
  554.     border-radius: 50%;
  555.     opacity: 0.1;
  556. }
  557. .simulator-banner-compact .circle1 {
  558.     width: 150px;
  559.     height: 150px;
  560.     background: #00d4ff;
  561.     top: -50px;
  562.     right: -50px;
  563.     animation: float-compact 6s ease-in-out infinite;
  564. }
  565. .simulator-banner-compact .circle2 {
  566.     width: 100px;
  567.     height: 100px;
  568.     background: #ff00ff;
  569.     bottom: -30px;
  570.     left: -30px;
  571.     animation: float-compact 8s ease-in-out infinite reverse;
  572. }
  573. @keyframes float-compact {
  574.     0%, 100% { transform: translateY(0px); }
  575.     50% { transform: translateY(-20px); }
  576. }
  577. /* コンテンツ */
  578. .simulator-banner-compact__content {
  579.     position: relative;
  580.     z-index: 2;
  581.     text-align: center;
  582.     width: 100%;
  583. }
  584. .simulator-banner-compact__title {
  585.     font-size: 1.6em;
  586.     font-weight: bold;
  587.     background: linear-gradient(90deg, #00d4ff, #ff00ff, #ffff00);
  588.     background-size: 200% 200%;
  589.     -webkit-background-clip: text;
  590.     background-clip: text;
  591.     -webkit-text-fill-color: transparent;
  592.     animation: gradient-shift-compact 3s ease infinite;
  593.     margin-bottom: 8px;
  594.     line-height: 1.3;
  595. }
  596. @keyframes gradient-shift-compact {
  597.     0% { background-position: 0% 50%; }
  598.     50% { background-position: 100% 50%; }
  599.     100% { background-position: 0% 50%; }
  600. }
  601. .simulator-banner-compact__subtitle {
  602.     color: #ffffff;
  603.     font-size: 0.95em;
  604.     margin-bottom: 15px;
  605.     opacity: 0.9;
  606. }
  607. .simulator-banner-compact__icons {
  608.     display: flex;
  609.     justify-content: center;
  610.     gap: 12px;
  611.     margin-bottom: 15px;
  612. }
  613. .simulator-banner-compact__icons .icon {
  614.     font-size: 1.8em;
  615.     animation: bounce-compact 2s ease-in-out infinite;
  616. }
  617. .simulator-banner-compact__icons .icon:nth-child(1) { animation-delay: 0s; }
  618. .simulator-banner-compact__icons .icon:nth-child(2) { animation-delay: 0.2s; }
  619. .simulator-banner-compact__icons .icon:nth-child(3) { animation-delay: 0.4s; }
  620. .simulator-banner-compact__icons .icon:nth-child(4) { animation-delay: 0.6s; }
  621. @keyframes bounce-compact {
  622.     0%, 100% { transform: translateY(0); }
  623.     50% { transform: translateY(-8px); }
  624. }
  625. .simulator-banner-compact__cta {
  626.     display: inline-block;
  627.     padding: 10px 28px;
  628.     background: linear-gradient(135deg, #00d4ff, #ff00ff);
  629.     color: white;
  630.     font-size: 1em;
  631.     font-weight: bold;
  632.     border-radius: 25px;
  633.     box-shadow: 0 5px 15px rgba(255,0,255,0.4);
  634.     animation: glow-compact 2s ease-in-out infinite;
  635. }
  636. @keyframes glow-compact {
  637.     0%, 100% { box-shadow: 0 5px 15px rgba(255,0,255,0.4); }
  638.     50% { box-shadow: 0 5px 20px rgba(0,212,255,0.6); }
  639. }
  640. /* ========================================
  641.    レスポンシブ対応
  642. ======================================== */
  643. @media (max-width: 768px) {
  644.     .ec-banner--two-column {
  645.         flex-direction: column;
  646.         align-items: center;
  647.     }
  648.     
  649.     .ec-banner__item {
  650.         max-width: 100%;
  651.         width: 100%;
  652.     }
  653.     
  654.     .simulator-banner-compact {
  655.         padding: 25px 15px;
  656.         min-height: 220px;
  657.     }
  658.     
  659.     .simulator-banner-compact__title {
  660.         font-size: 1.4em;
  661.     }
  662.     
  663.     .simulator-banner-compact__icons .icon {
  664.         font-size: 1.5em;
  665.     }
  666. }
  667. </style>
  668. <!-- ▲バナー -->
  669. <!-- ▼トピック -->
  670. <div class="ec-role">
  671.     <div class="ec-rankingRole ec-contentRole">
  672.         <div class="ec-secHeading">
  673.             <div>
  674.                 <span class="ec-secHeading__en">{{ 'GAMING PC'|trans }}</span>
  675.                 <img src="{{ asset('assets/icon/slash.svg') }}" alt="" class="ec-slash is-pc">
  676.                 <span class="ec-secHeading__ja">{{ 'おすすめゲーミングPC'|trans }}</span>
  677.             </div>
  678.             <div class="ranking-arrows content-arrows"></div>
  679.         </div>
  680.         <div class="ec-rankingRole__List">
  681.             <div class="ec-contentRole__listItem">
  682.                 <a href="{{ url('product_detail', {'id': '523'}) }}">
  683.                     <img src="{{ asset('/html/user_data/SpecialItem/timesell01.jpg') }}">
  684.                     <p class="ec-contentRole__listItemTitle">{{ '大特価'|trans }}</p>
  685.                     <p class="ec-contentRole__listItemPrice">{{ '¥126,000~'|trans }}</p>
  686.                 </a>
  687.             </div>
  688.             <div class="ec-contentRole__listItem">
  689.                 <a href="{{ url('product_detail', {'id': '522'}) }}">
  690.                     <img src="{{ asset('/html/user_data/SpecialItem/timesell02.jpg') }}">
  691.                     <p class="ec-contentRole__listItemTitle">{{ 'Ryzen7 9800X3D搭載'|trans }}</p>
  692.                     <p class="ec-contentRole__listItemPrice">{{ '¥315,000~'|trans }}</p>
  693.                 </a>
  694.             </div>
  695.             <div class="ec-contentRole__listItem">
  696.                 <a href="{{ url('product_detail', {'id': '297'}) }}">
  697.                     <img src="{{ asset('/html/user_data/SpecialItem/700ryzen.jpg') }}">
  698.                     <p class="ec-contentRole__listItemTitle">{{ 'モンハン推奨PC"G級"'|trans }}</p>
  699.                     <p class="ec-contentRole__listItemPrice">{{ '¥222,000~'|trans }}</p>
  700.                 </a>
  701.             </div>
  702.             <div class="ec-contentRole__listItem">
  703.                 <a href="{{ url('product_detail', {'id': '120'}) }}">
  704.                     <img src="{{ asset('/html/user_data/other/blank.png') }}">
  705.                     <p class="ec-contentRole__listItemTitle">{{ 'のいえあ侍オリジナルファンWH'|trans }}</p>
  706.                     <p class="ec-contentRole__listItemPrice">{{ '¥3,800~'|trans }}</p>
  707.                 </a>
  708.             </div>
  709.         </div>
  710.     </div>
  711. </div>
  712. <!-- ▲トピック -->
  713. <!-- ▼期間限定商品 -->
  714. <div class="ec-role">
  715.     <div class="ec-newItemRole ec-contentRole">
  716.         <div class="ec-secHeading">
  717.             <div>
  718.                 <span class="ec-secHeading__en">{{ 'SPECIAL'|trans }}</span>
  719.                 <img src="{{ asset('assets/icon/slash.svg') }}" alt="" class="ec-slash is-pc">
  720.                 <div class="ec-secHeading__ja">{{ '期間限定商品'|trans }}</div>
  721.             </div>
  722.             <div class="item-arrows content-arrows"></div>
  723.         </div>
  724.         <div class="ec-newItemRole__list ec-contentRole__list">
  725.             <div class="ec-contentRole__listItem">
  726.                 <a href="{{ url('product_list') }}?category_id={{ 25 }}">
  727.                     <img src="{{ asset('/html/user_data/SpecialItem/sp02.jpg') }}">
  728.                     <p class="ec-contentRole__listItemTitle">{{ 'お買い得品'|trans }}</p>
  729.                 </a>
  730.             </div>
  731.             <div class="ec-contentRole__listItem">
  732.                 <a href="{{ url('product_detail', {'id': '281'}) }}">
  733.                     <img src="{{ asset('/html/user_data/device/248BLACK.jpg') }}">
  734.                     <p class="ec-contentRole__listItemTitle">{{ 'PX248WAVE[ブラック]'|trans }}</p>
  735.                     <p class="ec-contentRole__listItemPrice">{{ '¥25,800'|trans }}</p>
  736.                 </a>
  737.             </div>
  738.             <div class="ec-contentRole__listItem">
  739.                 <a href="{{ url('product_detail', {'id': '279'}) }}">
  740.                     <img src="{{ asset('/html/user_data/device/248WHITE.jpg') }}">
  741.                     <p class="ec-contentRole__listItemTitle">{{ 'PX248WAVE[ホワイト]'|trans }}</p>
  742.                     <p class="ec-contentRole__listItemPrice">{{ '¥25,800'|trans }}</p>
  743.                 </a>
  744.             </div>
  745.             <div class="ec-contentRole__listItem">
  746.                 <a href="{{ url('product_detail', {'id': '129'}) }}">
  747.                     <img src="{{ asset('/html/user_data/SpecialItem/0926194749_6512b6d55162a.jpg') }}">
  748.                     <p class="ec-contentRole__listItemTitle">{{ 'Thermaltake Core P6 TG [Green]'|trans }}</p>
  749.                     <p class="ec-contentRole__listItemPrice">{{ '¥13,000'|trans }}</p>
  750.                 </a>
  751.             </div>
  752. {#            <div class="ec-contentRole__listItem">
  753.                 <a href="{{ url('product_detail', {'id': '121'}) }}">
  754.                     <img src="{{ asset('/html/user_data/SpecialItem/sp01.jpg', 'save_image') }}">
  755.                     <p class="ec-contentRole__listItemTitle">{{ '"X"フォロワー1万人突破記念'|trans }}</p>
  756.                     <p class="ec-contentRole__listItemPrice">{{ ''|trans }}</p>
  757.                     <p class="ec-contentRole__listItemPrice">{{ '¥110,000~'|trans }}</p>
  758.                 </a>
  759.             </div>
  760. #}
  761.             <div class="ec-contentRole__listItem">
  762.                 <a href="{{ url('product_detail', {'id': '119'}) }}">
  763.                     <img src="{{ asset('/html/user_data/other/blank.jpg') }}">
  764.                     <p class="ec-contentRole__listItemTitle">{{ '準備中'|trans }}</p>
  765.                     <p class="ec-contentRole__listItemPrice">{{ ''|trans }}</p>
  766.                 </a>
  767.             </div>
  768.                         <div class="ec-contentRole__listItem">
  769.                 <a href="{{ url('product_detail', {'id': '119'}) }}">
  770.                     <img src="{{ asset('/html/user_data/other/blank.jpg') }}">
  771.                     <p class="ec-contentRole__listItemTitle">{{ '準備中'|trans }}</p>
  772.                     <p class="ec-contentRole__listItemPrice">{{ ''|trans }}</p>
  773.                 </a>
  774.             </div>
  775.         </div>
  776.     </div>
  777. </div>
  778. <!-- ▲期間限定商品 -->
  779. <!-- ▼コラボPC -->
  780. <div class="ec-role">
  781.     <div class="ec-campaignRole ec-contentRole">
  782.         <div class="ec-secHeading">
  783.             <div>
  784.                 <span class="ec-secHeading__en">{{ 'COLLABO'|trans }}</span>
  785.                 <img src="{{ asset('assets/icon/slash.svg') }}" alt="" class="ec-slash is-pc">
  786.                 <span class="ec-secHeading__ja">{{ 'コラボPC'|trans }}</span>
  787.             </div>
  788.             <div class="campaign-arrows content-arrows"></div>
  789.         </div>
  790.         <div class="ec-campaignRole__List">
  791.             <div class="ec-contentRole__listItem">
  792.                 <a href="{{ url('product_list') }}?category_id={{ 45 }}">
  793.                     <img src="{{ asset('/html/user_data/Category/collabo/suzune.jpg') }}">
  794.                     <p class="ec-contentRole__listItemTitle">{{ 'すず音'|trans }}</p>
  795.                     <p class="ec-contentRole__listItemPrice">{{ '¥160,000~'|trans }}</p>
  796.                 </a>
  797.             </div>
  798.             <div class="ec-contentRole__listItem">
  799.                 <a href="{{ url('product_list') }}?category_id={{ 31 }}">
  800.                     <img src="{{ asset('/html/user_data/Category/collabo/FqnocOEaUAEPiD7 1.jpg') }}">
  801.                     <p class="ec-contentRole__listItemTitle">{{ '眠田イナ'|trans }}</p>
  802.                     <p class="ec-contentRole__listItemPrice">{{ '¥160,000~'|trans }}</p>
  803.                 </a>
  804.             </div>
  805.             <div class="ec-contentRole__listItem">
  806.                 <a href="{{ url('product_list') }}?category_id={{ 33 }}">
  807.                     <img src="{{ asset('/html/user_data/Category/collabo/888.jpg') }}">
  808.                     <p class="ec-contentRole__listItemTitle">{{ 'ねくすと'|trans }}</p>
  809.                     <p class="ec-contentRole__listItemPrice">{{ '¥160,000~'|trans }}</p>
  810.                 </a>
  811.             </div>
  812. {#            <div class="ec-contentRole__listItem">
  813.                 <a href="{{ url('product_list') }}?category_id={{ 32 }}">
  814.                     <img src="{{ asset('/html/user_data/Category/collabo/logo02.png', 'save_image') }}">
  815.                     <p class="ec-contentRole__listItemTitle">{{ 'せきめ'|trans }}</p>
  816.                     <p class="ec-contentRole__listItemPrice">{{ '¥160,000~'|trans }}</p>
  817.                 </a>
  818.             </div>#}
  819.         </div>
  820.     </div>
  821. </div>
  822. <!-- ▲コラボPC -->
  823. <!-- ▼SPバナー -->
  824. <div class="ec-banner3 is-sp">
  825.     <a href="https://www.youtube.com/@noiezam" target="_blank" rel="noopener">
  826.     <img src="{{ asset('/html/user_data/TOP/leftside/Left-banner012.png') }}" alt="のいえあ侍 Youtube 動画"></a>
  827. <br><br>
  828.     <a tabindex="-1">
  829.     <img src="{{ asset('/html/user_data/TOP/leftside/ELSA.jpg') }}" alt="エルザジャパン正規販売代理店"></a>
  830. <br><br>
  831.     <a tabindex="-1">
  832.     <img src="{{ asset('/html/user_data/TOP/leftside/wtwwtwtw.png') }}" alt="pixio ゲーミングモニター"></a>
  833. <br><br>
  834.     <a href="https://twitter.com/gajiro15" target="_blank" rel="noopener">
  835.     <img src="{{ asset('/html/user_data/TOP/leftside/gaji.jpg') }}" alt="ガジロー"></a>
  836. </div>
  837. <!-- ▲SPバナー -->
  838. <!-- ▼SPカテゴリー -->
  839. {% set Categories = repository('Eccube\\Entity\\Category').getList() %}
  840. {% macro tree(Category) %}
  841.     {% from _self import tree %}
  842.     <a href="{{ url('product_list') }}?category_id={{ Category.id }}">
  843.         {{ Category.name }}
  844.         <img src="{{ asset('assets/icon/side-arrow-right-gray.svg') }}" alt="">
  845.     </a>
  846.     {% if Category.children|length > 0 %}
  847.         <ul>
  848.             {% for ChildCategory in Category.children %}
  849.                 <li>
  850.                     {{ tree(ChildCategory) }}
  851.                 </li>
  852.             {% endfor %}
  853.         </ul>
  854.     {% endif %}
  855. {% endmacro %}
  856. {# @see https://github.com/bolt/bolt/pull/2388 #}
  857. {% from _self import tree %}
  858. <div class="ec-headerCategoryAreaSp is-sp">
  859.     <div class="ec-headerCategoryAreaSp__heading">
  860.         <p>{{ 'カテゴリ一覧'|trans }}</p>
  861.     </div>
  862.     <div class="ec-itemNav">
  863.         <ul class="ec-itemNav__nav">
  864.             <li class="ec-sideCategoryList__all">
  865.                 <a href="{{ url('product_list') }}?category_id=">全ての商品</a>
  866.             </li>
  867.             {% for Category in Categories %}
  868.                 <li>
  869.                     {{ tree(Category) }}
  870.                 </li>
  871.             {% endfor %}
  872.         </ul>
  873.     </div>
  874. </div>
  875. <!-- ▲SPカテゴリー -->