/* recruit.css — 株式会社フォレスト 採用ページ */
/* new-recruit.html バンドルから素のCSSへ変換（フォントはGoogle Fonts CDN） */

/* ---- base (元 <style> ブロック) ---- */
* { box-sizing: border-box; }
  html { scroll-behavior: auto; overscroll-behavior: none; }
  /* 上端のバウンド(ラバーバンド)で固定ヒーローとヘッダーがズレて写真が覗くのを防ぐ */
  body { overscroll-behavior: none; }
  /* 横スクロール抑止はルート(body)側で行う。固定ヒーローを非ルートのoverflow親で
     クリップするとコンポジタに載らず主スレッドスクロールになりカクつくため、
     内側divのoverflow-x:hiddenは撤去し、ここへ移した。 */
  body { margin: 0; background: #fff; font-family: "Noto Sans JP", sans-serif; -webkit-font-smoothing: antialiased; color: #26302B; overflow-x: hidden; }
  a { color: #1F7A38; text-decoration: none; }
  a:hover { color: #E2650F; text-decoration: none; }
  [data-voice-track]::-webkit-scrollbar { display: none; }
  @keyframes fr-rise { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
  @keyframes fr-float { 0% { transform: translate3d(0,0,0) scale(1); } 50% { transform: translate3d(3%,-4%,0) scale(1.08); } 100% { transform: translate3d(0,0,0) scale(1); } }
  @keyframes fr-ring { 0% { transform: scale(1); opacity: .5; } 100% { transform: scale(1.85); opacity: 0; } }
  @keyframes fr-scroll { 0%,100% { transform: scaleY(0); transform-origin: top; } 45% { transform: scaleY(1); transform-origin: top; } 55% { transform: scaleY(1); transform-origin: bottom; } 90% { transform: scaleY(0); transform-origin: bottom; } }
  @keyframes fr-vdrift { from { transform: translate3d(0,0,0); } to { transform: translate3d(0,calc(-100% + clamp(380px,52vw,640px)),0); } }
  @keyframes fr-hdrift { from { transform: translate3d(0,0,0); } to { transform: translate3d(-26%,0,0); } }

  /* 常時アニメする層をGPUレイヤーへ昇格し、スクロール中の再ラスタ負荷を抑える */
  [data-marquee] { will-change: transform; }
  [style*="fr-float"] { will-change: transform; }
  /* 固定ヒーローを安定したGPUレイヤーに（コンテンツが上を流れる際の再描画を抑制） */
  #hero { transform: translateZ(0); backface-visibility: hidden; }
  /* スクロール中は装飾グラデのアニメを止めてカクつきを抑える（停止0.16秒後に再開） */
  html.is-scrolling [style*="fr-float"] { animation-play-state: paused; }

/* ---- ヘッダーお問い合わせボタンのメールアイコンを縦中央に（style.cssのtop寄せを上書き） ---- */
.btn-mail { background-position: left center; }

/* ---- 交通案内マップ（このページだけ小さめ表示） ---- */
.map { max-width: 720px; margin-left: auto; margin-right: auto; }
.map iframe { height: 300px; }

/* ---- image-slot（画像プレースホルダー / 差し替えは img/recruit/<data-slot>.jpg） ---- */
/* ---- 見出し（大きな英字）のワイプ強調：data-reveal 発火(fr-in)で左→右に出現 ---- */
[data-reveal] [style*="clamp(34px,5.4vw,64px)"]{
  display: inline-block;                       /* 箱幅ではなくテキスト幅でワイプさせ、寄せ方向に依らず一定速度に */
  clip-path: inset(-0.25em 100% -0.25em 0);   /* 上下は負のinsetで拡張し、descender(g等)を切らない */
  transition: clip-path 1.3s cubic-bezier(.2,.7,.2,1) .12s;
}
[data-reveal].fr-in [style*="clamp(34px,5.4vw,64px)"]{
  clip-path: inset(-0.25em -0.12em -0.25em 0);   /* 右も少し外へ広げ、負の字間で食い込む最終文字(s等)を切らない */
}

/* ---- 控えめパララックス：画像を上下に余白（見切れ）持たせて transform で動かす ---- */
.img-slot img.is-parallax{ height:130%; top:-15%; }

@media (prefers-reduced-motion: reduce){
  [data-reveal] [style*="clamp(34px,5.4vw,64px)"]{ clip-path:none; transition:none; }
  .img-slot img.is-parallax{ height:100%; top:0; }
}

/* isolation:isolate で .img-slot を独立スタッキングコンテキスト化し、
   内側の img{z-index:1} がスロット外（オーバーレイ/バッジ/コピー）へ被さらないようにする */
.img-slot{position:absolute;inset:0;overflow:hidden;background:#E7E5D8;isolation:isolate}
.img-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}
.img-slot__ph{position:absolute;inset:0;z-index:0;display:grid;place-items:center;text-align:center;padding:10px;font-size:12px;line-height:1.6;letter-spacing:.02em;color:#8b8f86;font-family:'Zen Kaku Gothic New','Noto Sans JP',sans-serif}

/* ---- FV背景動画（PC=横 / SP=縦。srcはrecruit.jsで出し分け） ---- */
/* z-index:0 で最背面。上に重なるグラデ／コピー層はDOM後方のためそのまま前面に描画される */
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;display:block;z-index:0;background:#0B2415}

/* ---- hover（元 style-hover 属性 / インラインstyleに勝つため !important） ---- */
.hv-1:hover{background:#1F7A38 !important;color:#fff !important;border-color:#1F7A38 !important}
.hv-2:hover{background:#FF8526 !important;color:#fff !important;transform:translateY(-1px) !important}
.hv-3:hover{color:#EE7113 !important}
.hv-4:hover{color:#EE7113 !important}
.hv-5:hover{color:#EE7113 !important}
.hv-6:hover{color:#EE7113 !important}
.hv-7:hover{color:#EE7113 !important}
.hv-8:hover{color:#EE7113 !important}
.hv-9:hover{color:#EE7113 !important}
.hv-10:hover{color:#EE7113 !important}
.hv-11:hover{background:#FF8526 !important;transform:translateY(-2px) !important;box-shadow:0 28px 54px -16px rgba(238,113,19,1) !important;color:#fff !important}
.hv-12:hover{background:#12281D !important;border-color:#12281D !important;color:#fff !important}
.hv-13:hover{background:#12281D !important;color:#fff !important;transform:translateY(-2px) !important}
.hv-14:hover{box-shadow:0 32px 60px -28px rgba(6,20,12,0.42) !important;color:inherit !important}
.hv-15:hover{box-shadow:0 32px 60px -28px rgba(6,20,12,0.42) !important;color:inherit !important}
.hv-16:hover{box-shadow:0 32px 60px -28px rgba(6,20,12,0.42) !important;color:inherit !important}
.hv-17:hover{background:#EE7113 !important;color:#fff !important;transform:translateY(-2px) !important}
.hv-18:hover{color:#EE7113 !important}
.hv-19:hover{color:#EE7113 !important}
.hv-20:hover{color:#EE7113 !important}
.hv-21:hover{color:#EE7113 !important}
.hv-22:hover{color:#EE7113 !important}
.hv-23:hover{background:#FF8526 !important;color:#fff !important;transform:translateY(-1px) !important}

/* ---- FV h1（見出し）レスポンシブ ----
   PCデザインはインラインstyleで固定。ここではタブレット/SPのみ上書き（インラインに勝つため !important）。
   .fv-br-sp はSPでのみ表示して「あなたも一員として。」を独立行に落とす。 */
.fr-fv-h1 .fv-br-sp { display: none; }

/* タブレット：1024px〜768px（2行のまま縮小） */
@media (max-width: 1024px) {
  .fr-fv-h1 {
    font-size: clamp(30px, 5vw, 52px) !important;
    line-height: 1.3 !important;
  }
}

/* SP：767px〜330px（3行に再構成して収める） */
@media (max-width: 767px) {
  .fr-fv-h1 {
    font-size: clamp(24px, 8vw, 40px) !important;
    line-height: 1.44 !important;
    letter-spacing: -0.02em !important;
  }
  .fr-fv-h1 .fv-br-sp { display: inline; }
}

/* ---- Our Basics：769〜1024pxは2カラム（2-2）、768px以下は1カラム（1-1-1-1）。PC(1025px〜)はauto-fitのまま ---- */
@media (max-width: 1024px) {
  .fr-basics-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    column-gap: clamp(16px, 3vw, 32px) !important;
  }
}
@media (max-width: 768px) {
  .fr-basics-grid {
    grid-template-columns: 1fr !important;
  }
  /* 見出し・数値を含む Our Basics 全体を中央揃え */
  #numbers {
    text-align: center;
  }
}

/* ---- Jobs：769〜1024pxは2カラム＋余った下段1枚を中央寄せ、768px以下は1カラム。PC(1025px〜)はauto-fitのまま ---- */
@media (max-width: 1024px) {
  .fr-jobs-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  /* 2カラム時に最後の孤立カード（3枚目）を中央寄せ */
  .fr-jobs-grid > a:nth-child(odd):last-child {
    grid-column: 1 / -1;
    justify-self: center;
    width: calc((100% - clamp(20px, 2.8vw, 40px)) / 2);
  }
}
@media (max-width: 768px) {
  .fr-jobs-grid {
    grid-template-columns: 1fr !important;
  }
  .fr-jobs-grid > a:nth-child(odd):last-child {
    grid-column: auto;
    justify-self: stretch;
    width: auto;
  }
}

/* ---- VOICE：769〜1024pxは2カラム＋余った下段1枚を中央寄せ、768px以下は1カラム。PC(1025px〜)はauto-fitのまま ---- */
@media (max-width: 1024px) {
  .fr-voice-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  /* 2カラム時に最後の孤立カード（3枚目）を中央寄せ */
  .fr-voice-grid > article:nth-child(odd):last-child {
    grid-column: 1 / -1;
    justify-self: center;
    width: calc((100% - clamp(20px, 2.8vw, 40px)) / 2);
  }
}
@media (max-width: 768px) {
  .fr-voice-grid {
    grid-template-columns: 1fr !important;
  }
  .fr-voice-grid > article:nth-child(odd):last-child {
    grid-column: auto;
    justify-self: stretch;
    width: auto;
  }
}

/* ---- Reason：769〜1024pxは横並び維持（写真カラムを小さくしてテキスト幅を確保）、768px以下で縦積み。PC(1025px〜)はauto-fitのまま ---- */
@media (max-width: 1024px) {
  .fr-reason-grid {
    grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr) !important;
    gap: clamp(20px, 3vw, 44px) !important;
  }
}
@media (max-width: 768px) {
  .fr-reason-grid {
    grid-template-columns: 1fr !important;
  }
}

/* ---- SP専用改行ヘルパー：768px以下でのみ改行を有効化 ---- */
.sp-only-br { display: none; }
@media (max-width: 768px) {
  .sp-only-br { display: inline; }
}

/* ---- Business：grid-template-areas で配置。
   PC(945px以上)＝左にスライダー（2行分span）／右上=見出し・右下=本文（従来の見た目を維持）。
   縦積み(944px以下)＝見出し(Business/私たちが扱っているもの) → スライダー → 本文 の順。 */
.fr-business-grid {
  grid-template-columns: 1fr 1fr !important;
  grid-template-areas: "media head" "media body" !important;
  row-gap: 0 !important;
  align-items: start !important;
}
.fr-business-grid > .fr-biz-media { grid-area: media; align-self: center; }
.fr-business-grid > .fr-biz-head  { grid-area: head; }
.fr-business-grid > .fr-biz-body  { grid-area: body; }

@media (max-width: 944px) {
  .fr-business-grid {
    grid-template-columns: 1fr !important;
    grid-template-areas: "head" "media" "body" !important;
    row-gap: clamp(24px, 4vw, 40px) !important;
    align-items: stretch !important;
  }
  .fr-business-grid > .fr-biz-media { align-self: auto; }
}

/* ---- 追従CTA（下部固定バー）：SPで縦積みさせず常に横並び ----
   縦積みが始まる幅(〜414px)では電話番号を隠しアイコンのみにして「電話アイコン＋求人ボタン」を1行維持。 */
@media (max-width: 414px) {
  .fr-sticky-inner { flex-wrap: nowrap !important; gap: 10px !important; }
  .fr-sticky-telnum { display: none; }            /* 電話番号テキストを隠す（アイコンは残す） */
  .fr-sticky-btn { flex: 0 1 auto; min-width: 0; }
}
/* 350px以下：求人ボタンの文言は br を使わず横幅で折り返す */
@media (max-width: 350px) {
  .fr-sticky-btn {
    white-space: normal;
    line-height: 1.3;
    text-align: center;
    padding: 11px 18px;
    border-radius: 22px;
  }
}

/* ---- Business：SP(768px以下)ではボタン「事業内容を知る」を中央配置。
   min-width:300px のはみ出しも防ぐ（狭い幅では100%まで縮小）。 */
@media (max-width: 768px) {
  .fr-biz-body > div { text-align: center; }
  .fr-biz-body a.hv-13 { min-width: min(300px, 100%) !important; max-width: 100%; }
}
