/**
 * File: base.css
 * Usage: 全ページ共通のスタイルを定義します。レイアウト、モジュールなど。
 * Example: ly_header, ly_footer, el_btn, el_gradientGold, el_subpTtl, el_normalTtl
*/

@charset "UTF-8";

/* ================================================  
 リセットの記述
================================================ */

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
body,
h1,
h2,
h3,
h4,
p,
figure,
blockquote,
dl,
dd {
  margin: 0;
}
ul[role='list'],
ol[role='list'] {
  list-style: none;
  padding: 0;
  margin: 0;
}
html:focus-within {
  scroll-behavior: smooth;
}
body {
  min-height: 100vh; /* Fallback */
  min-height: calc(var(--vh, 1vh) * 100);
  text-rendering: optimizeSpeed;
  line-height: 1.5;
  overflow-x: clip;
  position: relative;
  z-index: -2;
}

main {
  position: relative;
  min-height: 100vh;
  z-index: -1;
  background: var(--color-base);
}

main::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url(../img/main-bg.webp);
  background-size: 100%;
  background-repeat: repeat-y;
  opacity: 0.3;
  min-height: 100vh;
  pointer-events: none;
  z-index: -1;
}

main::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/top/bg-pattern-sm.svg) repeat-y top left;
  background-size: auto;
  z-index: -1;
}

a {
  text-decoration: none;
  color: inherit;
}
a:not([class]) {
  text-decoration-skip-ink: auto;
}
img,
picture {
  max-width: 100%;
  height: auto;
  display: block;
  pointer-events: none;
}
input,
button,
textarea,
select {
  font: inherit;
}
@media (prefers-reduced-motion: reduce) {
  html:focus-within {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ================================================  
 ログイン時に出るWordPress管理画面のツールバーを非表示
================================================ */
#wpadminbar {
  display: none !important;
}

html {
  margin-top: 0 !important;
}

/* ================================================  
 フォントの読み込み
================================================ */
@font-face {
  font-family: 'ShipporiMinchoB1';
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ShipporiMinchoB1-Regular.ttf) format('truetype');
}
@font-face {
  font-family: 'ShipporiMinchoB1';
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ShipporiMinchoB1-Medium.ttf) format('truetype');
}

/* ================================================  
 スタイルの適用(モバイルファーストで記述)
================================================ */
:root {
  --color-ink: #1e2228;
  --color-azuki: #531607;
  --color-neutral: #6b7161;
  --color-purple: #8e71b6;
  --color-base: #f7f5f1;

  --col-1: calc(100vw / 12);
  --col-2: calc(100vw / 12 * 2);
  --col-3: calc(100vw / 12 * 3);
  --col-4: calc(100vw / 12 * 4);
  --col-6: calc(100vw / 12 * 6);
  --col-8: calc(100vw / 12 * 8);
}

body {
  background-color: #fff;
  color: var(--color-ink);
  width: 100%;
  -webkit-text-size-adjust: 100%;
  font-family: 'ShipporiMinchoB1', serif;
  overscroll-behavior: none;
  font-size: 14px;
  line-height: 1.6;
  letter-spacing: 0.07em;
}

html {
  overflow-y: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar,
main::-webkit-scrollbar {
  display: none;
}

.grecaptcha-logo,
.grecaptcha-badge {
  display: none;
}

h1 {
  font-size: 36px;
}

.clearfix::after {
  clear: both;
}

li {
  list-style: none;
}

/* メディアクエリ用の表示・非表示 */
.sm_only {
  display: block !important;
}
.md_only,
.lg_only {
  display: none !important;
}

.wpcf7-not-valid-tip {
  font-size: 11px;
}

/* ================================================  
  レイアウト
================================================ */
/* 全体のレイアウト */

/* ヘッダー */
.ly_header {
  position: fixed;
  width: 100%;
  height: 80px;
  top: 0;
  display: flex;
  z-index: 1000;
  background: url(../img/main-bg.webp) no-repeat center center;
  background-size: cover;
}

.bl_headerCont {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  background: rgba(247, 245, 241, 0.7);
  padding: 20px;
}

.bl_header_logo svg {
  width: 40px;
  height: auto;
}

.bl_header_logo svg path {
  fill: var(--color-ink);
}

.bl_header_left {
  display: flex;
  align-items: center;
  gap: 24px;
}

.bl_header_pageName {
  color: var(--color-neutral);
  display: flex;
  gap: 8px;
  align-items: center;
}

.bl_header_pageName::before {
  width: 6px;
  height: 6px;
  content: '';
  background: var(--color-neutral);
  border-radius: 50%;
}

/* フッター */
.ly_footer {
  background: url(../img/footer-bg.webp) no-repeat center center;
  background-size: cover;
  position: relative;
  color: #fff;
  z-index: 0;
  padding: 132px 30px 90px;
}

.el_footerToTop {
  position: absolute;
  top: 45px;
  right: 30px;
  width: 46px;
  z-index: 1;
  display: flex;
  gap: 8px;
  align-items: center;
  flex-direction: column;
}

.el_footerToTop svg {
  transform: rotate(-90deg);
}

.el_footerToTop svg path {
  fill: #fff;
}

.ly_footer::before {
  pointer-events: none;
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  z-index: 0;
}

.bl_footer {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 40px;
}

.bl_footerShopInfo a {
  text-decoration: underline;
}

.bl_footerLinksBlock {
  display: flex;
  flex-direction: column;
  gap: 10px;
  line-height: 1.8;
  letter-spacing: 0;
}

.bl_footerLinks {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.bl_footerLinks a {
  display: flex;
  gap: 10px;
  align-items: center;
}

.bl_footerLinks a:not(:last-child)::after {
  content: url(../img/icons/footer-separator.svg);
}

.bl_footerCopy {
  margin-top: 80px;
  line-height: 1.8;
  font-size: 13px;
  letter-spacing: 0;
}

/* ================================================  
 ブロックモジュール
================================================ */
/* ヘッダー */

.bl_header_nav {
  font-size: 13px;
  display: flex;
  align-items: center;
  display: none;
}

.bl_header_nav_ul {
  display: flex;
  align-items: center;
}

.bl_header_nav_ul .bl_header_nav_ul_li a {
  padding-inline: 12px;
  display: flex;
  border-right: #fff 1px solid;
  line-height: 1;
}

.bl_header_nav_ul .bl_header_nav_actionBtn a {
  padding-inline: 12px;
  display: flex;
  line-height: 1;
}

.bl_priceListWrapper {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.bl_priceList {
  flex-direction: column;
}

.bl_productAllergen,
.bl_priceList {
  padding: 24px;
  border: 1px solid rgba(107, 113, 97, 0.4);
  background: var(--color-base);
  border-radius: 4px;
  display: flex;
  align-items: center;
}

.bl_productAllergen > p,
.bl_priceList > p {
  line-height: 1;
}

.bl_priceItem {
  display: flex;
  align-items: center;
  gap: 4px;
  width: 100%;
}

p.bl_priceList_memo {
  font-size: 13px;
  line-height: 1;
  margin-left: auto;
  text-align: right;
}

.bl_productAllergen span,
.bl_priceItem span {
  display: block;
  flex-grow: 1;
  height: 1px;
  background: url(../img/table-separator.svg) repeat-x center;
}

.ly_contactTel {
  padding-bottom: 100px;
}

.bl_contactTel {
  background: var(--color-base);
  color: var(--color-azuki);
  border: 1px solid var(--color-azuki);
  padding: 30px 0 40px;
  max-width: 313px;
  margin-inline: auto;
  display: flex;
  gap: 20px;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.bl_contactTel h2 {
  font-size: clamp(2.375rem, 1.9107rem + 2.3214vw, 4rem);
  font-weight: 500;
  line-height: 1.6;
}

.bl_contactTel p {
  text-align: center;
  letter-spacing: 0.1em;
}

.bl_pagination {
  padding-block: 40px 84px;
  text-align: center;
  margin-inline: auto;
  font-size: 16px;
  line-height: 1.6;
  letter-spacing: 0.05em;
  color: var(--color-azuki);
}

.wp-pagenavi {
  display: flex;
  gap: 24px;
  justify-content: center;
}

.wp-pagenavi .current {
  font-weight: 500;
  text-decoration: underline;
}

.ly_topGift {
  line-height: 2;
  padding-block: 64px;
  color: #fff;
  position: relative;
}

.ly_topGiftImg {
  position: absolute;
  z-index: 0;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.ly_topGiftImg img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ly_topGift::after {
  z-index: 1;
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.65);
}

.bl_topGift {
  display: flex;
  align-items: center;
  flex-direction: column;
  text-align: center;
  gap: 64px;
  position: relative;
  z-index: 2;
}

.bl_topGift h2 {
  font-size: clamp(1.5rem, 1.3571rem + 0.7143vw, 2rem);
  letter-spacing: 0.16em;
  font-weight: 500;
}

.bl_topGift p {
  line-height: 2;
}

.bl_topGift a {
  margin-top: 0;
}

/* ================================================  
  エレメントモジュール
================================================ */
/* ボタン */
.el_btn {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 16px;
  width: fit-content;
  font-weight: 500;
  color: var(--color-azuki);
  line-height: 1.6;
  padding-bottom: 16px;
  margin-top: 40px;
  margin-inline: auto;
  overflow: hidden;
}

.el_btn:not(.el_btn_box) .el_btn_line {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 1px;
  width: 100%;
  background: var(--color-azuki);
}

@keyframes lineHideShowRight {
  0% {
    transform: scaleX(1);
    transform-origin: right;
  }
  49% {
    transform: scaleX(0);
    transform-origin: right;
  }
  50% {
    transform: scaleX(0);
    transform-origin: left;
  }
  100% {
    transform: scaleX(1);
    transform-origin: left;
  }
}

@keyframes lineHideShowLeft {
  0% {
    transform: scaleX(1);
    transform-origin: left;
  }
  49% {
    transform: scaleX(0);
    transform-origin: left;
  }
  50% {
    transform: scaleX(0);
    transform-origin: right;
  }
  100% {
    transform: scaleX(1);
    transform-origin: right;
  }
}

.el_btn_line.animating-right {
  animation: lineHideShowRight 0.6s cubic-bezier(0.27, 1.32, 1, 1);
}

.el_btn_line.animating-left {
  animation: lineHideShowLeft 0.6s cubic-bezier(0.27, 1.32, 1, 1);
}

.el_btn::before {
  content: '';
  background: url(../img/icons/btn-arrow.svg) no-repeat center center;
  margin-top: 2px;
  width: 8px;
  height: 10px;
  transform: translateY(50%);
  transition: all 0.3s ease;
}

.el_btn:not(.el_btn_box):hover::before {
  transform: translateY(50%) translateX(4px);
}

.el_btn_white {
  color: #fff;
}

.el_btn_white .el_btn_line {
  background: #fff !important;
}

.el_btn_white::before {
  background: url(../img/icons/btn-arrow-white.svg) no-repeat center center;
}

.el_btn_box {
  padding-block: 30px;
  width: 100%;
  max-width: 312px;
  background: var(--color-base);
  border: 1px solid var(--color-azuki);
  justify-content: center;
  font-size: 17px;
  margin-top: 64px;
}

.el_btn_box::before {
  width: 16px;
  height: 21px;
  background-size: cover;
  transform: none;
  margin-top: 6px;
}

.el_btn_box:hover:before {
  transform: translateX(12px);
}

.el_secTtl {
  font-size: 24px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-align: center;
  margin-bottom: 15px;
}

.el_category {
  font-size: 12px;
  color: #fff;
  background: var(--color-azuki);
  padding: 2px 8px;
}

/* ================================================  
 ハンバーガーメニュー
================================================ */

.el_humb {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  cursor: pointer;
}

.el_humb span {
  display: block;
  width: 32px;
  height: 1px;
  background: var(--color-ink);
  border-radius: 999px;
}

/* ハンバーガーメニューのナビゲーション */
.bl_nav {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: var(--color-ink);
  color: var(--color-base);
  z-index: 1000;
  user-select: none;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease-in;

  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.bl_nav_ul {
  padding: 120px 0 0 64px;
  display: flex;
  flex-direction: column;
  font-size: 14px;
  gap: 24px;
}

.bl_nav_footer div,
.bl_nav_footer small {
  color: rgba(247, 245, 241, 0.7);
  display: flex;
  justify-content: space-around;
  padding-block: 20px;
  border-top: 1px solid rgba(247, 245, 241, 0.1);
}

.bl_nav_footer small {
  padding-bottom: 16px;
}

.el_nav_close {
  position: absolute;
  top: 25px;
  right: 23px;
  border: none;
  background: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  z-index: 100000;
}

.el_nav_close span {
  position: absolute;
  top: 50%;
  left: 0%;
  transform: translate(-50%, -50%);
  display: flex;
  width: 100%;
  height: 1px;
  background: var(--color-base);
  transform: rotate(45deg);
}

.el_nav_close span:nth-of-type(2) {
  transform: rotate(-45deg);
}

.bl_nav.is_open {
  opacity: 1;
  visibility: visible;
}

.hover-underline-animation {
  display: inline-block;
  position: relative;
}

.hover-underline-animation::after {
  content: '';
  position: absolute;
  width: 100%;
  transform: scaleX(0);
  height: 1px;
  bottom: 0;
  left: 0;
  background-color: #fff;
  transition: transform 0.25s ease-out;
}

.hover-underline-animation:hover::after {
  transform: scaleX(1);
}

.hover-underline-animation::after {
  transform-origin: bottom left;
}

.hover-underline-animation:hover::after {
  transform-origin: bottom right;
}

/* ================================================  
 ローディング画面
================================================ */
#preload-overlay {
  position: fixed;
  inset: 0;
  background: #0f0f0f;
  display: grid;
  place-items: center;
  z-index: 999999;
  transition:
    opacity 0.4s ease,
    visibility 0.4s ease;
}
#preload-overlay.is-done {
  opacity: 0;
  visibility: hidden;
}

#preload-visual {
  display: grid;
  place-items: center;
  gap: 12px;
  opacity: 1;
  filter: blur(0px);
  transition:
    opacity 1s ease-out,
    filter 1s ease-out;
}

#preload-visual.fade-out {
  opacity: 0;
  filter: blur(40px);
}

#preload-logo {
  width: min(28vmin, 220px);
  height: auto;
  display: block;
  transition:
    opacity 0.8s ease,
    transform 0.8s ease;
}

#preload-percent {
  margin-top: 60px;
  font:
    500 16px 'ShipporiMinchoB1',
    serif;
  letter-spacing: 0.1em;
  color: var(--color-base);
  transition:
    opacity 0.8s ease,
    transform 0.8s ease;
}

#logo-fill {
  transition: width 0.08s linear;
}

/* ================================================  
 ヘルパー
================================================ */
/* 余白の調整 */
.hp_mt20 {
  margin-top: 20px;
}

.hp_mt40 {
  margin-top: 40px;
}

.hp_pb20 {
  padding-bottom: 20px;
}

.hp_pt40 {
  padding-top: 40px;
}

.hp_padX40 {
  padding-inline: 40px;
}

.hp_padY20 {
  padding-block: 20px;
}

.hp_wMax {
  width: max-content;
  margin-inline: auto;
}

/* 色の変更 */
.hp_bgBlack {
  background: #333;
}

/* テキストの調整 */
.hp_txtCenter {
  text-align: center;
}

.hp_txtMd {
  font-size: 16px;
}

.hp_underline {
  text-decoration: underline;
}

@media screen and (min-width: 768px) {
  .sm_only {
    display: none !important;
  }
  .md_only,
  .lg_only {
    display: block !important;
  }

  main::after {
    background: url(../img/top/bg-pattern-md.svg) repeat-y top left;
    background-size: cover;
  }

  .ly_normalSec {
    padding-block: 80px;
  }

  .bl_productInfo .bl_priceItem p,
  .bl_productInfo p.bl_priceList_memo {
    line-height: 1;
  }

  .bl_priceListWrapper {
    gap: 8px;
  }

  .ly_contactTel {
    padding-bottom: 200px;
  }

  .bl_contactTel {
    max-width: 960px;
    width: 100%;
    padding-block: 32px 42px;
    gap: 0;
  }

  .bl_contactTel p {
    font-size: 18px;
  }

  /* ヘッダー */
  .ly_header {
    z-index: 1000;
    background: transparent;
    height: unset;
    width: fit-content;
  }

  .bl_header_logo svg {
    width: 60px;
    height: auto;
  }

  .bl_headerCont {
    background: transparent;
    width: fit-content;
    padding: 33px min(33px, 1.8vw);
  }

  .bl_header_left {
    flex-direction: column;
    gap: 68px;
  }

  .bl_header_pageName {
    writing-mode: vertical-rl;
    text-orientation: upright;
    font-size: 16px;
    letter-spacing: 0.2em;
    gap: 10px;
  }

  .bl_header_openNav {
    position: fixed;
    top: 41px;
    right: 38px;
  }

  .el_humb {
    gap: 12px;
  }

  .el_humb span {
    width: 56px;
  }

  .bl_nav {
    max-width: 375px;
    left: unset;
    right: 0;
  }

  .bl_productAllergen,
  .bl_priceList {
    padding-inline: 32px;
    gap: 20px;
  }

  .hp_borderBold {
    margin-top: 12px;
  }

  .hp_mt40 {
    margin-top: 80px;
  }

  .hp_pt40 {
    padding-top: 80px;
  }

  .bl_breadcrumb {
    padding-block: 40px;
  }

  .el_subpTtl {
    position: relative;
    padding-block: 20px 10px;
    border-bottom: #bb9402 2px solid;
    font-size: 2rem;
  }

  .el_subpTtl span {
    color: #fff;
    opacity: 0.05;
    position: absolute;
    top: -24px;
    left: -100px;
    z-index: 1;
    background: transparent;
    -webkit-background-clip: unset;
    background-clip: unset;
    -webkit-text-fill-color: white;
    font-size: 72px;
    translate: -20px -20px;
  }

  .el_secTtl {
    margin-bottom: 40px;
    font-size: 32px;
    text-align: left;
  }

  .el_normalTtl {
    font-size: 1.5rem;
  }

  .el_category {
    font-size: 12px;
  }

  .el_btn_box {
    max-width: min(var(--col-8), 960px);
    height: 170px;
    align-items: center;
    font-size: 24px;
    gap: 34px;
  }

  .el_btn_box::before {
    width: 20px;
    height: 25px;
  }

  .ly_footer {
    padding: 150px var(--col-1) 105px;
  }

  .bl_footerLinksBlock {
    max-width: calc(100% - 330px);
  }

  .bl_footerCopy {
    position: absolute;
    right: 0px;
    bottom: 0px;
  }

  .bl_footer {
    line-height: 1.8;
  }

  .ly_topGift {
    padding-block: 100px 87px;
  }

  .bl_topGift p {
    font-size: 14px;
  }

  .bl_topGift {
    gap: 60px;
  }
}
