@charset "UTF-8";

/* ========================================
   竹中製作所 採用サイト TOP
   Breakpoints: 1024px / 768px
   構成: セクションごとに 共通 → PC(min-width) → SP(max-width)
======================================== */
/* main .inner の余白・最大幅は common.css（home: 1920基準 左右100px） */

/* TOPページ専用：ロゴ・SCROLLは装飾（クリック不可） */
body.home.recruit .heading_logo a,
body.home.recruit .gNav_panel_logo a,
.top_mv_scroll {
  pointer-events: none;
  cursor: default;
}

/* ========================================
   共通ユーティリティ
======================================== */
.sec {
  padding-top: 65px;
  padding-bottom: 65px;
}

/* ========================================
   Hero (MV)
======================================== */
/* ---------- 共通 ---------- */
.top_mv {
  position: relative;
  overflow: hidden;
  background-color: var(--color-green-light);
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  align-items: center;
}

.top_mv_inner {
  position: relative;
  z-index: 1;
  width: 100%;
  padding-top: 40px;
  padding-bottom: 60px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.top_mv_bg {
  position: absolute;
  z-index: 0;
  margin: 0;
  width: auto;
  max-width: none;
  pointer-events: none;
  line-height: 0;
  right: clamp(-80px, -10vw, -24px);
  top: 50%;
  transform: translateY(-50%);
}

.top_mv_bg_img {
  display: block;
  width: auto;
  height: clamp(320px, 68svh, 640px);
  max-width: none;
  object-fit: contain;
  object-position: right center;
}

.top_mv_lead {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  width: 100%;
  max-width: min(870px, 100%);
}

.top_mv_catch {
  position: relative;
  z-index: 2;
  max-width: min(492px, 100%);
  width: 50%;
  margin: 0;
  line-height: 0;
}

.top_mv_catch_img {
  display: block;
  width: 100%;
  max-width: 492px;
  height: auto;
}

.top_mv_visual {
  margin-top: 24px;
  position: relative;
  z-index: 1;
}

.top_mv_visual_ph {
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 520px;
  border-radius: var(--radius-box);
  background: linear-gradient(145deg, #a8d4a8 0%, #7cb87c 40%, #5a9e5a 100%);
  position: relative;
  overflow: hidden;
}

/* .top_mv_visual_ph::after {
  content: "MVイラスト（assets/img/top/mv_illust.png）";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  color: rgba(255, 255, 255, 0.9);
  font-weight: 500;
} */

.top_mv_scroll {
  position: relative;
  z-index: 2;
  margin-top: clamp(24px, 3vw, 40px);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  color: var(--color-green-dark);
  font-family: var(--font-en);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-decoration: none;
  height: 183px;
}

.top_mv_scroll_txt {
  writing-mode: vertical-rl;
  text-orientation: mixed;
}

.top_mv_scroll_line {
  display: block;
  width: 1px;
  height: 80px;
  background: var(--color-green-dark);
  animation: scrollLine 2s ease-in-out infinite;
}

@keyframes scrollLine {
  0% { transform: scaleY(0); transform-origin: top; }
  50% { transform: scaleY(1); transform-origin: top; }
  51% { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

/* ---------- PC (min-width: 1025px) ---------- */
@media all and (min-width: 1025px) {
  .top_mv {
    align-items: flex-start;
    padding-top: var(--header-h-pc);
    overflow: hidden;
  }

  .top_mv_inner {
    display: grid;
    grid-template-columns: minmax(300px, min(870px, 62%)) minmax(0, 1fr);
    grid-template-rows: 1fr;
    gap: 0 24px;
    align-items: start;
    position: static;
    padding-top: 24px;
    min-height: calc(100vh - var(--header-h-pc) - 24px);
  }

  .top_mv_lead {
    grid-column: 1;
    grid-row: 1;
    align-self: start;
    max-width: 870px;
    width: 100%;
    padding-top: 48px;
  }

  .top_mv_catch {
    padding-top: 0;
  }

  /* 1920px基準: 右見切れ + リキッド縮小 */
  .top_mv_bg {
    position: absolute;
    top: calc(var(--header-h-pc) + 4px);
    /* right: clamp(-96px, -13vw, -240px); */
    right: clamp(-336px, -33vw, -780px);
    transform: none;
    pointer-events: none;
  }

  .top_mv_bg_img {
    width: auto;
    height: clamp(600px, 66vw, 1120px);
    object-fit: contain;
    object-position: right top;
  }

  .top_mv_scroll {
    margin-top: clamp(200px, 16vw, 340px);
  }
}

/* ---------- SP: タブレット (max-width: 1024px) ---------- */
@media all and (max-width: 1024px) {
  .top_mv {
    padding-top: var(--header-h-sp);
    min-height: auto;
  }

  .top_mv_bg {
    /* right: clamp(-64px, -12vw, -32px); */
    right: -26vw;
    top: 40%;
    transform: translateY(-50%);
  }

  .top_mv_bg_img {
    height: clamp(360px, 72svh, 600px);
  }
  .top_mv_scroll {
    margin-top: clamp(230px, 40vw, 300px);
  }
}

/* ---------- SP: スマホ (max-width: 767px) ---------- */
@media all and (max-width: 767px) {
  .top_mv_bg {
    position: relative;
  }

  .top_mv_inner {
    padding-top: 24px;
    padding-bottom: 40px;
  }

  .top_mv_lead {
    max-width: 100%;
  }

  .top_mv_catch {
    max-width: 70%;
    width: 70%;
  }

  .top_mv_catch_img {
    max-width: 100%;
  }

  .top_mv_bg {
    right: 5vw;
    width: 108vw;
    margin-top: 4%;
    top: 0%;
    transform: translateY(0%);
}



  .top_mv_bg_img {
    height: auto;
    width: 120%;
    max-width: none;
    max-height: none;
    margin-left: 0;
  }
  .top_mv_scroll {
    margin-top: clamp(-24px, -3vw, -40px);
    font-size: 10px;
    height: 136px;
  }


}

/* ========================================
   Message（MV内）
======================================== */
/* ---------- 共通 ---------- */
.top_mv .top_message {
  width: 100%;
  margin-top: clamp(28px, 4.7vw, 50px);
  padding: 0;
}

.top_message_body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  width: 100%;
  gap: 0;
}

.top_message_ttl {
  font-size: clamp(18px, 2.2vw, 28px);
  font-weight: 700;
  color: var(--color-green-dark);
  line-height: 1.78;
  order: 1;
}

.top_message_txt {
  margin-top: clamp(24px, 3.5vw, 40px);
  order: 2;
  width: 100%;
}

.top_message_txt p {
  font-size: clamp(14px, 1.4vw, 16px);
  line-height: 2;
  text-align: justify;
  color: var(--color-green-dark);
}

.top_message_txt p + p {
  margin-top: 1.5em;
}

.top_message_body .btn_outline {
  margin-top: clamp(28px, 4vw, 40px);
  order: 3;
  width: 100%;
  max-width: 278px;
  background: transparent;
}

.top_message_body .btn_outline:hover {
  background: var(--color-green-dark);
}

/* ---------- SP: スマホ (max-width: 767px) ---------- */
@media all and (max-width: 767px) {
  /* .top_message_body .btn_outline {
    max-width: 100%;
  } */
}

/* ========================================
   Business
======================================== */
/* ---------- 共通 ---------- */
.top_business {
  background: var(--color-white);
  padding-top: 130px;
}

.top_business_inner {
  /* 1720px = 1160 + 158 + 402（frで全体比率を維持、中央列がgap） */
  display: grid;
  grid-template-columns: minmax(0, 1160fr) minmax(0, 158fr) minmax(0, 402fr);
  row-gap: 48px;
  align-items: center;
}

.top_business_visual {
  grid-column: 1;
  width: 100%;
  min-width: 0;
}

.top_business_content {
  grid-column: 3;
  min-width: 0;
}

.top_business_ph {
  position: relative;
  width: 100%;
  margin: 0;
  aspect-ratio: 1160 / 726;
  border-radius: var(--radius-box);
  overflow: hidden;
}

.top_business_illust {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* ピン先端を基準に配置（1160×726 デザイン基準の%） */
.top_business_pin {
  position: absolute;
  left: var(--pin-x);
  top: var(--pin-y);
  transform: translate(-50%, -100%);
  width: 17.16%;
  z-index: 2;
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.top_business_pin img {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
}

.top_business_pin--01 {
  --pin-x: 27.8%;
  --pin-y: 63.5%;
}

.top_business_pin--02 {
  --pin-x: 75.5%;
  --pin-y: 75.1%;
}

.top_business_pin:hover {
  opacity: 0.85;
  transform: translate(-50%, -100%) scale(1.04);
}

/* ---------- SP: タブレット (max-width: 1024px) ---------- */
@media all and (max-width: 1024px) {
  .top_business_inner {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .top_business_visual,
  .top_business_content {
    grid-column: auto;
  }
}

/* ========================================
   Voice
======================================== */
/* ---------- 共通 ---------- */
.top_voice {
  background: var(--color-white);
  overflow: hidden;
}

.top_voice_head {
  margin-bottom: 40px;
}

.top_voice_cards {
  width: 100vw;
  margin-left: calc(50% - 50vw);
}

.top_voice_list {
  display: flex;
  gap: 16px;
  list-style: none;
  margin: 0;
  padding: 0 var(--header-pad-x) 8px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  touch-action: pan-x;
}

.top_voice_list::-webkit-scrollbar {
  display: none;
}

@media (hover: hover) and (pointer: fine) {
  .top_voice_list,
  .top_voice_list .top_voice_card a {
    cursor: grab;
  }

  .top_voice_list.is-dragging,
  .top_voice_list.is-dragging .top_voice_card a {
    cursor: grabbing;
    user-select: none;
  }

  .top_voice_list.is-dragging a {
    pointer-events: none;
  }

  .top_voice_card_img {
    -webkit-user-drag: none;
    user-select: none;
  }
}

.top_voice_card {
  flex: 0 0 420px;
  width: 420px;
}

.top_voice_card a {
  display: block;
  position: relative;
  width: 420px;
  height: 600px;
  color: inherit;
  border-radius: var(--radius-box);
  overflow: hidden;
  background: var(--color-white);
  transition: opacity 0.3s ease;
  touch-action: manipulation;
}

.top_voice_card a:hover {
  opacity: 0.75;
}

.top_voice_card_ph {
  margin: 0;
  position: absolute;
  inset: 0;
  background: #c5e0c5;
  overflow: hidden;
}

.top_voice_card_img {
  display: block;
  width: 420px;
  height: 600px;
  max-width: none;
  object-fit: cover;
}

.ph_placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.85);
}

.top_voice_card_body {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  padding: 20px 18px 22px;
  color: var(--color-white);
}

.top_voice_card_role {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.4;
}

.top_voice_card_name {
  font-size: 12px;
  font-weight: 500;
  margin-top: 4px;
  line-height: 1.5;
}

.top_voice_more {
  text-align: center;
  margin-top: 40px;
}

/* .top_voice_more .btn_outline {
  min-width: 320px;
} */

/* ---------- PC (min-width: 1025px) ---------- */
@media all and (min-width: 1025px) {
  .top_voice_list {
    flex-wrap: nowrap;
  }
}

/* ---------- SP: スマホ (max-width: 767px) ---------- */
@media all and (max-width: 767px) {
  .top_voice_card {
    flex: 0 0 214px;
    width: 214px;
  }

  .top_voice_card a {
    width: 214px;
    height: 306px;
  }

  .top_voice_card_img {
    width: 214px;
    height: 306px;
  }
  .top_voice_card_body {
    padding: 0px 10px 12px;
  }
}

/* ========================================
   Environment
======================================== */
/* ---------- 共通 ---------- */
.top_environment {
  background: var(--color-white);
}

.top_environment_inner {
  /* business と同じ比率を左右反転（テキスト=左 / 画像=右） */
  display: grid;
  grid-template-columns: minmax(0, 402fr) minmax(0, 158fr) minmax(0, 1160fr);
  row-gap: 48px;
  align-items: center;
}

.top_environment_content {
  grid-column: 1;
  min-width: 0;
}

.top_environment_visual {
  grid-column: 3;
  width: 100%;
  min-width: 0;
}

.top_environment_ph {
  width: 100%;
  margin: 0;
  aspect-ratio: 1160 / 726;
  border-radius: var(--radius-box);
  overflow: hidden;
  position: relative;
}

.top_environment_img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ---------- SP: タブレット (max-width: 1024px) ---------- */
@media all and (max-width: 1024px) {
  .top_environment_inner {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .top_environment_visual,
  .top_environment_content {
    grid-column: auto;
  }

  .top_environment_inner {
    direction: ltr;
  }

  .top_environment_inner .top_environment_visual {
    order: -1;
  }
}
