/* ==========================================================================
   Service Detail Page - detail2.css
   サービス詳細4ページ（movie / characterdesign / ip-development / ip-collab）の
   ヒーロー・クライアントロゴ帯より下の本文。クラス接頭辞は sd2-（旧 sd- と衝突させない）。
   出力は parts/service/service-detail-body.php。
   文字の値は docs/typography.md に従う（Jost / Zen Kaku Gothic New、400/500/700、px、字間は要素ごとに明示、SP は最小 11px）。
   ブレークポイント: 1025px〜 PC / 768〜1024px タブレット（PC の文字・縦積みレイアウト）/ 〜767px SP
   ========================================================================== */

.sd2 {
  display: flex;
  flex-direction: column;
  gap: 130px;
  padding: 100px 28px 140px;
  background: #F7F7F7;
  color: #0f0f0f;
  font-family: 'Zen Kaku Gothic New', 'Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', Meiryo, sans-serif;
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: .04em;
  line-break: strict;
  overflow-x: clip;
}
.sd2 *,
.sd2 *::before,
.sd2 *::after { box-sizing: border-box; }
.sd2 :where(h2, h3, p, ol) { margin: 0; padding: 0; }
.sd2 :where(ol) { list-style: none; }
.sd2 a,
.sd2 a:hover { color: #0f0f0f; }
/* 折り返し: 見出し・summary・タイトルは文節で、本文は孤立行を避ける */
.sd2 h2,
.sd2 h3,
.sd2 summary,
.sd2 .t { word-break: auto-phrase; text-wrap: balance; }
.sd2 p {
  word-break: normal; /* 本文は文節ではなく通常の折り返し（見出し側だけ auto-phrase） */
  text-wrap: pretty;
}
.sd2 svg { letter-spacing: 0; }

/* --------------------------------------------------------------------------
   セクション見出し（nokid_sechead の .nk-SecHead を、この本文の寸法にそろえる）
   -------------------------------------------------------------------------- */
.sd2 .nk-SecHead {
  flex-wrap: nowrap;
  gap: 24px;
  margin-bottom: 40px;
}
.sd2 .nk-SecHead h2 { min-width: 0; }
.sd2 .nk-SecHead h2 small {
  line-height: 1.6;
  letter-spacing: .08em;
}

/* --------------------------------------------------------------------------
   部品: 画像・チップ・タグ・数字
   -------------------------------------------------------------------------- */
.sd2-Im {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: 8px;
}
.sd2-Chip {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 4px;
  background: #0f0f0f;
  color: #fff;
  font-family: 'Jost', 'Zen Kaku Gothic New', sans-serif;
  font-weight: 700;
  font-size: 11px;
  line-height: 1.45;
  letter-spacing: .05em;
}
.sd2-Tag {
  display: inline-block;
  padding: 4px 10px;
  border: 1px solid #0f0f0f;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .05em;
}
.sd2-Tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.sd2-Num {
  font-family: 'Jost', 'Zen Kaku Gothic New', sans-serif;
  font-weight: 700;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.sd2-Eyebrow {
  font-family: 'Jost', 'Zen Kaku Gothic New', sans-serif;
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .2em;
}
.sd2-Svg {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 8px;
  background: #fff;
}

/* --------------------------------------------------------------------------
   カード（WORKS / CASE STUDY / LAB）
   -------------------------------------------------------------------------- */
.sd2-Cards {
  display: grid;
  gap: 32px 24px;
}
.sd2-Cards--c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sd2-Cards--c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.sd2-Cards--c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sd2-Cards--c1 { grid-template-columns: minmax(0, 1fr); }
.sd2-Card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-decoration: none;
}
.sd2-Card:focus-visible { outline: 2px solid #0f0f0f; outline-offset: 4px; }
.sd2-Thumb {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: 8px;
  background: #e0e0e0;
}
.sd2-Thumb img,
.sd2-Thumb video,
.sd2-Thumb iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  object-fit: cover;
}
/* ACF の動画（archive-works.php と同じ .video 構造。YouTube は common.js が iframe に差し替える） */
.sd2-Thumb .video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background: #e0e0e0;
}
@media (prefers-reduced-motion: no-preference) {
  .sd2-Thumb img,
  .sd2-Thumb video { transition: transform .6s ease; }
}
@media (hover: hover) and (pointer: fine) {
  .sd2-Card:hover .sd2-Thumb img,
  .sd2-Card:hover .sd2-Thumb video { transform: scale(1.05); }
}
.sd2-Card_Meta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
}
.sd2-Card_Client {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .04em;
}
.sd2-Card_Title {
  font-size: 16px;
  font-weight: 700;
  line-height: 1.7;
  letter-spacing: .04em;
}
.sd2-Card_Row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}
.sd2-Date {
  font-family: 'Jost', 'Zen Kaku Gothic New', sans-serif;
  font-weight: 700;
  font-size: 13px;
  line-height: 1;
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
}
/* LAB: PC は3列 */
.sd2-Lab {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 32px 24px;
}

/* --------------------------------------------------------------------------
   STRENGTHS
   -------------------------------------------------------------------------- */
.sd2-StrList {
  display: flex;
  flex-direction: column;
  gap: 80px;
}
.sd2-Str {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 56px;
  align-items: center;
}
.sd2-Str_Vis,
.sd2-Str_Txt { min-width: 0; }
.sd2-Str_Txt {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.sd2-Str_Txt .sd2-Num {
  font-size: 16px;
  letter-spacing: .1em;
}
.sd2-Str_Title {
  font-size: 20px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .03em;
}
.sd2-Str_Body {
  font-size: 15px;
  line-height: 1.9;
  letter-spacing: .04em;
}

/* 表現手法の3つの型（movie 02） */
.sd2-Types {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.sd2-Types_Item {
  padding: 16px;
  border-radius: 8px;
  background: #fff;
}
.sd2-Types_Name {
  display: block;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .03em;
}
.sd2-Types_Desc {
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.8;
  letter-spacing: .03em;
}

/* ショート動画で見てもらうための3つの技術（ip-development 03） */
.sd2-Tech {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.sd2-Tech_Item {
  padding: 16px;
  border-radius: 8px;
  background: #fff;
}
.sd2-Tech_En {
  display: block;
  font-family: 'Jost', 'Zen Kaku Gothic New', sans-serif;
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .1em;
}
.sd2-Tech_Txt {
  margin-top: 6px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: .03em;
}

/* ショートアニメの立ち位置マップ（movie 02）。PC は軸つきのグリッド、SP は3段の帯 */
.sd2-Map {
  width: 100%;
  padding: 24px 24px 20px;
  border-radius: 8px;
  background: #fff;
}
/* 強み02の図は、01・03の画像（16:9）と同じ大きさにそろえる（SP の縦並び版は除く） */
@media (min-width: 601px) {
  .sd2-Map {
    aspect-ratio: 16 / 9;
    display: flex;
    flex-direction: column;
    padding: 28px 32px 22px;
  }
  /* 中の図も枠いっぱいに広げる（上2段を等分、下に軸ラベル） */
  .sd2-Map_Pc { flex: 1; display: flex; flex-direction: column; }
  .sd2-Map_Grid {
    flex: 1;
    grid-template-columns: 22px 1fr 1.5fr 1fr;
    grid-template-rows: 1fr 1fr 0 auto;
    gap: 14px 16px;
  }
  .sd2-Map_Off { min-height: 0; font-size: 14px; }
  .sd2-Map_Off--mv { align-self: stretch; }
  .sd2-Map_Main { min-height: 0; gap: 10px; }
  .sd2-Map_Main .sd2-Map_En { font-size: 24px; }
  .sd2-Map_Main .sd2-Map_Sub { font-size: 13px; }
  .sd2-Map_Axis span,
  .sd2-Map_Lbl { font-size: 12px; }
}
.sd2-Map_Sp { display: none; }
.sd2-Map_Grid {
  display: grid;
  grid-template-columns: 18px 1fr 1.5fr 1fr;
  grid-template-rows: auto auto auto;
  gap: 12px;
}
.sd2-Map_Axis {
  grid-column: 1;
  grid-row: 1 / 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  padding: 2px 0;
}
.sd2-Map_Axis span {
  font-size: 11px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
  letter-spacing: .04em;
  writing-mode: vertical-rl;
}
.sd2-Map_Axis i {
  flex: 1;
  width: 2px;
  margin: 6px 0;
  background: #0f0f0f;
}
.sd2-Map_Off,
.sd2-Map_Row {
  border: 1.5px dashed #9a9a9a;
  border-radius: 8px;
  background: #F7F7F7;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: .04em;
}
.sd2-Map_Off {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 110px;
  padding: 12px 8px;
  text-align: center;
}
.sd2-Map_Off--full { grid-column: 4; grid-row: 1; }
.sd2-Map_Off--mv { grid-column: 2; grid-row: 2; align-self: end; }
.sd2-Map_Main {
  grid-column: 3;
  grid-row: 1 / 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 150px;
  padding: 22px 14px;
  border: 2px solid #0f0f0f;
  border-radius: 8px;
  text-align: center;
}
.sd2-Map_En {
  font-family: 'Jost', 'Zen Kaku Gothic New', sans-serif;
  font-weight: 700;
  font-size: 16px;
  line-height: 1;
  letter-spacing: .06em;
}
.sd2-Map_Sub {
  font-size: 11px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .04em;
}
.sd2-Map_Lbl {
  grid-row: 4;
  position: relative;
  z-index: 1;
  justify-self: center;
  padding: 0 12px;
  background: #fff;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .04em;
  text-align: center;
  white-space: nowrap;
}
.sd2-Map_Lbl--1 { grid-column: 2; }
.sd2-Map_Lbl--2 { grid-column: 3; }
.sd2-Map_Lbl--3 { grid-column: 4; }
.sd2-Map_Line {
  grid-column: 2 / 5;
  grid-row: 4;
  align-self: center;
  height: 2px;
  background: #0f0f0f;
}

/* --------------------------------------------------------------------------
   GROWTH（ip-development）
   -------------------------------------------------------------------------- */
.sd2-Growth {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
}
.sd2-Growth_Item {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sd2-Growth_Title {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .03em;
}
.sd2-Growth_Body {
  font-size: 14px;
  line-height: 1.75;
  letter-spacing: .03em;
}

/* --------------------------------------------------------------------------
   黒い CONTACT 帯
   -------------------------------------------------------------------------- */
.sd2-Contact {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  padding: 48px;
  border-radius: 12px;
  background: #0f0f0f;
  color: #fff;
}
.sd2-Contact_Txt {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sd2-Contact_Lead {
  font-size: 26px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .04em;
}
.sd2-Contact_Sub {
  font-size: 14px;
  line-height: 1.8;
  letter-spacing: .03em;
}
.sd2-Contact_Btns {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
/* 黒地用の nk-Btn。白地の主ボタンと、白線の副ボタン */
.nk-Btn.sd2-Btn {
  justify-content: space-between;
  min-width: 280px;
  padding: 0 24px;
  border-color: #fff;
}
.nk-Btn.sd2-Btn--solid {
  background: #fff;
  color: #0f0f0f;
}
.nk-Btn.sd2-Btn--line {
  background: transparent;
  color: #fff;
}
.nk-Btn.sd2-Btn:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
@media (hover: hover) and (pointer: fine) {
  .nk-Btn.sd2-Btn--solid:hover { background: transparent; color: #fff; }
  .nk-Btn.sd2-Btn--line:hover { background: #fff; color: #0f0f0f; }
}

/* --------------------------------------------------------------------------
   FLOW
   -------------------------------------------------------------------------- */
.sd2-Flow {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 36px 28px;
}
.sd2-Flow--n4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sd2-Flow--n5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.sd2-Flow_Item {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sd2-Flow_Step {
  font-size: 13px;
  letter-spacing: .08em;
}
.sd2-Flow_Title {
  font-size: 17px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .03em;
}
.sd2-Flow_Desc {
  font-size: 14px;
  line-height: 1.75;
  letter-spacing: .03em;
}
/* ステップ間の「>」（PC のみ。折り返すタブレット以下では出さない） */
@media screen and (min-width: 1025px) {
  .sd2-Flow_Item:not(:last-child)::after {
    content: ">";
    content: ">" / "";
    position: absolute;
    top: -2px;
    right: -28px;
    width: 28px;
    text-align: center;
    font-family: 'Jost', sans-serif;
    font-weight: 700;
    font-size: 18px;
    line-height: 1;
    letter-spacing: 0;
  }
}
.sd2-Note {
  font-size: 13px;
  line-height: 1.8;
  letter-spacing: .03em;
  text-align: center;
}
.sd2-Note--flow { margin-top: 32px; }
.sd2-Note--price { margin-top: 24px; }

/* --------------------------------------------------------------------------
   PRICE
   -------------------------------------------------------------------------- */
.sd2-Price {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
}
.sd2-Price_Item {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 26px;
  border-radius: 8px;
  background: #fff;
}
.sd2-Price_Head,
.sd2-Price_Foot {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sd2-Price_Foot { margin-top: auto; }
.sd2-Price_Head .sd2-Eyebrow { font-size: 11px; }
.sd2-Price_Name {
  font-size: 15px;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: .03em;
}
.sd2-Price_Scope {
  font-size: 12px;
  line-height: 1.7;
  letter-spacing: .03em;
}
.sd2-Price_Label,
.sd2-Price_Dur {
  font-size: 12px;
  line-height: 1.6;
  letter-spacing: .03em;
}
.sd2-Price_Dur { margin-top: 4px; }
.sd2-Price_Amount {
  font-family: 'Jost', 'Zen Kaku Gothic New', sans-serif;
  font-weight: 700;
  font-size: 22px;
  line-height: 1.2;
  letter-spacing: .02em;
  font-variant-numeric: tabular-nums;
}
.sd2-Price--lg .sd2-Price_Amount { font-size: 24px; }

/* --------------------------------------------------------------------------
   FAQ
   -------------------------------------------------------------------------- */
.sd2-Faq { border-top: 1px solid #cfcfcf; }
.sd2-Faq_Item { border-bottom: 1px solid #cfcfcf; }
.sd2-Faq_Q {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 0;
  list-style: none;
  cursor: pointer;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.7;
  letter-spacing: .04em;
}
.sd2-Faq_Q::-webkit-details-marker { display: none; }
.sd2-Faq_Q::after {
  content: '+';
  flex: none;
  font-family: 'Jost', sans-serif;
  font-size: 22px;
  line-height: 1.2;
}
.sd2-Faq_Item[open] .sd2-Faq_Q::after { content: '−'; }
.sd2-Faq_Q:focus-visible { outline: 2px solid #0f0f0f; outline-offset: 2px; }
.sd2-Faq_A {
  margin: 0 0 24px;
  font-size: 15px;
  line-height: 1.9;
  letter-spacing: .04em;
}

/* --------------------------------------------------------------------------
   タブレット（〜1024px）: 強みの2カラムを縦積みに。折り返すカードは2列
   -------------------------------------------------------------------------- */
@media screen and (max-width: 1024px) {
  .sd2 {
    gap: 110px;
    padding: 80px 28px 110px;
  }
  .sd2-StrList { gap: 64px; }
  .sd2-Str {
    grid-template-columns: minmax(0, 1fr);
    gap: 28px;
    align-items: stretch;
  }
  .sd2-Str--flip .sd2-Str_Vis { order: -1; }
  .sd2-Cards--c4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sd2-Flow,
  .sd2-Flow--n4,
  .sd2-Flow--n5 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
}
/* 768〜1024px は強みの1行を読みやすい幅に収める */
@media screen and (min-width: 768px) and (max-width: 1024px) {
  .sd2-Str {
    width: 100%;
    max-width: 760px;
    margin-inline: auto;
  }
}

/* --------------------------------------------------------------------------
   SP（〜767px）
   -------------------------------------------------------------------------- */
@media screen and (max-width: 767px) {
  .sd2 {
    gap: 88px;
    padding: 64px 20px 96px;
  }
  .sd2 h2,
  .sd2 h3,
  .sd2 summary,
  .sd2 .t { text-wrap: pretty; }
  .sd2 .nk-SecHead {
    gap: 12px;
    margin-bottom: 28px;
  }
  .sd2 .nk-SecHead h2 small { letter-spacing: .06em; }

  .sd2-Chip { font-size: 11px; padding: 3px 7px; }
  .sd2-Tag { padding: 3px 8px; letter-spacing: .04em; }
  .sd2-Tags { gap: 6px; }
  .sd2-Eyebrow { font-size: 11px; }

  /* WORKS / CASE STUDY: 全ページ縦積み */
  .sd2-Cards,
  .sd2-Cards--c4,
  .sd2-Cards--c3,
  .sd2-Cards--c2 {
    display: flex;
    flex-direction: column;
    gap: 28px;
  }
  .sd2-Card { gap: 8px; }
  .sd2-Card_Meta { gap: 8px; }
  .sd2-Card_Client { font-size: 12px; }
  .sd2-Card_Title { font-size: 14px; line-height: 1.65; letter-spacing: .03em; }
  /* CASE STUDY は白いカードに、チップと取引先を横に並べる */
  .sd2-Cards--case { gap: 16px; }
  .sd2-Cards--case .sd2-Card {
    gap: 0;
    overflow: hidden;
    border-radius: 12px;
    background: #fff;
  }
  .sd2-Cards--case .sd2-Thumb { border-radius: 0; }
  .sd2-Cards--case .sd2-Card_Meta {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    padding: 18px 18px 0;
  }
  .sd2-Cards--case .sd2-Card_Client { font-size: 12px; }
  .sd2-Cards--case .sd2-Card_Title {
    padding: 10px 18px 20px;
    font-size: 16px;
    line-height: 1.6;
  }

  /* LAB: 横スクロール（78%幅・scroll-snap） */
  .sd2-Lab {
    display: flex;
    gap: 14px;
    margin: 0 -20px;
    padding: 0 20px 8px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-left: 20px;
    scrollbar-width: none;
  }
  .sd2-Lab::-webkit-scrollbar { display: none; }
  .sd2-Card--lab {
    flex: 0 0 78%;
    scroll-snap-align: start;
  }
  .sd2-Card--lab .sd2-Card_Title { font-size: 14px; text-wrap: balance; }
  .sd2-Date { font-size: 12px; }

  /* STRENGTHS */
  .sd2-StrList { gap: 56px; }
  .sd2-Str { gap: 14px; }
  .sd2-Str_Txt { gap: 14px; }
  .sd2-Str_Txt .sd2-Num { font-size: 14px; }
  .sd2-Str_Title { font-size: 18px; }
  .sd2-Types {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .sd2-Types_Item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
  }
  .sd2-Types_Name { white-space: nowrap; }
  .sd2-Types_Desc {
    margin-top: 0;
    line-height: 1.6;
    text-align: right;
  }
  .sd2-Tech {
    display: flex;
    flex-direction: column;
    gap: 0;
    border-top: 2px solid #0f0f0f;
  }
  .sd2-Tech_Item {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid #cfcfcf;
    border-radius: 0;
    background: transparent;
  }
  .sd2-Tech_Item:last-child { border-bottom: 0; }
  .sd2-Tech_En { font-size: 11px; }
  .sd2-Tech_Txt { margin-top: 0; }

  /* マップ: 3段の帯 */
  .sd2-Map { padding: 18px 16px; }
  .sd2-Map_Pc { display: none; }
  .sd2-Map_Sp {
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .sd2-Map_Row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 14px;
    text-align: left;
  }
  .sd2-Map_RowSub { font-size: 11px; }
  .sd2-Map_Row:last-child .sd2-Map_RowSub { white-space: nowrap; }
  .sd2-Map_Sp .sd2-Map_Main {
    min-height: 0;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 4px;
    padding: 12px;
    text-align: left;
  }
  .sd2-Map_Sp .sd2-Map_En { font-size: 20px; }

  /* GROWTH */
  .sd2-Growth {
    display: flex;
    flex-direction: column;
    gap: 32px;
  }
  .sd2-Growth_Item { gap: 10px; }
  .sd2-Growth_Title { font-size: 17px; }

  /* CONTACT 帯 */
  .sd2-Contact {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 22px;
    padding: 32px 20px;
  }
  .sd2-Contact_Lead { font-size: 20px; line-height: 1.55; }
  .sd2-Contact_Sub { font-size: 13px; }
  .sd2-Contact_Btns { flex-direction: column; gap: 10px; }
  .nk-Btn.sd2-Btn {
    width: 100%;
    min-width: 0;
    min-height: 56px;
    padding: 0 20px;
    letter-spacing: .06em;
  }

  /* FLOW: 縦のタイムライン
     線はリストの左の枠線ではなく、各ステップの点の中心から次の点の中心までを ::after で引く
     （枠線だと最初の点の上・最後の点の下に線がはみ出すため） */
  .sd2-Flow,
  .sd2-Flow--n4,
  .sd2-Flow--n5 {
    display: block;
    margin-left: 8px;
  }
  .sd2-Flow_Item {
    gap: 8px;
    padding: 0 0 28px 22px;
  }
  .sd2-Flow_Item:last-child { padding-bottom: 0; }
  .sd2-Flow_Item::before {
    content: '';
    position: absolute;
    z-index: 1;
    top: 2px;
    left: -8px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #0f0f0f;
  }
  .sd2-Flow_Item:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 9px; /* 点の中心（2px + 14px / 2） */
    bottom: -9px; /* 次のステップの点の中心まで */
    left: -2px;
    width: 2px;
    background: #0f0f0f;
  }
  .sd2-Flow_Step { font-size: 12px; }
  .sd2-Flow_Title { font-size: 16px; }
  .sd2-Note { font-size: 12px; text-align: left; }
  .sd2-Note--flow { margin-top: 28px; }
  .sd2-Note--price { margin-top: 20px; }

  /* PRICE */
  .sd2-Price {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  .sd2-Price_Item {
    gap: 10px;
    padding: 22px 20px;
  }
  .sd2-Price_Head,
  .sd2-Price_Foot { gap: 5px; }
  .sd2-Price_Dur { margin-top: 1px; }

  /* FAQ */
  .sd2-Faq_Q {
    gap: 12px;
    padding: 18px 0;
    font-size: 15px;
    line-height: 1.6;
  }
  .sd2-Faq_Q::after { font-size: 20px; }
  .sd2-Faq_A {
    margin-bottom: 20px;
    font-size: 14px;
  }
}

/* --------------------------------------------------------------------------
   図の SVG（GROWTH・ip-collab のベン図）：PC 用と SP 用を出し分ける
   SP（600px 以下）は図の幅が約 350px（390px 幅の画面）で、PC 用のままだと文字が 7〜9px になる。
   SP 用は余白を切った viewBox／大きめの字で描き、390px 幅で最小 約 12px にしている。
   -------------------------------------------------------------------------- */
.sd2-Svg--sp { display: none; }
@media screen and (max-width: 600px) {
  .sd2-Svg--pc { display: none; }
  .sd2-Svg--sp { display: block; }
}
