:root {
  --global-color-01: #ca0336;
  --global-color-02: #333;
  --global-color-03: #ccc;

  --color-01: #191818;
  --color-02: #2d2d2d;
  --color-03: #f2f2f6;

  --shop-01: #c91337;
  --shop-02: #d81617;
  --shop-03: #604338;
  --shop-04: #1ca43c;
  --shop-05: #161573;

  --leading-trim: calc((1em - 1lh) / 2);
  --ease: cubic-bezier(.36, 1.13, .7, .97);
  --nav: 56px;
}

@media (max-width: 767.98px) {
  :root {
    --max: 394;
    --gap: calc(17 / var(--max) * 100vw);
  }
}

@media (min-width: 768px) {
  :root {
    --max: 850;
    --gap: calc(20 / var(--max) * 100vw);
  }
}

/* reset and set
-------------------------------------------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

:where(html) {
  block-size: 100%;
  scroll-behavior: smooth;
}

:where(body) {
  overflow-x: hidden;
  overflow-y: scroll;
  display: flex;
  flex-direction: column;
  inline-size: 100%;
  block-size: 100%;
  margin: 0;
  font-family: "SF Pro JP", "SF Pro Text", "SF Pro Icons", "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ Pro W3", メイリオ, Meiryo, "ＭＳ Ｐゴシック", "Helvetica Neue", Helvetica, Arial, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: none;
  text-size-adjust: 100%;
  color: var(--color-01);
  background-color: #fff;
  -webkit-tap-highlight-color: transparent;
}

:where(main) {
  padding-block-start: var(--nav);
  font-size: 16px;
  font-feature-settings: "palt" 1;
}

:where(p, h1, h2, h3, h4, h5, h6) {
  margin: 0;
  font-size: 100%;
  overflow-wrap: break-word;
}

:where(a) {
  text-decoration: none;
  word-break: break-all;
  cursor: pointer;
  color: inherit;
}

:where(a, button, [tabindex]) {
  touch-action: manipulation;
}

:where(dl, dd) {
  margin: 0;
}

:where(button) {
  padding: 0;
  font: inherit;
  cursor: pointer;
  color: inherit;
  border: none;
  background-color: #0000;
  appearance: none;
}

/* :where(img, picture, svg) {
  display: block;
  max-inline-size: 100%;
} */

:where(img, svg) {
  block-size: auto;
  border: none;
  object-fit: cover;
}

:where(svg:not([fill])) {
  fill: currentColor;
}

:focus:not(:focus-visible) {
  outline: none;
}





/* Minimize non-essential motion
-------------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {

  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}





/* modules
-------------------------------------------------------------------------------- */
/* screen reader */
.screen-reader {
  position: absolute;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  inline-size: 1px;
  block-size: 1px;
  word-wrap: normal;
}

/* container */
.container {
  inline-size: calc(100% - var(--gap) * 2);
  margin-inline: auto;
}

/* heading */
.m-heading {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 64px;
  padding: 10px;
  font-size: 16px;
}

/* hover effects */
@media (any-hover: hover) {
  [data-hover="opacity"] {
    transition: opacity .25s;
  }

  [data-hover="opacity"]:is(:hover, :focus-visible) {
    outline: none;
    opacity: .5;
  }
}





/* header
-------------------------------------------------------------------------------- */
.g-header {
  position: fixed;
  inset-block-start: 0;
  inset-inline-start: 0;
  z-index: 10;
  inline-size: 100vw;
  block-size: var(--nav);
  border-block-end: 2px solid var(--global-color-01);
}

.g-header_wrap {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  inline-size: 100%;
  block-size: 100%;
  margin: auto;
  background-color: #fff;
}

.g-header_btn {
  position: absolute;
  inset-block: 0;
  inset-inline-start: 16px;
  z-index: 11;
  inline-size: 36px;
  block-size: 36px;
  margin-block: auto;
  border-radius: 50%;
}

.g-header_btn>span {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  inline-size: 20px;
  block-size: 2px;
  background-color: var(--global-color-02);
  transition-property: inset-block-start, transform;
  transition-duration: .25s;
  transform: translate(-50%, -50%);
}

.g-header_btn>span:nth-of-type(1) {
  inset-block-start: calc(50% - 8px);
}

.g-header_btn>span:nth-of-type(3) {
  inset-block-start: calc(50% + 8px);
}

.g-header_btn.is-open>span:nth-of-type(1) {
  inset-block-start: 50%;
  transform: translate(-50%, -50%) rotate(45deg);
}

.g-header_btn.is-open>span:nth-of-type(2) {
  transform: translate(-50%, -50%) scaleX(0);
}

.g-header_btn.is-open>span:nth-of-type(3) {
  inset-block-start: 50%;
  transform: translate(-50%, -50%) rotate(-45deg);
}

.g-header_overlay {
  position: fixed;
  inset: 0;
  inline-size: 0;
  block-size: 100%;
  background-color: rgba(0, 0, 0, .28);
  transition-property: inline-size, opacity;
  transition-duration: 0s, .5s;
  transition-delay: .5s, 0s;
  opacity: 0;
}

.g-header_overlay.is-open {
  inline-size: 100%;
  transition-delay: 0s, 0s;
  opacity: 1;
}

.g-nav {
  position: fixed;
  inset-block: 0;
  inset-inline-start: 0;
  z-index: 10;
  visibility: hidden;
  inline-size: 81.5385%;
  max-inline-size: 375px;
  padding: var(--nav) 0;
  font-weight: 700;
  background-color: #fff;
  transition-property: visibility, transform;
  transition-duration: 0s, .5s;
  transition-timing-function: linear, var(--ease);
  transition-delay: .5s, 0s;
  transform: translate3d(-100%, 0, 0);
}

.g-nav.is-open {
  visibility: visible;
  transition-delay: 0s, 0s;
  transform: translate3d(0, 0, 0);
}

.g-nav_wrap {
  overflow-y: auto;
  max-inline-size: 390px;
  block-size: 100%;
  margin: auto;
  padding: 10px 10px 0;
}

.g-nav {
  font-size: 14px;
}

.g-nav_link {
  display: block;
  padding: 20px 20px 20px 34px;
  font-size: 16px;
}

.g-nav_link+.g-nav_link {
  border-top: 1px solid var(--global-color-03);
}

.g-nav_link.store,
.g-nav_link.flyer {
  background-position: 0 50%;
  background-repeat: no-repeat;
}

.g-nav_link.store {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath fill='%23ca0336' d='M2.83 2.79c3.5-3.5 9.16-3.5 12.66 0a8.94 8.94 0 0 1 2.62 6.36c0 1.63-.45 3.23-1.29 4.63l4.34 4.35c.84.85.84 2.22 0 3.07-.84.84-2.2.85-3.04.01l-.01-.01-4.34-4.35A8.948 8.948 0 0 1 .21 9.15c0-2.38.94-4.67 2.62-6.36Zm2.45 10.26a5.501 5.501 0 0 0 7.79-.02 5.501 5.501 0 0 0-.02-7.79c-2.16-2.15-5.64-2.14-7.79.02s-2.14 5.64.02 7.79Z'/%3E%3C/svg%3E%0A");
  background-size: 22px;
}

.g-nav_link.flyer {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='%23ca0336'%3E%3Cpath d='M23.1.99v22.03c0 .32-.26.58-.58.58H1.48a.58.58 0 0 1-.58-.58V.99c0-.32.26-.58.58-.58h21.05c.32 0 .58.26.58.58Zm-1.15 21.45V1.56H2.05v20.88h19.89Z' class='cls-1'/%3E%3Cpath d='M13.02 4.34H4.17a.58.58 0 0 1 0-1.16h8.85a.58.58 0 0 1 0 1.16ZM19.41 12.72H4.12a.58.58 0 0 1-.58-.58V6.66c0-.32.26-.58.58-.58h15.29c.32 0 .58.26.58.58v5.48c0 .32-.26.58-.58.58ZM4.69 11.57h14.14V7.25H4.69v4.32ZM10.8 14.21v6.1c0 .32-.26.58-.58.58H4.11a.58.58 0 0 1-.58-.58v-6.1c0-.32.26-.58.58-.58h6.11c.32 0 .58.26.58.58Zm-1.15 5.53v-4.95H4.7v4.95h4.95ZM19.57 20.87h-7.26a.58.58 0 0 1-.58-.58v-6.11c0-.32.26-.58.58-.58h7.26c.32 0 .58.26.58.58v6.11c0 .32-.26.58-.58.58Zm-6.68-1.15H19v-4.95h-6.11v4.95Z' class='cls-1'/%3E%3C/g%3E%3C/svg%3E%0A");
  background-size: 24px;
}

.g-nav_list {
  margin-block: 0;
}

.g-nav_list .term {
  margin: 0 -10px 10px;
  padding: 4px 10px;
  background-color: var(--global-color-03);
}

.g-nav_list .desc {
  margin-inline-start: 0;
}

.g-nav_list .desc:not(:first-of-type) {
  border-block-start: 1px solid var(--global-color-03);
}

.g-nav_list .link {
  display: block;
  margin: 7px 0;
  padding: 7px 0;
}





/* footer
-------------------------------------------------------------------------------- */
footer {
  margin-block-start: auto;
  font-size: 12px;
  line-height: 32px;
  text-align: center;
  color: #fff;
  background-color: var(--global-color-02);
}





/* main [heading]
-------------------------------------------------------------------------------- */
.main-heading {
  display: grid;
  place-items: center;
  color: var(--color-02);
  background-color: var(--color-03);
}

@media (max-width: 767.98px) {
  .main-heading {
    block-size: 66px;
    font-size: 14px;
  }
}

@media (min-width: 768px) {
  .main-heading {
    block-size: 86px;
    font-size: 20px;
  }
}





/* main [aside]
-------------------------------------------------------------------------------- */
.banner {
  display: flex;
  justify-content: center;
  inline-size: calc(100% - var(--gap) * 2);
  margin-inline: auto;
}

.banner_link {
  filter: drop-shadow(0 3px 6px rgb(0 0 0 / .16));
}

@media (max-width: 767.98px) {
  .banner {
    flex-wrap: wrap;
    gap: min(8 / var(--max) * 100vw, 10.64px) min(6 / var(--max) * 100vw, 7.98px);
    margin-block: min(16 / var(--max) * 100vw, 21.279px);
  }

  .banner_link {
    inline-size: min(116 / var(--max) * 100vw, 154px);
  }
}

@media (min-width: 768px) {
  .banner {
    gap: min(10 / var(--max) * 100vw, 10px);
    margin-block: min(56 / var(--max) * 100vw, 56px);
  }

  .banner_link {
    inline-size: min(100%, 154px);
  }
}





/* main [section]
-------------------------------------------------------------------------------- */
.shop-wrapper {
  scroll-margin-block-start: calc(var(--nav) + 20px);
  border-width: 3px;
  border-style: solid;
  border-color: var(--_shop-color);
  border-radius: 10px;
}

.shop_head {
  display: grid;
  place-items: center;
  background-color: var(--_shop-color);
}

.shop_body_term {
  border-block-end: 1px solid #707070;
}

.shop_body_heading {
  margin-block-start: var(--leading-trim);
  padding-block-end: calc(16 / 29 * 1em);
  line-height: 1;
  color: var(--_shop-color);
}

/* Application */
.shop_app-link {
  display: flex;
  padding: 10px;
}

.shop_app-link_media {
  overflow: clip;
  display: grid;
  flex-shrink: 0;
  place-items: center;
  border: 1px solid #afafaf;
  border-radius: 15px;
}

.shop_app-link_info {
  display: grid;
  grid-auto-rows: max-content;
  margin-block-start: var(--leading-trim);
}

.shop_app-link_term {
  font-weight: 700;
  color: var(--color-02);
}

.shop_app-link_desc {
  text-align: justify;
}

/* SNS */
.shop_sns-wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  place-items: center;
  inline-size: fit-content;
  margin-inline: auto;
}

/* Instagram account list */
.shop_account-wrapper {
  display: grid;
}

.shop_account-link {
  display: flex;
  padding: 10px;
}

.shop_account-link_media {
  overflow: hidden;
  flex-shrink: 0;
  border-radius: 100%;
}

.shop_account-link_info {
  display: grid;
  grid-auto-rows: max-content;
  margin-block-start: var(--leading-trim);
}

.shop_account-link_term {
  font-weight: 700;
  color: var(--_shop-color);
}

.shop_account-link_desc {
  word-break: break-word;
}

@media (max-width: 767.98px) {
  .shop-wrapper {
    max-inline-size: 400px;
  }

  .shop-wrapper~.shop-wrapper {
    margin-block-start: 60px;
  }

  .shop-wrapper:last-of-type {
    margin-block-end: 60px;
  }

  .shop_head {
    block-size: 60px;
    padding-block-end: 2px;
  }

  .shop_body {
    padding: 40px 16px;
  }

  .shop_body_item:nth-of-type(3) {
    margin-block-start: 60px;
  }

  .shop_body_heading {
    font-size: 18px;
  }

  .shop_body_lead {
    margin-inline: 8px;
    margin-block-start: 12px;
  }

  /* Application */
  .shop_app-link {
    column-gap: 30px;
    margin-inline: 10px;
    margin-block: 10px 50px;
  }

  .shop_app-link_media {
    inline-size: 80px;
    block-size: 80px;
  }

  .shop_app-link_image {
    inline-size: 70px;
  }

  .shop_app-link_info {
    row-gap: 4px;
  }

  .shop_app-link_term {
    font-size: 16px;
  }

  .shop_app-link_desc {
    font-size: 14px;
    line-height: calc(20 / 14);
  }

  /* SNS */
  .shop_sns-wrapper {
    gap: 50px;
    margin-block: 60px 20px;
  }

  .shop_sns_link {
    inline-size: 50px;
    block-size: 50px;
  }

  /* Instagram account list */
  .shop_account-wrapper {
    margin-block-start: 24px;
  }

  .shop_account-link {
    column-gap: 16px;
    margin: 10px 10px 0;
  }

  .shop_account-link_media {
    inline-size: 66px;
    block-size: 66px;
  }

  .shop_account-link_term {
    font-size: 12px;
  }

  .shop_account-link_desc {
    font-size: 14px;
    line-height: calc(20 / 14);
  }
}

@media (min-width: 768px) {
  .shop-wrapper {
    inline-size: min(100% - var(--gap) * 2, 600px);
  }

  .shop-wrapper~.shop-wrapper {
    margin-block-start: 70px;
  }

  .shop-wrapper:last-of-type {
    margin-block-end: 160px;
  }

  .shop_head {
    block-size: 96px;
  }

  .shop_head_image {
    inline-size: 150px;
    block-size: auto;
  }

  .shop_body {
    padding: 50px 30px;
  }

  .shop_body_item:nth-of-type(3) {
    margin-block-start: 96px;
  }

  .shop_body_heading {
    font-size: 29px;
  }

  .shop_body_lead {
    margin-inline-start: 8px;
    margin-block-start: 24px;
  }

  /* Application */
  .shop_app-link {
    column-gap: 30px;
    margin-inline: 20px;
    margin-block: 20px 60px;
  }

  .shop_app-link_media {
    inline-size: 133px;
    block-size: 133px;
  }

  .shop_app-link_info {
    row-gap: 16px;
  }

  .shop_app-link_term {
    font-size: 25px;
  }

  .shop_app-link_desc {
    font-size: 18px;
  }

  /* SNS */
  .shop_sns-wrapper {
    gap: 85px;
    margin-block: 64px 16px;
  }

  /* Instagram account list */
  .shop_account-wrapper {
    margin-block-start: 50px;
  }

  .shop_account-link {
    column-gap: 28px;
    margin: 10px 20px;
  }

  .shop_account-link_info {
    row-gap: 4px;
  }

  .shop_account-link_term {
    font-size: 20px;
  }

  .shop_account-link_desc {
    font-size: 18px;
    line-height: calc(26 / 18);
  }
}