@charset "UTF-8";
/* -------------------------------------------*/
html {
  overflow-x: hidden;
}
body {
  height: 100%;
  position: relative;
  overflow-x: hidden;
  font-family: 'Noto Sans JP', serif;
  color: #4d4846;
}
body::before {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  background: url(../images/back_img.webp) no-repeat top center/cover;
}
.l-main {
  display: flex;
  flex-direction: column;
  position: relative;
  width: 100%;
  max-width: 527px;
  min-height: 100dvh;
  margin: 0 auto;
}
.no-link {
  opacity: 0.4 !important;
  pointer-events: none !important;
}
img {
  display: block;
}
@keyframes pulse {
  0% {
    transform: scale3d(1, 1, 1);
  }
  50% {
    transform: scale3d(1.05, 1.05, 1.05);
  }
  100% {
    transform: scale3d(1, 1, 1);
  }
}

/* -------------------------------------------*/
.top-main {
  width: 100%;
}
.l-main .slider {
  position: relative;
  margin-top: -2%;
  z-index: 10;
}
.l-main .slick-list {
  padding: 0 30% !important;
}
.l-main .slider .slick-slide {
  position: relative;
  transition: transform 0.5s ease;
  transform: scale(0.7);
  margin: 0 -3.5% !important;
}
.l-main .slider .slick-slide::after {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.2);
}
.l-main .slider .slick-slide.is-active {
  transform: scale(1);
  z-index: 10;
}
.l-main .slider .slick-slide.is-active::after {
  display: none;
}
.top-bottom {
  position: relative;
  margin-top: -3%;
  padding-bottom: 10%;
  z-index: 1;
}
.top-bottom .top-msg {
  width: 90%;
  margin: 0 auto;
}
.top-bottom .top-btn {
  display: block;
  width: 95%;
  margin: 0 auto;
  transition: 0.3s;
  animation-iteration-count: infinite;
  animation-duration: 1.5s;
  animation-fill-mode: both;
  animation-name: pulse;
}
.top-bottom .top-btn:hover {
  opacity: 0.8;
  transform: translate(0, 3%);
}
.top-bottom .bottom-links {
  width: 100%;
  display: flex;
  justify-content: center;
  gap: 0 3%;
  margin-top: 4%;
  color: #fff;
  font-size: min(3.05vw, 14px);
  font-weight: 700;
}
/* オーバーレイ（最初の説明） */
.intro-overlay {
  position: fixed;
  inset: 0;
  background: rgb(255, 255, 255, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
  opacity: 1;
  transition: opacity 0.6s ease;
}
.intro-overlay img {
  max-width: 527px;
  width: 100%;
  height: auto;
  margin: -5dvh auto 0;
}
.page-main {
  margin-top: -2%;
}
html.steps {
  overflow: hidden;
}
.setps-main {
  position: relative;
  padding: 42px 0 5dvh;
  background-color: #fff;
}
:root {
  --card-w: 80%;
  --card-h: 60dvh;
  --stack-gap-x: 27px; /* 左右のズレ */
  --stack-gap-y: 14px; /* 上下のズレ */
  --snap-ms: 220ms;
}
/* デッキ領域 */
.deck {
  position: relative;
  left: -6px;
  width: min(92vw, var(--card-w));
  height: min(130vw, var(--card-h));
  touch-action: pan-y;
  margin: 0 auto;
  z-index: 1;
}

/* カード本体（影・背景色なし） */
.card {
  position: absolute;
  inset: 0;
  border-radius: 10px;
  overflow: hidden;
  background: center/cover no-repeat;
  user-select: none;
  will-change: transform;
  transition: transform var(--snap-ms) cubic-bezier(0.2, 0.8, 0.2, 1);
  filter: drop-shadow(0 0 23.32px rgba(29, 29, 29, 0.1));
}

/* 配置は疑似クラスに頼らず state クラスで管理 */
.pos-top {
  transform: translate(0, 0) scale(1);
  z-index: 30;
}
.pos-mid {
  transform: translate(calc(var(--stack-gap-x) * 0.5), calc(var(--stack-gap-y) * -1)) scale(0.98);
  z-index: 20;
}
.pos-back {
  transform: translate(var(--stack-gap-x), calc(var(--stack-gap-y) * -2)) scale(0.96);
  z-index: 10;
}

/* 新規追加時にアニメさせないためのフラグ */
.no-anim {
  transition: none !important;
}

/* 色カバー：背面は不透明、最前面だけ自動で外れる */
.card .cover {
  position: absolute;
  inset: 0;
  opacity: 1;
  transition: opacity 240ms ease;
  pointer-events: none;
  z-index: 1; /* ← フィルター(::before)より背面にする */
}
.pos-top .cover {
  opacity: 0;
}

/* スワイプ方向フィルター（色＋アイコン） */
.card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: transparent; /* 初期は透明 */
  opacity: 0; /* 初期は非表示 */
  transition: opacity 0.12s linear;
  pointer-events: none;
  z-index: 3; /* ← cover より前 */
}
/* 右（YES）にスワイプ中：#EA86B4, 0.8 */
.card.like-state::before {
  background: #ea86b4;
  opacity: 0.8;
}
/* 左（NO）にスワイプ中：#89A3F5, 0.8 */
.card.nope-state::before {
  background: #89a3f5;
  opacity: 0.8;
}
.badge {
  opacity: 0;
  pointer-events: none;
  position: absolute;
}
/* 左上アイコン（YES/NOで切替） */
.card.like-state::after,
.card.nope-state::after {
  content: '';
  display: block;
  position: absolute;
  top: 5dvh;
  width: 5dvh;
  aspect-ratio: 88/127;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  pointer-events: none;
  z-index: 100;
}
/* YESアイコン */
.card.like-state::after {
  left: 8%;
  background-image: url('../images/yes-white.webp');
}
/* NOアイコン */
.card.nope-state::after {
  right: 8%;
  background-image: url('../images/no-white.webp');
}

/* 操作ボタン */
.controls {
  display: flex;
  gap: 22px;
  justify-content: center;
  align-items: center;
  position: absolute;
  bottom: 8dvh;
  left: 49%;
  transform: translate(-50%, 0);
  z-index: 1000;
}
.ctrl {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  cursor: pointer;
  width: 9.5dvh;
  aspect-ratio: 1/1;
}
.ctrl img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.ctrl:active img {
  transform: scale(0.96);
}

/* ダミーは常に色で隠す */
.card.always-covered .cover {
  opacity: 1 !important;
}

.diag-main {
  display: flex;
  align-items: center;
  height: 100%;
}
.diag-main img {
  width: 86%;
  height: auto;
  margin: 30vh auto 0;
}
.thanks {
  margin: 0 auto 8%;
}
.thanks-main {
  width: 75%;
  margin: 0 auto;
}
.thanks-line {
  width: 95%;
  margin: 5% auto 0;
  transition: 0.3s;
  animation-iteration-count: infinite;
  animation-duration: 1.5s;
  animation-fill-mode: both;
  animation-name: pulse;
}
.thanks-line:hover {
  opacity: 0.6;
}

@keyframes pulse {
  0% {
    transform: scale3d(1, 1, 1);
  }
  50% {
    transform: scale3d(1.05, 1.05, 1.05);
  }
  100% {
    transform: scale3d(1, 1, 1);
  }
}
.bottom-link {
  display: inline-block;
  font-size: 28px;
  text-decoration: underline;
  transition: 0.3s;
}

.bottom-link:hover {
  opacity: 0.6;
  transform: translate(0, 3%);
}
