@charset "utf-8";
/* =========================================================
   トップページ固有のスタイル (top.css)
/* =========================================================
   トップページ ファーストビュー（メインビジュアル）の装飾
   ========================================================= */
.p-mainVisual__inner {
  position: relative;
}

/* 1. オーバーレイ背景（人物が見えなくなるため削除） */
/* .p-mainVisual__imgLayer::after は使用しません */

/* 2. テキストレイヤー：カードを使わずタイポグラフィの美しさで魅せる */
.p-mainVisual__textLayer {
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  z-index: 2;
  text-align: center !important;
  width: 100% !important;
  max-width: 1100px !important;
  padding: 0 20px !important;
  box-sizing: border-box !important;
  
  /* カード化（背景色・枠線・余白）をすべて解除 */
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border: none !important;
  box-shadow: none !important;
  
  /* HTMLのインラインスタイル（白のテキストシャドウなど）を打ち消す */
  text-shadow: none !important; 
}

@media (max-width: 599px) {
  .p-mainVisual__textLayer {
    /* 左右のmarginを消し、paddingで余白を確保して中央を維持 */
    margin: 0 !important;
    padding: 0 16px !important;
  }
}

/* 見出しのタイポグラフィ強化 */
.p-mainVisual__slideTitle {
  font-weight: 800 !important;
  font-size: min(4rem, 8vw) !important;
  line-height: 1.15 !important;
  margin-bottom: 24px !important;
  letter-spacing: -0.01em !important;
  text-align: center !important;
  
  /* 背景のライトブルーに対して強いコントラストを持つネイビー（Slate 900） */
  color: #0f172a !important; 
  
  /* 白い線（ネットワーク図）と重なっても読めるように白い光彩を強めに入れる */
  text-shadow: 0 4px 16px rgba(255, 255, 255, 0.8), 0 0 8px rgba(255, 255, 255, 1) !important;
}

/* サブテキストのタイポグラフィ強化 */
.p-mainVisual__slideText {
  font-weight: 700 !important;
  font-size: 1.25rem !important;
  line-height: 1.8 !important;
  margin-bottom: 40px !important;
  text-align: center !important;
  
  /* 少し明るめのスレートグレー（Slate 800） */
  color: #1e293b !important;
  text-shadow: 0 4px 12px rgba(255, 255, 255, 0.9), 0 0 4px rgba(255, 255, 255, 1) !important;
}

@media (max-width: 599px) {
  .p-mainVisual__slideTitle {
    /* SCG20などの狭いスマホでもはみ出さないサイズに調整 */
    font-size: min(2rem, 8vw) !important;
    margin-bottom: 12px !important; 
  }
  .p-mainVisual__slideText {
    font-size: 0.95rem !important;
    margin-bottom: 20px !important; 
  }
}

/* 3. CTAボタンのリッチ化 */
.p-mainVisual__slideBtn .c-mvBtn__btn {
  background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%) !important;
  color: #ffffff !important;
  border: none !important;
  border-radius: 8px !important; /* 40px -> 8px */
  padding: 24px 64px !important; /* 20px 64px -> 24px 64px */
  font-weight: 700 !important;
  font-size: 1.15rem !important;
  box-shadow: 0 8px 24px rgba(59, 130, 246, 0.5), inset 0 2px 0 rgba(255, 255, 255, 0.3) !important;
  transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important;
  position: relative;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

@media (max-width: 599px) {
  .p-mainVisual__slideBtn {
    margin-top: 24px !important; 
    margin-bottom: 64px !important;
    margin-left: auto !important;
    margin-right: auto !important;  
  }
  .p-mainVisual__slideBtn .c-mvBtn__btn {
    padding: 16px 32px !important; /* スマホではボタンを調整 */
    font-size: 0.95rem !important;
  }
}

/* CTAボタンのホバーアニメーション */
.p-mainVisual__slideBtn .c-mvBtn__btn:hover {
  transform: translateY(-8px) !important; /* -6px -> -8px */
  box-shadow: 0 16px 32px rgba(59, 130, 246, 0.6), inset 0 2px 0 rgba(255, 255, 255, 0.4) !important;
  background: linear-gradient(135deg, #2563eb 0%, #7c3aed 100%) !important;
}

.p-mainVisual__slideBtn .c-mvBtn__btn::after {
  content: "";
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0) 100%);
  transform: rotate(45deg) translateX(-100%);
  transition: transform 0.6s ease-in-out;
}

.p-mainVisual__slideBtn .c-mvBtn__btn:hover::after {
  transform: rotate(45deg) translateX(100%);
}

/*
  下層用ファーストビュー (.p-customFv)
*/
.p-customFv {
  position: relative;
  padding-top: 100px;
  padding-bottom: 100px;
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  min-height: 520px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.p-customFv__overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    135deg,
    rgba(15, 23, 42, 0.8) 0%,
    rgba(30, 58, 138, 0.8) 50%,
    rgba(6, 182, 212, 0.6) 100%
  );
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 1;
}

.p-customFv__inner {
  position: relative;
  z-index: 2;
  width: 100%;
  animation: fadeUp 1s ease-out forwards;
  opacity: 0;
  transform: translateY(20px);
}

@keyframes fadeUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.p-customFv__title {
  text-align: center;
  margin: 0 auto 24px;
  font-size: 40px;
  font-weight: 900;
  border-bottom: 2px solid rgba(255, 255, 255, 0.4);
  display: inline-block;
  color: #ffffff;
  text-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
  letter-spacing: 0.02em;
}

.p-customFv__copy {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.8;
  color: #f8fafc;
  margin: 0 0 40px 0;
  letter-spacing: 0.05em;
  text-shadow: 0 4px 12px rgba(0, 0, 0, 0.6); /* 2px 12px -> 4px 12px */
}

.p-customFv__btnWrap {
  margin-top: 48px;
  display: flex;
  justify-content: center;
}

.p-customFv__btn {
  background: linear-gradient(135deg, #0ea5e9 0%, #3b82f6 100%);
  color: #ffffff !important;
  padding: 20px 64px; /* 18px 56px -> 20px 64px */
  border-radius: 8px; /* 999px -> 8px */
  font-size: 18px;
  font-weight: 900;
  border: 1px solid rgba(255, 255, 255, 0.3);
  box-shadow:
    0 8px 24px rgba(14, 165, 233, 0.5),
    inset 0 2px 0 rgba(255, 255, 255, 0.4);
  transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  display: inline-flex;
  justify-content: center;
  align-items: center;
  text-decoration: none !important;
  position: relative;
  overflow: hidden;
}

.p-customFv__btn::before {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 50%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.4),
    transparent
  );
  transform: skewX(-20deg);
  transition: 0.7s;
}

.p-customFv__btn:hover {
  transform: translateY(-8px) scale(1.05); /* -6px -> -8px */
  box-shadow:
    0 16px 40px rgba(14, 165, 233, 0.7),
    inset 0 2px 0 rgba(255, 255, 255, 0.6);
  background: linear-gradient(135deg, #0284c7 0%, #2563eb 100%);
}

.p-customFv__btn:hover::before {
  left: 150%;
}

@media (max-width: 599px) {
  .p-customFv {
    padding-top: 64px;
    padding-bottom: 64px;
    min-height: 480px;
    background-position: center center;
  }
  .p-customFv__title {
    font-size: 24px; /* 26px -> 24px */
  }
  .p-customFv__copy {
    font-size: 16px;
  }
}
