@charset "utf-8";

/*-------------------------------------------------------------
    採用トップ専用
-------------------------------------------------------------*/
.inner {
    --inner-max: 1600px;
    max-width: var(--inner-max);
}

#wrapper {
    padding-top: 0;
}

#content_wrap {
    overflow: visible;
    z-index: 1;
}

/*---------- 見出し共通 ----------*/
.recruit_ttl {
    margin: 0 0 30px;
}

.recruit_ttl_en,
.recruit_ttl_ja {
    display: block;
}

.recruit_ttl_en {
    font-family: 'Poppins', sans-serif;
    font-size: 8rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.05em;
}

.recruit_ttl_ja {
    padding-top: 45px;
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: 0;
}

.recruit_split .recruit_ttl {
    margin-bottom: 0;
}

.recruit_job .recruit_ttl {
    margin: 0;
    color: #fff;
}

.recruit_split_img,
.recruit_about_card,
.recruit_job_slider,
.recruit_job_nav,
.recruit_top_btn {
    position: relative;
    z-index: 1;
}

.recruit_top_btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 513px;
    max-width: 100%;
    min-height: 80px;
    padding: 16px 14px 16px 36px;
    background: #0384E8;
    color: #fff !important;
    text-decoration: none;
    font-size: 2.0rem;
    font-weight: 500;
    letter-spacing: 0;
    border-radius: 3px;
    transition: background .3s ease;
}

.recruit_top_btn:hover {
    background: #0070c0;
}

.recruit_about_intro .recruit_top_btn {
    flex: 0 0 calc((100% - 60px) / 3);
    width: calc((100% - 60px) / 3);
}

.recruit_top_btn_icon {
    display: inline-block;
    width: 29px;
    height: 29px;
    border-radius: 50%;
    background: #fff;
    position: relative;
    flex-shrink: 0;
    margin-left: 8px;
}

.recruit_top_btn_icon::before {
    content: "";
    position: absolute;
    top: 50%;
    left: -20px;
    width: 1px;
    height: 14px;
    background: rgba(255, 255, 255, 0.39);
    transform: translateY(-50%);
}

.recruit_top_btn_icon::after {
    content: "";
    position: absolute;
    inset: 0;
    background-color: #0384E8;
    -webkit-mask: url(../img/recruit/arrow_cta.svg) no-repeat center;
    mask: url(../img/recruit/arrow_cta.svg) no-repeat center;
    -webkit-mask-size: 8px auto;
    mask-size: 8px auto;
}

.recruit_about_intro .recruit_top_btn_icon {
    background: transparent;
}

.recruit_about_intro .recruit_top_btn_icon::after {
    background-color: #fff;
}

/*---------- メインビジュアル ----------*/
.recruit_mv {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 124px 0 80px;
    color: #fff;
    text-align: center;
    overflow: hidden;
}

.recruit_mv_bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.recruit_mv_bg img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    opacity: 0;
    transition: opacity 1.8s cubic-bezier(0.22, 0.61, 0.36, 1); /* フェードの速さ（1.8s）。切り替え間隔は js/common.js の mvInterval */
}

.recruit_mv_bg img.is_active {
    opacity: 1;
}

.recruit_mv::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    background: rgba(20, 40, 70, .22);
}

.recruit_mv_inner {
    z-index: 2;
}

.recruit_mv_ttl {
    margin: 0;
    font-family: 'Noto Serif JP', '游明朝', YuMincho, 'Hiragino Mincho ProN', serif;
    font-size: 7.4rem;
    font-weight: 500;
    line-height: 1.6;
    letter-spacing: 0.15em;
    text-shadow: 0 2px 24px rgba(0, 0, 0, .25);
}

/*---------- キャッチコピー ----------*/
.recruit_copy {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 260px 0 205px;
    color: #fff;
    text-align: center;
    overflow: hidden;
}

.recruit_copy_bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.recruit_copy_bg img {
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
}

.recruit_copy .inner {
    z-index: 2;
}

.recruit_copy_inner {
    --inner-max: 1035px;
    max-width: var(--inner-max);
    width: 100%;
    margin: 0 auto;
}

.recruit_copy_inner::before,
.recruit_copy_inner::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    background: #EBEBEB;
    pointer-events: none;
}

.recruit_copy_inner::before {
    left: max(20px, calc((100% - var(--inner-max)) / 2));
}

.recruit_copy_inner::after {
    right: max(20px, calc((100% - var(--inner-max)) / 2));
}

.recruit_copy_inner:has(.line_full_w)::before,
.recruit_copy_inner:has(.line_full_w)::after {
    opacity: .1;
}

.recruit_copy_en {
    margin-bottom: 15px;
    font-family: Constantia, Georgia, 'Times New Roman', serif;
    font-size: 1.6rem;
    font-weight: 700;
    font-style: italic;
    line-height: 1.18;
    letter-spacing: 0.05em;
}

.recruit_copy_ttl {
    margin: 0;
    font-family: 'Noto Serif JP', '游明朝', YuMincho, 'Hiragino Mincho ProN', serif;
    font-size: 6.0rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0.15em;
}

.recruit_copy_txt,
.recruit_copy_txt + p {
    font-size: 2.0rem;
    font-weight: 500;
    line-height: 1.9;
    letter-spacing: 0.05em;
}

.recruit_copy_txt p {
    margin: 0;
}

.recruit_copy_txt p:first-child {
    padding-top: 70px;
}

.recruit_copy_txt + p {
    margin-top: 2em;
}

.recruit_copy_txt + p.line_full_w::before {
    top: 25px;
}

/*---------- About us ----------*/
.recruit_about {
    padding: 110px 0 120px;
}

.recruit_about::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    background: #EBEBEB;
    pointer-events: none;
    right: calc(
        max(20px, (100% - var(--inner-max, 1600px)) / 2)
        + (min(var(--inner-max, 1600px), 100% - 40px) - 60px) / 3
    );
}

.recruit_about_intro {
    display: flex;
    justify-content: space-between;
    gap: 35px;
}

.recruit_about_lead {
    flex: 1;
    min-width: 0;
    font-size: 1.7rem;
    font-weight: 500;
    line-height: 1.64;
    letter-spacing: 0;
}

.recruit_about_cards_wrap {
    padding-top: 27px;
}

.recruit_about_cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
}

.recruit_about_card {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 0;
    min-height: 280px;
    padding: 30px 30px 20px 20px;
    background: #F1F1F1;
    color: #272727;
    text-decoration: none;
    overflow: hidden;
    transition: background .3s ease;
}

.recruit_about_card:hover {
    background: #E4E4E4;
}

.recruit_about_card_body {
    flex: 1;
    min-width: 0;
}

.recruit_about_card_ttl {
    margin: 0;
    font-family: 'Poppins', sans-serif;
    font-size: 4.0rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: -0.05em;
    color: #272727;
}

.recruit_about_card_txt {
    margin-top: 18px;
    font-size: 1.7rem;
    font-weight: 500;
    line-height: 1.64;
    letter-spacing: 0;
}

.recruit_about_card_icon {
    width: 110px;
    flex-shrink: 0;
    pointer-events: none;
}

.recruit_about_card_icon img {
    width: 100%;
    height: auto;
    filter: brightness(0);
    opacity: .12;
}

.recruit_about_card_arrow {
    position: absolute;
    right: 20px;
    bottom: 20px;
    z-index: 1;
    width: 29px;
    height: 29px;
    border-radius: 50%;
    background: #0384E8;
    transition: background .3s ease;
}

.recruit_about_card_arrow::after {
    content: "";
    position: absolute;
    inset: 0;
    background: url("../img/recruit/arrow_cta.svg") no-repeat center;
    background-size:8px auto;
}

.recruit_about_card:hover .recruit_about_card_arrow {
    background: #0070c0;
}

/*---------- Career / Process ----------*/
.recruit_career {
    padding: 115px 0 110px 0;
    z-index: 0;
}

.recruit_career::before,
.recruit_process::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    z-index: -1;
    left: calc(max(20px, (100% - var(--inner-max, 1600px)) / 2) + 513px);
    width: 1px;
    background: #EBEBEB;
    box-shadow: 30px 0 0 #EBEBEB;
    pointer-events: none;
}

.recruit_process {
    padding:105px 0 110px 0;
    z-index: 2;
    overflow: visible;
}

.recruit_process::before {
    bottom: -175px;
    z-index: 0;
}

.recruit_split .inner {
    display: flex;
    justify-content: space-between;
    gap: 50px;
}

.recruit_split_body {
    display: flex;
    flex-direction: column;
    flex: 0 1 685px;
    width: 685px;
    min-width: 0;
}

.recruit_split_body .recruit_ttl_en,
.recruit_split_body .recruit_ttl_ja,
.recruit_split_lead {
    position: relative;
    z-index: 1;
}

.recruit_split_body .recruit_ttl_en,
.recruit_split_body .recruit_ttl_ja {
    display: inline-block;
}

.recruit_split_lead {
    margin: 30px 0 140px;
    font-size: 1.7rem;
    font-weight: 500;
    line-height: 1.8;
    letter-spacing: 0;
}

.recruit_split_img {
    flex: 1;
    min-width: 0;
    position: relative;
    z-index: 1;
}

.recruit_split_img img {
    width: 100%;
    height: 506px;
    object-fit: cover;
    object-position: center;
}

/*---------- Job & Interview ----------*/
.recruit_job {
    padding: 135px 0 117px;
    color: #fff;
    background-color: rgba(38, 38, 38, .82);
}

.recruit_job::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(50% - 15px);
    width: 1px;
    background: #EBEBEB;
    box-shadow: 30px 0 0 #EBEBEB;
    opacity: .1;
    pointer-events: none;
}

.recruit_job::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    background: #EBEBEB;
    opacity: .1;
    pointer-events: none;
    right: calc(
        max(20px, (100% - var(--inner-max, 1600px)) / 2)
        + 513px
    );
}

.recruit_job_head {
    display: flex;
    gap: 30px;
    margin-bottom: 20px;
}

.recruit_job_head > * {
    flex: 1 1 0;
    width: 50%;
    min-width: 0;
}

.recruit_job_head_right {
    width: 50%;
}

.recruit_job_lead {
    margin: 0;
    font-size: 1.7rem;
    font-weight: 500;
    line-height: 1.8;
    letter-spacing: 0.05em;
}

.recruit_job_nav {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 50px;
}

.recruit_job_prev,
.recruit_job_next {
    position: relative;
    width: 80px;
    height: 50px;
    padding: 0;
    border: none;
    border-radius: 0;
    background: #0384E8;
    cursor: pointer;
    transition: background .3s ease, opacity .3s ease;
}

.recruit_job_prev:hover,
.recruit_job_next:hover {
    background: #0070c0;
}

.recruit_job_prev.slick-disabled,
.recruit_job_next.slick-disabled {
    opacity: .35;
    cursor: default;
}

.recruit_job_prev::after,
.recruit_job_next::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 16px;
    height: 16px;
    border-top: 1px solid #fff;
    border-right: 1px solid #fff;
}

.recruit_job_next::after {
    transform: translate(-70%, -50%) rotate(45deg);
}

.recruit_job_prev::after {
    transform: translate(-30%, -50%) rotate(-135deg);
}

.recruit_job_slider {
    position: relative;
    overflow: visible;
    container-type: inline-size;
}

.recruit_job_ttl_line {
    position: absolute;
    left: 0;
    right: 0;
    top: calc((50cqi - 18px) * 434 / 784 + 20px + 1.4rem * 1.65 + 12px);
    height: 0;
    pointer-events: none;
    z-index: 2;
}

.recruit_job_ttl_line.line_full_w::before {
    top: 6px;
}

.recruit_job_track .slick-list {
    margin: 0 -12px;
}

.recruit_job_track .slick-slide {
    padding: 0 15px;
    height: auto;
}

.recruit_job_card {
    display: block;
    color: #fff;
    text-decoration: none;
    transition: opacity .3s ease;
}

.recruit_job_card:hover {
    opacity: .88;
}

.recruit_job_card_img {
    overflow: hidden;
}

.recruit_job_card_img img {
    width: 100%;
    height: auto;
}

.recruit_job_card_label {
    display: flex;
    align-items: center;
    margin-top: 7px;
    font-family: 'Poppins', sans-serif;
    font-size: 1.6rem;
    font-weight: 600;
    letter-spacing: -0.05em;
    margin-bottom: 12px;
}

.recruit_job_card_dash {
    display: block;
    width: 47px;
    height: 1px;
    margin: 0 10px 0 8px;
    background: #fff;
    flex-shrink: 0;
}

.recruit_job_card_ttl {
    margin: 0 0 14px;
    font-size: 2.6rem;
    font-weight: 700;
    line-height: 1.53;
    letter-spacing: 0.05em;
    min-height: calc(2.6rem * 1.53 * 2);
}

.recruit_job_card_meta {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 27px;
    margin: 0;
}

.recruit_job_card_name {
    font-size: 2.6rem;
    letter-spacing: 0.05em;
    font-weight: 700;
}

.recruit_job_card_info {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 15px;
    font-size: 1.5rem;
    font-weight: 500;
    letter-spacing: 0;
}

.recruit_job_foot {
    display: flex;
    justify-content: flex-end;
    margin-top: 40px;
}

@media screen and (max-width: 767px) {
    .recruit_mv {
        min-height: 100svh;
        padding: 80px 16px;
    }

    .recruit_mv_bg img,
    .recruit_copy_bg img {
        width: 100%;
        height: 100% !important;
        max-width: none;
        object-fit: cover;
    }

    .recruit_mv_ttl {
        font-size: 2.6rem;
    }

    .recruit_copy {
        padding: 70px 0;
    }

    .recruit_copy_en {
        margin-bottom: 8px;
        font-size: 1.4rem;
    }

    .recruit_copy_ttl {
        font-size: 2.6rem;
    }

    .recruit_copy_txt,
    .recruit_copy_txt + p {
        font-size: 1.4rem;
    }

    .recruit_copy_txt br,
    .recruit_copy_txt + p br {
        display: none;
    }

    .recruit_copy_txt p:first-child {
        padding-top: 28px;
    }

    .recruit_copy_txt + p {
        margin-top: 1.4em;
    }

    .recruit_copy_txt + p.line_full_w::before {
        top: 16px;
    }

    .recruit_ttl {
        margin-bottom: 16px;
    }

    .recruit_ttl_en {
        font-size: 4.0rem;
    }

    .recruit_ttl_ja {
        padding-top: 20px;
        font-size: 1.3rem;
    }

    .recruit_split .recruit_ttl {
        margin-bottom: 0;
    }

    .recruit_job .recruit_ttl {
        margin: 0;
    }

    .recruit_job .recruit_ttl_en {
        font-size: 3.2rem;
    }

    .recruit_about {
        padding: 60px 0;
    }

    .recruit_about::after {
        content: none;
    }

    .recruit_about_intro {
        flex-direction: column;
        align-items: stretch;
        margin-bottom: 0;
        gap: 20px;
    }

    .recruit_about_lead {
        font-size: 1.4rem;
    }

    .recruit_about_cards_wrap {
        padding-top: 20px;
    }

    .recruit_about_cards {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .recruit_about_card {
        min-height: 180px;
        padding: 22px 16px 16px;
    }

    .recruit_about_card_ttl {
        font-size: 2.8rem;
    }

    .recruit_about_card_txt {
        margin-top: 12px;
        font-size: 1.4rem;
    }

    .recruit_about_card_icon {
        width: 60px;
    }

    .recruit_about_card_arrow {
        right: 16px;
        bottom: 16px;
        width: 29px;
        height: 29px;
    }

    #content_wrap {
        z-index: auto;
    }

    .recruit_career,
    .recruit_process {
        padding: 60px 0;
        z-index: auto;
    }

    .recruit_career::before,
    .recruit_process::before {
        content: none;
    }

    .recruit_split .inner {
        flex-direction: column;
        align-items: stretch;
        gap: 20px;
    }

    .recruit_split_img {
        order: -1;
    }

    .recruit_split_img img {
        height: auto;
        object-fit: unset;
    }

    .recruit_split_body {
        flex: none;
        width: 100%;
    }

    .recruit_split_lead {
        margin: 12px 0 20px;
        font-size: 1.4rem;
    }

    .recruit_job {
        padding: 60px 0;
    }

    .recruit_job::before,
    .recruit_job::after {
        content: none;
    }

    .recruit_job_head {
        display: block;
        margin-bottom: 24px;
    }

    .recruit_job_head > * {
        width: 100%;
    }

    .recruit_job_head_right {
        width: 100%;
        margin-top: 12px;
    }

    .recruit_job_lead {
        font-size: 1.4rem;
    }

    .recruit_job_nav {
        margin-top: 16px;
        gap: 8px;
    }

    .recruit_job_prev,
    .recruit_job_next {
        width: 64px;
        height: 44px;
    }

    .recruit_job_card_label {
        margin-top: 8px;
        margin-bottom: 8px;
        font-size: 1.4rem;
    }

    .recruit_job_card_dash {
        width: 32px;
    }

    .recruit_job_card_ttl {
        margin: 0 0 8px;
        font-size: 1.8rem;
        line-height: 1.5;
        min-height: calc(1.8rem * 1.5 * 2);
    }

    .recruit_job_ttl_line {
        top: calc((100cqi - 6px) * 434 / 784 + 16px + 1.4rem * 1.65 + 8px);
    }

    .recruit_job_card_meta {
        gap: 12px;
    }

    .recruit_job_card_name {
        font-size: 1.6rem;
    }

    .recruit_job_card_info {
        gap: 8px;
        font-size: 1.2rem;
    }

    .recruit_job_foot {
        margin-top: 24px;
    }

    .recruit_top_btn,
    .recruit_about_intro .recruit_top_btn {
        flex: none;
        width: 100%;
        min-height: 56px;
        padding: 14px 16px 14px 20px;
        font-size: 1.6rem;
    }
}

/*---------- スクロールフェード ----------*/
/*
    ふわっと速度の調整（同じ秒数を下の transition 4か所すべてに揃える）
    - opacity の秒数 … 消え入りの速さ（今 1.6s）
    - transform の秒数 … 下から上がる速さ（今 1.4s）
    大きくするとゆっくり、小さくすると速くなる
*/
.fade {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 1.6s cubic-bezier(0.22, 0.61, 0.36, 1), transform 1.4s cubic-bezier(0.22, 0.61, 0.36, 1); /* ふわっと速度 */
}

.fade.is_show {
    opacity: 1;
    transform: translateY(0);
}

.fade.line_full,
.fade.line_full_w,
.fade:has(.line_full),
.fade:has(.line_full_w) {
    opacity: 1;
    transform: none;
}

.fade.line_full > *:not(.line_full):not(.line_full_w),
.fade.line_full_w > *:not(.line_full):not(.line_full_w),
.fade .line_full > *,
.fade .line_full_w > *,
.fade > *:not(.line_full):not(.line_full_w):not(:has(.line_full, .line_full_w)) {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 1.6s cubic-bezier(0.22, 0.61, 0.36, 1), transform 1.4s cubic-bezier(0.22, 0.61, 0.36, 1), background 0.3s ease; /* ふわっと速度 */
    transition-delay: inherit;
}

.fade.line_full > span,
.fade.line_full_w > span,
.fade .line_full > span,
.fade .line_full_w > span {
    display: block;
}

.fade.is_show.line_full > *:not(.line_full):not(.line_full_w),
.fade.is_show.line_full_w > *:not(.line_full):not(.line_full_w),
.fade.is_show .line_full > *,
.fade.is_show .line_full_w > *,
.fade.is_show > *:not(.line_full):not(.line_full_w):not(:has(.line_full, .line_full_w)) {
    opacity: 1;
    transform: translateY(0);
}

.fade_group {
    opacity: 1;
    transform: none;
}

.fade_group > * {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 1.6s cubic-bezier(0.22, 0.61, 0.36, 1), transform 1.4s cubic-bezier(0.22, 0.61, 0.36, 1), background 0.3s ease; /* ふわっと速度 */
}

.fade_group.is_show > * {
    opacity: 1;
    transform: translateY(0);
}

.recruit_top_btn.fade {
    transition: background 0.3s ease, opacity 1.6s cubic-bezier(0.22, 0.61, 0.36, 1), transform 1.4s cubic-bezier(0.22, 0.61, 0.36, 1); /* ふわっと速度 */
}

@media (prefers-reduced-motion: reduce) {
    .recruit_mv_bg img {
        transition: none;
    }

    .fade,
    .fade_group > *,
    .fade.line_full > *,
    .fade.line_full_w > *,
    .fade .line_full > *,
    .fade .line_full_w > *,
    .fade > *:not(.line_full):not(.line_full_w) {
        opacity: 1;
        transform: none;
        transition: none;
    }
}
