/* =========================================================
   採用情報TOP（page-recruit.php）専用スタイル — AST_recruit_v2 準拠
   共通のヘッダー/フッター/リセット/変数は theme.css 側。
   ========================================================= */

/* 黄アクセントは決定稿の純黄に合わせる（当ページのみ・theme.css の #FBBF24 を上書き） */
body.page-recruit {
	--yellow: #FFE800;
	--off-white: #E5E5E5;
	--teal: #0096DC;
	--teal-pale: #E3F6FF;
	--coral: #E60012;
	--navy: #1A2744;
	--gray-200: #D9D9D9;
	--gray-500: #4B5563;
	--gray-600: #374151;
}

/* ---- Hero（右ブロックを映像化） ---- */
.hero { margin-top: var(--header-height); height: 1050px; min-height: 900px; background: #fff; position: relative; overflow: hidden; display: flex; align-items: center; }
.hero-stripe { position: absolute; top: 0; right: 0; width: 50%; height: 100%; background: #E60012; clip-path: polygon(12% 0, 100% 0, 100% 100%, 0% 100%); z-index: 0; }
.hero-stripe::after { content: 'RECRUIT'; position: absolute; bottom: 40px; right: 40px; font-family: 'Outfit', sans-serif; font-size: 7rem; font-weight: 900; color: rgba(255,255,255,0.08); letter-spacing: .1em; line-height: 1; pointer-events: none; }
.hero-photo { position: absolute; top: 0; right: 0; width: 50%; height: 100%; clip-path: polygon(12% 0, 100% 0, 100% 100%, 0% 100%); z-index: 1; background: #1f3a5f url('../img/hero-poster-default.avif') center center / cover no-repeat; display: flex; align-items: center; justify-content: center; }
.hero-photo .ast-hero-media { position: absolute; inset: 0; }
.hero-photo-overlay { position: absolute; inset: 0; background: none; z-index: 2; pointer-events: none; }
.hero-inner { max-width: 1200px; margin: 0 auto; width: 100%; padding: 70px 40px; position: relative; z-index: 5; display: grid; grid-template-columns: 1fr 1fr; gap: 0; align-items: center; }
.hero-left { padding-right: 40px; }
.hero-breadcrumb { display: flex; gap: 8px; margin-bottom: 28px; }
.hero-breadcrumb a { color: #94A3B8; font-size: var(--font-caption); text-decoration: none; }
.hero-breadcrumb span { color: #94A3B8; font-size: var(--font-caption); }
.hero-breadcrumb .cur { color: #E60012; }
.hero-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-family: 'Outfit', sans-serif; font-size: var(--font-label-lg); font-weight: var(--weight-bold); letter-spacing: var(--tracking-label-wide); color: #E60012; margin-bottom: 20px; }
.hero-h1 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: clamp(2.65rem, 4.8vw, 4rem); font-weight: 900; color: #1E293B; line-height: 1.1; letter-spacing: 0; margin-bottom: 26px; }
.hero-h1 .hl-mark { color:var(--coral); background:none; padding:0; }
.hero-h1 .line2 { display: block; font-size: clamp(1.5rem, 2.7vw, 2.3rem); color: #1E293B; margin-top: 8px; letter-spacing: 0; }
.hero-sub { font-size: var(--font-lead); color: #1E293B; line-height: var(--lh-lead-loose); margin-bottom: 38px; max-width: 440px; }
.hero-btns { display: flex; gap: 16px; flex-wrap: wrap; }
.hero-right { position: relative; z-index: 3; }

/* ---- Buttons ---- */
.btn-red { display: inline-flex; align-items: center; gap: 10px; background: #E60012; color: #fff; font-weight: var(--weight-bold); font-size: var(--font-button); padding: 18px 40px; border-radius: 4px; text-decoration: none; transition: all .25s; letter-spacing: .02em; box-shadow: 0 4px 20px rgba(230,0,18,.25); }
.btn-red:hover { background: #c0000f; transform: translateY(-2px); box-shadow: 0 8px 28px rgba(230,0,18,.35); }
.btn-blue-outline { display: inline-flex; align-items: center; gap: 10px; border: 2px solid var(--teal); color: var(--teal); font-weight: var(--weight-bold); font-size: var(--font-button); padding: 16px 36px; border-radius: 4px; text-decoration: none; transition: all .25s; }
.btn-blue-outline:hover { background: var(--teal); color: #fff; }

/* ---- Section Nav ---- */
.sec-nav { background: var(--white); border-bottom: 1px solid var(--gray-200); position: sticky; top: var(--header-height); z-index: 100; }
.sec-nav-inner { max-width: 1200px; margin: 0 auto; padding: 0 40px; display: flex; gap: 0; overflow-x: auto; }
.sec-nav a { display: block; padding: 15px 24px; font-size: var(--font-ui-sm); font-weight: var(--weight-medium); color: var(--gray-500); text-decoration: none; white-space: nowrap; border-bottom: 3px solid transparent; transition: all .2s; }
.sec-nav a:hover { color: var(--navy); border-bottom-color: var(--gray-300); }
.sec-nav a.on { color: var(--teal); font-weight: var(--weight-bold); border-bottom-color: var(--teal); }

/* ---- Shared layout ---- */
.wrap { max-width: 1200px; margin: 0 auto; padding: 0 40px; }
section { padding: 145px 0; }
section[id] { scroll-margin-top: calc(var(--header-height) + 64px); }
.bg-off { background: var(--off-white); }
.bg-navy { background: var(--navy-deep); }
.label { display: inline-block; font-family: 'Outfit', sans-serif; font-size: var(--font-label-lg); font-weight: var(--weight-bold); letter-spacing: var(--tracking-label-wide); text-transform: uppercase; color: var(--coral); margin-bottom: 14px; }
.label.teal { color: var(--teal); }
.label.green { color: var(--green); }
.label.white { color: var(--yellow); }
.ttl { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: clamp(1.7rem, 3.5vw, 2.6rem); font-weight: var(--weight-black); color: var(--navy); line-height: var(--lh-heading); letter-spacing: var(--tracking-none); margin-bottom: 16px; }
.ttl.white { color: var(--white); }
.lead { font-size: var(--font-lead-compact); color: var(--gray-500); line-height: var(--lh-lead-compact); max-width: 600px; }
.lead.white { color: rgba(255,255,255,.65); }

/* Message */
#message { background: var(--white); }
#message { padding: 180px 0; }
.msg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 88px; align-items: center; }
.msg-visual { position: relative; }
.msg-img { width: 100%; aspect-ratio: 4/5; background: #e0e6ee url('../img/recruit-message.avif') center top / cover no-repeat; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 3rem; position: relative; overflow: hidden; }
.msg-float-card { position: absolute; bottom: -24px; right: -24px; background: var(--white); border-radius: 14px; padding: 20px 24px; box-shadow: 0 12px 40px rgba(0,0,0,.12); min-width: 200px; }
.msg-float-card .num { font-family: 'Outfit', sans-serif; font-size: 2.2rem; font-weight: 900; color: var(--coral); line-height: 1; }
.msg-float-card .num span { font-size: 1rem; color: var(--gray-400); }
.msg-float-card p { font-size: var(--font-caption); color: var(--gray-500); margin-top: 4px; }
.msg-text h2 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: clamp(1.5rem, 3vw, 2.2rem); font-weight: 900; color: var(--navy); line-height: 1.3; margin-bottom: 28px; margin-top: 20px; }
.msg-text p { font-size: var(--font-lead-compact); color: var(--gray-600); line-height: var(--lh-long); margin-bottom: 20px; }
.msg-text .highlight { display: block; color: var(--teal); font-weight: var(--weight-bold); font-size: var(--font-lead-compact); margin: 28px 0; line-height: var(--lh-lead); }

/* Numbers */
#numbers { background: var(--navy-deep); position: relative; overflow: hidden; }
#numbers::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 70% 80% at 100% 50%, rgba(8,145,178,.22) 0%, transparent 60%), radial-gradient(ellipse 40% 60% at 0% 80%, rgba(249,115,22,.1) 0%, transparent 55%); }
.numbers-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; background: rgba(255,255,255,.05); border-radius: 20px; overflow: hidden; }
.num-block { background: rgba(255,255,255,.04); padding: 48px 32px; text-align: center; transition: background .3s; }
.num-block:hover { background: rgba(255,255,255,.08); }
.num-block .big { font-family: 'Outfit', sans-serif; font-size: 3.8rem; font-weight: 900; color: var(--white); line-height: 1; margin-bottom: 8px; }
.num-block .big em { font-style: normal; color: var(--teal-light); font-size: 2rem; }
.num-block .unit { font-family: 'Outfit', sans-serif; font-size: 1.2rem; color: var(--gray-400); }
.num-block .desc { font-size: .82rem; color: rgba(255,255,255,.45); margin-top: 10px; line-height: 1.6; }
.num-block .note { font-size: .7rem; color: rgba(255,255,255,.25); margin-top: 6px; }

/* Culture */
#culture { padding: 210px 0; }
.culture-lead-grid { display: block; margin-bottom: 68px; }
.culture-lead-grid .lead { margin-top: 16px; max-width: 760px; }
.culture-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.culture-card { background: var(--white); border: 1px solid var(--gray-200); border-radius: 8px; padding: 42px 32px 36px; min-height: 220px; transition: transform .3s, box-shadow .3s; position: relative; overflow: hidden; }
.culture-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 14px; background: var(--yellow); }
.culture-card:hover { transform: translateY(-6px); box-shadow: 0 16px 48px rgba(0,0,0,.1); }
.culture-icon { font-size: 2.4rem; margin-bottom: 16px; }
.culture-card h3 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: var(--font-card-title-sm); font-weight: var(--weight-bold); color: var(--navy); margin-bottom: 10px; }
.culture-card p { font-size: var(--font-body-card); color: var(--gray-500); line-height: var(--lh-card); }

/* Office */
#office { background: var(--off-white); padding: 210px 0; }
.office-photo-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 300px 300px; gap: 12px; margin-bottom: 56px; }
.office-photo { border-radius: 8px; overflow: hidden; position: relative; display: flex; align-items: center; justify-content: center; font-size: 2.5rem; background-size: cover; background-position: center; }
.office-photo.main { grid-row: 1/3; }
.op1 { background-image: url('../img/top-office-building.avif'); }
.op2 { background-image: url('../img/top-maizuru-park.avif'); }
.op3 { background-image: url('../img/top-akasaka-station.avif'); }
.op4 { background-image: url('../img/top-coffee.avif'); }
.op5 { background-image: url('../img/top-park-view.avif'); }
.office-perks { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.perk { background: var(--white); border-radius: 8px; padding: 26px 20px; text-align: center; border: 1px solid var(--gray-200); }
.perk .perk-icon { font-size: 2rem; margin-bottom: 8px; }
.perk h4 { font-size: var(--font-button-sm); font-weight: var(--weight-bold); color: var(--navy); margin-bottom: 4px; }
.perk p { font-size: var(--font-caption); color: var(--gray-500); line-height: 1.6; }

/* Welfare */
#welfare { padding: 220px 0; }
.welfare-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px 64px; }
.welfare-group h3 { font-size: var(--font-caption); font-weight: var(--weight-bold); letter-spacing: var(--tracking-label); color: var(--teal); text-transform: uppercase; font-family: 'Outfit', sans-serif; padding-bottom: 10px; border-bottom: 2px solid var(--teal-pale); margin-bottom: 16px; }
.welfare-list { list-style: none; }
.welfare-list li { display: flex; align-items: flex-start; gap: 12px; padding: 18px 0; border-bottom: 1px solid var(--gray-100); font-size: var(--font-body-sm); color: var(--navy); }
.welfare-list li:last-child { border-bottom: none; }
.welfare-list .check { width: 7px; height: 7px; border-radius: 50%; background: var(--gray-400); color: transparent; font-size: 0; flex-shrink: 0; margin-top: 9px; }
.welfare-list li span { flex: 1; }
.welfare-list li .sub { display: block; font-size: var(--font-caption); color: var(--gray-400); margin-top: 2px; }

/* Voice */
#voice { background: var(--off-white); padding: 220px 0; }
.voice-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; margin-top: 86px; }
.voice-card { background: var(--white); border-radius: 8px; padding: 112px 36px 36px; border: 1px solid var(--gray-200); position: relative; transition: transform .3s, box-shadow .3s; display: flex; flex-direction: column; color: inherit; text-decoration: none; }
.voice-card:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(0,0,0,.08); }
.voice-card:focus-visible { outline: 3px solid rgba(0,150,220,.35); outline-offset: 4px; }
.voice-card .quote-mark { font-family: 'Outfit', sans-serif; font-size: 3.4rem; color: #FFE800; line-height: 1; margin-bottom: -14px; }
.voice-card .quote-text { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: var(--font-body); font-weight: var(--weight-bold); color: var(--navy); line-height: 1.5; margin-bottom: 16px; }
.voice-card .voice-body { font-size: var(--font-body-sm); color: var(--gray-600); line-height: var(--lh-lead); margin-bottom: 24px; }
.voice-card .voice-person { display: flex; align-items: center; gap: 12px; padding-top: 16px; border-top: 1px solid var(--gray-200); margin-top: auto; }
.voice-person .name { font-size: var(--font-body-sm); font-weight: var(--weight-bold); color: var(--navy); }
.voice-person .role { font-size: var(--font-caption); color: var(--gray-400); margin-top: 2px; }
.voice-readmore { display: inline-flex; align-items: center; position: relative; align-self: flex-start; margin-top: 20px; padding: 0 0 6px; color: var(--navy); font-size: .95rem; font-weight: var(--weight-bold); line-height: 1.5; letter-spacing: .02em; text-decoration: none; }
.voice-readmore::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--teal); transform: scaleX(0); transform-origin: left center; transition: transform .2s ease; }
.voice-card:hover .voice-readmore,
.voice-card:focus-visible .voice-readmore { color: var(--teal); }
.voice-card:hover .voice-readmore::after,
.voice-card:focus-visible .voice-readmore::after { transform: scaleX(1); }

.voice-card .voice-media { position: absolute; left: 50%; top: -64px; transform: translateX(-50%); width: 72%; aspect-ratio: 16/9; background: #3a3f47; border-radius: 8px; margin-bottom: 0; display: flex; align-items: center; justify-content: center; }
.voice-card:nth-child(1) .voice-media { background: #3a3f47 url('../img/voice-mihune.avif') center 28% / cover no-repeat; }
.voice-card:nth-child(2) .voice-media { background: #3a3f47 url('../img/voice-yamada.avif') center 24% / cover no-repeat; }
.voice-card:nth-child(3) .voice-media { background: #3a3f47 url('../img/voice-kishikawa.avif') center 30% / cover no-repeat; }

/* Day in life */
#daylife { padding: 215px 0 225px; }
.daylife-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }
.day-col h3 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 1.2rem; font-weight: 900; color: var(--white); padding: 16px 20px; background: var(--teal); border-radius: 10px; margin-bottom: 24px; text-align: center; }
.day-item { display: grid; grid-template-columns: 80px 1fr; margin-bottom: 4px; position: relative; }
.day-item::after { content: ''; position: absolute; left: 40px; top: 28px; bottom: -4px; width: 1px; background: var(--gray-200); }
.day-item:last-child::after { display: none; }
.day-time { padding: 12px 8px 12px 0; text-align: right; font-family: 'Outfit', sans-serif; font-size: var(--font-ui-sm); font-weight: var(--weight-bold); color: var(--teal); }
.day-content { padding: 8px 0 8px 24px; position: relative; }
.day-content::before { content: ''; position: absolute; left: 10px; top: 16px; width: 10px; height: 10px; border-radius: 50%; background: var(--teal); border: 2px solid var(--white); box-shadow: 0 0 0 3px var(--teal-pale); }
.day-content h4 { font-size: var(--font-ui); font-weight: var(--weight-bold); color: var(--navy); margin-bottom: 3px; }
.day-content p { font-size: var(--font-body-xs); color: var(--gray-500); line-height: 1.6; }
.day-break .day-content::before { background: var(--yellow); box-shadow: 0 0 0 3px #fef9c3; }

/* Job Openings */
#jobs { padding: 240px 0; }
.jobs-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--gray-200); margin-bottom: 60px; }
.job-tab { padding: 14px 32px; font-size: var(--font-ui); font-weight: var(--weight-semibold); color: var(--gray-500); cursor: pointer; position: relative; border-bottom: 3px solid transparent; margin-bottom: -2px; transition: all .2s; user-select: none; }
.job-tab.on { color: var(--navy); border-bottom-color: var(--navy); }
.job-tab .badge { display: inline-block; background: var(--coral); color: var(--white); font-size: .65rem; font-weight: var(--weight-bold); padding: 2px 7px; border-radius: 99px; margin-left: 8px; vertical-align: middle; }
.job-panel { display: none; }
.job-panel.on { display: block; }
.job-card { background: var(--white); border: 1px solid var(--gray-200); border-radius: 8px; overflow: hidden; margin-bottom: 48px; transition: box-shadow .3s; }
.job-card:hover { box-shadow: 0 8px 32px rgba(0,0,0,.08); }
.job-card-head { padding: 42px 48px; display: flex; align-items: center; justify-content: space-between; cursor: pointer; }
.job-type-badge { display: inline-block; font-size: var(--font-badge); font-weight: var(--weight-bold); padding: 4px 12px; border-radius: 6px; letter-spacing: .08em; margin-bottom: 10px; }
.badge-mid { background: #EFF6FF; color: #1D4ED8; }
.badge-new { background: #F0FDF4; color: #15803D; }
.badge-part { background: #FFF7ED; color: #B45309; }
.job-card-head h3 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: var(--font-card-title); font-weight: var(--weight-bold); color: var(--navy); margin-bottom: 8px; }
.job-tags { display: flex; gap: 8px; flex-wrap: wrap; }
.job-tag { background: var(--gray-100); color: var(--gray-600); font-size: var(--font-badge); padding: 3px 10px; border-radius: 6px; }
.job-card-head-right { display: flex; align-items: center; gap: 16px; flex-shrink: 0; }
.expand-icon { width: 32px; height: 32px; border-radius: 50%; background: var(--gray-100); display: flex; align-items: center; justify-content: center; font-size: 1rem; color: var(--gray-500); transition: transform .3s, background .3s; }
.job-card.open .expand-icon { transform: rotate(180deg); background: var(--navy); color: var(--white); }
.job-card-body { max-height: 0; overflow: hidden; transition: max-height .4s cubic-bezier(.4,0,.2,1); }
.job-card.open .job-card-body { max-height: 3200px; }
.job-card-body-inner { padding: 44px 48px 52px; display: grid; grid-template-columns: 1fr 1fr; gap: 48px; border-top: 1px solid var(--gray-200); }
.job-detail-group h4 { font-size: var(--font-caption); font-weight: var(--weight-bold); letter-spacing: var(--tracking-label); color: var(--teal); text-transform: uppercase; margin-bottom: 12px; font-family: 'Outfit', sans-serif; }
.job-detail-group table { width: 100%; border-collapse: collapse; }
.job-detail-group tr { border-bottom: 1px solid var(--gray-100); }
.job-detail-group th { width: 110px; padding: 18px 0; font-size: var(--font-ui-sm); font-weight: var(--weight-semibold); color: var(--gray-500); text-align: left; vertical-align: top; }
.job-detail-group td { padding: 18px 0 18px 16px; font-size: var(--font-body-sm); color: var(--gray-700); vertical-align: top; }
.job-detail-group td ul { padding-left: 16px; }
.job-detail-group td li { margin-bottom: 4px; font-size: var(--font-body-sm); }
.job-apply-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 360px; max-width: 100%; background: var(--coral); color: var(--white); font-weight: var(--weight-bold); font-size: var(--font-button-sm); padding: 14px 28px; border-radius: 4px; text-decoration: none; transition: all .2s; margin-top: 28px; }
.job-apply-btn:hover { background: #ea6c10; }

/* Flow */
#flow { background: var(--off-white); padding: 205px 0; }
.flow-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; position: relative; }
.flow-row::before { content: ''; position: absolute; top: 28px; left: calc(100%/8); right: calc(100%/8); height: 2px; background: linear-gradient(90deg, var(--teal), var(--coral)); z-index: 0; }
.flow-step { text-align: center; padding: 0 6px; position: relative; z-index: 1; }
.flow-circle { width: 66px; height: 66px; border-radius: 50%; background: var(--teal); color: var(--white); font-family: 'Outfit', sans-serif; font-weight: 700; font-size: .95rem; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; box-shadow: 0 0 0 6px var(--white); }
.flow-step:last-child .flow-circle { background: var(--coral); }
.flow-step h4 { font-size: var(--font-button-sm); font-weight: var(--weight-bold); color: var(--navy); margin-bottom: 6px; }
.flow-step p { font-size: var(--font-caption); color: var(--gray-500); line-height: 1.6; }

/* FAQ */
#faq { padding: 205px 0; }
.faq-list { max-width: 960px; margin: 0 auto; }
.faq-item { border-bottom: 1px solid var(--gray-200); }
.faq-q { display: flex; align-items: flex-start; gap: 16px; padding: 30px 0; cursor: pointer; transition: color .2s; }
.faq-q:hover { color: var(--teal); }
.faq-q .q-mark { font-family: 'Outfit', sans-serif; font-size: 1.2rem; font-weight: 900; color: var(--teal); flex-shrink: 0; line-height: 1.4; }
.faq-q .q-text { font-size: var(--font-body); font-weight: var(--weight-semibold); color: var(--navy); flex: 1; line-height: 1.5; }
.faq-q .faq-icon { font-size: 1.2rem; color: var(--gray-400); flex-shrink: 0; transition: transform .3s; margin-top: 2px; }
.faq-item.open .faq-icon { transform: none; }
.faq-a { max-height: 0; overflow: hidden; transition: max-height .35s cubic-bezier(.4,0,.2,1); }
.faq-item.open .faq-a { max-height: 500px; }
.faq-a-inner { display: flex; gap: 16px; padding: 0 0 32px 40px; }
.faq-a-inner .a-mark { font-family: 'Outfit', sans-serif; font-size: 1.2rem; font-weight: 900; color: var(--coral); flex-shrink: 0; line-height: 1.4; }
.faq-a-inner p { font-size: var(--font-ui); color: var(--gray-600); line-height: var(--lh-lead); flex: 1; }

/* CTA */
.cta-section { background: var(--teal); padding: 175px 0; position: relative; overflow: hidden; }
.cta-section::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 70% 100% at 80% 50%, rgba(255,255,255,.12) 0%, transparent 60%); }
.cta-inner { position: relative; z-index: 1; }
.cta-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; margin-top: 56px; }
.cta-box { border-radius: 8px; padding: 48px 40px; text-align: center; position: relative; overflow: hidden; }
.cta-box.mid { background: var(--white); border: 1px solid rgba(255,255,255,.6); }
.cta-box.new { background: var(--white); border: 1px solid rgba(255,255,255,.6); }
.cta-box h3 { font-family: 'Zen Kaku Gothic New', sans-serif; font-size: 1.4rem; font-weight: 900; color: var(--navy); margin-bottom: 12px; }
.cta-box p { font-size: var(--font-body-sm); color: var(--gray-500); line-height: var(--lh-body); margin-bottom: 28px; }
.cta-box .entry-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 360px; max-width: 100%; padding: 14px 32px; border-radius: 4px; font-weight: var(--weight-bold); font-size: var(--font-button); text-decoration: none; transition: all .2s; }
.cta-box.mid .entry-btn { background: var(--coral); color: var(--white); }
.cta-box.mid .entry-btn:hover { background: #c0000f; transform: translateY(-2px); }
.cta-box.new .entry-btn { background: var(--coral); color: var(--white); }
.cta-box.new .entry-btn:hover { background: #c0000f; transform: translateY(-2px); }
.cta-box-icon { font-size: 3rem; margin-bottom: 20px; }
.cta-informal { margin-top: 32px; text-align: center; padding: 28px; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); border-radius: 14px; }
.cta-informal p { color: rgba(255,255,255,.6); font-size: var(--font-body-sm); margin-bottom: 16px; }
.cta-informal a { color: var(--yellow); font-weight: var(--weight-bold); font-size: var(--font-ui); text-decoration: none; border-bottom: 1px dashed var(--yellow); }

@media (max-width: 900px) {
	.hero { min-height: calc(100svh - var(--header-height)); height: auto; }
	.hero-inner { grid-template-columns: 1fr; padding: 90px 40px 70px; }
	.hero-stripe, .hero-photo, .hero-photo-overlay { width: 100%; clip-path: none; opacity: .18; }
	.hero-left { padding-right: 0; }
	section, #message, #culture, #office, #welfare, #voice, #daylife, #jobs, #flow, #faq, .cta-section { padding: 96px 0; }
	.msg-grid, .daylife-grid, .welfare-grid, .cta-2col { grid-template-columns: 1fr; gap: 40px; }
	.culture-lead-grid, .culture-cards, .voice-grid, .numbers-grid, .office-photo-grid, .office-perks { grid-template-columns: 1fr 1fr; }
	.office-photo.main { grid-row: auto; }
	.job-card-body-inner { grid-template-columns: 1fr; }
	.wrap { padding: 0 20px; }
}
@media (max-width: 560px) {
	.culture-cards, .voice-grid, .numbers-grid, .office-photo-grid, .office-perks { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
	.flow-row { grid-template-columns: 1fr !important; gap: 24px; }
	.flow-row::before { display: none; }
}

/* ===== ボタン幅トンマナ統一（主要ボタン300px固定／TOP中途・新卒エントリーは360維持） ===== */
.hero-btns { flex-wrap: wrap; }
.hero-btns a { flex: 0 0 250px; box-sizing: border-box; justify-content: center; text-align: center; white-space: nowrap; }
@media (max-width: 560px) {
	.hero-inner { padding-left: 20px; padding-right: 20px; }
	.hero-btns a { flex: 1 1 100%; max-width: 320px; }
	.job-card-head { padding: 30px 22px; align-items: flex-start; gap: 18px; }
	.job-card-head-right { flex-shrink: 1; gap: 12px; }
	.job-card.open .job-card-body { max-height: none; }
	.job-card-body-inner { padding: 30px 22px 36px; gap: 28px; }
	.job-detail-group th { width: 92px; padding: 14px 0; }
	.job-detail-group td { padding: 14px 0 14px 12px; }
	.job-apply-btn,
	.cta-box .entry-btn { width: 100%; max-width: 280px; white-space: normal; }
	.voice-card { padding-top: 96px; }
	.voice-card .voice-media { width: 76%; top: -54px; }
}

/* ===== 決定稿追補 0.5.7：採用TOPのヒーロー/フロー/CTA位置調整 ===== */
body.page-recruit .hero { align-items: flex-start; height: 1068px; }
body.page-recruit .hero-inner { padding-top: 138px; align-items: start; }
body.page-recruit .hero-left { padding-right: 64px; transform: translateX(-10px); }
body.page-recruit .hero-h1 { font-size: clamp(2.55rem, 4.55vw, 3.85rem); line-height: 1.12; }
body.page-recruit .hero-sub { max-width: 500px; color: #1A2744; font-weight: var(--weight-semibold); }
body.page-recruit #office { padding-top: 195px; padding-bottom: 185px; }
body.page-recruit #voice { padding-top: 195px; padding-bottom: 205px; }
body.page-recruit .job-card-head { padding: 46px 50px; }
body.page-recruit .expand-icon { width: 34px; height: 34px; background: #fff; border: 2px solid var(--gray-200); color: var(--gray-500); }
body.page-recruit .job-card.open .expand-icon { background: #fff; color: var(--gray-500); border-color: var(--gray-300); }
body.page-recruit .cta-section { padding-top: 155px; padding-bottom: 172px; }
body.page-recruit .cta-2col { margin-top: 46px; }

/* ===== 決定稿追補 0.5.22：採用TOPの全ページ座標と色を決定稿へ寄せる ===== */
@media (min-width: 901px) {
	body.page-recruit {
		--teal: #008FD6;
		--off-white: #EDEDED;
	}

	body.page-recruit .hero {
		height: 1167px;
		min-height: 1167px;
	}
	body.page-recruit .hero-stripe,
	body.page-recruit .hero-photo {
		clip-path: polygon(20% 0, 100% 0, 100% 100%, 0 100%);
	}
	body.page-recruit .hero-inner {
		max-width: none;
		padding: 300px 50px 70px;
		grid-template-columns: minmax(0, 48%) minmax(0, 52%);
	}
	body.page-recruit .hero-left {
		max-width: 610px;
		padding-right: 0;
		transform: none;
	}
	body.page-recruit .hero-btns {
		flex-wrap: nowrap;
		gap: 16px;
	}
	body.page-recruit .hero-btns a {
		flex: 0 0 245px;
		min-width: 0;
	}

	body.page-recruit .wrap,
	body.page-recruit .sec-nav-inner {
		max-width: 1200px;
		padding-left: 0;
		padding-right: 0;
	}
	body.page-recruit .sec-nav-inner {
		justify-content: space-between;
	}
	body.page-recruit .sec-nav a {
		padding-left: 0;
		padding-right: 0;
	}

	body.page-recruit #message {
		padding-top: 35px;
		padding-bottom: 73px;
	}
	body.page-recruit .msg-grid {
		grid-template-columns: 570px 1fr;
		gap: 90px;
	}
	body.page-recruit .msg-img {
		aspect-ratio: auto;
		height: 752px;
	}

	body.page-recruit #culture {
		padding-top: 118px;
		padding-bottom: 118px;
	}
	body.page-recruit .culture-lead-grid {
		margin-bottom: 68px;
	}
	body.page-recruit .culture-card {
		min-height: 260px;
	}

	body.page-recruit #office {
		padding-top: 18px;
		padding-bottom: 99px;
	}
	body.page-recruit .office-photo-grid {
		grid-template-rows: 360px 360px;
		margin-bottom: 34px;
	}
	body.page-recruit .office-perks {
		gap: 16px;
	}

	body.page-recruit #welfare {
		padding-top: 115px;
		padding-bottom: 122px;
	}
	body.page-recruit .welfare-list li {
		padding-top: 14px;
		padding-bottom: 14px;
	}

	body.page-recruit #voice {
		padding-top: 78px;
		padding-bottom: 103px;
	}
	body.page-recruit .voice-grid {
		margin-top: 86px;
	}
	body.page-recruit .voice-card {
		min-height: 650px;
	}

	body.page-recruit #daylife {
		padding-top: 116px;
		padding-bottom: 103px;
	}

	body.page-recruit #jobs {
		padding-top: 116px;
		padding-bottom: 103px;
	}
	body.page-recruit .job-card {
		margin-bottom: 48px;
	}

	body.page-recruit #flow {
		padding-top: 116px;
		padding-bottom: 103px;
	}

	body.page-recruit #faq {
		padding-top: 254px;
		padding-bottom: 281px;
	}
	body.page-recruit .faq-list {
		max-width: 1100px;
	}
	body.page-recruit .faq-q {
		padding-top: 34px;
		padding-bottom: 34px;
	}
	body.page-recruit .faq-a-inner {
		padding-bottom: 42px;
	}

	body.page-recruit .cta-section {
		padding-top: 175px;
		padding-bottom: 215px;
	}
}

@media (max-width: 900px) {
	body.page-recruit .hero {
		margin-top: 0;
		height: auto;
		min-height: 100svh;
	}
	body.page-recruit .hero-inner {
		padding-top: calc(var(--header-height) + 90px);
	}
	body.page-recruit .hero-btns {
		flex-wrap: wrap;
	}
}

/* ===== 0.5.27：HEROを斜め分割なしの全面動画背景へ変更 ===== */
@media (min-width: 901px) {
	body.page-recruit .hero {
		background:#dfe3e8;
	}
	body.page-recruit .hero::before {
		content:'';
		position:absolute;
		inset:0;
		background:none;
		z-index:1;
		pointer-events:none;
	}
	body.page-recruit .hero-stripe,
	body.page-recruit .hero-photo-overlay {
		display:none;
	}
	body.page-recruit .hero-photo {
		inset:0;
		width:100%;
		height:100%;
		clip-path:none;
		z-index:0;
	}
	body.page-recruit .hero-inner {
		position:relative;
		z-index:3;
	}
}

/* ===== 0.5.44：HEROをヘッダー＋インページメニュー込みで100vhに補正 ===== */
@media (min-width: 901px) {
	body.page-recruit {
		--recruit-sec-nav-height: 56px;
	}

	body.page-recruit .hero {
		height: calc(100vh - var(--header-height) - var(--recruit-sec-nav-height));
		height: calc(100svh - var(--header-height) - var(--recruit-sec-nav-height));
		min-height: calc(100vh - var(--header-height) - var(--recruit-sec-nav-height));
		align-items: center;
	}

	body.page-recruit .hero-inner {
		height: 100%;
		padding: 90px 68px;
		align-items: center;
	}

	body.page-recruit .sec-nav {
		height: var(--recruit-sec-nav-height);
	}

	body.page-recruit .sec-nav-inner {
		height: 100%;
		align-items: stretch;
	}

	body.page-recruit .sec-nav a {
		display: flex;
		align-items: center;
		height: 100%;
		padding-top: 0;
		padding-bottom: 0;
	}
}

/* HERO動画の白フェードを解除。共通の黒フェードは維持する。 */
body.page-recruit .hero::before {
	background: none;
}
body.page-recruit .hero-photo-overlay {
	display: none;
}
body.page-recruit .hero-photo .ast-hero-media::after {
	background: transparent;
}

/* ===== 0.5.58：HERO文言位置をAbout基準へ統一 ===== */
@media (min-width: 901px) {
	body.page-recruit .hero-inner {
		display: flex;
		flex-direction: column;
		justify-content: center;
		align-items: flex-start;
		grid-template-columns: none;
		gap: 0;
		padding: 90px 68px;
	}

	body.page-recruit .hero-left {
		max-width: 620px;
		padding-right: 0;
		transform: translateY(39px);
	}

	body.page-recruit .hero-right { display: none; }
	body.page-recruit .hero-breadcrumb { margin-bottom: 32px; }
	body.page-recruit .hero-eyebrow { margin-bottom: 16px; }
	body.page-recruit .hero-sub { max-width: 620px; }
}

@media (max-width: 900px) {
	body.page-recruit .hero {
		margin-top: 0;
		height: auto;
		min-height: 0;
		display: block;
	}

	body.page-recruit .hero-inner {
		display: block;
		width: 100%;
		padding: calc(var(--header-height) + 90px) 20px 50px !important;
	}

	body.page-recruit .hero-left {
		padding-right: 0;
		transform: none;
	}

	body.page-recruit .hero-breadcrumb { margin-bottom: 18px; }
	body.page-recruit .hero-eyebrow { margin-bottom: 16px; }
}

/* ===== 0.5.60：モバイル指摘反映 ===== */
@media (max-width: 900px) {
	body.page-recruit #voice {
		padding-top: 96px;
	}

	body.page-recruit .voice-grid {
		margin-top: 46px;
		row-gap: 28px;
	}

	body.page-recruit .voice-card {
		padding: 24px 24px 28px;
	}

	body.page-recruit .voice-card .voice-media {
		position: static;
		transform: none;
		width: 100%;
		margin-bottom: 24px;
	}

	body.page-recruit .job-card-head-right {
		flex: 0 0 auto;
		flex-shrink: 0;
	}

	body.page-recruit .expand-icon {
		flex: 0 0 34px;
		width: 34px;
		min-width: 34px;
		height: 34px;
	}
}

/* ===== 0.5.61：モバイルHEROを下メニュー込み100svhへ統一 ===== */
@media (max-width: 900px) {
	body.page-recruit {
		--recruit-sec-nav-height: 56px;
	}

	body.page-recruit .hero {
		height: calc(100vh - var(--recruit-sec-nav-height));
		height: calc(100svh - var(--recruit-sec-nav-height));
		min-height: calc(100vh - var(--recruit-sec-nav-height));
		min-height: calc(100svh - var(--recruit-sec-nav-height));
		display: flex;
		align-items: center;
		background: #dfe3e8;
	}

	body.page-recruit .hero::before {
		content: '';
		position: absolute;
		inset: 0;
		background: none;
		z-index: 1;
		pointer-events: none;
	}

	body.page-recruit .hero-stripe,
	body.page-recruit .hero-photo-overlay {
		display: none;
	}

	body.page-recruit .hero-photo {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		clip-path: none;
		opacity: 1;
		z-index: 0;
	}

	body.page-recruit .hero-photo .ast-hero-media::after {
		content: '';
		position: absolute;
		inset: 0;
		background: transparent;
		pointer-events: none;
	}

	body.page-recruit .hero-inner {
		position: relative;
		z-index: 3;
	}

	body.page-recruit .sec-nav {
		height: var(--recruit-sec-nav-height);
	}

	body.page-recruit .sec-nav-inner {
		height: 100%;
		align-items: stretch;
	}

	body.page-recruit .sec-nav a {
		display: flex;
		align-items: center;
		height: 100%;
		padding-top: 0;
		padding-bottom: 0;
	}
}

/* ===== 0.5.84・募集カードのモバイル見出し崩れを修正 ===== */
@media (max-width: 900px) {
	body.page-recruit .job-card {
		margin-bottom: 28px;
	}

	body.page-recruit .job-card-head {
		display: grid;
		grid-template-columns: minmax(0, 1fr) 42px;
		grid-template-rows: auto auto;
		align-items: start;
		justify-content: stretch;
		gap: 18px 14px;
		padding: 26px 22px;
	}

	body.page-recruit .job-card-head-left {
		grid-column: 1;
		grid-row: 1;
		min-width: 0;
		width: 100%;
	}

	body.page-recruit .job-card-head h3 {
		font-size: 1.18rem;
		line-height: 1.55;
		letter-spacing: 0;
		margin-bottom: 14px;
		word-break: normal;
		overflow-wrap: anywhere;
	}

	body.page-recruit .job-tags {
		gap: 8px;
	}

	body.page-recruit .job-tag {
		max-width: 100%;
		white-space: nowrap;
	}

	body.page-recruit .job-card-head-right {
		display: contents;
	}

	body.page-recruit .expand-icon {
		grid-column: 2;
		grid-row: 1;
		align-self: start;
		justify-self: end;
		width: 42px;
		min-width: 42px;
		height: 42px;
		flex: 0 0 42px;
		font-size: 1.08rem;
	}

	body.page-recruit .job-card.open:not(.is-mobile-open) .job-card-body {
		max-height: 0;
	}

	body.page-recruit .job-card.is-mobile-open .job-card-body {
		max-height: none;
	}

	body.page-recruit .job-card.open:not(.is-mobile-open) .expand-icon {
		transform: none;
		background: #fff;
		color: var(--gray-500);
		border-color: var(--gray-200);
	}

	body.page-recruit .job-card.is-mobile-open .expand-icon {
		transform: rotate(180deg);
		background: #fff;
		color: var(--gray-500);
		border-color: var(--gray-300);
	}
}

@media (max-width: 480px) {
	body.page-recruit .job-card-head {
		grid-template-columns: minmax(0, 1fr) 40px;
		gap: 16px 12px;
		padding: 24px 18px;
	}

	body.page-recruit .job-card-head h3 {
		font-size: 1.12rem;
		line-height: 1.6;
	}

	body.page-recruit .expand-icon {
		width: 40px;
		min-width: 40px;
		height: 40px;
		flex-basis: 40px;
	}
}

/* 0.5.154: Mobile HERO typography, bottom alignment, and button visibility. */
@media (max-width: 768px) {
	body.page-recruit .hero {
		align-items: flex-end !important;
	}

	body.page-recruit .hero-inner {
		display: flex !important;
		align-items: flex-end !important;
		height: 100%;
		padding: calc(var(--header-height) + 42px) 20px 24px !important;
	}

	body.page-recruit .hero-left {
		width: 100%;
	}

	body.page-recruit .hero-h1 {
		font-size: 26px !important;
	}

	body.page-recruit .hero-halftone-target {
		transform: translateY(38px);
	}

	body.page-recruit .hero-btns {
		display: none !important;
	}
}
