/* 基本設定 */
html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    padding: 0;
    font-family: sans-serif; /* 基本フォントを指定しておくことを推奨 */
}

/* --- intro-container --- */
.intro-container {
    width: 1920px;
    height: 1080px;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    background-image: url('../image/bg/saiyo_main_01A.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center center;
    overflow-y: auto; /* コンテンツがはみ出る場合にスクロール可能に */
    overflow-x: hidden;
}

.intro-container .logo {
    position: absolute;
    top: 82px;
    left: 82px;
    height: auto;
    /* width: auto; は不要な場合が多い */
    object-fit: contain;
    z-index: 10;
}

/* --- movie-container (YouTube) --- */
.movie-container {
    width: 1920px;
    height: 720px;
    display: flex;
    justify-content: center;
    align-items: center;
    background-image: url('../image/bg/saiyo_main_01B.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center center;
    overflow: hidden;
}

.movie-container .youtube {
    position:relative;
    width: 800px;
    height: 450px;
    padding: 0; /* 影響なければ残しても良い */
}

/* サムネイル画像 */
.movie-container .youtube img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    cursor: pointer;
    z-index: 2;
}

.movie-container .youtube iframe {
   position: absolute; /* サムネイルと重ねるために絶対配置 */
    top: 0;
    left: 0;
    width: 100%; /* 親要素(.youtube)の幅に合わせる */
    height: 100%;/* 親要素(.youtube)の高さに合わせる */
    /* iframe自体の影や境界線 (デフォルトで無いことが多い) */
    box-shadow: none !important; /* 強制的に消す場合 */
    border: none !important;     /* 強制的に消す場合 */
}

/* JSで追加する再生ボタンのスタイル */
.movie-container .youtube .play-button-overlay {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 68px;  /* YouTubeボタンの標準的な幅に近い値 */
    height: 48px; /* YouTubeボタンの標準的な高さに近い値 */
    background-color: #FF0000; /* YouTubeの赤 */
    border-radius: 10px; /* 角丸の度合い (YouTubeはもう少し丸みが強いかも) */
                       /* もっと丸くするなら 15px や 25% など */
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    z-index: 3;

}

.movie-container .youtube .play-button-overlay:hover {
    background-color: #CC0000; /* ホバー時に少し暗い赤 */
    opacity: 1;
}

/* 再生ボタン内の三角形アイコン (SVGを使う場合) */
.movie-container .youtube .play-button-overlay svg {
    width: 60%; /* ボタンサイズに対するアイコンの大きさ */
    height: 60%;
    fill: white; /* アイコンの色 */

}


/* --- data-container --- */
.data-container {
    background-image: url('../image/bg/saiyo_main_03.jpg');
    background-size: 1920px 1002px; /* 固定サイズ指定 */
    background-repeat: no-repeat;
    background-position: center top;
    padding-top: 1px; /* 背景表示のための最小パディング (状況による) */
    padding-bottom: 1px; /* 同上 */
}

.image-display-area {
    width: 1190px;
    margin: 219px auto 87px auto; /* 上下左右のマージンで配置 */
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.6s ease, visibility 0s linear 0.6s; /* visibilityはopacityのアニメーション後に変更 */
}

.image-display-area.visible {
    opacity: 1;
    visibility: visible;
    /* transform: translateY(0) scale(1); は初期状態にtransformがなければ不要 */
    transition-delay: 0s; /* 表示時の遅延なし */
}

.image-display-area img {
    display: block;
    width: 100%;
    height: auto;
}

/* --- works-container (工程タイムライン) --- */
/* PC/SP表示切り替え */
.works-PC { display: block; }
.works-SP { display: none; }

.works-container {
    width: 1920px;
    height: 3100px; /* 固定高さ */
    margin: 0;
    padding: 0;
    background-image: url('../image/bg/saiyo_main_02.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: top center;
    overflow-x: hidden;
    /* overflow-y: hidden; 固定高さなので、コンテンツがはみ出た場合の挙動を明確に */
}

/* タイムライン全体のコンテナ */
.timeline {
    position: relative;
    width: 100%;
    display: flex; /* sectionsを中央寄せするため */
    justify-content: center;
    /* overflow: visible; はデフォルトなので明示不要な場合も */
}

/* タイムラインの線分 (JSで制御) */
.line-segment {
    position: absolute;
    left: 50%; /* 中央基準 */
    transform: translateX(-50%); /* 中央揃え */
    width: 150px; /* PCでの線の太さ */
    height: 0; /* JSで動的に変更 */
    background-color: #004098; /* 線の色 */
    z-index: 0; /* step画像より後ろ */
    transition: height 0.3s ease, top 0.3s ease;
}

/* 各セクションをまとめるコンテナ */
.works-container .sections { /* より詳細なセレクタ */
    position: relative; /* z-indexを効かせるため */
    z-index: 1; /* 線より手前 */
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-top: 225px;
}

/* 各工程のセクション */
.step {
    position: relative; /* 必要に応じて */
    width: 386px;
    height: 386px;
    /* margin-bottom はJSで設定 */
}

.step img {
    display: block; /* 余計な隙間を防ぐ */
    width: 100%;
    height: 100%;
    object-fit: cover;
    cursor: pointer;
    filter: brightness(1);
    transition: filter 0.3s ease;
}

.step img:hover {
    filter: brightness(1.15);
}

/* ポップアップ */
.popup {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.3); /* 背景を少し濃く */
    z-index: 1000; /* 他の要素より手前 */
    justify-content: center;
    align-items: center;
}

.popup img {
    max-width: 95%;
    max-height: 95%;
    object-fit: contain;

    box-shadow: 0 0 25px rgba(0,0,0,0.5); /* 影 (任意) */
}

.close-popup {
    position: absolute;
    top: 20px;
    right: 30px;
    font-size: 30px;
    color: white;
    cursor: pointer;
    text-shadow: 0 0 5px black; /* 見やすくするための影 (任意) */
}

/* ローディングインジケータ */
.loading-indicator {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%); /* JSで表示切替 */
    border: 4px solid #f3f3f3; /* Light grey */
    border-top: 4px solid #3498db; /* Blue */
    border-radius: 50%;
    width: 50px;
    height: 50px;
    animation: spin 1s linear infinite; /* 少し早く */
    z-index: 1001; /* ポップアップより手前、必要なら */
}

@keyframes spin {
    0% { transform: translate(-50%, -50%) rotate(0deg); }
    100% { transform: translate(-50%, -50%) rotate(360deg); }
}

/* --- sv-container (先輩の声) --- */
/* PC/SP表示切り替え */
.sv-for-mobile { display: none; }
.sv-for-PC { display: block; }

.sv-container {
    width: 1920px;
    height: 900px;
    background-image: url('../image/bg/saiyo_main_04.jpg');
    background-size: cover;
    background-position: center top;
    background-repeat: no-repeat;
    position: relative;
    overflow: hidden; /* はみ出しを隠す */
    margin: 0 auto; /* 親がなければ不要 */
}

.sv-container .image-container {
    position: relative;
    z-index: 1;
    padding: 240px 0 120px;
    display: flex;
    gap: 35px;
    justify-content: center;
    align-items: flex-start;
    flex-wrap: wrap; /* 折り返し */
}

.sv-container .image-pair {
    position: relative;
    width: 400px;
    height: 540px;
    cursor: pointer;
}

.sv-container .image-a, /* 通常時背景 */
.sv-container .image-c { /* ホバー/アクティブ時背景 */
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity 0.5s ease-in-out;
}

.sv-container .image-c {
    opacity: 0;
    z-index: 1; /* image-a より手前 */
}

.sv-container .image-pair:hover .image-a,
.sv-container .image-pair.is-active .image-a { /* JSでis-activeクラスを付与 */
    opacity: 0;
}

.sv-container .image-pair:hover .image-c,
.sv-container .image-pair.is-active .image-c {
    opacity: 1;
}

.sv-container .button-wrapper {
    position: absolute;
    width: 400px; /* image-pair と合わせる */
    height: 360px;
    top: -60px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10; /* 背景フレームより手前 */
    perspective: 1000px; /* 3D効果の視点距離 */
}

.sv-container .button-flipper {
    position: relative;
    width: 100%;
    height: 100%;
    transition: transform 0.6s ease;
    transform-style: preserve-3d;
}

.sv-container .image-pair:hover .button-flipper,
.sv-container .image-pair.is-active .button-flipper {
    transform: rotateY(180deg);
}

.sv-container .image-b, /* 通常時ボタン人物 */
.sv-container .image-d { /* ホバー/アクティブ時ボタン人物 */
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain; /* 人物が切れないように */
    backface-visibility: hidden; /* 裏面非表示 */
    -webkit-backface-visibility: hidden;
}

.sv-container .image-d {
    transform: rotateY(180deg); /* 初期状態で裏返し */
    /* z-index は button-flipper 内での重なりなので、通常不要 */
}

/* 先輩の声 ポップアップ */
.sv_popup {
    display: none; /* JSで制御 */
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.3); /* 背景を少し濃く */
    justify-content: center;
    align-items: center;
    padding: 20px;
    box-sizing: border-box;
}

.sv_popup-content {
    display: block;
    max-width: 90%;
    max-height: 90%;
    object-fit: contain;
    box-shadow: 0 0 25px rgba(0,0,0,0.5); /* 影 (任意) */
}

.sv_popup .close-button { /* .sv_popup 内の .close-button であることを明示 */
    position: absolute;
    top: 20px;
    right: 35px;
    color: #f1f1f1;
    font-size: 30px;
    /* font-weight: bold; */
    cursor: pointer;
    transition: color 0.3s;
    text-shadow: 0 0 5px black; /* 見やすくするための影 (任意) */
}

.sv_popup .close-button:hover,
.sv_popup .close-button:focus {
    color: #bbb;
}

/* --- qa-body-container (Q&A) --- */
.qa-body-container {
    width: 100%; /* PCでは幅を指定するか、内部要素で制御 */
    /* height: auto; はデフォルト */
    background-color: #f9f9f9;
    /* background-image: url('../image/saiyo_senpai_BG.jpg'); */ /* 必要なら */
    /* background-size: cover; */
    /* background-position: center top; */
    /* background-repeat: no-repeat; */
    position: relative;
    overflow: hidden; /* はみ出し制御 */
    padding: 120px 0; /* 上下パディング */
}

.qa-body-container .qa_title {
    /* position:absolute; top:100px; right:0; left:0; は解除し、通常フローで中央寄せ */
    width: 164px;
    margin: 0 auto 60px auto; /* 上マージン0、下マージン60px、左右autoで中央 */
}
.qa-body-container .qa_title img {
    display: block;
    width: 100%;
    height: auto;
}

.summary_qa-container {
    width: 1120px;
    max-width: 95%; /* 画面幅が狭い場合の対策 */
    margin: 0 auto;
    /* padding-top: 200px; タイトルが通常フローになったため調整 */
    /* padding-bottom: 50px; */
    position: relative;
    /* border-radius: 8px; */ /* デザインによる */
    /* box-shadow: 0 4px 8px rgba(0,0,0,0.1); */ /* デザインによる */
    box-sizing: border-box;
}

.qa-container {
    border-bottom: 1px solid #ccc;
    padding-bottom: 1em;
    margin-bottom: 1em;
    padding-left: 20px;
    padding-right: 20px;
}

.qa-container:last-child {
    border-bottom: none;
    margin-bottom: 0;
}

.question {
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    margin-bottom: 0.5em;
    font-size: 18pt; /* 固定値よりrem/em推奨だが、既存踏襲 */
    font-weight: bold;
    /* text-indentとpadding-leftで「Q:」のぶら下げを表現 */
    text-indent: -1.2em; /* Qの幅に応じて調整 */
    padding-left: 1.2em; /* Qの幅に応じて調整 */
}

.question > div { /* 質問文本体 */
    flex-grow: 1;
    margin-right: 1em;
    color: #004098;
}

.toggle-button {
    width: 24px; /* アイコン実サイズ */
    height: 24px; /* アイコン実サイズ */
    border-radius: 50%;
    color: white;
    font-size: 18px; /* Q/Aの文字サイズ */
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 10px; /* ボタン全体のクリック領域確保 */
    box-sizing: content-box; /* paddingは幅・高さに含まない */
    font-weight: bold;
    border: none;
    flex-shrink: 0; /* ボタンが縮まないように */
    cursor: pointer;
    background-color: #004098;
    transition: background-color 0.3s, color 0.3s;
}

.toggle-button.minus {
    background-color: #ffe100;
    color: #004098;
    /* サイズ変更はpaddingで行っているので、width/heightの再指定は不要 */
}

.answer {
    display: none; /* JSでblockに切り替え */
    padding: 15px 15px 15px 1.2em; /* 左に質問文と同じインデント */
    font-size: 16pt;
    margin-top: 10px;
    /* margin-left:10px; text-indentとpadding-leftで制御 */
    color: #000;
    /* border-radius: 4px; */ /* デザインによる */
    text-indent: -1.2em; /* Aの幅に応じて調整 */
}

/* --- job-body-container (採用情報) --- */
.job-body-container {
    width: 1920px; /* デザインが固定幅の場合 */
    height: 1400px; /* 固定高さ */
    background-image: url('../image/bg/saiyo_main_06.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    margin: 0; /* body直下なら不要な場合も */
    padding: 0;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; /* フォント指定例 */
    color: #000;
    font-size: 16pt;
}

.job-body-container .job-title-mobile {
    display: none; /* PCでは非表示 */
}

.job-body-container main {
    position: relative; /* 背景画像の上にコンテンツを配置する場合 */
    z-index: 5;
    padding-top: 220px; /* タイトル画像分の余白 */
}

.job-container {
    width: 1150px;
    max-width: 100%; /* 念のため */
    margin: 0 auto;
    background-color: #fff;
    padding: 20px 0 130px; /* 内部の上下余白 */
    box-sizing: border-box;
}

.job-details-table {
    border-collapse: collapse; /* 線を1本にする */
    width: 100%;
    border: none; /* テーブル全体の枠線はなし */
}

.job-details-table tr { /* 行ごとの下線など、デザインに応じて */
    /* border-bottom: 1px solid #eee; */
}

.job-details-table td {
    padding: 12px 15px;
    vertical-align: top;
    border: none; /* セルごとの枠線もなし */
}

.job-details-table .detail-label {
    border-right: 1px solid #000; /* ラベルと内容の区切り線 */
    padding: 10px 20px;
    width: 115px; /* ラベル列の幅を少し広げる */
}
.job-details-table .first-detail-row .detail-label,
.job-details-table .first-detail-row .detail-content {
    padding-top: 0; /* 最初の行の上パディングなし */
}
.job-details-table .last-detail-row .detail-label,
.job-details-table .last-detail-row .detail-content {
    padding-bottom: 0; /* 最後の行の下パディングなし */
}

.job-details-table .detail-content {
    padding: 10px 0 10px 1.5em; /* 内容の左に余白 */
}

.job-hosoku {
    padding: 70px 10px 30px;
    color: #004098;
    text-align: center;
    font-size: 18pt;
    font-weight: bold;
}

.button-area {
    text-align: center;
    padding-top: 20px;
}

.button-3d_1,
.button-3d_2 {
    display: inline-flex;
    width: 400px;
    height: 100px;
    text-decoration: none;
    font-size: 24px;
    font-weight: bold;
    font-family: sans-serif; /* プロジェクト共通フォントがあればそれに合わせる */
    justify-content: center;
    align-items: center;
    text-align: center;
    padding: 0 20px;
    box-sizing: border-box;
    border-radius: 12px;
    transition: all 0.2s ease; /* トランジションを少し速く */
    user-select: none;
    cursor: pointer;
}

.button-3d_1 {
    background-color: #ffe100;
    color: #004098;
    border-bottom: 10px solid #d4b900;
}
.button-3d_2 {
    background-color: #004098;
    color: #ffffff;
    border-bottom: 10px solid #003175;
}

.button-3d_1:hover,
.button-3d_2:hover {
    transform: translateY(2px); /* 少しだけ沈む */
    border-bottom-width: 8px;  /* 影も少しだけ薄く */
    /* box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.2); は元々なかったので削除 */
}

.button-3d_1:active,
.button-3d_2:active {
    transform: translateY(4px); /* クリック時はもう少し沈む */
    border-bottom-width: 6px;
}

.no-break-word {
    white-space: nowrap;
}

.br-for-sp{
    display:none;
}