/* ============================================================
   オープニング（ロゴアニメーションGIF）  ※フロントページのみ表示
   ============================================================ */
.is-opening,
.is-opening body {
    overflow: hidden;
}
.opening {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #fff; /* FVの初期背景（#fff）と揃えて自然に繋げる */
    opacity: 1;
    visibility: visible;
    transition: opacity .8s ease, visibility 0s linear .8s;
}
.opening.is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}
.opening_inner {
    width: 60vw;
    line-height: 0;
}
.opening_logo {
    display: block;
    width: 100%;
    height: auto;
}
@media (prefers-reduced-motion: reduce) {
    .opening {
        transition: opacity .2s ease, visibility 0s linear .2s;
    }
}

.top_fv {
    position: relative;
    width: 100%;
    /* 高さは動画の実アスペクト比で決まる（FV＋HEADER＝100vh 設計は廃止／動画を上下トリミングしない） */
    margin-top: var(--header-h, 108px);            /* 固定ヘッダーの直下から開始 */
    overflow: hidden;
    background: #fff;
    isolation: isolate;
}

.top_fv_bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    opacity: 0;
    transition: opacity 1s ease;
}
.top_fv_bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: blur(24px);
    transform: scale(1.08);
    transition: filter 1.2s ease, transform 1.2s ease;
}

/* ▼ FV背景 動画（試験導入）専用スタイル。画像に戻す際はこのブロックごと削除できる。
   画像(.top_fv_bg img)と同じ blur→解除 のオープニング演出を動画にも適用する。
   動画は cover でトリミングせず、実アスペクト比の高さで全体表示（＝動画が .top_fv の高さを決める）。 */
.top_fv_bg.top_fv_bg_movie {
    position: relative;   /* 絶対配置をやめ、通常フローで動画が高さを決める */
    inset: auto;
}
.top_fv_bg_movie video {
    width: 100%;
    height: auto;         /* cover 解除＝上下を切らずに動画全体を表示 */
    display: block;
    filter: blur(24px);
    transform: scale(1.08);
    transition: filter 1.2s ease, transform 1.2s ease;
}
body.op-bg .top_fv_bg_movie video {
    filter: blur(0);
    transform: scale(1);
}
@media (prefers-reduced-motion: reduce) {
    .top_fv_bg_movie video {
        transition: none;
    }
}
/* ▲ FV背景 動画 */

.top_fv_content {
    position: absolute;   /* 動画の上にサブコピーをオーバーレイ */
    inset: 0;
    z-index: 2;
    height: auto;
    opacity: 0;
    transition: opacity .8s ease;
}

.top_fv_main_copy {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 3;
    width: 100%;
    text-align: center;
    white-space: nowrap;
    font-size: 7.2rem;
    font-weight: 900;
    font-style: oblique;
    color: #000;
    opacity: 0;
    transform: translate(-50%, calc(-50% + 24px));
    transition: opacity .8s ease, transform .8s ease, color 1s ease;
}
body.op-copy .top_fv_main_copy {
    opacity: 1;
    transform: translate(-50%, -50%);
}
body.op-bg .top_fv_bg {
    opacity: 1;
}
body.op-bg .top_fv_bg img {
    filter: blur(0);
    transform: scale(1);
}
body.op-bg .top_fv_main_copy {
    color: #fff;
}
/* ▼ FVメインコピー非表示中の対応：コピーが無い分、背景(動画/画像)をオープニング開始(op-copy)と同時に
   先出しし、コピー待ちで白背景のまま止まる不整合（空白）を防ぐ。コピーを戻す際はこのブロックを削除。 */
body.op-copy .top_fv_bg {
    opacity: 1;
}
body.op-copy .top_fv_bg img,
body.op-copy .top_fv_bg_movie video {
    filter: blur(0);
    transform: scale(1);
}
/* ▲ FVメインコピー非表示中の対応 */
body.op-rest .top_fv_content {
    opacity: 1;
}

body.home .main_header {
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 10; /* オープニングオーバーレイ(9999)の下。演出中はオーバーレイが覆い、終了と同時に自然に現れる */
    transition: transform .3s ease;
}
/* ▼ トップページ：ヘッダーを最初から白背景に固定（スクロール後＝サブページと同じ配色を初期適用）。
   スクロール量に依存せず常にこの配色。ロゴはカラー版、PCのナビピルは濃色版で白背景でも視認できる。 */
body.home .main_header {
    background-color: #fff;
}
body.home .main_header .header_logo #path01 {
    fill: var(--color-orange);
}
body.home .main_header .header_logo #path02 {
    fill: #63696e;
}
@media screen and (min-width:1100px) {
    body.home .main_header .header_nav_sub .header_nav_item {
        background: rgba(0, 0, 0, 0.18);
    }
}
/* ▲ トップページ ヘッダー白背景 */
@media (prefers-reduced-motion: reduce) {
    .top_fv_bg,
    .top_fv_bg img,
    .top_fv_content,
    .top_fv_main_copy,
    body.home .main_header {
        transition: none;
    }
}

.top_fv_sub_copy_content {
    position: absolute;
    bottom: 100px;
    right: 100px;
}
.top_fv_sub_text {
    font-size: 1.8rem;
    font-weight: 700;
    color: #fff;
    margin-top: 20px;
}


.top_section_title_jp {
    font-size: 1.6rem;
    font-weight: 500;
}
.top_section_title_en {
    font-size: 6rem;
}
.white .top_section_title_jp,
.white .top_section_title_en {
    color: #fff;
}
/* セクションタイトル上部の横棒。可視領域に入ると左→右へ表示（JSで .is-inview を付与） */
.top_section_title::before {
    content: "";
    display: block;
    width: 60px;
    height: 6px;
    background-color: var(--color-orange);
    margin-bottom: 20px;
    transform: scaleX(0) skewX(-30deg); /* skew は常時付与＝最初から平行四辺形。scaleX だけをアニメ */
    transform-origin: left center;
    transition: transform 0.6s ease;
}
.top_section_title.is-inview::before {
    transform: scaleX(1) skewX(-30deg);
}
/* RECRUIT（背景オレンジ）は棒が同化するため白にする */
.top_section_title.white::before {
    background-color: #fff;
}
@media (prefers-reduced-motion: reduce) {
    .top_section_title::before {
        transform: scaleX(1) skewX(-30deg);
        transition: none;
    }
}


.top_news {
    padding: 140px 0;
}
.top_news_content {
    display: flex;
    justify-content: space-between;
}
.top_news_articles {
    width: 810px;
} 
.top_news_article {
    width: 100%;
    padding: 20px 0;
    border-bottom: solid 1px #e6e6e6;
    position: relative;
}
/* 既存のグレー下線に重ねるオレンジ線：ホバーで左→右に伸び、解除で右→左に消える */
.top_news_article::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: -1px;
    width: 100%;
    height: 1px;
    background-color: var(--color-orange);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.4s ease;
}
.top_news_article:hover::after {
    transform: scaleX(1);
}
.top_news_article:hover .top_news_article_title,
.top_news_article:hover .top_news_article_date {
    color: var(--color-orange);
}
.top_news_article_link {
    display: flex;
    gap: 16px;
    border-radius: 6px;
}
.top_news_article_thumb {
    width: 140px;
    height: 80px;
}
.top_news_article_thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.top_news_article_body {
    padding: 5px 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.top_news_article_title {
    font-size: 2rem;
    font-weight: 500;
    transition: color 0.3s ease;
}
.top_news_article_meta {
    display: flex;
    align-items: center;
    gap: 15px;
}
.top_news_article_cat {
    font-size: 1.2rem;
    border-radius: 90px;
    background-color: #e0e1e2;
    padding: 7px 16px;
    color: var(--color-black);
    line-height: 1;
    transition: background-color 0.3s ease, color 0.3s ease;
}
.top_news_article:hover .top_news_article_cat {
    background-color: var(--color-orange);
    color: #fff;
}
.top_news_article_date {
    color: #909090;
    font-size: 1.4rem;
    font-weight: 400;
    transition: color 0.3s ease;
}
.top_news .arrow__btn {
    margin-top: 80px;
    justify-content: flex-end;
}

.top_company {
    padding-bottom: 140px;
}
.top_company_content {
    display: flex;
    justify-content: space-between;
}
.top_company_content .title_wrap {
    display: flex;
    flex-direction: column;
    width: calc(50% - 35px);
}
.top_company_content .title_wrap .top_company_links {
    margin-top: auto;
}
.top_company_main_visual {
    width: 50%;
    border-radius: 20px;
    overflow: hidden;
}
.top_company_main_visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.top_company_links {
    border-top: solid 1px #e9ebef;
}
.top_company_link_item {
    padding: 20px 0;
    border-bottom: solid 1px #e9ebef;
}
.top_company_link span.icon {
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  background-color: #e03100;
  border-radius: 3.5em;
  color: #fff;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  overflow: hidden;
  position: relative;
  width: 56px;
  height: 56px;
  margin-left: auto;
}
.top_company_link span.icon:before {
    -webkit-transition: 0.5s;
    transition: 0.5s;
    background-color: #000;
    border-radius: 4em;
    content: "";
    width: 4em;
    height: 4em;
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%) scale(0);
    transform: translate(-50%, -50%) scale(0);
    z-index: 1;
}
.top_company_link span.icon span:before, .top_company_link span.icon span:after {
    -webkit-transition: 0.5s;
    transition: 0.5s;
    font-family: "icomoon";
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    content: "\e902";
    display: block;
    position: relative;
    z-index: 2;
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}
.top_company_link span.icon span:before {
    -webkit-transform: translate(-300%, -50%);
    transform: translate(-300%, -50%);
}
/* 矢印アイコン（.text 無し）のホバー演出：arrow__btn と同様（横スワップ＋黒丸フィル） */
@media only screen and (min-width: 1025px) {
    .top_company_link:hover span.icon:before {
        -webkit-transform: translate(-50%, -50%) scale(1);
                transform: translate(-50%, -50%) scale(1);
        -webkit-transition-delay: 0.2s;
                transition-delay: 0.2s;
    }
    .top_company_link:hover span.icon span:after {
        -webkit-transform: translate(300%, -50%);
                transform: translate(300%, -50%);
    }
    .top_company_link:hover span.icon span:before {
        -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);
        -webkit-transition-delay: 0.3s;
                transition-delay: 0.3s;
    }
}
/* キーボードフォーカス時にも同等のフィードバック（画面幅を問わず有効） */
.top_company_link:focus-visible span.icon:before {
    -webkit-transform: translate(-50%, -50%) scale(1);
            transform: translate(-50%, -50%) scale(1);
    -webkit-transition-delay: 0.2s;
            transition-delay: 0.2s;
}
.top_company_link:focus-visible span.icon span:after {
    -webkit-transform: translate(300%, -50%);
            transform: translate(300%, -50%);
}
.top_company_link:focus-visible span.icon span:before {
    -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    -webkit-transition-delay: 0.3s;
            transition-delay: 0.3s;
}
.top_company_link {
    width: 100%;
    display: flex;
    align-items: center;
}
.top_company_link_title_wrap {
    margin-left: 20px;
}
.top_company_link_title {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 12px;
    line-height: 1;
    transition: color 0.3s ease;
}
.top_company_link_description {
    font-size: 1.3rem;
    color: #363636;
    line-height: 1;
    transition: color 0.3s ease;
}
/* ホバー／フォーカスでタイトル・説明文をオレンジに */
.top_company_link:hover .top_company_link_title,
.top_company_link:hover .top_company_link_description,
.top_company_link:focus-visible .top_company_link_title,
.top_company_link:focus-visible .top_company_link_description {
    color: var(--color-orange);
}

.top_service {
    background-color: #f1f1f1;
    padding: 140px 0;
    position: relative;
}
.top_service_text_wrap {
    max-width: calc(50% - 60px);
}
.top_service_headline {
    font-size: 3rem;
    font-weight: 700;
    margin: 60px 0;
}
.top_service_description {
    line-height: 2;
}
.top_service .arrow__btn {
    margin-top: 40px;
    justify-content: flex-end;
}
.top_service_mv {
    position: absolute;
    bottom: 120px;
    left: 50%;
}

.top_recruit {
    background-color: #fbfbfb;
}
.top_recruit_link {
    display: block;
    position: relative;
    overflow: hidden;
    background: linear-gradient(145deg,rgba(230, 50, 0, 1) 0%, rgba(181, 39, 0, 1) 100%);
    padding: 100px 0;
}
.top_recruit_link .inner {
    position: relative;
    z-index: 2;
}
.top_recruit_loop_mv {
    position: absolute;
    top: 50%;
    right: 16%;
    z-index: 1;
    width: 480px;
    height: 180%;
    transform: translateY(-50%) rotate(24deg);
    overflow: hidden;
    pointer-events: none;
}
.top_recruit_loop_track {
    display: flex;
    flex-direction: column;
    width: 100%;
    animation: recruitLoop 80s linear infinite;
    will-change: transform;
}
.top_recruit_loop_track img {
    display: block;
    width: 100%;
    height: auto;
}
@keyframes recruitLoop {
    from { transform: translateY(0); }
    to { transform: translateY(-50%); }
}
@media (prefers-reduced-motion: reduce) {
    .top_recruit_loop_track {
        animation: none;
    }
}
.top_recruit_headline {
    color: #fff;
    font-size: 2.6rem;
    font-weight: 700;
    margin: 40px 0;
}
.top_recruit_link .arrow__btn .text {
    color: #fff;
}
.top_recruit_link .arrow__btn span.icon {
    background-color: #fff;
}
.top_recruit_link .arrow__btn span.icon span:before,
.top_recruit_link .arrow__btn span.icon span:after {
    color: var(--color-orange);
}
/* 下線はこの場所のみ白色にする */
.top_recruit_link .arrow__btn.underline span.text:after {
    background-color: #fff;
}
/* 内側の .arrow__btn は <div> のため、<a class="top_recruit_link"> 全体のホバー／フォーカスで演出を再生する */
@media only screen and (min-width: 1025px) {
    .top_recruit_link:hover .arrow__btn span.icon:before {
        -webkit-transform: translate(-50%, -50%) scale(1);
                transform: translate(-50%, -50%) scale(1);
        -webkit-transition-delay: 0.2s;
                transition-delay: 0.2s;
    }
    .top_recruit_link:hover .arrow__btn span.icon span:after {
        -webkit-transform: translate(300%, -50%);
                transform: translate(300%, -50%);
    }
    .top_recruit_link:hover .arrow__btn span.icon span:before {
        -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);
        -webkit-transition-delay: 0.3s;
                transition-delay: 0.3s;
    }
    .top_recruit_link:hover .arrow__btn.underline span.text:after {
        width: 100%;
    }
}
.top_recruit_link:focus-visible .arrow__btn span.icon:before {
    -webkit-transform: translate(-50%, -50%) scale(1);
            transform: translate(-50%, -50%) scale(1);
    -webkit-transition-delay: 0.2s;
            transition-delay: 0.2s;
}
.top_recruit_link:focus-visible .arrow__btn span.icon span:after {
    -webkit-transform: translate(300%, -50%);
            transform: translate(300%, -50%);
}
.top_recruit_link:focus-visible .arrow__btn span.icon span:before {
    -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    -webkit-transition-delay: 0.3s;
            transition-delay: 0.3s;
}
.top_recruit_link:focus-visible .arrow__btn.underline span.text:after {
    width: 100%;
}


@media screen and (max-width:1399px) and (min-width:1100px) {
    .top_fv_main_copy {
        font-size: 4.2rem;
    }
    .top_fv_sub_copy_content {
        width: 350px;
        bottom: 30px;
        right: 30px;
    }
    .top_fv_sub_text {
        font-size: 1.32rem;
        font-weight: 600;
    }

    .top_section_title_jp {
        font-size: 1.4rem;
    }
    .top_section_title_en {
        font-size: 4.2rem;
    }

    .top_news {
        padding: 100px 0;
    }
    .top_news_articles {
        width: calc(100% - 400px);
    }
    .top_news_article_title {
        font-size: 1.7rem;
    }
    .top_news_article_meta {
        gap: 20px;
    }
    .top_news_article_cat {
        font-size: 1.2rem;
        padding: 2px 10px;
    }
    .top_news_article_date {
        font-size: 1.3rem;
    }

    .top_company {
        padding-bottom: 100px;
    }
    .top_company_link_item {
        padding: 14px 0;
    }
    .top_company_link_thumbnail {
        width: 64px;
    }
    .top_company_link_title {
        font-size: 1.8rem;
    }
    .top_company_link_description {
        font-size: 1.2rem;
    }
    .top_company_link span.icon {
        width: 40px;
        height: 40px;
    }

    .top_service {
        padding: 100px 0;
    }
    .top_service_headline {
        font-size: 2.4rem;
    }
    .top_service_description {
        font-size: 1.5rem;
    }

    .top_recruit_loop_mv {
        right: 0;
    }
    .top_recruit_headline {
        font-size: 2.4rem;
    }
}

@media screen and (max-width:1099px) and (min-width:641px) {
    .top_fv_main_copy {
        font-size: 4.5vw;
    }
    .top_fv_sub_copy_content {
        width: 400px;
        bottom: 50px;
        right: 50px;
    }
    .top_fv_sub_text {
        font-size: 1.4rem;
    }

    .top_section_title_jp {
        font-size: 1.4rem;
    }
    .top_section_title_en {
        font-size: 4.2rem;
    }

    .top_news {
        padding: 100px 0;
    }
    .top_news_content {
        flex-direction: column;
        gap: 40px;
    }
    .top_news_articles {
        width: 100%;
    }
    .top_news_article_title {
        font-size: 1.7rem;
    }
    .top_news_article_meta {
        gap: 20px;
    }
    .top_news_article_cat {
        font-size: 1.2rem;
        padding: 2px 10px;
    }
    .top_news_article_date {
        font-size: 1.3rem;
    }
    .top_news .arrow__btn {
        margin-top: 60px;
    }

    .top_company {
        padding-bottom: 100px;
    }
    .top_company_content {
        flex-direction: column;
        gap: 40px;
    }
    .top_company_content .title_wrap {
        width: 100%;
        gap: 40px;
    }
    .top_company_main_visual {
        width: 100%;
        aspect-ratio: 16 / 9;
    }

    .top_service {
        padding: 100px 0;
    }
    .top_service_text_wrap {
        max-width: 100%;
    }
    .top_service_mv {
        top: 0;
        bottom: unset;
    }
    .top_service_headline {
        font-size: 2.4rem;
        margin: 40px 0;
    }

    .top_recruit {
        padding: 0 40px;
    }
    .top_recruit_link {
        padding: 60px 0;
    }
    .top_recruit_loop_mv {
        right: 5%;
        width: 310px;
    }
    .top_recruit_headline {
        font-size: 2rem;
    }
}


/* ※ 旧「≤1099px は動画の高さに合わせる」ブロックは base に統合（全幅で動画の実アスペクト表示）したため撤去。 */

@media screen and (max-width:640px) {
    .top_fv_main_copy {
        font-size: 9vw;
    }
    .top_fv_sub_copy_content {
        bottom: 10px;
        right: 10px;
        width: 140px;
    }
    .top_fv_sub_text {
        font-size: 1.3rem;
        font-weight: 500;
        margin-top: 14px;
    }

    .top_section_title_jp {
        font-size: 1.4rem;
    }
    .top_section_title_en {
        font-size: 2.4rem;
    }

    .top_news {
        padding: 60px 0;
    }
    .top_news_content {
        flex-direction: column;
        gap: 30px;
    }
    .top_news_articles {
        width: 100%;
    }
    .top_news_article_thumb {
        width: 86px;
        height: 54px;
    }
    .top_news_article_title {
        font-size: 1.6rem;
    }
    .top_news_article_meta {
        gap: 16px;
    }
    .top_news_article_cat {
        font-size: 1.1rem;
        padding: 2px 10px;
    }
    .top_news_article {
        padding: 12px 0;
    }
    .top_news .arrow__btn {
        margin-top: 40px;
    }

    .top_company {
        padding-bottom: 60px;
    }
    .top_company_content {
        flex-direction: column;
        gap: 30px;
    }
    .top_company_content .title_wrap {
        width: 100%;
        gap: 30px;
    }
    .top_company_main_visual {
        width: 100%;
        aspect-ratio: 16 / 9;
    }
    .top_company_link_thumbnail {
        width: 80px;
        flex-shrink: 0;
    }
    .top_company_link_title_wrap {
        margin-right: 10px;
    }
    .top_company_link_title {
        font-size: 1.7rem;
    }
    .top_company_link_description {
        font-size: 1.2rem;
    }
    .top_company_link span.icon {
        width: 46px;
        height: 46px;
    }

    .top_service {
        padding: 100px 0;
    }
    .top_service_text_wrap {
        max-width: 100%;
    }
    .top_service_headline {
        font-size: 2rem;
        margin: 30px 0;
    }
    .top_service_mv {
        right: unset;
        left: unset;
        bottom: unset;
        top: unset;
        width: 100%;
        position: relative;
        margin-top: 40px;
    }

    .top_recruit_loop_mv {
        top: 50%;
        right: 0;
        width: 100%;
        opacity: .5;
    }
    .top_recruit_headline {
        font-size: 1.8rem;
    }
    .top_recruit_link .arrow__btn {
        justify-content: flex-end;
    }
}