@charset "UTF-8";
/* ===== フォント（Google Fonts / index.html で読み込み） =====
 * 本文・UI: Encode Sans Condensed (400, 600, 700)
 * KV見出しなど: Alexandria (400, 600)
 * ===== reset ===== */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scrollbar-gutter: stable;
}

/* ===== base ===== */
.body {
  position: relative;
  margin: 0;
  padding: 0;
  font-family: "Noto Sans JP", sans-serif;
  color: #06243a;
  line-height: 1.6;
}

.main {
  padding-top: min(6.25vw, 80px);
}

.sp {
  display: none;
}

.pc {
  display: block;
}

@media (max-width: 768px) {
  .main {
    padding-top: 17.44vw;
  }
  .sp {
    display: block;
  }
  .pc {
    display: none;
  }
}
/* ===== ふわっと表示用（共通） .fade .up で組み合わせ ===== */
.fade {
  opacity: 0;
  transition: opacity 1s ease;
}

.fade.is_visible {
  opacity: 1;
}

.up {
  transform: translateY(60px);
  transition: transform 1s ease;
}

.up.is_visible {
  transform: translateY(0);
}

.fade.up {
  opacity: 0;
  transform: translateY(60px);
  transition: opacity 1s ease, transform 1s ease;
}

.fade.up.is_visible {
  opacity: 1;
  transform: translateY(0);
}

/* 左から表示 */
.fade.left {
  opacity: 0;
  transform: translateX(-100px);
  transition: opacity 1s ease, transform 1s ease;
}

.fade.left.is_visible {
  opacity: 1;
  transform: translateX(0);
}

/* 右から表示 */
.fade.right {
  opacity: 0;
  transform: translateX(100px);
  transition: opacity 1s ease, transform 1s ease;
}

.fade.right.is_visible {
  opacity: 1;
  transform: translateX(0);
}

@media (max-width: 768px) {
  /* ===== ふわっと表示用（共通） .fade .up で組み合わせ ===== */
  .up {
    transform: translateY(30px);
  }
  .fade.up {
    transform: translateY(30px);
  }
  /* 左から表示 */
  .fade.left {
    transform: translateX(-50px);
  }
  /* 右から表示 */
  .fade.right {
    transform: translateX(50px);
  }
}
/* ===== #header（常に画面上部に固定） ===== */
#header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background-color: #0068b7;
  padding: 0 min(1.88vw, 24px);
  height: min(6.25vw, 80px);
}

#header .header_inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
}

#header .header_brand {
  display: flex;
  align-items: center;
  gap: min(1.88vw, 24px);
  flex-shrink: 0;
}

#header .logo {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  width: min(29.14vw, 373px);
}

#header .logo .logo_link {
  display: block;
  width: 100%;
  height: 100%;
}

#header .logo .logo_image .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#header .header_label {
  font-family: "Encode Sans Condensed", sans-serif;
  font-size: min(1.56vw, 20px);
  font-weight: 600;
  color: #ffffff;
  white-space: nowrap;
  padding-left: min(1.25vw, 16px);
  border-left: 2px solid #ffffff;
  line-height: 1.5;
}

#header .header_actions {
  display: flex;
  align-items: center;
  gap: min(0.63vw, 8px);
  flex-shrink: 0;
}

#header .header_actions .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: min(0.63vw, 8px);
  padding: min(0.31vw, 4px);
  text-decoration: none;
  border-radius: min(0.31vw, 4px);
  background-color: #ffffff;
  color: #0068b7;
  cursor: pointer;
  transition: opacity 0.2s ease;
  min-width: min(18.75vw, 240px);
}

#header .header_actions .btn:hover {
  opacity: 0.8;
}

#header .header_actions .btn_with_icon .image_box {
  width: min(8.13vw, 104px);
  aspect-ratio: 104/40;
}

#header .header_actions .btn_with_icon .image_box .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#header .header_actions .btn_with_icon .btn_text_wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-width: min(9.38vw, 120px);
}

#header .header_actions .btn_with_icon .btn_text_wrap .btn_text {
  white-space: nowrap;
  font-family: "Encode Sans Condensed", sans-serif;
  font-size: min(1.56vw, 20px);
  font-weight: 600;
  color: #0068b7;
  line-height: 1.5;
}

#header .header_actions .btn_arrow {
  flex-shrink: 0;
  width: min(1.56vw, 20px);
  height: min(1.56vw, 20px);
}

#header .header_actions .btn_arrow .image {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}

@media (max-width: 768px) {
  #header {
    padding: 0 2.05vw;
    height: 17.44vw;
  }
  #header .header_inner {
    gap: 4.1vw;
  }
  #header .header_brand {
    gap: 2.05vw;
  }
  #header .logo {
    width: 30.13vw;
  }
  #header .header_label {
    font-size: 3.08vw;
    padding: 2.31vw 0 2.31vw 2.05vw;
  }
  #header .header_actions {
    gap: 1.03vw;
  }
  #header .header_actions .btn {
    gap: 0;
    padding: 2.05vw 0 2.05vw 1.54vw;
    border-radius: 1.03vw;
    min-width: auto;
    min-width: 20.26vw;
  }
  #header .header_actions .btn_with_icon .image_box {
    display: none;
  }
  #header .header_actions .btn_with_icon .btn_text_wrap {
    min-width: auto;
    width: 100%;
  }
  #header .header_actions .btn_with_icon .btn_text_wrap .btn_text {
    font-size: 3.59vw;
  }
  #header .header_actions .btn_arrow {
    width: 5.13vw;
    height: 5.13vw;
  }
}
/* ===== #top アンカーナビ（KV直下・スクロールでヘッダー直下に固定追従） ===== */
#top .anchor_nav {
  position: -webkit-sticky;
  position: sticky;
  top: min(6.25vw, 80px);
  z-index: 90;
  background-color: #0068b7;
  padding: 0 min(1.88vw, 24px) min(1.25vw, 16px);
  margin-top: 0;
}

#top .anchor_nav .anchor_nav_inner {
  max-width: min(42.81vw, 548px);
  margin: 0 auto;
}

#top .anchor_nav .list {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  border-radius: 9999px;
  border: 1px solid #ffffff;
  overflow: hidden;
  background-color: rgba(255, 255, 255, 0.7);
  align-items: center;
}

#top .anchor_nav .list .item {
  margin: 0;
  flex: 1;
  min-width: 0;
}

#top .anchor_nav .list .item .link {
  font-family: "Noto Sans JP", sans-serif;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #06243a;
  padding: min(0.31vw, 4px) min(0.63vw, 8px);
  font-size: min(1.09vw, 14px);
  font-weight: 700;
  line-height: 2;
  text-decoration: none;
  text-align: center;
  border-radius: 9999px;
  transition: background-color 0.2s ease;
}

#top .anchor_nav .list .item .link:hover,
#top .anchor_nav .list .item .link.is_active {
  background-color: #359eed;
}

@media (max-width: 768px) {
  #top .anchor_nav {
    top: 17.44vw;
    padding: 0 2.05vw 3.85vw;
  }
  #top .anchor_nav .anchor_nav_inner {
    max-width: 100%;
    width: 100%;
  }
  #top .anchor_nav .list .item .link {
    height: 9.23vw;
    font-size: 3.08vw;
    line-height: 1.2;
  }
  #top .anchor_nav .list .item .link:hover {
    background-color: transparent;
  }
  #top .anchor_nav .list .item .link.is_active {
    background-color: #359eed;
  }
}
/* ===== main / #top ===== */
.top {
  padding-top: 0;
}

/* ===== #top .kv ===== */
#top .kv {
  padding: 0 min(1.88vw, 24px) min(1.09vw, 14px);
  background-color: #0068b7;
  position: relative;
  z-index: 2;
}

#top .kv .kv_inner {
  position: relative;
  overflow: hidden;
  border-radius: min(1.56vw, 20px);
}

#top .kv .kv_video_wrap {
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: min(1.56vw, 20px);
  overflow: hidden;
}

#top .kv .kv_video {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

#top .kv .kv_bg {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 20.08vw;
  z-index: 2;
}

#top .kv .kv_bg .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#top .kv .kv_overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.3);
  z-index: 1;
}

#top .kv .kv_content {
  position: relative;
  z-index: 2;
  text-align: center;
  padding: min(5.47vw, 70px) min(1.88vw, 24px) min(8.59vw, 110px);
  display: flex;
  align-items: center;
  justify-content: center;
}

#top .kv .kv_title {
  margin: 0;
  color: #ffffff;
  font-family: "Encode Sans Condensed", sans-serif;
  font-weight: 400;
  font-size: min(12.5vw, 160px);
  line-height: 1;
  letter-spacing: 0.02em;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

#top .kv .kv_title_line {
  display: block;
}

#top .kv .kv_title_line_1 {
  letter-spacing: 0.1em;
}

#top .kv .kv_title_line_2 {
  letter-spacing: 0.02em;
}

@media (max-width: 768px) {
  #top .kv {
    padding: 0 2.05vw 3.85vw;
  }
  #top .kv .kv_inner {
    border-radius: 5.13vw;
  }
  #top .kv .kv_video_wrap {
    border-radius: 5.13vw;
  }
  #top .kv .kv_bg {
    height: 38.46vw;
  }
  #top .kv .kv_content {
    padding: 46.92vw 2.56vw 55.13vw;
  }
  #top .kv .kv_title {
    font-size: 16.41vw;
  }
}
/* ===== #top .message ===== */
#top .message {
  background: #0068b7;
  padding: min(3.36vw, 43px) min(1.56vw, 20px) min(30.23vw, 387px);
  position: relative;
}

#top .message::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(to bottom, #0068b7 0%, #74acd6 60%, #ffffff 100%);
  pointer-events: none;
}

#top .message::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 23.91vw;
  background-image: url("../images/message_bg.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  pointer-events: none;
}

#top .message .message_inner {
  max-width: min(85.94vw, 1100px);
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: min(9.22vw, 118px);
  position: relative;
  z-index: 1;
}

#top .message .message_left {
  display: flex;
  align-items: flex-start;
}

#top .message .message_left .message_visual {
  width: min(27.5vw, 352px);
}

#top .message .message_left .message_visual .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#top .message .message_right {
  color: #ffffff;
  flex: 1;
}

#top .message .message_lead {
  margin: 0 0 min(3.75vw, 48px);
  font-size: min(2.5vw, 32px);
  font-weight: 700;
  line-height: 1.5;
  color: #ffffff;
}

#top .message .message_text {
  margin: 0 0 min(2.19vw, 28px);
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
  color: #ffffff;
}

#top .message .message_right .message_text:last-child {
  margin-bottom: 0;
}

@media (max-width: 768px) {
  #top .message {
    padding: 16.41vw 8.21vw 96.92vw;
  }
  #top .message::before {
    top: 110.51vw;
    height: 171.03vw;
  }
  #top .message::after {
    height: 78.46vw;
    background-image: url("../images/message_bg_sp.png");
  }
  #top .message .message_inner {
    max-width: 100%;
    flex-direction: column;
    gap: 8.21vw;
    align-items: unset;
  }
  #top .message .message_left {
    justify-content: center;
  }
  #top .message .message_left .message_visual {
    width: 81.4vw;
  }
  #top .message .message_lead {
    margin: 0 0 12.31vw;
    font-size: 7.18vw;
  }
  #top .message .message_text {
    margin: 0 0 7.18vw;
    font-size: 3.59vw;
  }
}
/* ===== #top .features（左固定・右スクロール＋アコーディオン） ===== */
#top .features {
  background-color: #f5f5f5;
  padding: 0 0 min(7.81vw, 100px);
  position: relative;
  z-index: 1;
}

#top .features::before {
  content: "";
  position: absolute;
  top: max(-6.88vw, -88px);
  left: 0;
  width: 100%;
  height: min(6.95vw, 89px);
  background-color: #f5f5f5;
  border-radius: min(3.13vw, 40px) min(3.13vw, 40px) 0 0;
  z-index: -1;
}

#top .features .features_inner {
  max-width: min(100vw, 1280px);
  margin: 0 auto;
  padding: 0 min(1.56vw, 20px);
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
}

#top .features .features_visual {
  position: relative;
  min-height: 0;
}

/* このエリアの間だけ左図を固定。右側はスクロールで流れる */
#top .features .features_visual_sticky {
  position: -webkit-sticky;
  position: sticky;
  top: min(12.5vw, 160px);
  padding: min(1.88vw, 24px) 0;
}

#top .features .features_title {
  font-size: min(3.75vw, 48px);
  font-weight: 700;
  margin: 0 0 min(3.75vw, 48px);
  text-align: center;
}

#top .features .features_lead {
  font-size: min(1.88vw, 24px);
  font-weight: 700;
  margin: 0 0 min(1.25vw, 16px);
  text-align: center;
  line-height: 1.5;
}

#top .features .features_image {
  width: min(42.81vw, 548px);
  margin: 0 auto;
  overflow: hidden;
}

#top .features .image_box.features_image .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#top .features .features_content {
  min-height: min(31.25vw, 400px);
}

#top .features .accordion_list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

#top .features .accordion_item {
  border-top: 1px solid #b2b2b2;
}

#top .features .accordion_item:last-of-type {
  border-bottom: 1px solid #b2b2b2;
}

#top .features .accordion_head {
  padding: min(1.88vw, 24px) min(3.13vw, 40px) 0;
}

#top .features .accordion_label {
  display: block;
  font-size: min(0.94vw, 12px);
  font-weight: 500;
  margin-bottom: min(0.63vw, 8px);
  line-height: 1;
}

#top .features .accordion_number {
  display: block;
  color: #0068b7;
  font-size: min(1.88vw, 24px);
  font-weight: 600;
  font-family: "Encode Sans Condensed", sans-serif;
  line-height: 1.5;
  margin-bottom: min(0.63vw, 8px);
}

#top .features .accordion_title {
  font-size: min(1.88vw, 24px);
  font-weight: 700;
  margin: 0 0 min(0.63vw, 8px);
}

/* アコーディオン本体：閉じ時は 1 行＋ボタン分の高さ、開き時は JS で scrollHeight をセット。transition で開閉ともスムーズに */
#top .features .accordion_body {
  overflow: hidden;
  max-height: min(9.38vw, 120px);
  transition: max-height 0.3s ease;
  will-change: max-height; /* 閉じアニメのカクつき軽減 */
}

#top .features .accordion_body.is_open {
  max-height: min(156.25vw, 2000px); /* JS で inline に上書き。未設定時フォールバック */
}

/* .is_open の有無でレイアウト・padding を切り替え（HTMLは1本化） */
#top .features .accordion_body_inner {
  display: flex;
  align-items: center;
  gap: min(0.63vw, 8px);
  padding: min(1.88vw, 24px) min(3.13vw, 40px) min(1.88vw, 24px);
  min-width: 0;
}

#top .features .accordion_body.is_open .accordion_body_inner {
  flex-direction: column;
  align-items: stretch;
  padding: min(1.88vw, 24px) min(3.13vw, 40px) min(1.88vw, 24px);
  gap: min(1.25vw, 16px);
}

#top .features .accordion_text {
  flex: 1;
  min-width: 0;
  margin: 0;
  font-size: min(1.09vw, 14px);
  line-height: 2;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

#top .features .accordion_body.is_open .accordion_text {
  -webkit-line-clamp: unset;
  display: block;
  overflow: visible;
  padding-bottom: 0;
}

#top .features .accordion_btn_wrap {
  flex-shrink: 0;
}

#top .features .accordion_body.is_open .accordion_btn_wrap {
  flex-shrink: 0;
  text-align: right;
}

/* テキストと記号を分けて擬似要素で出し、gap も CSS で管理 */
#top .features .accordion_btn {
  display: inline-flex;
  align-items: center;
  gap: min(0.63vw, 8px);
  padding: 0 min(1.25vw, 16px);
  border: none;
  border-radius: min(7.81vw, 100px);
  background-color: #0068b7;
  color: #fff;
  font-size: min(1.09vw, 14px);
  font-weight: 400;
  font-family: "Encode Sans Condensed", sans-serif;
  cursor: pointer;
  transition: opacity 0.2s ease;
  min-width: min(6.56vw, 84px);
  height: min(2.58vw, 33px);
}

#top .features .accordion_btn:hover {
  opacity: 0.8;
}

/* ::before = 文言（OPEN / CLOSE）、::after = 記号（+ / −）。.is_open で切り替え */
#top .features .accordion_btn::before {
  content: "OPEN";
}

#top .features .accordion_btn::after {
  content: "+";
  font-size: min(1.56vw, 20px);
  font-weight: 600;
  transform: translateY(-1px);
}

#top .features .accordion_body.is_open .accordion_btn::before {
  content: "CLOSE";
}

#top .features .accordion_body.is_open .accordion_btn::after {
  content: "−";
}

@media (max-width: 768px) {
  #top .features {
    padding: 0 0 20.51vw;
  }
  #top .features::before {
    top: -22.56vw;
    height: 22.82vw;
    border-radius: 10.26vw 10.26vw 0 0;
  }
  #top .features .features_inner {
    max-width: 100%;
    grid-template-columns: 1fr;
    align-items: stretch;
    padding: 0 8.21vw;
  }
  /* このエリアの間だけ左図を固定。右側はスクロールで流れる */
  #top .features .features_visual_sticky {
    position: static;
    padding: 0;
  }
  #top .features .features_title {
    font-size: 10.26vw;
    margin: 0 0 12.31vw;
  }
  #top .features .features_lead {
    font-size: 6.15vw;
    margin: 0 0 4.1vw;
  }
  #top .features .features_image {
    width: 73.85vw;
    margin-bottom: 12.31vw;
  }
  #top .features .features_content {
    min-height: 102.56vw;
  }
  #top .features .accordion_item {
    min-width: 0;
  }
  #top .features .accordion_head {
    padding: 6.15vw 4.1vw 0;
  }
  #top .features .accordion_label {
    font-size: 3.08vw;
    margin-bottom: 2.05vw;
  }
  #top .features .accordion_number {
    font-size: 6.15vw;
    margin-bottom: 2.05vw;
  }
  #top .features .accordion_title {
    font-size: 6.15vw;
    margin: 0 0 2.05vw;
  }
  /* アコーディオン本体：閉じ時は 1 行＋ボタン分（SPは余裕を持たせる）、開き時は JS でセット */
  #top .features .accordion_body {
    max-height: 140px;
  }
  #top .features .accordion_body.is_open {
    max-height: 2000px;
  }
  /* .is_open の有無でレイアウト・padding を切り替え（HTMLは1本化） */
  #top .features .accordion_body_inner {
    gap: 2.05vw;
    padding: 6.15vw 4.1vw 6.15vw;
  }
  #top .features .accordion_body.is_open .accordion_body_inner {
    padding: 6.15vw 4.1vw 6.15vw;
    gap: 4.1vw;
  }
  #top .features .accordion_text {
    font-size: 3.59vw;
  }
  /* テキストと記号を分けて擬似要素で出し、gap も CSS で管理 */
  #top .features .accordion_btn {
    gap: 2.05vw;
    padding: 0 4.1vw;
    border-radius: 25.64vw;
    font-size: 3.59vw;
    min-width: 21.54vw;
    height: 8.46vw;
  }
  /* ::before = 文言（OPEN / CLOSE）、::after = 記号（+ / −）。.is_open で切り替え */
  #top .features .accordion_btn::after {
    font-size: 5.13vw;
  }
}
/* ===== #top .culture ===== */
#top .culture {
  background-color: #f6f9fc;
  padding: min(7.81vw, 100px) min(1.56vw, 20px) min(7.81vw, 100px);
  overflow: hidden;
}

#top .culture .culture_inner {
  max-width: min(85.94vw, 1100px);
  margin: 0 auto;
}

#top .culture .culture_title {
  font-size: min(3.75vw, 48px);
  font-weight: 700;
  margin: 0 0 min(3.75vw, 48px);
  line-height: 1.5;
  text-align: center;
}

#top .culture .culture_text {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
  max-width: min(71.09vw, 910px);
  margin: 0 auto min(5vw, 64px);
}

#top .culture .culture_overview {
  margin-bottom: min(5vw, 64px);
  padding: min(3.13vw, 40px) 0 min(4.69vw, 60px);
  background-color: #ffffff;
  display: flex;
  justify-content: center;
  align-items: center;
}

#top .culture .culture_overview .image_box {
  width: min(71.02vw, 909px);
  display: block;
}

#top .culture .culture_overview .image_box .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

/* 左：写真のみ画像、右：テキスト */
#top .culture .culture_block {
  display: grid;
  grid-template-columns: min(24.38vw, 312px) 1fr;
  gap: min(1.88vw, 24px);
  align-items: start;
  margin-bottom: min(5vw, 64px);
  background-color: #ffffff;
  padding: min(3.13vw, 40px);
  width: min(78.91vw, 1010px);
  margin-left: auto;
  position: relative;
  border-radius: min(0.31vw, 4px);
}

#top .culture .culture_block.culture_cdp {
  border: 1px solid #fe931d;
}

#top .culture .culture_block.culture_contribution {
  border: 1px solid #005290;
}

#top .culture .culture_block::before {
  content: "";
  position: absolute;
  top: 0;
  left: max(-7.03vw, -90px);
  width: min(7.03vw, 90px);
  height: min(7.19vw, 92px);
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
}

#top .culture .culture_cdp::before {
  background-image: url("../images/culture_cdp_illust.svg");
}

#top .culture .culture_contribution::before {
  background-image: url("../images/culture_contribution_illust.svg");
}

#top .culture .culture_block_visual .image_box {
  width: 100%;
  aspect-ratio: 312/200;
  display: block;
}

#top .culture .culture_block_visual .image_box .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#top .culture .culture_block_title {
  font-size: min(1.88vw, 24px);
  font-weight: 700;
  margin: min(0.63vw, 8px) 0 min(1.88vw, 24px);
  line-height: 1.5;
}

#top .culture .culture_cdp .culture_block_title {
  color: #fe931d;
}

#top .culture .culture_contribution .culture_block_title {
  color: #005290;
}

#top .culture .culture_block_lead {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
}

#top .culture .culture_cdp .culture_block_lead {
  margin: 0 0 min(3.13vw, 40px);
}

#top .culture .culture_contribution .culture_block_lead {
  margin: 0 0 min(1.25vw, 16px);
}

#top .culture .culture_block_text {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
  margin: 0 0 min(3.13vw, 40px);
}

#top .culture .culture_cdp .culture_block_section + .culture_block_section {
  margin-top: min(2.5vw, 32px);
}

#top .culture .culture_block_subtitle {
  font-size: min(1.41vw, 18px);
  font-weight: 700;
  line-height: 2;
  margin: 0 0 min(0.63vw, 8px);
  padding-bottom: min(0.63vw, 8px);
}

#top .culture .culture_cdp .culture_block_subtitle {
  border-bottom: 1px solid #fe931d;
}

#top .culture .culture_contribution .culture_block_subtitle {
  border-bottom: 1px solid #005290;
}

#top .culture .culture_block_section .list {
  margin: 0;
  list-style: none;
  padding: 0;
}

#top .culture .culture_block_section .item {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
}

#top .culture .culture_block_section_text {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
  margin: 0 0 min(1.25vw, 16px);
}

#top .culture .culture_block_example {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
  margin: 0;
}

#top .culture .culture_btn_wrap {
  text-align: center;
}

#top .culture .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: min(0.63vw, 8px);
  padding: min(1.88vw, 24px) min(4.38vw, 56px);
  font-family: inherit;
  font-size: min(1.56vw, 20px);
  font-weight: 700;
  line-height: 1.5;
  text-decoration: none;
  border: none;
  border-radius: min(0.31vw, 4px);
  cursor: pointer;
  transition: opacity 0.2s ease;
  background-color: #0068b7;
  color: #ffffff;
}

#top .culture .btn:hover {
  opacity: 0.8;
}

#top .culture .btn_icon {
  width: min(1.88vw, 24px);
  height: min(1.88vw, 24px);
}

#top .culture .btn_icon .image {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}

@media (max-width: 768px) {
  #top .culture {
    padding: 20.51vw 8.21vw 20.51vw;
  }
  #top .culture .culture_inner {
    max-width: 100%;
  }
  #top .culture .culture_title {
    font-size: 10.26vw;
    margin: 0 0 12.31vw;
  }
  #top .culture .culture_text {
    font-size: 3.59vw;
    line-height: 2;
    max-width: 100%;
    margin: 0 0 12.31vw;
  }
  #top .culture .culture_overview {
    margin-bottom: 12.31vw;
    padding: 7.44vw 0 7.44vw;
  }
  #top .culture .culture_overview .image_box {
    width: 76.92vw;
  }
  /* 左：写真のみ画像、右：テキスト */
  #top .culture .culture_block {
    grid-template-columns: 1fr;
    gap: 6.15vw;
    margin-bottom: 12.31vw;
    padding: 4.1vw;
    width: 75.38vw;
    border-radius: 1.03vw;
  }
  #top .culture .culture_block::before {
    left: -8.21vw;
    width: 8.21vw;
    height: 8.46vw;
  }
  #top .culture .culture_cdp::before {
    background-image: url("../images/culture_cdp_illust_sp.svg");
  }
  #top .culture .culture_contribution::before {
    background-image: url("../images/culture_contribution_illust_sp.svg");
  }
  #top .culture .culture_block_title {
    font-size: 6.15vw;
    margin: 2.05vw 0 6.15vw;
  }
  #top .culture .culture_block_lead {
    font-size: 3.59vw;
  }
  #top .culture .culture_cdp .culture_block_lead {
    margin: 0 0 10.26vw;
  }
  #top .culture .culture_contribution .culture_block_lead {
    margin: 0 0 4.1vw;
  }
  #top .culture .culture_block_text {
    font-size: 3.59vw;
    margin: 0 0 10.26vw;
  }
  #top .culture .culture_cdp .culture_block_section + .culture_block_section {
    margin-top: 8.21vw;
  }
  #top .culture .culture_block_subtitle {
    font-size: 4.62vw;
    margin: 0 0 2.05vw;
    padding-bottom: 2.05vw;
  }
  #top .culture .culture_block_section .item {
    font-size: 3.59vw;
  }
  #top .culture .culture_block_section_text {
    font-size: 3.59vw;
    margin: 0 0 4.1vw;
  }
  #top .culture .culture_block_example {
    font-size: 3.59vw;
  }
  #top .culture .btn {
    gap: 2.05vw;
    padding: 6.15vw;
    font-size: 5.13vw;
    border-radius: 1.03vw;
    width: 100%;
  }
  #top .culture .btn_icon {
    width: 6.15vw;
    height: 6.15vw;
  }
}
/* ===== #top .recruit（CMS制御・項目増減対応） ===== */
#top .recruit {
  background-color: #f5f5f5;
  padding: min(7.81vw, 100px) 0 min(9.38vw, 120px);
}

#top .recruit .recruit_inner {
  max-width: min(89.06vw, 1140px);
  padding: 0 min(1.56vw, 20px);
  margin: 0 auto;
}

#top .recruit .recruit_title {
  font-size: min(3.75vw, 48px);
  font-weight: 700;
  margin: 0 0 min(4.38vw, 56px);
  text-align: center;
}

#top .recruit .recruit_list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* 左：見出し、右：本文の2カラム。区切りは左が青・余白・右がグレー */
#top .recruit .recruit_item {
  position: relative;
  display: grid;
  grid-template-columns: min(20.16vw, 258px) 1fr;
  gap: min(1.95vw, 25px);
  align-items: start;
}

#top .recruit .recruit_item_head {
  padding: min(1.88vw, 24px) min(2.5vw, 32px);
  border-top: 1px solid #0068b7;
  height: 100%;
}

#top .recruit .recruit_item:last-child .recruit_item_head {
  border-bottom: 1px solid #0068b7;
}

#top .recruit .recruit_item_label {
  font-size: min(1.41vw, 18px);
  font-weight: 700;
  line-height: 2;
  margin: 0;
}

#top .recruit .recruit_item_body {
  padding: min(1.88vw, 24px) min(3.13vw, 40px) min(1.88vw, 24px) min(1.25vw, 16px);
  border-top: 1px solid #b2b2b2;
}

#top .recruit .recruit_item:last-child .recruit_item_body {
  border-bottom: 1px solid #b2b2b2;
}

#top .recruit .recruit_item_body p {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
}

#top .recruit .recruit_item_body p {
  margin: 0 0 min(1.25vw, 16px);
}

#top .recruit .recruit_item_body p:last-child {
  margin-bottom: 0;
}

#top .recruit .recruit_item_body strong {
  font-weight: 700;
}

@media (max-width: 768px) {
  #top .recruit {
    padding: 20.51vw 0 20.51vw;
  }
  #top .recruit .recruit_inner {
    max-width: 100%;
    padding: 0 8.21vw;
  }
  #top .recruit .recruit_title {
    font-size: 12.31vw;
    margin: 0 0 14.36vw;
  }
  /* 左：見出し、右：本文の2カラム。区切りは左が青・余白・右がグレー */
  #top .recruit .recruit_item {
    grid-template-columns: 1fr;
    gap: 0;
  }
  #top .recruit .recruit_item_head {
    padding: 6.15vw 4.1vw;
    border-top: 1px solid #0068b7;
    border-bottom: 1px solid #0068b7;
    height: 100%;
  }
  #top .recruit .recruit_item_label {
    font-size: 4.62vw;
  }
  #top .recruit .recruit_item_body {
    padding: 6.15vw 4.1vw 6.15vw 4.1vw;
    border-top: unset;
  }
  #top .recruit .recruit_item:last-child .recruit_item_body {
    border-bottom: unset;
  }
  #top .recruit .recruit_item_body p {
    font-size: 3.59vw;
  }
  #top .recruit .recruit_item_body p {
    margin: 0 0 4.1vw;
  }
}
/* ===== #top .entry_cta（募集要項下・エントリーCTA） ===== */
#top .entry_cta {
  position: relative;
  padding: 0 0 min(5vw, 64px);
  background: transparent;
  z-index: 1;
}

#top .entry_cta::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 0 0 min(3.13vw, 40px) min(3.13vw, 40px);
  background: linear-gradient(to bottom, rgba(0, 104, 183, 0) 0%, #0068b7 100%);
  pointer-events: none;
  z-index: -1;
  opacity: 0.6;
}

#top .entry_cta::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 0 0 min(3.13vw, 40px) min(3.13vw, 40px);
  /* 土台は #f5f5f5 → 下で #0068b7 にグラデーション（角丸で白線が出ないように）。その上に画像 */
  background-image: url("../images/entry_cta_bg.png"), linear-gradient(to bottom, #f5f5f5 0%, #f5f5f5 70%, #0068b7 100%);
  background-size: cover, 100% 100%;
  background-position: center, 0 0;
  background-repeat: no-repeat, no-repeat;
  pointer-events: none;
  z-index: -2;
}

#top .entry_cta_inner {
  position: relative;
  z-index: 1;
  max-width: min(89.06vw, 1140px);
  padding: 0 min(1.56vw, 20px);
  margin: 0 auto;
}

#top .entry_cta_title {
  font-size: min(3.13vw, 40px);
  font-weight: 700;
  color: #0068b7;
  text-align: center;
  margin: 0 0 min(3.13vw, 40px);
  line-height: 1.5;
}

#top .entry_cta_block {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-width: min(57.5vw, 736px);
  margin: 0 auto min(3.13vw, 40px);
  padding: min(1.25vw, 16px) min(1.25vw, 16px) min(1.25vw, 16px) min(3.75vw, 48px);
  background-color: #0068b7;
  text-decoration: none;
  border-radius: min(0.63vw, 8px);
  transition: opacity 0.2s ease;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
}

#top .entry_cta_block:hover {
  opacity: 0.8;
}

#top .entry_cta_label_wrap {
  display: flex;
  align-items: center;
  gap: min(0.63vw, 8px);
}

#top .entry_cta_label {
  font-size: min(3.75vw, 48px);
  font-weight: 600;
  font-family: "Encode Sans Condensed", sans-serif;
  line-height: 1.5;
  color: #ffffff;
}

#top .entry_cta_arrow {
  flex-shrink: 0;
  width: min(3.75vw, 48px);
  height: min(3.75vw, 48px);
  display: flex;
  align-items: center;
  justify-content: center;
}

#top .entry_cta_arrow .image {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}

#top .entry_cta_visual {
  flex-shrink: 0;
  width: min(24.77vw, 317px);
  aspect-ratio: 317/122;
}

#top .entry_cta_visual .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#top .entry_cta_text {
  font-size: min(1.41vw, 18px);
  font-weight: 700;
  color: #fff;
  margin: 0 0 min(1.88vw, 24px);
  line-height: 2;
  text-align: center;
}

#top .entry_cta_text p:last-child {
  margin-bottom: 0;
}

#top .entry_cta_cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: min(1.88vw, 24px);
}

#top .entry_card {
  display: block;
  background-color: #fff;
  border-radius: min(0.31vw, 4px);
  overflow: hidden;
  padding: 8px;
}

#top .entry_card_image {
  width: min(10.94vw, 140px);
  aspect-ratio: 140/88;
  overflow: hidden;
  margin-left: auto;
}

#top .entry_card_image .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#top .entry_card_title {
  font-size: min(1.41vw, 18px);
  font-weight: 700;
  margin: min(1.02vw, 13px) 0 min(1.02vw, 13px);
  line-height: 2;
  color: #06243a;
}

#top .entry_card_desc {
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  color: #06243a;
  margin: 0;
  line-height: 2;
}

@media (max-width: 768px) {
  #top .entry_cta {
    padding: 0 0 16.41vw;
  }
  #top .entry_cta::before {
    border-radius: 0 0 10.26vw 10.26vw;
  }
  #top .entry_cta::after {
    border-radius: 0 0 10.26vw 10.26vw;
    background-image: url("../images/entry_cta_bg_sp.png"), linear-gradient(to bottom, #f5f5f5 0%, #f5f5f5 70%, #0068b7 100%);
  }
  #top .entry_cta_inner {
    max-width: 100%;
    padding: 0 8.21vw;
  }
  #top .entry_cta_title {
    font-size: 8.21vw;
    margin: 0 0 10.26vw;
  }
  #top .entry_cta_block {
    flex-direction: column-reverse;
    min-width: 100%;
    margin: 0 0 10.26vw;
    padding: 4.1vw;
    border-radius: 2.05vw;
    gap: 2.05vw;
  }
  #top .entry_cta_label_wrap {
    justify-content: space-between;
    gap: 0;
    width: 100%;
  }
  #top .entry_cta_label {
    font-size: 12.31vw;
  }
  #top .entry_cta_arrow {
    width: 12.31vw;
    height: 12.31vw;
  }
  #top .entry_cta_visual {
    flex-shrink: 0;
    width: 100%;
    aspect-ratio: 294/122;
  }
  #top .entry_cta_text {
    font-size: 4.62vw;
    margin: 0 0 6.15vw;
  }
  #top .entry_cta_cards {
    grid-template-columns: repeat(2, 1fr);
    gap: 1.03vw;
    margin: 0 1.28vw;
  }
  #top .entry_card {
    border-radius: 1.03vw;
    padding: 2.05vw;
  }
  #top .entry_card_image {
    width: 100%;
    height: 22.56vw;
  }
  #top .entry_card_title {
    font-size: 4.62vw;
    margin: 3.08vw 0 3.33vw;
  }
  #top .entry_card_desc {
    font-size: 2.56vw;
    margin: 0;
  }
}
/* ===== #footer ===== */
#footer {
  background-color: #0068b7;
  color: #ffffff;
  margin-top: max(-5vw, -64px);
  position: relative;
  padding: min(11.88vw, 152px) 0 0;
}

#footer .footer_inner {
  max-width: min(93.75vw, 1200px);
  padding: 0 min(1.56vw, 20px);
  margin: 0 auto;
}

#footer .footer_wrap {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

#footer .footer_left {
  flex-shrink: 0;
}

#footer .footer_visual {
  width: min(30.23vw, 387px);
}

#footer .footer_visual .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#footer .footer_btns {
  display: flex;
  flex-direction: column;
  gap: min(0.63vw, 8px);
}

#footer .footer_btn {
  display: flex;
  align-items: center;
  background-color: #fff;
  color: #0068b7;
  text-decoration: none;
  border-radius: min(0.63vw, 8px);
  transition: opacity 0.2s ease;
  justify-content: space-between;
}

#footer .footer_btn:hover {
  opacity: 0.8;
}

#footer .footer_btn_contact {
  padding: min(0.63vw, 8px);
  min-width: min(42.19vw, 540px);
}

#footer .footer_btn_contact .footer_btn_content {
  display: flex;
  flex-direction: column;
  align-items: center;
}

#footer .footer_btn_contact .footer_btn_content .footer_btn_text_wrap {
  display: flex;
  align-items: center;
  gap: min(0.63vw, 8px);
  padding-left: min(1.88vw, 24px);
}

#footer .footer_btn_contact .footer_btn_content .footer_btn_text_wrap .footer_btn_main {
  font-size: min(3.13vw, 40px);
  font-weight: 700;
  line-height: 1.5;
  color: #0068b7;
}

#footer .footer_btn_contact .footer_btn_content .footer_btn_text_wrap .footer_btn_arrow {
  width: min(3.13vw, 40px);
  height: min(3.13vw, 40px);
}

#footer .footer_btn_contact .footer_btn_content .footer_btn_text_wrap .footer_btn_arrow .image {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}

#footer .footer_btn_contact .footer_btn_content .footer_btn_sub {
  font-size: min(1.09vw, 14px);
  font-weight: 700;
  color: #0068b7;
  margin: 0;
  line-height: 2;
}

#footer .footer_btn_contact .footer_btn_visual {
  width: min(21.09vw, 270px);
  aspect-ratio: 270/104;
}

#footer .footer_btn_contact .footer_btn_visual .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#footer .footer_btn_contact .footer_btn_main {
  font-size: min(1.41vw, 18px);
  font-weight: 700;
  color: #0068b7;
}

#footer .footer_btn_contact .footer_btn_sub {
  font-size: min(0.94vw, 12px);
  color: #0068b7;
}

#footer .footer_btn_row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: min(0.63vw, 8px);
}

#footer .footer_btn_entry,
#footer .footer_btn_mypage {
  flex: 1;
  padding: min(0.31vw, 4px);
  justify-content: flex-start;
  gap: min(0.63vw, 8px);
  border-radius: min(0.31vw, 4px);
}

#footer .footer_btn_entry .footer_btn_visual,
#footer .footer_btn_mypage .footer_btn_visual {
  width: min(8.13vw, 104px);
  aspect-ratio: 104/40;
}

#footer .footer_btn_entry .footer_btn_visual .image,
#footer .footer_btn_mypage .footer_btn_visual .image {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

#footer .footer_btn_entry .footer_btn_text_wrap,
#footer .footer_btn_mypage .footer_btn_text_wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: min(0.63vw, 8px);
  min-width: min(9.38vw, 120px);
}

#footer .footer_btn_entry .footer_btn_text_wrap .footer_btn_main,
#footer .footer_btn_mypage .footer_btn_text_wrap .footer_btn_main {
  font-size: min(1.56vw, 20px);
  font-weight: 700;
  line-height: 1.5;
  color: #0068b7;
}

#footer .footer_btn_entry .footer_btn_text_wrap .footer_btn_arrow,
#footer .footer_btn_mypage .footer_btn_text_wrap .footer_btn_arrow {
  width: min(1.56vw, 20px);
  height: min(1.56vw, 20px);
}

#footer .footer_btn_entry .footer_btn_text_wrap .footer_btn_arrow .image,
#footer .footer_btn_mypage .footer_btn_text_wrap .footer_btn_arrow .image {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}

#footer .footer_right_link {
  display: flex;
  align-items: center;
  gap: min(0.31vw, 4px);
  text-decoration: none;
  color: #ffffff;
  font-size: min(0.94vw, 12px);
  font-weight: 500;
  margin: min(1.25vw, 16px) 0 0;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
  margin-left: auto;
  margin-right: min(0.63vw, 8px);
}

#footer .footer_right_link:hover {
  opacity: 0.8;
}

#footer .footer_right_icon {
  width: min(0.94vw, 12px);
  height: min(0.94vw, 12px);
  transform: translateY(1px);
}

#footer .footer_right_icon img {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  display: block;
}

#footer .footer_copyright {
  width: 100%;
  margin: min(3.13vw, 40px) 0 0;
  padding: 0 min(0.63vw, 8px) min(3.13vw, 40px) 0;
  font-size: min(0.94vw, 12px);
  font-family: "Encode Sans Condensed", sans-serif;
  color: #fff;
  text-align: right;
}

@media (max-width: 768px) {
  #footer {
    margin-top: -16.41vw;
    padding: 38.97vw 0 0;
  }
  #footer .footer_inner {
    max-width: 100%;
    padding: 0 2.05vw;
  }
  #footer .footer_wrap {
    flex-direction: column;
    gap: 8.21vw;
  }
  #footer .footer_left {
    width: 100%;
  }
  #footer .footer_visual {
    width: 75.9vw;
    margin: 0 auto;
  }
  #footer .footer_right {
    width: 100%;
  }
  #footer .footer_btns {
    width: 100%;
    gap: 2.05vw;
  }
  #footer .footer_btn {
    border-radius: 2.05vw;
  }
  #footer .footer_btn_contact {
    padding: 2.05vw;
    min-width: 100%;
    align-items: stretch;
  }
  #footer .footer_btn_contact .footer_btn_content .footer_btn_text_wrap {
    gap: 2.05vw;
    padding-left: 0;
  }
  #footer .footer_btn_contact .footer_btn_content .footer_btn_text_wrap .footer_btn_main {
    font-size: 10.26vw;
  }
  #footer .footer_btn_contact .footer_btn_content .footer_btn_text_wrap .footer_btn_arrow {
    width: 10.26vw;
    height: 10.26vw;
  }
  #footer .footer_btn_contact .footer_btn_content .footer_btn_sub {
    font-size: 3.59vw;
    margin: 0;
  }
  #footer .footer_btn_contact .footer_btn_visual {
    width: 38.97vw;
    aspect-ratio: 152/88;
  }
  #footer .footer_btn_contact .footer_btn_main {
    font-size: 4.62vw;
  }
  #footer .footer_btn_contact .footer_btn_sub {
    font-size: 3.08vw;
  }
  #footer .footer_btn_row {
    gap: 2.05vw;
  }
  #footer .footer_btn_entry,
#footer .footer_btn_mypage {
    flex: 1;
    padding: 1.03vw;
    justify-content: flex-start;
    gap: 2.05vw;
    border-radius: 1.03vw;
  }
  #footer .footer_btn_entry .footer_btn_visual,
#footer .footer_btn_mypage .footer_btn_visual {
    width: 16.41vw;
    aspect-ratio: 64/40;
  }
  #footer .footer_btn_entry .footer_btn_text_wrap,
#footer .footer_btn_mypage .footer_btn_text_wrap {
    gap: 0;
    min-width: unset;
    width: 100%;
  }
  #footer .footer_btn_entry .footer_btn_text_wrap .footer_btn_main,
#footer .footer_btn_mypage .footer_btn_text_wrap .footer_btn_main {
    font-size: 3.59vw;
  }
  #footer .footer_btn_entry .footer_btn_text_wrap .footer_btn_arrow,
#footer .footer_btn_mypage .footer_btn_text_wrap .footer_btn_arrow {
    width: 5.13vw;
    height: 5.13vw;
  }
  #footer .footer_right_link {
    gap: 1.03vw;
    font-size: 3.08vw;
    margin: 4.1vw 0 0;
    width: -webkit-fit-content;
    width: -moz-fit-content;
    width: fit-content;
    margin-left: auto;
  }
  #footer .footer_right_icon {
    width: 3.08vw;
    height: 3.08vw;
  }
  #footer .footer_copyright {
    width: 100%;
    margin: 10.26vw 0 0;
    padding: 0 2.05vw 10.26vw 0;
    font-size: 3.08vw;
  }
}
/* ===== トップへ戻るボタン（スクロールで表示） ===== */
.page_top_btn {
  position: fixed;
  right: min(1.88vw, 24px);
  bottom: min(1.88vw, 24px);
  z-index: 50;
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(3.75vw, 48px);
  height: min(3.75vw, 48px);
  background-color: #0068b7;
  border: 2px solid #ffffff;
  border-radius: min(0.31vw, 4px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

.page_top_btn.is_visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.page_top_btn:hover {
  opacity: 0.8;
}

.page_top_btn_arrow {
  width: min(1.88vw, 24px);
  height: min(1.88vw, 24px);
  display: block;
  -o-object-fit: contain;
     object-fit: contain;
}

@media (max-width: 768px) {
  .page_top_btn {
    right: 6.15vw;
    bottom: 6.15vw;
    width: 12.31vw;
    height: 12.31vw;
  }
  .page_top_btn_arrow {
    width: 6.15vw;
    height: 6.15vw;
  }
}
/* ===== お問い合わせモーダル ===== */
.contact_modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}

.contact_modal.is_open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.contact_modal_overlay {
  position: absolute;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.7);
  cursor: pointer;
}

.contact_modal_inner {
  position: relative;
  width: min(71.56vw, 916px);
  max-height: 90vh;
  padding: min(5vw, 64px) min(6.25vw, 80px);
  margin: 0 auto;
  overflow-x: hidden;
  overflow-y: auto;
  background-color: #ffffff;
  border-radius: min(0.63vw, 8px);
}

.contact_modal_close_btn {
  position: absolute;
  top: min(0.63vw, 8px);
  right: min(0.63vw, 8px);
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(3.75vw, 48px);
  height: min(3.75vw, 48px);
  padding: 0;
  border: none;
  border-radius: min(0.31vw, 4px);
  background-color: #0068b7;
  color: #ffffff;
  cursor: pointer;
  z-index: 1;
}

.contact_modal_close_btn::before,
.contact_modal_close_btn::after {
  content: "";
  position: absolute;
  width: min(2.66vw, 34px);
  height: min(0.31vw, 4px);
  background-color: currentColor;
  border-radius: min(0.16vw, 2px);
}

.contact_modal_close_btn::before {
  transform: rotate(45deg);
}

.contact_modal_close_btn::after {
  transform: rotate(-45deg);
}

.contact_modal_title_wrap {
  display: flex;
  align-items: stretch;
}

.contact_modal_title {
  margin: 0;
  flex: 1;
  font-size: min(1.88vw, 24px);
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}

.contact_modal_body {
  margin: min(2.5vw, 32px) 0 0;
}

.contact_modal_list {
  margin: 0 0 min(2.5vw, 32px);
  padding: 0;
}

.contact_modal_item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: min(1.25vw, 16px);
}

.contact_modal_label {
  display: flex;
  align-items: center;
  gap: min(0.63vw, 8px);
  margin: 0;
  flex-shrink: 0;
  font-size: min(1.41vw, 18px);
  font-weight: 700;
  line-height: 2;
  padding: 0 min(2.5vw, 32px);
  border-top: 1px solid #0068b7;
  min-width: min(20.16vw, 258px);
  min-height: min(6.56vw, 84px);
}

.contact_modal_item:last-child .contact_modal_label {
  border-bottom: 1px solid #0068b7;
}

.contact_modal_icon {
  display: flex;
  flex-shrink: 0;
  width: min(1.88vw, 24px);
  height: min(1.88vw, 24px);
}

.contact_modal_icon img {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

.contact_modal_value {
  margin: 0;
  flex: 1;
  min-width: 0;
  font-size: min(1.09vw, 14px);
  font-weight: 500;
  line-height: 2;
  text-align: left;
  overflow-wrap: break-word;
  word-break: break-all;
  padding: 0 min(3.13vw, 40px) 0 min(1.25vw, 16px);
  border-top: 1px solid #b2b2b2;
  min-height: min(6.56vw, 84px);
  display: flex;
  align-items: center;
}

.contact_modal_item:last-child .contact_modal_value {
  border-bottom: 1px solid #b2b2b2;
}

.contact_modal_notice {
  margin: 0;
  font-size: min(1.09vw, 14px);
  line-height: 1.6;
  text-align: center;
}

.contact_modal_notice a {
  color: #0068b7;
  text-decoration: underline;
  display: inline-flex;
  align-items: center;
}

.contact_modal_notice a:hover {
  opacity: 0.8;
}

.contact_modal_external_icon {
  width: min(1.25vw, 16px);
  height: min(1.25vw, 16px);
  margin: 0 min(0.31vw, 4px);
}

.contact_modal_external_icon img {
  width: 100%;
  height: 100%;
  -o-object-fit: contain;
     object-fit: contain;
}

@media (max-width: 768px) {
  .contact_modal_inner {
    position: relative;
    width: 83.59vw;
    max-height: 90vh;
    padding: 16.41vw 8.21vw;
    border-radius: 2.05vw;
  }
  .contact_modal_close_btn {
    top: 2.05vw;
    right: 2.05vw;
    width: 12.31vw;
    height: 12.31vw;
    border-radius: 1.03vw;
  }
  .contact_modal_close_btn::before,
.contact_modal_close_btn::after {
    width: 8.72vw;
    height: 1.03vw;
    border-radius: 0.51vw;
  }
  .contact_modal_title {
    font-size: 6.15vw;
  }
  .contact_modal_body {
    margin: 8.21vw 0 0;
  }
  .contact_modal_list {
    margin: 0 0 8.21vw;
    padding: 0;
  }
  .contact_modal_item {
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    width: 100%;
  }
  .contact_modal_label {
    gap: 2.05vw;
    font-size: 4.62vw;
    padding: 0 4.1vw;
    min-width: 100%;
    min-height: 21.54vw;
  }
  .contact_modal_item:last-child .contact_modal_label {
    border-bottom: none;
  }
  .contact_modal_icon {
    width: 6.15vw;
    height: 6.15vw;
  }
  .contact_modal_value {
    font-size: 3.59vw;
    padding: 6.15vw 4.1vw 6.15vw 4.1vw;
    border-top: 1px solid #0068b7;
    min-height: 21.54vw;
    width: 100%;
  }
  .contact_modal_item:last-child .contact_modal_value {
    border-bottom: 1px solid #b2b2b2;
  }
  .contact_modal_notice {
    font-size: 3.59vw;
  }
  .contact_modal_external_icon {
    width: 4.1vw;
    height: 4.1vw;
    margin: 0 1.03vw;
  }
}
/*# sourceMappingURL=style.css.map */