@charset "UTF-8";

/* ==========================================================================
  このページ専用のスタイル
  --------------------------------------------------------------------------
  ・このファイルは、同じフォルダの index.php でだけ読み込まれます。
    他のページには影響しません。
  ・サイト本体のCSSより後に読み込まれるため、ここに書いた指定が優先されます。
  ・不要な場合は、このファイルを削除しても構いません（自動的に読み込まれなくなります）。
   ========================================================================== */

/* FV: 「We're Hiring」が2行に折り返さないよう調整 */
.p-engineer-fv__title > .en {
  white-space: nowrap;
}

@media screen and (max-width: 767px) {
  /* main.cssのpadding-block-start:20vwを上書き */
  .p-engineer-fv {
    padding-block-start: 10vw;
  }
}

/* FV: 画像を4枚のスライド（slide-01~04.png）による斜め重ねカードスタックに変更
   （常に4枚とも表示され続けるよう、Swiperには依存せずJS側でレイヤーをローテーションする） */
.p-engineer-fv__image {
  position: relative;
  /* 背面のカードを外側にはみ出させて見せるため、ここではクリップしない */
  overflow: visible;
}
@media screen and (max-width: 767px) {
  /* main.cssのaspect-ratio:800/500を無効化し、縦幅はスライドカードの高さに合わせて自動で決まるようにする */
  .p-engineer-fv__image {
    aspect-ratio: auto;
    height: auto;
    /* main.cssのmargin-top:13.75vwを上書き */
    margin-top: 8vw;
    /* main.cssのwidth:90vw / transform:translate(-3vw)を上書きし、親（.p-engineer-fv__inner、
       padding-inline:8vw）の余白を無視して画面幅いっぱいに広げる。
       margin-inline:autoでは幅が親より大きい場合に左右均等に負のマージンが分配されず
       右側だけに寄ってしまうため、margin-left:50%とtransform:translateX(-50%)を組み合わせて
       親のpaddingの影響を打ち消し、常にビューポート端（0〜100vw）に揃える */
    width: 100vw;
    margin-left: 50%;
    transform: translateX(-50%);
  }
}

.p-engineer-fv__cards {
  position: relative;
  width: 70%;
}
@media screen and (max-width: 767px) {
  /* スマホ時は斜め重ねをやめ、Figma（node 875:995）を参考にしたシンプルな横並びスライダーに変更。
     現在のカードを中央に、前後のカードが少し覗く形でスクロールスナップさせる */
  .p-engineer-fv__cards {
    width: 100%;
    display: flex;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-inline: 9.9%;
    gap: 2.68%;
  }
  .p-engineer-fv__cards::-webkit-scrollbar {
    display: none;
  }
}

.p-engineer-fv__card {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  opacity: 1;
  /* transform（斜めの重なり位置）とopacityをアニメーションさせ、z-indexは即時に切り替える */
  transition: transform 0.6s cubic-bezier(0.65, 0, 0.35, 1), opacity 0.5s ease;
}
@media screen and (max-width: 767px) {
  .p-engineer-fv__card {
    position: relative;
    flex: 0 0 320px;
    width: 320px;
    scroll-snap-align: center;
  }
}
/* 無限ループ用にJSで先頭/末尾へ複製したカード。デスクトップの斜め重ねでは使わないため非表示 */
@media screen and (min-width: 768px) {
  .p-engineer-fv__card--clone {
    display: none;
  }
}

.p-engineer-fv__card img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 1vw;
}
@media screen and (min-width: 768px) {
  .p-engineer-fv__card img {
    border-radius: min(0.2777777778vw, 0.25rem);
  }
}

/* レイヤー0が最前面（アクティブ）、数字が大きいほど奥＝右上方向にずれて重なる。
   オフセット量は元の560px幅時点での48px右／36px上をカード自身の幅・高さに対する％に変換したもの。
   （画像は全て1280:830の同一比率のため、％指定でどの画面幅でも同じ見え方になる）
   さらに、スタック全体がFVエリアからはみ出さないよう、最前面カードを下にずらし
   奥のカードほどそのずらしを打ち消していく（＝アニメーション実装前の位置と同じ考え方） */
.p-engineer-fv__card.is-layer-0 {
  z-index: 4;
  transform: translate(0%, 29.7523%);
}
.p-engineer-fv__card.is-layer-1 {
  z-index: 3;
  transform: translate(8.5714%, 19.8349%);
}
.p-engineer-fv__card.is-layer-2 {
  z-index: 2;
  transform: translate(17.1429%, 9.9174%);
}
.p-engineer-fv__card.is-layer-3 {
  z-index: 1;
  transform: translate(25.7143%, 0%);
}

/* 最前面のカードが退場するときは、左にズレながらフェードアウトする
   （退場中は他カードより手前に表示し、2枚目のカードが繰り上がる動きの上を横切らせる） */
.p-engineer-fv__card.is-exiting {
  z-index: 5;
  transform: translate(-35%, 29.7523%) rotate(-15deg);
  opacity: 0;
}
@media screen and (max-width: 767px) {
  /* スマホ時は横並びスライダーのため、斜め重ね用のtransform/opacityは無効化する */
  .p-engineer-fv__card.is-layer-0,
  .p-engineer-fv__card.is-layer-1,
  .p-engineer-fv__card.is-layer-2,
  .p-engineer-fv__card.is-layer-3,
  .p-engineer-fv__card.is-exiting {
    z-index: auto;
    transform: none;
    opacity: 1;
  }
}

/* FV: カードスタックのページネーション（Figma: node 875:336 のドット4つを参考にサイズ・配色を設定）
   最前面（is-layer-0）のカードに対応するドットを is-active で強調する */
.p-engineer-fv__pagination {
  position: absolute;
  left: 50%;
  bottom: -8vw;
  display: flex;
  align-items: center;
  gap: 6px;
  transform: translate(-50%, 0);
  z-index: 6;
}
@media screen and (min-width: 768px) {
  .p-engineer-fv__pagination {
    bottom: min(-2.5vw, -2.25rem);
    gap: min(1.2698055556vw, 1.1428rem);
  }
}

.p-engineer-fv__pagination-dot {
  padding: 0;
  width: 6px;
  height: 6px;
  border: none;
  border-radius: 50%;
  background-color: #d9d9d9;
  cursor: pointer;
  transition: background-color 0.3s ease;
}
@media screen and (min-width: 768px) {
  .p-engineer-fv__pagination-dot {
    width: min(1.4048958333vw, 1.2644rem);
    height: min(1.4048958333vw, 1.2644rem);
  }
}

.p-engineer-fv__pagination-dot.is-active {
  background-color: #2b2e33;
}

/* long-movie: こたけ正義感さん出演動画公開中 */
.p-cm-video {
  position: relative;
  margin-top: 100px;
  padding-bottom: 100px;
  background-image: linear-gradient(to bottom, transparent calc(100% - 8.5vw), var(--color-gray) calc(100% - 8.5vw));
}
@media screen and (max-width: 767px) {
  .p-cm-video {
    margin-top: 20vw;
    padding-inline: 8vw;
  }
  /* p-cm-video__headingが1stViewに入るようになったが、.p-cm-video:afterの白カーテンは
     ::after疑似要素としてツリー順で最後に描画されるためis-animatedが付くまで見出しの上に乗ってしまう。
     見出しだけz-indexを上げてカーテンより手前に固定し、初期状態から常に見えるようにする */
  .p-cm-video__heading {
    position: relative;
    z-index: 1;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video {
    background-image: linear-gradient(to bottom, transparent calc(100% - min(8.3333333333vw, 7.5rem)), var(--color-gray) calc(100% - min(8.3333333333vw, 7.5rem)));
  }
}

.p-cm-video__bg {
  position: absolute;
  top: 100px;
  left: 0;
  width: 100%;
  height: calc(100% - 100px);
  overflow: hidden;
  background-color: var(--color-black);
}
@media screen and (max-width: 767px) {
  .p-cm-video__bg {
    -webkit-clip-path: polygon(0 8.5vw, 100% 0, 100% 100%, 0 calc(100% - 8.5vw));
    clip-path: polygon(0 8.5vw, 100% 0, 100% 100%, 0 calc(100% - 8.5vw));
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__bg {
    -webkit-clip-path: polygon(0 min(8.3333333333vw, 7.5rem), 100% 0, 100% 100%, 0 calc(100% - min(8.3333333333vw, 7.5rem)));
    clip-path: polygon(0 min(8.3333333333vw, 7.5rem), 100% 0, 100% 100%, 0 calc(100% - min(8.3333333333vw, 7.5rem)));
  }
}

.p-cm-video__bg-clip {
  position: absolute;
  left: 0;
  display: block;
  background-color: #2b2e33;
  transform: translateZ(0);
  will-change: clip-path;
}
@media screen and (max-width: 767px) {
  .p-cm-video__bg-clip {
    top: 75vw;
    left: -103vw;
    width: 232.25vw;
    height: calc(127.5vw + 80px);
    -webkit-clip-path: polygon(150.25vw 100%, 0 100%, 100% 0);
    clip-path: polygon(150.25vw 100%, 0 100%, 100% 0);
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__bg-clip {
    top: calc(min(5.0694444444vw, 4.5625rem) * -1);
    left: calc(min(18.2638888889vw, 16.4375rem) * -1);
    width: min(116.0416666667vw, 104.4375rem);
    height: calc(min(63.75vw, 57.375rem) + 80px);
    -webkit-clip-path: polygon(0 100%, min(75.1388888889vw, 67.625rem) 100%, 100% 0);
    clip-path: polygon(0 100%, min(75.1388888889vw, 67.625rem) 100%, 100% 0);
  }
}

/* p-cm-video__bg の出現アニメーション（.l-entry の :after カーテンと同じ仕組み） */
.p-cm-video:after {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  content: "";
  background-color: var(--color-white);
  transform: translateZ(0);
  transition: transform 0.6s var(--ease-in-quad) 0.4s;
  will-change: clip-path;
}
@media screen and (max-width: 767px) {
  .p-cm-video:after {
    -webkit-clip-path: polygon(0 8.5vw, 100% 0, 100% 100%, 0 calc(100% - 8.5vw));
    clip-path: polygon(0 8.5vw, 100% 0, 100% 100%, 0 calc(100% - 8.5vw));
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video:after {
    -webkit-clip-path: polygon(0 min(8.3333333333vw, 7.5rem), 100% 0, 100% 100%, 0 calc(100% - min(8.3333333333vw, 7.5rem)));
    clip-path: polygon(0 min(8.3333333333vw, 7.5rem), 100% 0, 100% 100%, 0 calc(100% - min(8.3333333333vw, 7.5rem)));
  }
}
.p-cm-video.is-animated:after {
  transform: translateY(101%);
}

.p-cm-video__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
  margin-inline: auto;
}
@media screen and (min-width: 768px) {
  .p-cm-video__inner {
    width: min(70.6270833333vw, 63.564375rem);
  }
}

.p-cm-video__heading {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: TazuganeGothicStdN-Bold, sans-serif;
  font-weight: 700;
  color: var(--color-black);
  text-align: center;
}
@media screen and (max-width: 767px) {
  .p-cm-video__heading {
    gap: 3vw;
    font-size: 4.5vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__heading {
    gap: min(1.1111111111vw, 1rem);
    font-size: min(2.2222222222vw, 2rem);
  }
}

.p-cm-video__deco {
  display: block;
  flex-shrink: 0;
}
@media screen and (max-width: 767px) {
  .p-cm-video__deco {
    width: 3.5vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__deco {
    width: min(1.3048611111vw, 1.174375rem);
  }
}
.p-cm-video__deco img {
  display: block;
  width: 100%;
  height: auto;
}
.p-cm-video__deco--left img {
  transform: scaleX(-1);
}

.p-cm-video__card {
  display: block;
  width: 100%;
  border: 0;
  padding: 0;
  background-color: var(--color-white);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
@media screen and (max-width: 767px) {
  .p-cm-video__card {
    border-radius: 2vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__card {
    border-radius: min(0.5555555556vw, 0.5rem);
  }
}

.p-cm-video__thumb {
  display: block;
  position: relative;
  overflow: hidden;
  aspect-ratio: 965 / 539;
  border: 20px solid #f8f8fa;
  box-sizing: border-box;
}
@media screen and (max-width: 767px) {
  .p-cm-video__thumb {
    border-width: 8px;
    border-radius: 1vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__thumb {
    border-radius: min(0.2777777778vw, 0.25rem);
  }
}
.p-cm-video__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease-out;
}
.p-cm-video__card:hover .p-cm-video__thumb img {
  transform: scale(1.05);
}

.p-cm-video__play {
  position: absolute;
  top: 50%;
  left: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  cursor: pointer;
}
@media screen and (max-width: 767px) {
  .p-cm-video__play {
    width: 15vw;
    height: 15vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__play {
    width: min(7.4136111111vw, 6.67225rem);
    height: min(7.4136111111vw, 6.67225rem);
  }
}
.p-cm-video__play-triangle {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.p-cm-video__button {
  background-color: var(--color-gray);
}
@media screen and (max-width: 767px) {
  .p-cm-video__button {
    width: 70vw;
    height: 17vw;
    padding-right: 5.25vw;
    padding-left: 7.75vw;
    column-gap: 4vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video__button {
    width: min(19.4444444444vw, 17.5rem);
    height: min(5vw, 4.5rem);
    padding-right: min(1.4583333333vw, 1.3125rem);
    padding-left: min(2.1527777778vw, 1.9375rem);
    column-gap: min(1.1111111111vw, 1rem);
  }
}

/* long-movie: サムネイルクリックで開くYouTube再生モーダル */
.p-cm-video-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8vw;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s var(--ease-out-sine), visibility 0.3s var(--ease-out-sine);
}
.p-cm-video-modal.is-active {
  visibility: visible;
  opacity: 1;
}
.p-cm-video-modal__overlay {
  position: absolute;
  inset: 0;
  background-color: rgba(32, 34, 38, 0.4);
}
.p-cm-video-modal__inner {
  position: relative;
  width: 100%;
}
@media screen and (min-width: 768px) {
  .p-cm-video-modal__inner {
    width: min(69.4444444444vw, 62.5rem);
  }
}
.p-cm-video-modal__frame {
  position: relative;
  overflow: hidden;
  aspect-ratio: 965 / 539;
  background-color: var(--color-black);
}
.p-cm-video-modal__iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}
.p-cm-video-modal__close {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background-color: var(--color-white);
  transform: translate(35%, -35%);
  cursor: pointer;
}
@media screen and (max-width: 767px) {
  .p-cm-video-modal__close {
    top: -15vw;
    right: 0;
    width: 12vw;
    height: 12vw;
    transform: none;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-video-modal__close {
    width: min(5.5555555556vw, 5rem);
    height: min(5.5555555556vw, 5rem);
  }
}
.p-cm-video-modal__close-line {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 40%;
  height: 2px;
  background-color: var(--color-black);
}
.p-cm-video-modal__close-line:first-child {
  transform: translate(-50%, -50%) rotate(45deg);
}
.p-cm-video-modal__close-line:last-child {
  transform: translate(-50%, -50%) rotate(-45deg);
}

body.is-cm-video-modal-open {
  overflow: hidden;
}

/* short-movie: 4本のショートムービーをグリッド表示 */
.p-cm-shorts {
  margin-block-start: 0;
  padding-top: 100px;
  padding-bottom: 100px;
  background-color: var(--color-gray);
}
@media screen and (max-width: 767px) {
  .p-cm-shorts {
    padding-top: 80px;
  }
}

.p-cm-shorts__bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
}

.p-cm-shorts__bg-clip {
  position: absolute;
  left: 0;
  display: block;
  width: min(115.0694444444vw, 103.5625rem);
  height: min(60.8333333333vw, 54.75rem);
  background-color: var(--color-white);
  -webkit-clip-path: polygon(0 100%, 64% 100%, 100% 0);
  clip-path: polygon(0 100%, 64% 100%, 100% 0);
  transform: translateZ(0);
  will-change: clip-path;
}
@media screen and (max-width: 767px) {
  .p-cm-shorts__bg-clip {
    bottom: -30px;
    left: -840px;
    width: 1473px;
    height: 779px;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-shorts__bg-clip {
    bottom: -50px;
    left: calc(min(23.6111111111vw, 21.25rem) * -1 - 480px);
  }
}

.p-cm-shorts__list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6vw;
  margin-block-start: 8vw;
}
@media screen and (max-width: 767px) {
  .p-cm-shorts__list {
    margin-inline: 3vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-shorts__list {
    grid-template-columns: repeat(2, 1fr);
    gap: min(2.7777777778vw, 2.5rem);
    margin-block-start: min(4.1666666667vw, 3.75rem);
  }
}

.p-cm-shorts__card {
  position: relative;
  display: block;
  width: 100%;
  border: 0;
  padding: 0;
  overflow: hidden;
  background-color: var(--color-white);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
@media screen and (max-width: 767px) {
  .p-cm-shorts__card {
    border-radius: 2vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-shorts__card {
    border-radius: min(0.5555555556vw, 0.5rem);
  }
}

.p-cm-shorts__thumb {
  display: block;
  position: relative;
  overflow: hidden;
  aspect-ratio: 600 / 335;
}
.p-cm-shorts__thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease-out;
}
.p-cm-shorts__card:hover .p-cm-shorts__thumb img {
  transform: scale(1.05);
}

.p-cm-shorts__play {
  position: absolute;
  top: 50%;
  left: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  cursor: pointer;
}
@media screen and (max-width: 767px) {
  .p-cm-shorts__play {
    width: 12vw;
    height: 12vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-shorts__play {
    width: min(5.3333333333vw, 4.8rem);
    height: min(5.3333333333vw, 4.8rem);
  }
}
.p-cm-shorts__play-triangle {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.p-cm-shorts__caption {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--color-black);
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  color: var(--color-white);
  text-align: center;
}
@media screen and (max-width: 767px) {
  .p-cm-shorts__caption {
    height: 12vw;
    font-size: 4vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-shorts__caption {
    height: min(4.4444444444vw, 4rem);
    font-size: min(1.2222222222vw, 1.1rem);
  }
}

.p-cm-shorts__button {
  margin-inline: auto;
}
@media screen and (max-width: 767px) {
  .p-cm-shorts__button {
    width: 70vw;
    height: 17vw;
    padding-right: 5.25vw;
    padding-left: 7.75vw;
    margin-block-start: 8vw;
    column-gap: 4vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-shorts__button {
    width: min(19.4444444444vw, 17.5rem);
    height: min(5vw, 4.5rem);
    padding-right: min(1.4583333333vw, 1.3125rem);
    padding-left: min(2.1527777778vw, 1.9375rem);
    margin-block-start: min(4.1666666667vw, 3.75rem);
    column-gap: min(1.1111111111vw, 1rem);
  }
}

/* event-info: 採用イベント情報（エンジニア/セールス/全職種向けの3カード） */
/* main.css側の.p-engineer-section+.p-engineer-section{margin-block-start:30vw / min(13.89vw,12.5rem)}は
   詳細度(0,2,0)が.p-cm-event-info単体(0,1,0)より高く上書きされてしまうため、
   .p-engineer-sectionも含めた複合セレクタで詳細度を揃えて上書きする */
.p-engineer-section.p-cm-event-info {
  margin-block-start: 100px;
}

.p-cm-event-info__head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__head .c-heading__title {
    white-space: nowrap;
  }
  .p-cm-event-info__head {
    flex-direction: row;
    align-items: center;
    column-gap: min(13.1944444444vw, 11.875rem);
  }
}

@media screen and (max-width: 767px) {
  .p-engineer-section .c-heading {
    margin-inline: 3vw;
  }
}

/* main.css側の.p-about-us-values__bg（スマホ時）は transform: translate(-5vw) のみで、
   自身が margin-left: 5vw を持つセクション（例: report の .p-engineer-media）に置かれることを
   前提に、その分だけ左へ動かして右端まで塗りきる作りになっている。
   event セクション（.p-cm-event-info）にはその前提となる margin-left が無いため、
   同じtransformだと行き過ぎて右側に余白ができてしまう。ここでは打ち消して余白をなくす */
@media screen and (max-width: 767px) {
  .p-cm-event-info .c-decoration__bg {
    transform: translate(0);
  }
}

.p-cm-event-info__desc {
  font-family: "Noto Sans JP", sans-serif;
  letter-spacing: 0.06em;
  color: var(--color-black);
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__desc {
    margin-inline: 3vw;
    margin-block-start: 4vw;
    font-size: 3.5vw;
    line-height: 1.8;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__desc {
    font-size: min(1.1111111111vw, 1rem);
    line-height: 1.8;
  }
}

.p-cm-event-info__list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6vw;
  margin-block-start: 8vw;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__list {
    margin-inline: 3vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__list {
    grid-template-columns: repeat(3, 1fr);
    gap: min(2.7777777778vw, 2.5rem);
    margin-block-start: min(4.1666666667vw, 3.75rem);
  }
}

.p-cm-event-info__card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border: 1px solid #d0d1d3;
  background-color: var(--color-white);
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__card {
    row-gap: 6vw;
    padding: 6vw;
    border-radius: 2vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__card {
    height: min(24.6342361111vw, 22.1708125rem);
    padding: min(2.7777777778vw, 2.5rem);
    border-radius: min(0.5555555556vw, 0.5rem);
  }
}

.p-cm-event-info__body {
  display: flex;
  flex-direction: column;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__body {
    row-gap: 4vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__body {
    row-gap: min(1.6666666667vw, 1.5rem);
  }
}

.p-cm-event-info__info {
  display: flex;
  flex-direction: column;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__info {
    row-gap: 2vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__info {
    row-gap: min(0.6944444444vw, 0.625rem);
  }
}

.p-cm-event-info__title {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1.7;
  color: var(--color-black);
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__title {
    font-size: 5vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__title {
    font-size: min(1.9444444444vw, 1.75rem);
  }
}

.p-cm-event-info__tags {
  display: flex;
  flex-wrap: wrap;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__tags {
    column-gap: 3vw;
    row-gap: 2vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__tags {
    column-gap: min(0.8333333333vw, 0.75rem);
    row-gap: min(0.5555555556vw, 0.5rem);
  }
}

.p-cm-event-info__tag {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background-color: var(--color-gray);
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  letter-spacing: 0.08em;
  line-height: 1.3;
  color: var(--color-black);
  white-space: nowrap;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__tag {
    padding: 2vw 4vw;
    font-size: 3vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__tag {
    padding: min(0.5555555556vw, 0.5rem) min(1.1111111111vw, 1rem);
    font-size: min(0.9027777778vw, 0.8125rem);
  }
}

.p-cm-event-info__date {
  display: flex;
  align-items: baseline;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1.7;
  color: var(--color-black);
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__date {
    column-gap: 1vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__date {
    column-gap: min(0.2777777778vw, 0.25rem);
  }
}

.p-cm-event-info__date-day {
  font-size: 28px;
}

.p-cm-event-info__date-week {
  font-weight: 700;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__date-week {
    font-size: 3.5vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__date-week {
    font-size: min(1.3888888889vw, 1.25rem);
  }
}

.p-cm-event-info__date-time {
  font-weight: 700;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__date-time {
    font-size: 3.8vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__date-time {
    font-size: min(1.5277777778vw, 1.375rem);
  }
}

.p-cm-event-info__button {
  margin: 0;
}
@media screen and (max-width: 767px) {
  .p-cm-event-info__button {
    height: 14vw;
    padding-right: 4vw;
    padding-left: 6vw;
    column-gap: 3vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-info__button {
    height: min(5vw, 4.5rem);
    padding-right: min(1.4583333333vw, 1.3125rem);
    padding-left: min(2.1527777778vw, 1.9375rem);
    column-gap: min(1.1111111111vw, 1rem);
  }
}

.p-cm-event-info__button .c-button__arrow {
  width: 100%;
  height: auto;
}

.p-cm-event-info__button .c-button__arrow img {
  display: block;
  width: 100%;
  height: 100%;
}

.p-cm-event-info__button:hover .c-button__icon:before {
  border-color: var(--color-yellow);
}

/* event-report: p-engineer-media流用、過去のイベントレポート（タイトル+リード+記事2枚+ボタン） */
/* l-entry は margin-block-start の負値と、同じ大きさの padding-block-start を相殺させているため、
   このセクションの margin-bottom がそのまま l-entry の見出しまでの余白（=100px）になる */
.p-cm-event-report {
  margin-bottom: 6.9444444444vw;
}
@media screen and (max-width: 767px) {
  .p-engineer-media {
    margin-inline: 8vw;
  }
}

/* p-engineer-media の overflow: hidden は、はみ出す背景(.p-engineer-media__bg)を隠すためのものだが、
   セクション下端に追加した装飾（.c-decoration、はみ出して見せる想定）も一緒に隠してしまう。
   背景と本文だけを新しいラッパーでクリップし、セクション自体は overflow: visible にすることで、
   装飾だけがセクションの外にはみ出して表示されるようにする。
   padding も下記ラッパー側に付け替えるため、ここで明示的に 0 にしておく
   （0にしないと、main.css側の.p-engineer-media本来のpaddingが透けて出てきて、
   セクションの高さが変わってしまう） */
.p-cm-event-report.p-engineer-media {
  overflow: visible;
  padding: 0;
}
/* .p-engineer-media__bg は position: absolute で、その基準（containing block）は
   最も近い position 指定祖先である本セクション自身になる。そのため本来は
   セクションの overflow: hidden で表示範囲がクリップされていたが、上記で
   セクションを overflow: visible にしたことでクリップが効かなくなり、
   グレーの四角エリアからはみ出して表示されてしまっていた。
   このラッパーに position: relative を与えて .p-engineer-media__bg の基準を
   ラッパー自身に付け替え、overflow: hidden で改めてクリップする。
   padding もセクション本体から移すことで、ラッパー自身のボックスをセクションの
   パディングボックスと完全に一致させ、.p-engineer-media__bg や本文（.inner）の
   見た目上の位置・サイズを変えずに済むようにしている */
.p-cm-event-report__clip {
  position: relative;
  overflow: hidden;
  padding: 5vw;
}
@media screen and (max-width: 767px) {
  .p-cm-event-report__clip {
    padding-top: 10vw;
    padding-bottom: 10vw;
  }
}
/* .c-decoration__bg は z-index: -1 のため、report セクション自身の背景（.p-engineer-media__bg、
   z-index: auto）だけでなく、後続セクション（.l-entry、z-index: 1）にも埋もれて隠れてしまう。
   装飾だけを z-index で引き上げ、どちらの上にも表示されるようにする */
.p-cm-event-report .c-decoration__bg {
  z-index: 2;
  /* .c-decoration__bg には overflow-x: clip が指定されており、モバイル幅ではこれが
     装飾（.c-decoration__clip の三角形）自体をクリップして見えなくしてしまうため解除する */
  overflow-x: visible;
  /* .c-decoration__bg自体はセクションとほぼ同じ大きさの透明なボックスのため、
     z-indexを上げたことでイベントレポートのクリック領域（.p-engineer-media__link）を覆ってしまう。
     装飾自体はクリック操作を必要としないため、クリックを下の要素まで貫通させる */
  pointer-events: none;
}
/* main.css側の.p-about-us-values__bg（スマホ時）は transform: translate(-5vw) で、
   .p-engineer-mediaのmargin-inline(本来5vw)の分だけ左へ動かして右端まで塗りきる作りになっている。
   このセクションではmargin-inlineを8vwに変更しているため、そのままだと3vw分の隙間ができてしまう。
   ずらす量を8vwに合わせて隙間をなくす */
@media screen and (max-width: 767px) {
  .p-cm-event-report .c-decoration__bg {
    transform: translate(-8vw, -100px);
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-report {
    margin-bottom: min(6.9444444444vw, 6.25rem);
  }
  .p-cm-event-report__clip {
    padding: min(4.4444444444vw, 4rem);
  }
}

.p-cm-event-report .p-engineer-media__heading {
  flex-direction: column;
  align-items: flex-start;
}

.p-cm-event-report .p-engineer-media__title {
  width: auto;
  margin: 0;
  font-family: TazuganeGothicStdN-Medium, sans-serif;
  font-style: normal;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.08em;
}
@media screen and (max-width: 767px) {
  .p-cm-event-report .p-engineer-media__title {
    font-size: 6vw;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-event-report .p-engineer-media__title {
    font-size: min(2.2222222222vw, 2rem);
  }
}

.p-cm-event-report .p-engineer-media__lead {
  margin-top: 4vw;
  padding-inline-start: 0;
  text-align: left;
  font-size: 3.8vw;
}
.p-cm-event-report .p-engineer-media__lead:before {
  display: none;
}
@media screen and (min-width: 768px) {
  .p-cm-event-report .p-engineer-media__lead {
    margin-top: min(1.1111111111vw, 1rem);
    font-size: min(1.1111111111vw, 1rem);
  }
}

.p-cm-event-report .p-engineer-media__list {
  grid-template-columns: 1fr;
}
@media screen and (min-width: 768px) {
  .p-cm-event-report .p-engineer-media__list {
    grid-template-columns: repeat(2, min(25.6944444444vw, 23.125rem));
    justify-content: center;
  }
}

.p-cm-event-report .p-engineer-media__blank,
.p-cm-event-report .c-button__arrow {
  width: 100%;
  height: auto;
}

.p-cm-event-report .p-engineer-media__blank img,
.p-cm-event-report .c-button__arrow img {
  display: block;
  width: 100%;
  height: 100%;
}

/* entry: l-entry流用、見出し+ボタンのみのシンプルなCTA（アコーディオンは非表示） */
/* l-entry は元コンポーネントで負のmargin-block-startを持ち、前セクションに食い込む前提の実装のため、
   p-cm-event-reportとの間で見た目上の重なりが発生してしまう。ここでは食い込みをなくし、
   p-cm-event-report側のmargin-bottomで意図した100pxの余白だけが空くようにする */
.p-cm-entry {
  margin-block-start: 0;
}

.p-cm-entry .l-entry__intro {
  flex-direction: column;
  justify-content: center;
}

.p-cm-entry .l-entry__title {
  font-family: TazuganeGothicStdN-Bold, sans-serif;
  font-style: normal;
  font-weight: 700;
  font-size: 6.1538461538vw;
  letter-spacing: 0.06em;
}
@media screen and (max-width: 767px) {
  .p-cm-entry .l-entry__title {
    line-height: 1.4;
  }
}
@media screen and (min-width: 768px) {
  .p-cm-entry .l-entry__title {
    font-size: min(2.7777777778vw, 2.5rem);
    letter-spacing: 0.06em;
  }
}

/* l-entry__button の margin-block-start は元コンポーネントではモバイル用ブレークポイントにしかなく、
   デスクトップ幅では見出しとボタンが隙間なく接してしまうため、デスクトップ用の余白を追加 */
@media screen and (min-width: 768px) {
  .p-cm-entry .l-entry__button {
    margin-block-start: min(3.3680555556vw, 3.03125rem);
  }
}

/* スマホ時、テキスト中央寄せ＋アイコン絶対配置の元デザインを、他のボタンと同じ
   テキスト左寄せ＋アイコン右寄せ（space-between）のレイアウトに変更 */
@media screen and (max-width: 767px) {
  .p-cm-entry .l-entry__button {
    justify-content: space-between;
    padding-right: 5.25vw;
    padding-left: 9.5vw;
  }

  .p-cm-entry .l-entry__button .c-button__icon {
    position: static;
    right: auto;
    transform: none;
  }
}

.p-cm-entry .l-entry__main {
  display: none;
}
