@charset "UTF-8";
/* =========================================================
   下層ページ共通リセット（index.html 用の特殊スタイルを解除）
   ========================================================= */
body:not(.index) {
  min-height: 100vh;
}

/* 下層ページのヘッダー：common.scss の .header { position: fixed } を踏襲し、
   スクロールに追従させる。padding は不要（top/left/right の clamp で位置決め）。 */
/* ---- ページ用ヒーロー ---- */
.page_hero {
  /* --hero_bg：ヒーロー背景色。ダーク variant は下方の .is_dark で上書き。 */
  --hero_bg: #e7e7e7;
  /* --hero_title_color：ヒーロータイトル文字色。デフォルトはダーク（明背景に黒文字）。
     ダーク variant は下方で白に上書き。 */
  --hero_title_color: #111;
  position: relative;
  overflow: hidden;
  z-index: 10;
  background: var(--hero_bg);
  color: #111;
  padding: clamp(140px, 14vw, 220px) clamp(24px, 5.2vw, 71px) clamp(60px, 8vw, 120px);
  max-width: 1366px;
  margin: 0 auto;
}

/* ---- ページタイトル ----
   旧版は SVG マスクで動画をテキスト形状にクリップしていたが、現バージョンでは
   動画を廃止。シンプルな塗り SVG テキストにし、ページ遷移時に clip-path で
   右→左に wipe する（pt_intro_pending → pt_intro_in と連動）。 */
.page_hero_title {
  position: relative;
  overflow: hidden;
  margin: 0 0 36px;
  /* viewBox と同じアスペクト比を親に固定。SVG 高さの auto 計算によるサブピクセル誤差を排除。 */
  aspect-ratio: 1200/220;
}

.hero_title_text {
  display: block;
  width: 100%;
  height: 100%;
}

.hero_title_text text {
  fill: var(--hero_title_color);
}

/* ---- ページタイトル（HTML テキスト版） ----
   SVG では preserveAspectRatio="none" で横方向に引き伸ばすため改行できない。
   タイトルが長くなる可能性のあるページでは .page_hero_title_text を併用し、
   フルード font-size と自動改行に切り替える。 */
.page_hero_title.page_hero_title_text {
  aspect-ratio: auto;
  overflow: visible;
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 800;
  font-size: clamp(44px, 14.5vw, 200px);
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--hero_title_color);
  overflow-wrap: anywhere;
  word-break: normal;
}

.page_hero_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: baseline;
  -ms-flex-align: baseline;
  align-items: baseline;
  gap: 16px;
  margin-bottom: 20px;
}

.page_hero_meta .section_label_sub {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: clamp(11px, 0.9vw, 13px);
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  opacity: 0.7;
}

.page_hero_lead {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(15px, 1.15vw, 17px);
  line-height: 2;
  letter-spacing: 0.04em;
  max-width: 720px;
}

/* ---- ページ遷移と連動するヒーロー内 stagger アニメ ----
   common.js が <html> に付与するクラスでハンドリング：
     pt_intro_pending : reveal 開始時、要素を非表示状態にロック（瞬間切替）
     pt_intro_in      : reveal の途中で付与され、stagger で要素を表示
   遷移を経由しない直接アクセス時はどちらも付かないため通常表示される。
   <main> 全体は common.css 側で同時にせり上がりアニメ。ここでは hero
   内側の title → meta → lead を delay 付きで階段表示する。 */
html.pt_intro_pending .page_hero_title,
html.pt_intro_pending .page_hero_meta,
html.pt_intro_pending .page_hero_lead {
  opacity: 0;
  -webkit-transform: translate3d(0, 32px, 0);
  transform: translate3d(0, 32px, 0);
  -webkit-transition: none;
  transition: none;
}

.page_hero_title,
.page_hero_meta,
.page_hero_lead {
  -webkit-transition: opacity 0.85s cubic-bezier(0.09, 1, 0.36, 1), -webkit-transform 0.85s cubic-bezier(0.09, 1, 0.36, 1);
  transition: opacity 0.85s cubic-bezier(0.09, 1, 0.36, 1), transform 0.85s cubic-bezier(0.09, 1, 0.36, 1), -webkit-transform 0.85s cubic-bezier(0.09, 1, 0.36, 1);
}

html.pt_intro_in .page_hero_title {
  opacity: 1;
  -webkit-transform: none;
  transform: none;
  -webkit-transition-delay: 0.1s;
  transition-delay: 0.1s;
}

html.pt_intro_in .page_hero_meta {
  opacity: 1;
  -webkit-transform: none;
  transform: none;
  -webkit-transition-delay: 0.22s;
  transition-delay: 0.22s;
}

html.pt_intro_in .page_hero_lead {
  opacity: 1;
  -webkit-transform: none;
  transform: none;
  -webkit-transition-delay: 0.36s;
  transition-delay: 0.36s;
}

/* ---- 共通：節タイトル ---- */
.lower_section {
  position: relative;
  background: #e7e7e7;
  padding: clamp(60px, 7vw, 110px) clamp(24px, 5.2vw, 71px);
}

.lower_section.is_dark {
  background: #0a0a0a;
  color: #fff;
}

.lower_section_inner {
  max-width: 1366px;
  margin: 0 auto;
}

.lower_heading {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: baseline;
  -ms-flex-align: baseline;
  align-items: baseline;
  gap: 18px;
  margin-bottom: clamp(32px, 4vw, 64px);
  border-top: 1px solid rgba(0, 0, 0, 0.18);
  padding-top: clamp(40px, 4.5vw, 70px);
}

.is_dark .lower_heading {
  border-top-color: rgba(255, 255, 255, 0.2);
}

.lower_heading .section_index {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: clamp(11px, 0.9vw, 13px);
  font-weight: 700;
  letter-spacing: 0.1em;
}

.lower_heading h2 {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(38px, 5.5vw, 88px);
  line-height: 1;
  letter-spacing: -0.02em;
  text-transform: uppercase;
}

h2 span.ja {
  display: block;
  margin-top: 4px;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: 18px;
  letter-spacing: 0.04em;
}

/* 上部罫線・上余白を除去するモディファイア
   （前段セクションと意図的に詰めて見せたい場合に使用） */
.lower_heading.lower_heading_no_rule {
  border-top: 0;
  padding-top: 0;
}

/* =========================================================
   ABOUT - 会社概要セクション
   ========================================================= */
.about_concept {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr clamp(40px, 5vw, 90px) 1fr;
  grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 5vw, 90px);
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
}

.about_concept_lead {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(28px, 3.4vw, 48px);
  line-height: 1.15;
  letter-spacing: -0.01em;
}

.about_concept_lead em {
  font-style: normal;
  display: block;
}

.about_concept_body p {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 2.05;
  letter-spacing: 0.04em;
  margin-bottom: 24px;
}

/* 会社概要テーブル */
.company_table {
  width: 100%;
  border-collapse: collapse;
  font-family: "Noto Sans JP", sans-serif;
}

.company_table th,
.company_table td {
  text-align: left;
  vertical-align: top;
  padding: clamp(20px, 2vw, 28px) 8px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
  font-size: clamp(14px, 1vw, 15px);
  line-height: 1.85;
}

.company_table th {
  width: 220px;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(12px, 0.9vw, 14px);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding-right: 24px;
}

.company_table th .ja {
  display: block;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.04em;
  margin-top: 4px;
  opacity: 0.6;
  text-transform: none;
}

.company_table tr:first-child th,
.company_table tr:first-child td {
  border-top: 1px solid rgba(0, 0, 0, 0.15);
}

/* メンバー */
.member_grid {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr clamp(28px, 2.5vw, 40px) 1fr clamp(28px, 2.5vw, 40px) 1fr;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(28px, 2.5vw, 40px);
  margin-top: clamp(40px, 5vw, 70px);
}

.member_card {
  background: #fff;
  padding: 0;
  overflow: hidden;
  border-radius: 4px;
}

.member_thumb {
  aspect-ratio: 4/5;
  background: linear-gradient(135deg, #d6d6d6 0%, #b5b5b5 100%);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: end;
  -ms-flex-align: end;
  align-items: flex-end;
  -webkit-box-pack: start;
  -ms-flex-pack: start;
  justify-content: flex-start;
  padding: 24px;
  position: relative;
}

.member_thumb::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.4), transparent 60%);
}

.member_role {
  position: relative;
  z-index: 2;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.12em;
  color: #fff;
  text-transform: uppercase;
}

.member_info {
  padding: 24px 24px 28px;
}

.member_name_en {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: 22px;
  letter-spacing: -0.01em;
  line-height: 1;
}

.member_name_ja {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 12px;
  letter-spacing: 0.08em;
  margin-top: 6px;
  opacity: 0.7;
}

/* =========================================================
   ABOUT - Clients（取引先ロゴ：PC 5×2 固定グリッド・全幅・余白なし）
   ロゴ画像はセル幅いっぱいに表示し、高さはロゴ自身の比率に追従させる。
   ========================================================= */
.client_list {
  list-style: none;
  margin: 0;
  padding: 0;
  width: 100%;
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr 0 1fr 0 1fr 0 1fr 0 1fr;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  border-top: 1px solid rgba(0, 0, 0, 0.16);
  border-left: 1px solid rgba(0, 0, 0, 0.16);
}

.client_list li {
  display: block;
  padding: 0;
  margin: 0;
  border-right: 1px solid rgba(0, 0, 0, 0.16);
  border-bottom: 1px solid rgba(0, 0, 0, 0.16);
  background: #ffffff;
  overflow: hidden;
  font-size: 0;
  line-height: 0;
}

.client_list img {
  display: block;
  width: 100%;
  height: auto;
  /* グレースケール統一でロゴ群を視覚的に揃える（hoverでフルカラーに復帰） */
  -webkit-filter: grayscale(1);
          filter: grayscale(1);
  opacity: 0.85;
  -webkit-transition: opacity 0.3s ease, -webkit-filter 0.3s ease;
  transition: opacity 0.3s ease, -webkit-filter 0.3s ease;
  transition: filter 0.3s ease, opacity 0.3s ease;
  transition: filter 0.3s ease, opacity 0.3s ease, -webkit-filter 0.3s ease;
}

.client_list li:hover img {
  -webkit-filter: grayscale(0);
          filter: grayscale(0);
  opacity: 1;
}

.lower_section.is_dark .client_list {
  border-top-color: rgba(255, 255, 255, 0.18);
  border-left-color: rgba(255, 255, 255, 0.18);
}

.lower_section.is_dark .client_list li {
  background: rgba(255, 255, 255, 0.04);
  border-right-color: rgba(255, 255, 255, 0.18);
  border-bottom-color: rgba(255, 255, 255, 0.18);
}

.lower_section.is_dark .client_list img {
  -webkit-filter: grayscale(1) invert(1) brightness(1.3);
          filter: grayscale(1) invert(1) brightness(1.3);
}

.lower_section.is_dark .client_list li:hover img {
  -webkit-filter: grayscale(0) invert(0);
          filter: grayscale(0) invert(0);
  opacity: 1;
}

/* =========================================================
   ABOUT - Project & Service
   ========================================================= */
.ps_list {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr;
  grid-template-columns: 1fr;
  gap: 0;
}

.ps_item {
  padding: clamp(28px, 3.5vw, 56px) 0;
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: minmax(280px, 1.1fr) clamp(24px, 4vw, 64px) minmax(360px, 1fr);
  grid-template-columns: minmax(280px, 1.1fr) minmax(360px, 1fr);
  gap: clamp(24px, 4vw, 64px);
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: start;
}

.ps_item:last-child {
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

.lower_section:not(.is_dark) .ps_item {
  border-top-color: rgba(0, 0, 0, 0.18);
}

.lower_section:not(.is_dark) .ps_item:last-child {
  border-bottom-color: rgba(0, 0, 0, 0.18);
}

.ps_item_thumb {
  position: relative;
  overflow: hidden;
  border-radius: 4px;
  aspect-ratio: 31/20;
  background: rgba(255, 255, 255, 0.04);
}

.lower_section:not(.is_dark) .ps_item_thumb {
  background: rgba(0, 0, 0, 0.04);
}

.ps_item_thumb a,
.ps_item_thumb img {
  display: block;
  width: 100%;
  height: 100%;
}

.ps_item_thumb img {
  -o-object-fit: cover;
     object-fit: cover;
  -webkit-transition: -webkit-transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  transition: -webkit-transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  transition: transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  transition: transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1), -webkit-transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.ps_item_thumb a:hover img {
  -webkit-transform: scale(1.04);
          transform: scale(1.04);
}

.ps_item_body {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: clamp(14px, 1.6vw, 22px);
}

.ps_item_title {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(24px, 3vw, 40px);
  letter-spacing: -0.01em;
  line-height: 1.1;
  margin: 0;
}

.ps_item_sub {
  display: inline-block;
  margin-left: 8px;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: clamp(13px, 1vw, 15px);
  letter-spacing: 0.04em;
  opacity: 0.7;
}

.ps_item_desc {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 2.05;
  letter-spacing: 0.04em;
  margin: 0;
}

.ps_item_link {
  margin: 0;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(13px, 1vw, 15px);
  letter-spacing: 0.06em;
}

.ps_item_link a {
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  -webkit-transition: opacity 0.2s ease;
  transition: opacity 0.2s ease;
}

.ps_item_link a:hover {
  opacity: 0.65;
}

/* =========================================================
   SERVICE - サービス詳細
   ========================================================= */
.service_anchor {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: clamp(20px, 3vw, 48px);
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  border-top: 1px solid rgba(0, 0, 0, 0.18);
  border-bottom: 1px solid rgba(0, 0, 0, 0.18);
  padding: clamp(20px, 2vw, 28px) 0;
  margin-bottom: clamp(60px, 8vw, 130px);
}

.service_anchor a {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(13px, 1.05vw, 16px);
  letter-spacing: 0.12em;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 10px;
}

.service_anchor a::before {
  content: "↓";
  font-weight: 400;
  opacity: 0.6;
}

/* サービス詳細セクション */
.service_detail {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: minmax(300px, 1fr) clamp(40px, 5vw, 90px) minmax(420px, 1.4fr);
  grid-template-columns: minmax(300px, 1fr) minmax(420px, 1.4fr);
  gap: clamp(40px, 5vw, 90px);
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
  padding: clamp(60px, 7vw, 110px) 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.18);
}

.service_detail:last-of-type {
  border-bottom: 0;
}

.service_detail_left h3 {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(36px, 4.4vw, 64px);
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.service_detail_left .ja {
  display: block;
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(13px, 0.95vw, 15px);
  font-weight: 500;
  letter-spacing: 0.1em;
  opacity: 0.6;
  margin-bottom: 32px;
}

.service_visual {
  aspect-ratio: 4/3;
  background: linear-gradient(135deg, #1f1f1f 0%, #0a0a0a 100%);
  border-radius: 4px;
  position: relative;
  overflow: hidden;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.service_visual_label {
  position: absolute;
  top: 24px;
  left: 24px;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.18em;
  color: rgba(255, 255, 255, 0.65);
  text-transform: uppercase;
}

.service_visual_num {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 200;
  font-size: clamp(120px, 18vw, 280px);
  color: rgba(255, 255, 255, 0.05);
  line-height: 1;
  letter-spacing: -0.04em;
}

.service_visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.06), transparent 50%), radial-gradient(circle at 20% 80%, rgba(255, 255, 255, 0.04), transparent 60%);
}

.service_detail_right p {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 2.05;
  letter-spacing: 0.04em;
  margin-bottom: 32px;
}

.feature_list {
  list-style: none;
  padding: 0;
  margin: 0 0 36px;
}

.feature_list li {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(13px, 1vw, 15px);
  line-height: 1.8;
  padding: 14px 0 14px 28px;
  position: relative;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.feature_list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 22px;
  width: 16px;
  height: 1px;
  background: #111;
}

/* =========================================================
   RECRUIT - 募集要項
   ========================================================= */
.recruit_message {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(36px, 4.6vw, 72px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  text-transform: uppercase;
  margin-bottom: 36px;
  max-width: 980px;
}

.recruit_message_ja {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(15px, 1.1vw, 17px);
  font-weight: 500;
  line-height: 1.95;
  letter-spacing: 0.04em;
  margin-bottom: 64px;
  max-width: 760px;
  opacity: 0.85;
}

.position_grid {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr clamp(20px, 2vw, 32px) 1fr;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(20px, 2vw, 32px);
  margin-bottom: clamp(60px, 8vw, 110px);
}

.position_card {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.18);
  padding: clamp(28px, 3vw, 48px);
  border-radius: 4px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  gap: 20px;
}

.lower_section:not(.is_dark) .position_card {
  background: #fff;
  border-color: rgba(0, 0, 0, 0.08);
}

.position_card_no {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.18em;
  opacity: 0.55;
}

.position_card_title {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(22px, 2.4vw, 32px);
  line-height: 1.15;
  letter-spacing: -0.01em;
  text-transform: uppercase;
}

.position_card_title .ja {
  display: block;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.06em;
  margin-top: 6px;
  opacity: 0.7;
  text-transform: none;
}

.position_card_desc {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 13.5px;
  line-height: 1.85;
  letter-spacing: 0.03em;
  -webkit-box-flex: 1;
  -ms-flex: 1;
  flex: 1;
}

.position_card_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  gap: 8px;
}

.position_card_tag {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 10px;
  letter-spacing: 0.1em;
  padding: 6px 12px;
  border: 1px solid currentColor;
  border-radius: 999px;
  text-transform: uppercase;
  opacity: 0.85;
}

/* 募集要項テーブル（Recruit用） */
.recruit_table {
  width: 100%;
  border-collapse: collapse;
  font-family: "Noto Sans JP", sans-serif;
}

.recruit_table th,
.recruit_table td {
  text-align: left;
  vertical-align: top;
  padding: clamp(20px, 2vw, 26px) 8px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.18);
  font-size: clamp(13px, 1vw, 15px);
  line-height: 1.95;
}

.lower_section:not(.is_dark) .recruit_table th,
.lower_section:not(.is_dark) .recruit_table td {
  border-bottom-color: rgba(0, 0, 0, 0.15);
}

.recruit_table th {
  width: 220px;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(12px, 0.9vw, 14px);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding-right: 24px;
}

/* =========================================================
   CONTACT
   ========================================================= */
.contact_lead {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(28px, 3.2vw, 44px);
  line-height: 1.2;
  letter-spacing: -0.01em;
  margin-bottom: 24px;
}

.contact_lead_ja {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 2;
  letter-spacing: 0.04em;
  max-width: 680px;
  margin-bottom: clamp(40px, 5vw, 70px);
}

.contact_form {
  background: #fff;
  padding: clamp(36px, 4vw, 64px);
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 260px clamp(28px, 3vw, 48px) 1fr;
  grid-template-columns: 260px 1fr;
  gap: clamp(20px, 2vw, 28px) clamp(28px, 3vw, 48px);
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  border-radius: 4px;
  max-width: 1080px;
  margin: 0 auto;
}

.contact_form .form_label {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 10px;
  white-space: nowrap;
}

.contact_form .form_label .ja {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: 12.5px;
  letter-spacing: 0.04em;
  text-transform: none;
  opacity: 0.6;
  -ms-flex-negative: 0;
  flex-shrink: 0;
  white-space: nowrap;
}

.contact_form .form_label .req {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  background: #111;
  color: #fff;
  padding: 3px 8px;
  border-radius: 2px;
  -ms-flex-negative: 0;
  flex-shrink: 0;
  white-space: nowrap;
}

.contact_form input[type=text],
.contact_form input[type=email],
.contact_form input[type=tel],
.contact_form select,
.contact_form textarea {
  width: 100%;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 15px;
  padding: 14px 18px;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 2px;
  background: #fafafa;
  color: #111;
  outline: none;
}

.contact_form textarea {
  resize: vertical;
  min-height: 200px;
  line-height: 1.7;
}

.contact_form .form_hint {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 12px;
  margin-top: 6px;
  color: #666;
}

/* =========================================================
   CONTACT：エラー表示（.block.has-error / p.error / .is-error）
   page_module.css の [data-theme="choregate"] .block を上書きするため
   同じ詳細度プレフィックスを付与
   ========================================================= */
.block.has-error,
[data-theme="choregate"] .block.has-error {
  width: 100%;
  max-width: 1080px;
  margin: 0 auto clamp(20px, 2.4vw, 32px);
  box-sizing: border-box;
  background: #fdecec;
  border: 1px solid #e7b4b4;
  border-left: 4px solid #d33a3a;
  border-radius: 4px;
  color: #c62828;
  padding: 16px 20px 16px 22px;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 13.5px;
  line-height: 1.8;
  letter-spacing: 0.02em;
  text-align: left;
}

.block.has-error .list-dflt,
[data-theme="choregate"] .block.has-error .list-dflt {
  list-style: none;
  margin: 0;
  padding: 0;
}

.block.has-error .list-dflt li {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
  padding: 0;
}

.block.has-error .list-dflt li + li {
  margin-top: 6px;
}

.block.has-error .list-dflt li::before {
  content: "!";
  -ms-flex-negative: 0;
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  line-height: 16px;
  margin-top: 4px;
  text-align: center;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 11px;
  font-weight: 700;
  color: #fff;
  background: #d33a3a;
  border-radius: 50%;
}

.contact_form p.error {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
  gap: 8px;
  margin-top: 8px;
  padding: 0;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 12.5px;
  line-height: 1.6;
  letter-spacing: 0.02em;
  color: #d33a3a;
}

.contact_form p.error::before {
  content: "!";
  -ms-flex-negative: 0;
  flex-shrink: 0;
  width: 14px;
  height: 14px;
  line-height: 14px;
  margin-top: 3px;
  text-align: center;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  background: #d33a3a;
  border-radius: 50%;
}

.contact_form input.is-error,
.contact_form select.is-error,
.contact_form textarea.is-error {
  border-color: #d33a3a;
  background: #fff7f7;
}

.contact_form input.is-error:focus,
.contact_form select.is-error:focus,
.contact_form textarea.is-error:focus {
  border-color: #d33a3a;
  box-shadow: 0 0 0 3px rgba(211, 58, 58, 0.12);
}

.contact_form_submit {
  grid-column: 1/-1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 18px;
  padding-top: 24px;
}

.contact_form_submit .privacy_note {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 12.5px;
  letter-spacing: 0.04em;
  color: #555;
  line-height: 1.7;
  max-width: 540px;
  text-align: center;
}

.btn_send {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  gap: 24px;
  min-width: 280px;
  height: 64px;
  padding: 0 36px;
  border: 0;
  border-radius: 999px;
  background: #111;
  color: #fff;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.18em;
  cursor: pointer;
}

/* =========================================================
   NEWS LIST / DETAIL
   ========================================================= */
.news_filter {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 12px;
  margin-bottom: clamp(40px, 5vw, 70px);
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

.news_filter a {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.14em;
  padding: 11px 22px;
  border: 1px solid currentColor;
  border-radius: 999px;
  text-transform: uppercase;
}

.news_filter a.is_active {
  background: #111;
  color: #e7e7e7;
  border-color: #111;
}

.news_list_full {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid rgba(0, 0, 0, 0.18);
}

.news_list_full li {
  border-bottom: 1px solid rgba(0, 0, 0, 0.18);
}

.news_list_full article {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 130px 32px 200px 32px 1fr;
  grid-template-columns: 130px 200px 1fr;
  gap: 32px;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  padding: clamp(22px, 2.4vw, 32px) 8px;
}

.news_list_full .news_item_date_day {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: 36px;
  line-height: 1;
  letter-spacing: -0.02em;
}

.news_list_full .news_item_date_ym {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 10px;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.12em;
  margin-top: 4px;
  opacity: 0.7;
}

.news_list_full .news_item_cats {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  gap: 6px 8px;
  min-width: 0;
  max-width: 100%;
}

.news_list_full .news_item_cat {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 10px;
  letter-spacing: 0.14em;
  padding: 6px 12px;
  border: 1px solid currentColor;
  border-radius: 999px;
  text-transform: uppercase;
  white-space: nowrap;
  -ms-flex-negative: 0;
  flex-shrink: 0;
}

.news_list_full .news_item_title {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: clamp(15px, 1.15vw, 17px);
  line-height: 1.6;
  letter-spacing: 0.02em;
}

/* ページネーション */
.pagination {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 12px;
  margin-top: clamp(48px, 5vw, 80px);
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.06em;
}

.pagination a,
.pagination span {
  width: 44px;
  height: 44px;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  border: 1px solid rgba(0, 0, 0, 0.4);
  border-radius: 999px;
}

.pagination .is_current {
  background: #111;
  color: #e7e7e7;
  border-color: #111;
}

.pagination .pg_ar {
  width: auto;
  padding: 0 22px;
  border-radius: 999px;
}

/* ニュース詳細 */
.news_detail_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 18px;
  margin-bottom: 28px;
}

.news_detail_meta time {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.12em;
}

.news_detail_meta .news_item_cat {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 10px;
  letter-spacing: 0.14em;
  padding: 5px 12px;
  border: 1px solid currentColor;
  border-radius: 999px;
  text-transform: uppercase;
}

.news_detail_title {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: clamp(28px, 3.4vw, 48px);
  line-height: 1.45;
  letter-spacing: 0.02em;
  margin-bottom: clamp(40px, 5vw, 70px);
  max-width: 1100px;
}

.news_detail_eyecatch {
  width: 100%;
  aspect-ratio: 16/8;
  background: linear-gradient(135deg, #2a2a2a 0%, #0e0e0e 100%);
  position: relative;
  overflow: hidden;
  margin-bottom: clamp(40px, 5vw, 70px);
  border-radius: 4px;
}

.news_detail_eyecatch::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 70% 30%, rgba(255, 255, 255, 0.08), transparent 55%), radial-gradient(circle at 30% 70%, rgba(255, 255, 255, 0.04), transparent 50%);
}

.news_detail_body {
  max-width: 880px;
  margin: 0 auto;
  font-family: "Noto Sans JP", sans-serif;
}

.news_detail_body p {
  font-size: 15.5px;
  line-height: 2.1;
  letter-spacing: 0.04em;
  margin-bottom: 1.8em;
}

.news_detail_body h2,
.news_detail_body h3 {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: 24px;
  letter-spacing: -0.01em;
  margin: 2.5em 0 0.8em;
  padding-left: 16px;
  border-left: 3px solid #111;
}

.news_detail_body h2 .ja,
.news_detail_body h3 .ja {
  display: block;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: 18px;
  margin-top: 4px;
  letter-spacing: 0.04em;
}

.news_detail_body ul {
  margin: 0 0 2em 0;
  padding: 0;
  list-style: none;
}

.news_detail_body ul li {
  position: relative;
  padding: 8px 0 8px 24px;
  font-size: 15px;
  line-height: 1.85;
}

.news_detail_body ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 18px;
  width: 12px;
  height: 1px;
  background: #111;
}

.news_pager {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr 32px auto 32px 1fr;
  grid-template-columns: 1fr auto 1fr;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 32px;
  margin-top: clamp(60px, 7vw, 100px);
  padding-top: clamp(40px, 5vw, 70px);
  border-top: 1px solid rgba(0, 0, 0, 0.2);
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.12em;
}

.news_pager_prev {
  text-align: left;
}

/* =========================================================
   ダークページヒーロー（Recruit / .is_dark）
   --hero_bg を黒に、--hero_title_color を白にして
   塗り SVG タイトル文字を白に切り替える。
   ========================================================= */
.page_hero.is_dark {
  --hero_bg: #0a0a0a;
  --hero_title_color: #fff;
  color: #fff;
}

/* =========================================================
   ダークなマーキー帯（Recruit用）
   ========================================================= */
.section_contact_dark {
  background: #0a0a0a;
}

/* =========================================================
   Recruit Apply ボタン
   ========================================================= */
.recruit_apply_wrap {
  margin-top: clamp(48px, 5vw, 80px);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.btn.btn_apply {
  border-color: #fff;
  min-width: 220px;
  height: 60px;
  padding: 0 32px;
}

/* =========================================================
   Contact 導入部 / textarea ラベル
   ========================================================= */
.contact_intro {
  text-align: center;
  margin-bottom: clamp(40px, 4vw, 60px);
}

.contact_intro .contact_lead_ja {
  margin: 0 auto;
}

.form_label_textarea {
  -ms-flex-item-align: start;
  align-self: flex-start;
  padding-top: 14px;
}

.contact_form_submit .privacy_note a {
  text-decoration: underline;
}

.btn_send .btn_arrow {
  font-weight: 300;
  font-size: 18px;
}

/* =========================================================
   CONTACT 確認画面：「入力画面に戻る」ボタン
   ・サイズを送信ボタンと同等に確保（.btn の小サイズを上書き）
   ・矢印 → を ← に反転（HTML/アイコンの差し替え不要・CSS のみ）
   ========================================================= */
._jsBtnBack.btn_send,
[data-theme="choregate"] ._jsBtnBack.btn_send {
  /* .btn_send (border:0) と外寸を揃えるため border-box に */
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  gap: 24px;
  min-width: 280px;
  height: 64px;
  padding: 0 36px;
  border: 1px solid #111;
  border-radius: 999px;
  background: #fff;
  color: #111;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.18em;
  cursor: pointer;
}

._jsBtnBack .btn_arrow,
[data-theme="choregate"] ._jsBtnBack .btn_arrow {
  -webkit-transform: scaleX(-1);
  transform: scaleX(-1);
}

/* =========================================================
   Privacy Policy 本文
   ========================================================= */
.privacy_body {
  max-width: 880px;
  margin: 0 auto;
  font-family: "Noto Sans JP", sans-serif;
  color: #111;
}

/* 冒頭リード（基本方針の宣言） */
.privacy_lead {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 15px;
  line-height: 2;
  letter-spacing: 0.04em;
  margin: 0 0 56px;
  padding-bottom: 32px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.18);
}

/* 各章のタイトル（番号 ＋ 章名） */
.privacy_section_title {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: baseline;
      -ms-flex-align: baseline;
          align-items: baseline;
  gap: 18px;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: 22px;
  letter-spacing: 0.01em;
  margin: 56px 0 20px;
  padding-top: 28px;
  border-top: 1px solid rgba(0, 0, 0, 0.18);
  color: #111;
}

.privacy_section_title .num {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.14em;
  color: #555;
  /* 数字にだけ Plus Jakarta Sans の trad スタイルを乗せる */
}

/* お問い合わせ先などナンバリングのない章タイトルの調整 */
.privacy_section_title_contact {
  /* num が無いケース。padding/border は他章と揃える */
}

/* 章下の小見出し */
.privacy_sub_title {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: 15.5px;
  line-height: 1.6;
  letter-spacing: 0.04em;
  margin: 32px 0 12px;
  padding-left: 14px;
  border-left: 3px solid #111;
}

.privacy_body p {
  font-size: 15px;
  line-height: 2;
  letter-spacing: 0.04em;
  margin: 0 0 1.4em;
}

.privacy_body p:last-child {
  margin-bottom: 0;
}

/* リンク（外部参照） */
.privacy_body a {
  color: #111;
  text-decoration: underline;
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
  -webkit-transition: opacity 0.2s ease;
  transition: opacity 0.2s ease;
  word-break: break-all;
}

.privacy_body a:hover {
  opacity: 0.6;
}

/* 中黒の箇条書き（外部リンク一覧） */
.privacy_disc {
  list-style: none;
  padding: 0;
  margin: 0 0 1.6em;
}

.privacy_disc li {
  position: relative;
  padding-left: 1.2em;
  font-size: 14.5px;
  line-height: 1.85;
  letter-spacing: 0.03em;
  margin: 6px 0;
}

.privacy_disc li::before {
  content: "";
  position: absolute;
  top: 0.7em;
  left: 0.2em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #111;
}

/* お問い合わせ先ブロック */
.privacy_contact_box {
  margin: 24px 0 0;
  padding: 32px clamp(20px, 3vw, 40px);
  background: #f3f3f3;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 4px;
}

.privacy_contact_address {
  font-size: 14.5px;
  line-height: 1.95;
  letter-spacing: 0.04em;
  margin: 0 0 20px;
}

.privacy_contact_mail {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: baseline;
      -ms-flex-align: baseline;
          align-items: baseline;
  gap: 12px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin: 0;
  padding-top: 18px;
  border-top: 1px dashed rgba(0, 0, 0, 0.18);
  font-size: 15px;
  line-height: 1.7;
}

.privacy_contact_label {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #555;
}

.privacy_contact_mail a {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 600;
  font-size: 16px;
  letter-spacing: 0.02em;
}

/* 制定日（最下部メタ） */
.privacy_revision {
  margin: 56px 0 0;
  padding-top: 24px;
  border-top: 1px solid rgba(0, 0, 0, 0.18);
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 12px;
  letter-spacing: 0.12em;
  color: #555;
  text-align: right;
}

/* 旧クラス（h2 .ja / privacy_meta）の後方互換は不要なため未定義のままで OK */
/* =========================================================
   メディアクエリ：タブレット横（iPad横）／1024px 以下
   ========================================================= */
@media (max-width: 1024px) {
  /* ---- ページヒーロー ---- */
  .page_hero {
    padding: clamp(120px, 14vw, 180px) clamp(20px, 4.6vw, 60px) clamp(50px, 7vw, 90px);
  }
  /* .page_hero_title の文字サイズは SVG viewBox + aspect-ratio で自動スケールするため、
     メディアクエリでの font-size 調整は不要 */
  /* ---- 下層セクション ---- */
  .lower_section {
    padding: clamp(50px, 7vw, 90px) clamp(20px, 4.6vw, 60px);
  }
  .lower_heading h2 {
    font-size: clamp(34px, 5.8vw, 72px);
  }
  /* ---- service 詳細：1.4fr の右カラムを少し詰める ---- */
  .service_detail {
    -ms-grid-columns: minmax(260px, 1fr) clamp(32px, 4.5vw, 70px) minmax(360px, 1.2fr);
    grid-template-columns: minmax(260px, 1fr) minmax(360px, 1.2fr);
    gap: clamp(32px, 4.5vw, 70px);
  }
  /* ---- recruit position grid ---- */
  .position_grid {
    gap: clamp(18px, 2vw, 28px);
  }
  /* ---- Clients：5列維持・全幅 ---- */
  .client_list {
    width: 100%;
  }
} /* /@media 1024 */
/* =========================================================
   メディアクエリ：タブレット縦／900px 以下
   ========================================================= */
@media (max-width: 900px) {
  /* ---- ページヒーロー ---- */
  .page_hero {
    padding: clamp(110px, 16vw, 150px) clamp(20px, 4.6vw, 48px) clamp(48px, 6vw, 80px);
  }
  .page_hero_title {
    margin-bottom: 28px;
  }
  .page_hero_lead {
    font-size: 14.5px;
    line-height: 1.95;
  }
  /* ---- ABOUT：concept 2カラム→1カラム ---- */
  .about_concept {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: clamp(28px, 3.6vw, 48px);
  }
  .about_concept_lead {
    font-size: clamp(28px, 4vw, 40px);
  }
  /* ---- ABOUT：member 3カラム→2カラム ---- */
  .member_grid {
    -ms-grid-columns: 1fr clamp(22px, 2.6vw, 32px) 1fr;
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(22px, 2.6vw, 32px);
  }
  /* ---- SERVICE：詳細 2カラム→1カラム ---- */
  .service_detail {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: clamp(28px, 4vw, 50px);
    padding: clamp(50px, 7vw, 90px) 0;
  }
  .service_detail_left h3 {
    font-size: clamp(32px, 5.4vw, 56px);
  }
  .service_visual {
    aspect-ratio: 16/9;
  }
  /* ---- RECRUIT：position 2カラム維持・余白詰め ---- */
  .position_grid {
    -ms-grid-columns: 1fr 18px 1fr;
    grid-template-columns: repeat(2, 1fr);
    gap: 18px;
    margin-bottom: clamp(48px, 6vw, 80px);
  }
  .position_card {
    padding: clamp(24px, 3vw, 36px);
  }
  /* ---- CONTACT：フォーム 2カラム→1カラム（label / input 縦積み） ---- */
  .contact_form {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 14px clamp(20px, 3vw, 36px);
    padding: clamp(28px, 3.4vw, 48px);
  }
  .contact_form .form_label {
    margin-bottom: -6px;
  }
  .form_label_textarea {
    -ms-flex-item-align: start;
        align-self: flex-start;
    padding-top: 0;
  }
  /* ---- NEWS LIST：3カラム→2行構造に ---- */
  .news_list_full article {
    -ms-grid-columns: 130px 24px 1fr;
    grid-template-columns: 130px 1fr;
    gap: 12px 24px;
    padding: 22px 4px;
  }
  .news_list_full .news_item_cats {
    grid-column: 1/-1;
    -ms-grid-row: 2;
    grid-row: 2;
  }
  .news_list_full .news_item_title {
    grid-column: 1/-1;
    -ms-grid-row: 3;
    grid-row: 3;
    font-size: 15px;
  }
  /* ---- NEWS DETAIL ---- */
  .news_detail_title {
    font-size: clamp(24px, 4vw, 40px);
  }
  /* ---- news pager 3カラム→縦積み気味 ---- */
  .news_pager {
    gap: 16px;
    font-size: 12px;
  }
  /* ---- Clients：900px 以下で 4 列に・全幅 ---- */
  .client_list {
    -ms-grid-columns: (1fr)[4];
    grid-template-columns: repeat(4, 1fr);
    width: 100%;
  }
} /* /@media 900 */
/* =========================================================
   メディアクエリ：スマートフォン／640px 以下
   ========================================================= */
@media (max-width: 640px) {
  /* ---- ページヒーロー ---- */
  .page_hero {
    padding: 96px 20px 40px;
    margin: 0 auto;
  }
  .page_hero_meta {
    gap: 12px;
    margin-bottom: 14px;
  }
  .page_hero_meta .section_label_sub {
    font-size: 11px;
    letter-spacing: 0.16em;
  }
  .page_hero_title {
    margin: 0 0 22px;
  }
  .page_hero_lead {
    font-size: 13.5px;
    line-height: 1.9;
    letter-spacing: 0.02em;
  }
  /* ---- 下層セクション ---- */
  .lower_section {
    padding: 56px 20px;
  }
  .lower_heading {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    padding-top: 32px;
    margin-bottom: 28px;
  }
  .lower_heading .section_index {
    font-size: 11px;
  }
  .lower_heading h2 {
    font-size: clamp(30px, 9vw, 48px);
    width: 100%;
  }
  h2 span.ja {
    font-size: 14px;
    margin-top: 4px;
  }
  /* =========================================================
     ABOUT
     ========================================================= */
  .about_concept {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .about_concept_lead {
    font-size: clamp(24px, 7vw, 32px);
    line-height: 1.18;
  }
  .about_concept_body p {
    font-size: 13.5px;
    line-height: 1.95;
    margin-bottom: 18px;
  }
  /* ---- 会社概要テーブル：縦積みカード化 ---- */
  .company_table,
  .company_table tbody,
  .company_table tr,
  .company_table th,
  .company_table td {
    display: block;
    width: 100%;
  }
  .company_table tr {
    padding: 16px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.15);
  }
  .company_table tr:first-child {
    border-top: 1px solid rgba(0, 0, 0, 0.15);
  }
  .company_table tr:first-child th,
  .company_table tr:first-child td {
    border-top: 0;
  }
  .company_table th,
  .company_table td {
    padding: 0;
    border-bottom: 0;
    font-size: 13.5px;
    line-height: 1.75;
  }
  .company_table th {
    width: auto;
    padding: 0 0 6px;
    font-size: 11px;
    letter-spacing: 0.12em;
    opacity: 0.75;
  }
  .company_table th .ja {
    display: inline-block;
    margin: 0 0 0 6px;
    font-size: 11px;
    opacity: 1;
  }
  /* ---- メンバー：1カラム ---- */
  .member_grid {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 18px;
    margin-top: 28px;
  }
  .member_thumb {
    aspect-ratio: 4/3;
    padding: 18px;
  }
  .member_info {
    padding: 18px 18px 22px;
  }
  .member_name_en {
    font-size: 20px;
  }
  /* ---- Clients（取引先ロゴ）：スマホは 2 列固定・全幅・余白なし ---- */
  .client_list {
    -ms-grid-columns: (1fr)[2];
    grid-template-columns: repeat(2, 1fr);
    width: 100%;
  }
  .client_list li {
    padding: 0;
  }
  /* ---- Project & Service：縦積み（画像→本文） ---- */
  .ps_item {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 28px 0;
  }
  .ps_item_thumb {
    aspect-ratio: 16/10;
  }
  .ps_item_body {
    gap: 12px;
  }
  .ps_item_title {
    font-size: clamp(22px, 6vw, 30px);
  }
  .ps_item_sub {
    display: block;
    margin-left: 0;
    margin-top: 4px;
    font-size: 12px;
  }
  .ps_item_desc {
    font-size: 13.5px;
    line-height: 1.95;
  }
  .ps_item_link {
    font-size: 12.5px;
  }
  /* =========================================================
     SERVICE 詳細
     ========================================================= */
  .service_anchor {
    gap: 14px 22px;
    padding: 18px 0;
    margin-bottom: 36px;
  }
  .service_anchor a {
    font-size: 12.5px;
    letter-spacing: 0.08em;
  }
  .service_detail {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 22px;
    padding: 44px 0;
  }
  .service_detail_left h3 {
    font-size: clamp(28px, 8vw, 40px);
    line-height: 1.05;
  }
  .service_detail_left .ja {
    font-size: 12.5px;
    margin-bottom: 22px;
  }
  .service_visual {
    aspect-ratio: 4/3;
  }
  .service_visual_label {
    top: 16px;
    left: 16px;
    font-size: 10px;
  }
  .service_visual_num {
    font-size: clamp(96px, 30vw, 160px);
  }
  .service_detail_right p {
    font-size: 13.5px;
    line-height: 1.95;
    margin-bottom: 22px;
  }
  .feature_list {
    margin-bottom: 24px;
  }
  .feature_list li {
    font-size: 13px;
    padding: 12px 0 12px 22px;
  }
  .feature_list li::before {
    top: 20px;
    width: 12px;
  }
  /* =========================================================
     RECRUIT
     ========================================================= */
  .recruit_message {
    font-size: clamp(28px, 9vw, 44px);
    line-height: 1.12;
    margin-bottom: 22px;
  }
  .recruit_message_ja {
    font-size: 13.5px;
    line-height: 1.95;
    margin-bottom: 36px;
  }
  /* ---- positions 2カラム→1カラム ---- */
  .position_grid {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 14px;
    margin-bottom: 48px;
  }
  .position_card {
    padding: 24px;
    gap: 16px;
  }
  .position_card_title {
    font-size: clamp(20px, 5.6vw, 26px);
  }
  .position_card_title .ja {
    font-size: 12px;
  }
  .position_card_desc {
    font-size: 12.5px;
    line-height: 1.85;
  }
  .position_card_tag {
    font-size: 9.5px;
    padding: 5px 10px;
  }
  /* ---- 募集要項テーブル：縦積みカード化 ---- */
  .recruit_table,
  .recruit_table tbody,
  .recruit_table tr,
  .recruit_table th,
  .recruit_table td {
    display: block;
    width: 100%;
  }
  .recruit_table tr {
    padding: 16px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.18);
  }
  .lower_section:not(.is_dark) .recruit_table tr {
    border-bottom-color: rgba(0, 0, 0, 0.15);
  }
  .recruit_table th,
  .recruit_table td {
    padding: 0;
    border-bottom: 0;
    font-size: 13.5px;
    line-height: 1.85;
  }
  .recruit_table th {
    width: auto;
    padding: 0 0 6px;
    font-size: 11px;
    letter-spacing: 0.12em;
    opacity: 0.75;
  }
  .recruit_apply_wrap {
    margin-top: 36px;
  }
  .btn.btn_apply {
    min-width: 180px;
    height: 50px;
    padding: 0 24px;
    font-size: 12px;
  }
  /* =========================================================
     CONTACT
     ========================================================= */
  .contact_lead {
    font-size: clamp(22px, 6.4vw, 30px);
    margin-bottom: 16px;
  }
  .contact_lead_ja {
    font-size: 13.5px;
    line-height: 1.9;
    margin-bottom: 30px;
  }
  .contact_intro {
    margin-bottom: 28px;
  }
  .contact_form {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 12px 0;
    padding: 24px 18px 32px;
    border-radius: 6px;
  }
  .contact_form .form_label {
    font-size: 11.5px;
    letter-spacing: 0.08em;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
    margin-bottom: 0;
  }
  .contact_form .form_label .ja {
    font-size: 11.5px;
  }
  .contact_form .form_label .req {
    font-size: 9.5px;
    padding: 2px 7px;
  }
  /* iOS の自動拡大を防ぐため 16px 固定 */
  .contact_form input[type=text],
  .contact_form input[type=email],
  .contact_form input[type=tel],
  .contact_form select,
  .contact_form textarea {
    font-size: 16px;
    padding: 12px 14px;
  }
  .contact_form textarea {
    min-height: 160px;
  }
  .contact_form .form_hint {
    font-size: 11.5px;
  }
  .contact_form_submit {
    padding-top: 18px;
    gap: 14px;
  }
  .contact_form_submit .privacy_note {
    font-size: 11.5px;
    line-height: 1.7;
  }
  /* ---- CONTACT：エラー表示（スマホ調整） ---- */
  .block.has-error {
    padding: 13px 14px 13px 16px;
    font-size: 12.5px;
    line-height: 1.7;
    margin-bottom: 20px;
    border-radius: 5px;
  }
  .block.has-error .list-dflt li {
    padding-left: 18px;
  }
  .contact_form p.error {
    font-size: 12px;
    margin-top: 6px;
  }
  /* ---- CONTACT 確認画面：「入力画面に戻る」ボタンのサイズ（スマホ） ---- */
  ._jsBtnBack.btn_send {
    min-width: 220px;
    height: 54px;
    font-size: 12.5px;
    padding: 0 24px;
    gap: 16px;
  }
  .btn_send {
    min-width: 220px;
    height: 54px;
    font-size: 12.5px;
    padding: 0 24px;
    gap: 16px;
  }
  /* =========================================================
     NEWS LIST
     ========================================================= */
  .news_filter {
    gap: 8px;
    margin-bottom: 28px;
  }
  .news_filter a {
    font-size: 11px;
    padding: 8px 14px;
    letter-spacing: 0.1em;
  }
  .news_list_full article {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 18px 4px;
  }
  .news_list_full .news_item_date_day {
    font-size: 28px;
  }
  .news_list_full .news_item_date_ym {
    font-size: 11px;
  }
  .news_list_full .news_item_cats {
    grid-column: auto;
    grid-row: auto;
    margin-top: 4px;
  }
  .news_list_full .news_item_title {
    grid-column: auto;
    grid-row: auto;
    font-size: 14px;
    line-height: 1.55;
    margin-top: 6px;
  }
  /* ページネーション */
  .pagination {
    gap: 6px;
    margin-top: 40px;
    font-size: 13px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .pagination a,
  .pagination span {
    width: 36px;
    height: 36px;
  }
  .pagination .pg_ar {
    width: auto;
    padding: 0 16px;
    height: 36px;
    font-size: 11.5px;
  }
  /* =========================================================
     NEWS DETAIL
     ========================================================= */
  .news_detail_meta {
    gap: 12px;
    margin-bottom: 18px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .news_detail_meta time {
    font-size: 12px;
  }
  .news_detail_title {
    font-size: clamp(22px, 6.4vw, 32px);
    line-height: 1.45;
    margin-bottom: 28px;
  }
  .news_detail_eyecatch {
    aspect-ratio: 16/9;
    margin-bottom: 28px;
  }
  .news_detail_body p {
    font-size: 14px;
    line-height: 1.95;
    margin-bottom: 1.4em;
  }
  .news_detail_body h2,
  .news_detail_body h3 {
    font-size: 18px;
    margin: 1.8em 0 0.6em;
    padding-left: 12px;
  }
  .news_detail_body h2 .ja,
  .news_detail_body h3 .ja {
    font-size: 14px;
  }
  .news_detail_body ul li {
    font-size: 13.5px;
    padding: 6px 0 6px 20px;
  }
  .news_pager {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 12px;
    margin-top: 40px;
    padding-top: 28px;
    text-align: center;
    font-size: 12px;
  }
  .news_pager_prev,
  .news_pager_next {
    text-align: center;
  }
  /* =========================================================
     PRIVACY
     ========================================================= */
  .privacy_lead {
    font-size: 13.5px;
    line-height: 1.9;
    margin-bottom: 36px;
    padding-bottom: 24px;
  }
  .privacy_section_title {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 14px;
    font-size: 17px;
    margin: 36px 0 14px;
    padding-top: 22px;
  }
  .privacy_section_title .num {
    font-size: 11px;
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
  }
  .privacy_sub_title {
    font-size: 14px;
    margin: 24px 0 10px;
    padding-left: 10px;
    border-left-width: 2px;
  }
  .privacy_body p {
    font-size: 13.5px;
    line-height: 1.9;
  }
  .privacy_disc li {
    font-size: 13px;
    line-height: 1.8;
  }
  .privacy_contact_box {
    padding: 24px 18px;
  }
  .privacy_contact_address {
    font-size: 13px;
  }
  .privacy_contact_mail {
    font-size: 13.5px;
  }
  .privacy_contact_mail a {
    font-size: 14.5px;
    word-break: break-all;
  }
  .privacy_revision {
    font-size: 11px;
    margin-top: 40px;
  }
} /* /@media 640 */