/* =========================================================
   LIFE X Dealer
   Campaign Floating Banner
========================================================= */

.lifex-campaign-floating,
.lifex-campaign-floating *,
.lifex-campaign-floating *::before,
.lifex-campaign-floating *::after {
  box-sizing: border-box;
}


/* =========================================================
   WRAPPER - PC
========================================================= */

.lifex-campaign-floating {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 9990;

  width: min(400px, calc(100vw - 48px));

  visibility: hidden;
  opacity: 0;

  transform: translateY(20px);

  pointer-events: none;

  transition:
    opacity .45s ease,
    transform .45s ease,
    visibility .45s ease;
}


/* =========================================================
   SHOW
========================================================= */

.lifex-campaign-floating.is-visible {
  visibility: visible;
  opacity: 1;

  transform: translateY(0);

  pointer-events: auto;
}


/* =========================================================
   HIDE
========================================================= */

.lifex-campaign-floating.is-hiding {
  visibility: hidden;
  opacity: 0;

  transform: translateY(15px);

  pointer-events: none;
}


/* =========================================================
   INNER
========================================================= */

.lifex-campaign-floating__inner {
  position: relative;
  width: 100%;
}


/* =========================================================
   LINK
========================================================= */

.lifex-campaign-floating__link {
  display: block;
  width: 100%;

  overflow: hidden;

  background: #fff;

  box-shadow:
    0 10px 35px rgba(38, 63, 73, .18);

  text-decoration: none;

  transition:
    transform .25s ease,
    box-shadow .25s ease;
}

.lifex-campaign-floating__link:hover {
  transform: translateY(-3px);

  box-shadow:
    0 14px 40px rgba(38, 63, 73, .24);
}


/* =========================================================
   IMAGE
========================================================= */

.lifex-campaign-floating__link picture {
  display: block;
  width: 100%;
}

.lifex-campaign-floating__image {
  display: block;

  width: 100%;
  height: auto;

  margin: 0;
}


/* =========================================================
   CLOSE
========================================================= */

.lifex-campaign-floating__close {
  position: absolute;

  top: -14px;
  right: -14px;

  z-index: 3;

  width: 34px;
  height: 34px;

  margin: 0;
  padding: 0;

  border: 0;
  border-radius: 50%;

  background: #263f49;

  cursor: pointer;

  box-shadow:
    0 4px 14px rgba(0, 0, 0, .18);

  appearance: none;
  -webkit-appearance: none;

  transition:
    opacity .2s ease,
    transform .2s ease;
}

.lifex-campaign-floating__close:hover {
  opacity: .85;
  transform: scale(1.05);
}

.lifex-campaign-floating__close span {
  position: absolute;

  top: 50%;
  left: 50%;

  display: block;

  width: 14px;
  height: 1px;

  background: #fff;
}

.lifex-campaign-floating__close span:first-child {
  transform:
    translate(-50%, -50%)
    rotate(45deg);
}

.lifex-campaign-floating__close span:last-child {
  transform:
    translate(-50%, -50%)
    rotate(-45deg);
}


/* =========================================================
   SP
========================================================= */

@media screen and (max-width: 767px) {

  /*
   * SPでは画面全体をポップアップ領域として使用。
   * 背景を薄く暗くし、バナーを中央に配置。
   */

  .lifex-campaign-floating {
    top: 0;
    right: auto;
    bottom: auto;
    left: 0;

    width: 100%;
    height: 100dvh;

    padding: 20px;

    display: flex;
    align-items: center;
    justify-content: center;

    background: rgba(20, 35, 40, .28);

    transform: none;
  }


  /* 表示 */

  .lifex-campaign-floating.is-visible {
    transform: none;
  }


  /* 非表示 */

  .lifex-campaign-floating.is-hiding {
    transform: none;
  }


  /* バナー本体 */

  .lifex-campaign-floating__inner {
    width: min(82vw, 340px);

    transform: translateY(12px) scale(.97);

    transition:
      transform .4s ease;
  }


  .lifex-campaign-floating.is-visible
  .lifex-campaign-floating__inner {
    transform: translateY(0) scale(1);
  }


  .lifex-campaign-floating.is-hiding
  .lifex-campaign-floating__inner {
    transform: translateY(8px) scale(.98);
  }


  /* バナー */

  .lifex-campaign-floating__link {
    width: 100%;

    box-shadow:
      0 16px 45px rgba(0, 0, 0, .24);
  }


  .lifex-campaign-floating__link:hover {
    transform: none;
  }


  /* 閉じるボタン */

  .lifex-campaign-floating__close {
    top: -15px;
    right: -15px;

    width: 34px;
    height: 34px;

    background: #263f49;

    box-shadow:
      0 5px 15px rgba(0, 0, 0, .22);
  }


  .lifex-campaign-floating__close span {
    width: 13px;
  }

}