@charset "utf-8";

/* ==========================================================================
   CRAFTRUST コーポレートサイト メインCSS

   デザイン方針：「よく組まれた提案書」
   ・見出し＝Zen Kaku Gothic New（人の言葉）／数字・ラベル＝等幅（データ）の対比を軸にする
   ・オレンジは「公開後も続くこと」を示す色として使い、装飾には使わない
   ・番号は本当に順序がある工程にだけ振る
   ========================================================================== */

/* ---------- カスタムプロパティ ---------- */
:root {
  /* カラー */
  --color-primary: #1e3050;
  --color-primary-deep: #16233b;
  --color-accent: #d9782e;
  --color-accent-dark: #bd6624;
  --color-bg: #f7f9fb;
  --color-white: #ffffff;
  --color-text: #232a3b;
  --color-text-sub: #6b7686;
  --color-border: #dde3ea;
  --color-border-strong: #b9c2ce;
  --color-surface: #eceff4;
  /* 濃色背景の上で使う文字色 */
  --color-on-primary: #ffffff;
  --color-on-primary-sub: #b6c0d0;
  --color-on-primary-rule: rgba(255, 255, 255, 0.28);

  /* 書体 */
  --font-display: "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  --font-body: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  --font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;

  /* コンテンツ幅管理用の変数 */
  --content-width-sm: 496px;
  --content-width: 672px;
  --content-width-lg: 1024px;

  /* 重なり順 */
  --z-index-back: -1;
  --z-index-default: 1;
  --z-index-header: 100;
  --z-index-menu: 150;
  --z-index-modal: 200;
}

/* ---------- ベース ---------- */
body {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.9;
  color: var(--color-text);
  background-color: var(--color-bg);
  /* 固定ヘッダー分の逃がし */
  padding-top: 72px;
}

body.is-scroll-lock {
  overflow: hidden;
}

*:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
}

/* ---------- レイアウト：コンテナ ---------- */
.l_container-sm,
.l_container,
.l_container-lg {
  width: 100%;
  padding: 0 16px;
  margin: 0 auto;
}

.l_container-sm {
  max-width: calc(var(--content-width-sm) + 32px);
}

.l_container {
  max-width: calc(var(--content-width) + 32px);
}

.l_container-lg {
  max-width: calc(var(--content-width-lg) + 32px);
}

/* ---------- レイアウト：セクション余白 ---------- */
.l_contents {
  padding: 120px 0;
}

@media (max-width: 768px) {
  .l_contents {
    padding: 72px 0;
  }
}

/* ---------- レイアウト：ヘッダー ---------- */
.l_header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--z-index-header);
  width: 100%;
  height: 72px;
  background-color: var(--color-white);
  border-bottom: 1px solid var(--color-border);
}

.l_header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
}

.l_header__logo {
  font-size: 20px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.16em;
  color: var(--color-primary);
}

.l_header__nav {
  display: flex;
  align-items: center;
  gap: 40px;
}

.l_header__list {
  display: flex;
  align-items: center;
  gap: 28px;
}

.l_header__link {
  position: relative;
  display: block;
  padding: 4px 0;
  font-size: 14px;
  font-weight: 500;
  color: var(--color-primary);
}

/* 現在地はアクセント色で示す（オレンジ＝いまここ／この先） */
.l_header__link::after {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 2px;
  content: "";
  background-color: var(--color-accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.25s ease;
}

.l_header__link:hover::after,
.l_header__link.is-current::after {
  transform: scaleX(1);
}

.l_header__hamburger {
  display: none;
}

@media (max-width: 1024px) {
  .l_header__nav {
    gap: 24px;
  }

  .l_header__list {
    gap: 18px;
  }

  .l_header__link {
    font-size: 13px;
  }
}

@media (max-width: 768px) {
  body {
    padding-top: 60px;
  }

  .l_header {
    height: 60px;
  }

  .l_header__nav {
    position: fixed;
    top: 60px;
    right: 0;
    z-index: var(--z-index-menu);
    display: block;
    width: 100%;
    height: calc(100vh - 60px);
    padding: 24px 16px 64px;
    overflow-y: auto;
    background-color: var(--color-white);
    transform: translateX(100%);
    visibility: hidden;
    transition: transform 0.3s ease, visibility 0.3s ease;
  }

  .l_header__nav.is-open {
    transform: translateX(0);
    visibility: visible;
  }

  .l_header__list {
    display: block;
  }

  .l_header__item {
    border-bottom: 1px solid var(--color-border);
  }

  .l_header__link {
    padding: 18px 4px;
    font-size: 16px;
  }

  .l_header__link::after {
    display: none;
  }

  .l_header__link.is-current {
    color: var(--color-accent);
  }

  /* c_button の display:inline-block が後勝ちするため幅で全幅化する */
  .l_header__cta {
    width: 100%;
    margin-top: 32px;
  }

  .l_header__hamburger {
    position: relative;
    display: block;
    width: 32px;
    height: 24px;
    background-color: transparent;
    border: 0;
    cursor: pointer;
  }

  .l_header__hamburger-bar {
    position: absolute;
    left: 0;
    display: block;
    width: 100%;
    height: 1px;
    background-color: var(--color-primary);
    transition: transform 0.3s ease, opacity 0.3s ease;
  }

  .l_header__hamburger-bar:nth-child(1) {
    top: 3px;
  }

  .l_header__hamburger-bar:nth-child(2) {
    top: 11px;
  }

  .l_header__hamburger-bar:nth-child(3) {
    top: 19px;
  }

  .l_header__hamburger.is-active .l_header__hamburger-bar:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
  }

  .l_header__hamburger.is-active .l_header__hamburger-bar:nth-child(2) {
    opacity: 0;
  }

  .l_header__hamburger.is-active .l_header__hamburger-bar:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
  }
}

/* ---------- レイアウト：フッター ---------- */
/* CTAと隣り合っても沈んで見えるよう、フッターは一段濃くする */
.l_footer {
  padding: 72px 0 32px;
  color: var(--color-on-primary);
  background-color: var(--color-primary-deep);
}

.l_footer__top {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 56px;
  padding-bottom: 40px;
  border-bottom: 1px solid var(--color-on-primary-rule);
}

.l_footer__logo {
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.16em;
}

.l_footer__lead {
  max-width: 34em;
  margin-top: 24px;
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.9;
  color: var(--color-on-primary);
}

.l_footer__area {
  margin-top: 20px;
  font-size: 13px;
  line-height: 1.9;
  color: var(--color-on-primary-sub);
}

.l_footer__mail {
  display: inline-block;
  margin-top: 20px;
  font-family: var(--font-mono);
  font-size: 14px;
  letter-spacing: 0.02em;
  border-bottom: 1px solid var(--color-on-primary-rule);
  transition: color 0.25s ease, border-color 0.25s ease;
}

.l_footer__mail:hover {
  color: var(--color-accent);
  border-color: var(--color-accent);
}

.l_footer__list {
  display: grid;
  gap: 14px;
}

.l_footer__link {
  font-size: 14px;
  color: var(--color-on-primary-sub);
  transition: color 0.25s ease;
}

.l_footer__link:hover {
  color: var(--color-accent);
}

.l_footer__copyright {
  display: block;
  margin-top: 28px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--color-on-primary-sub);
}

@media (max-width: 768px) {
  .l_footer {
    padding: 56px 0 28px;
  }

  .l_footer__top {
    grid-template-columns: 1fr;
    gap: 40px;
    padding-bottom: 32px;
  }

  .l_footer__logo {
    font-size: 21px;
  }
}

/* ==========================================================================
   共通コンポーネント
   ========================================================================== */

/* ---------- セクション（左レール＋本文の2段組） ---------- */
.c_section {
  display: grid;
  grid-template-columns: 176px minmax(0, 664px);
  gap: 0 56px;
  padding-top: 32px;
  border-top: 1px solid var(--color-border-strong);
}

.c_section + .c_section {
  margin-top: 112px;
}

.c_section__rail {
  position: sticky;
  top: 112px;
  align-self: start;
}

.c_section__label {
  position: relative;
  padding-top: 40px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: 0.04em;
  color: var(--color-primary);
}

/* レールの短い縦罫。サイト全体を貫く「線」のモチーフを反復させる */
.c_section__label::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 28px;
  content: "";
  background-color: var(--color-primary);
}

.c_section__title {
  font-family: var(--font-display);
  font-size: 30px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.005em;
  color: var(--color-primary);
}

@media (max-width: 900px) {
  .c_section {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .c_section + .c_section {
    margin-top: 72px;
  }

  .c_section__rail {
    position: static;
  }

  .c_section__label {
    padding-top: 28px;
  }

  .c_section__label::before {
    height: 18px;
  }

  .c_section__title {
    font-size: 25px;
  }
}

/* ---------- 文字組み ---------- */
/*
  見出し・リード文の改行を文節単位にする。
  Chrome / Safari のみ対応。非対応ブラウザは従来どおりの折り返しになる
*/
.top_hero__title,
.top_hero__text,
.top_line__sub,
.c_page-head__lead,
.c_section__title,
.c_lead,
.c_points__term,
.c_pricelist__title,
.c_case-list__title,
.c_timeline__title,
.c_quote__text,
.c_empty__title,
.c_empty__text,
.c_cta__title,
.c_cta__text,
.contact_thanks__title,
.l_footer__lead {
  word-break: auto-phrase;
}

/* リード文は見出し書体の中細。本文ゴシックとの差を太さでつける */
.c_lead {
  font-family: var(--font-display);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.95;
  color: var(--color-text);
}

.c_text {
  font-size: 16px;
  line-height: 2;
}

.c_text + .c_text {
  margin-top: 24px;
}

.c_note {
  font-size: 13px;
  line-height: 1.9;
  color: var(--color-text-sub);
}

/* 引用。サイト全体で1回だけ使う想定 */
.c_quote {
  padding-left: 20px;
  border-left: 2px solid var(--color-accent);
}

.c_quote__text {
  font-family: var(--font-display);
  font-size: 21px;
  font-weight: 700;
  line-height: 1.8;
  color: var(--color-primary);
}

@media (max-width: 768px) {
  .c_lead {
    font-size: 17px;
  }

  .c_quote {
    padding-left: 16px;
  }

  .c_quote__text {
    font-size: 18px;
  }
}

/* ---------- ボタン ---------- */
.c_button {
  display: inline-block;
  padding: 16px 32px;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
  border: 1px solid transparent;
  border-radius: 2px;
  cursor: pointer;
  transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.c_button--accent {
  color: var(--color-white);
  background-color: var(--color-accent);
}

.c_button--accent:hover {
  background-color: var(--color-accent-dark);
}

.c_button--outline {
  color: var(--color-primary);
  background-color: transparent;
  border-color: var(--color-border-strong);
}

.c_button--outline:hover {
  border-color: var(--color-primary);
}

.c_button--on-primary {
  color: var(--color-on-primary);
  background-color: transparent;
  border-color: var(--color-on-primary-rule);
}

.c_button--on-primary:hover {
  border-color: var(--color-on-primary);
}

.c_button--small {
  padding: 11px 22px;
  font-size: 13px;
}

.c_button--wide {
  display: block;
  width: 100%;
  max-width: 420px;
  margin: 0 auto;
}

.c_button:disabled {
  cursor: not-allowed;
  opacity: 0.35;
}

/* ---------- テキストリンク（矢印はオレンジ＝この先へ） ---------- */
.c_link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  font-weight: 700;
  color: var(--color-primary);
}

.c_link::after {
  width: 18px;
  height: 1px;
  content: "";
  background-color: var(--color-accent);
  transition: width 0.25s ease;
}

.c_link:hover::after {
  width: 30px;
}

/* ---------- 本文中のインラインリンク ---------- */
.c_inline-link {
  color: var(--color-primary);
  border-bottom: 1px solid var(--color-accent);
  transition: color 0.25s ease;
}

.c_inline-link:hover {
  color: var(--color-accent);
}

/* ---------- 箇条書き ---------- */
.c_points {
  margin-top: 40px;
}

.c_points__item {
  padding: 28px 0;
  border-top: 1px solid var(--color-border);
}

/* アイコンを添える項目だけ2段組にする（アイコンなしの項目は素のまま） */
.c_points__item--icon {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  column-gap: 24px;
}

/* .c_icon が後方定義のため、クラスを連結して詳細度で勝たせる */
.c_icon.c_points__icon {
  grid-row: 1 / span 2;
  grid-column: 1;
  width: 56px;
  height: 56px;
}

.c_points__item--icon .c_points__term,
.c_points__item--icon .c_points__desc {
  grid-column: 2;
}

.c_points__item:last-child {
  padding-bottom: 0;
}

.c_points__term {
  font-family: var(--font-display);
  font-size: 21px;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-primary);
}

.c_points__desc {
  margin-top: 12px;
  font-size: 15px;
  line-height: 2;
  color: var(--color-text-sub);
}

@media (max-width: 768px) {
  .c_points__term {
    font-size: 18px;
  }

  .c_points__item--icon {
    grid-template-columns: 44px minmax(0, 1fr);
    column-gap: 16px;
  }

  .c_icon.c_points__icon {
    width: 44px;
    height: 44px;
  }
}

/* ---------- チェックリスト ---------- */
.c_checklist {
  display: grid;
  gap: 14px;
}

.c_checklist__item {
  position: relative;
  padding-left: 26px;
  font-size: 15px;
  line-height: 1.9;
}

.c_checklist__item::before {
  position: absolute;
  top: 0.62em;
  left: 0;
  width: 11px;
  height: 5px;
  content: "";
  border-bottom: 1px solid var(--color-accent);
  border-left: 1px solid var(--color-accent);
  transform: rotate(-45deg);
}

/* ---------- 料金表（サービス一覧） ---------- */
.c_pricelist {
  margin-top: 40px;
  border-top: 1px solid var(--color-border);
}

.c_pricelist__item {
  padding: 32px 0;
  border-bottom: 1px solid var(--color-border);
}

.c_pricelist__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.c_pricelist__heading {
  display: flex;
  align-items: center;
  gap: 16px;
}

.c_icon.c_pricelist__icon {
  width: 52px;
  height: 52px;
}

.c_pricelist__title {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--color-primary);
}

.c_pricelist__price {
  flex-shrink: 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--color-text-sub);
}

.c_pricelist__num {
  margin-right: 2px;
  font-family: var(--font-mono);
  font-size: 24px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.01em;
  color: var(--color-primary);
}

.c_pricelist__text {
  margin-top: 16px;
  font-size: 15px;
  line-height: 2;
  color: var(--color-text-sub);
}

.c_pricelist__link {
  margin-top: 20px;
}

@media (max-width: 768px) {
  .c_pricelist__head {
    display: block;
  }

  .c_icon.c_pricelist__icon {
    width: 44px;
    height: 44px;
  }

  .c_pricelist__title {
    font-size: 20px;
  }

  .c_pricelist__price {
    margin-top: 8px;
  }

  .c_pricelist__num {
    font-size: 21px;
  }
}

/* ---------- 工程（順序が本当にあるものにだけ番号を振る） ---------- */
.c_timeline {
  margin-top: 40px;
}

.c_timeline__item {
  position: relative;
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  padding-bottom: 40px;
}

.c_timeline__item:last-child {
  padding-bottom: 0;
}

/* 工程をつなぐ縦線 */
.c_timeline__item::before {
  position: absolute;
  top: 16px;
  bottom: -4px;
  left: 5px;
  width: 1px;
  content: "";
  background-color: var(--color-border-strong);
}

.c_timeline__item:last-child::before {
  display: none;
}

/* 「公開」から先はオレンジ。ここで終わらないことを線で示す */
.c_timeline__item--continue::before {
  width: 2px;
  background-color: var(--color-accent);
}

.c_timeline__num {
  position: relative;
  padding-left: 24px;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 500;
  line-height: 1.9;
  letter-spacing: 0.1em;
  color: var(--color-text-sub);
}

.c_timeline__num::before {
  position: absolute;
  top: 0.5em;
  left: 0;
  width: 11px;
  height: 11px;
  content: "";
  background-color: var(--color-bg);
  border: 1px solid var(--color-border-strong);
  border-radius: 50%;
}

.c_timeline__item--after .c_timeline__num {
  color: var(--color-accent);
}

.c_timeline__item--after .c_timeline__num::before {
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

.c_timeline__title {
  font-family: var(--font-display);
  font-size: 19px;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-primary);
}

.c_timeline__text {
  margin-top: 8px;
  font-size: 15px;
  line-height: 2;
  color: var(--color-text-sub);
}

@media (max-width: 768px) {
  .c_timeline__item {
    grid-template-columns: 1fr;
    padding-bottom: 32px;
    padding-left: 24px;
  }

  .c_timeline__item::before {
    left: 5px;
  }

  .c_timeline__num {
    padding-left: 0;
    margin-bottom: 4px;
  }

  .c_timeline__num::before {
    left: -24px;
  }

  .c_timeline__title {
    font-size: 17px;
  }
}

/* ---------- 事例（1件でも6件でも成立する横並びリスト） ---------- */
.c_case-list {
  border-top: 1px solid var(--color-border);
}

.c_case-list__item {
  border-bottom: 1px solid var(--color-border);
}

/* 絞り込みで非表示にしたとき、罫線ごと消す */
.c_case-list__item[hidden] {
  display: none;
}

.c_case-list__link {
  display: grid;
  grid-template-columns: 264px minmax(0, 1fr);
  gap: 32px;
  padding: 28px 0;
  transition: opacity 0.25s ease;
}

.c_case-list__link:hover {
  opacity: 0.65;
}

.c_case-list__meta {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--color-text-sub);
}

.c_case-list__title {
  margin-top: 10px;
  font-family: var(--font-display);
  font-size: 21px;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-primary);
}

.c_case-list__text {
  margin-top: 12px;
  font-size: 14px;
  line-height: 1.9;
  color: var(--color-text-sub);
}

@media (max-width: 768px) {
  .c_case-list__link {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 24px 0;
  }

  .c_case-list__title {
    font-size: 18px;
  }
}

/* ---------- 0件表示 ---------- */
.c_empty {
  padding: 72px 32px;
  text-align: center;
  border: 1px solid var(--color-border-strong);
}

.c_empty__title {
  font-family: var(--font-display);
  font-size: 21px;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-primary);
}

.c_empty__text {
  margin-top: 16px;
  font-size: 15px;
  line-height: 2;
  color: var(--color-text-sub);
}

.c_empty__button {
  margin-top: 32px;
}

@media (max-width: 768px) {
  .c_empty {
    padding: 48px 20px;
  }

  .c_empty__title {
    font-size: 18px;
  }
}

/* ---------- 定義リスト（料金内訳・運営者情報） ---------- */
.c_deflist {
  border-top: 1px solid var(--color-border);
}

.c_deflist__row {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 24px;
  padding: 20px 0;
  border-bottom: 1px solid var(--color-border);
}

.c_deflist__term {
  font-size: 13px;
  font-weight: 700;
  line-height: 1.9;
  color: var(--color-text-sub);
}

.c_deflist__desc {
  font-size: 15px;
  line-height: 1.9;
}

.c_deflist__note {
  display: block;
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.9;
  color: var(--color-text-sub);
}

.c_deflist__num {
  font-family: var(--font-mono);
  font-size: 17px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: var(--color-primary);
}

@media (max-width: 768px) {
  .c_deflist__row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* ---------- タグ ---------- */
.c_tag {
  display: inline-block;
  padding: 5px 14px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.7;
  color: var(--color-text-sub);
  background-color: transparent;
  border: 1px solid var(--color-border-strong);
  border-radius: 2px;
}

.c_tag--button {
  font-family: inherit;
  cursor: pointer;
  transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
}

.c_tag--button:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
}

.c_tag--button.is-active {
  color: var(--color-white);
  background-color: var(--color-primary);
  border-color: var(--color-primary);
}

.c_tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* ---------- アイコン ---------- */
/* reset.css の img { width: 100% } を打ち消すため、サイズを明示する */
.c_icon {
  flex-shrink: 0;
  width: 64px;
  height: 64px;
  object-fit: contain;
}

/* セクション見出しにアイコンを添える形 */
.c_section__head {
  display: flex;
  align-items: center;
  gap: 20px;
}

@media (max-width: 768px) {
  .c_icon {
    width: 52px;
    height: 52px;
  }

  .c_section__head {
    gap: 14px;
  }
}

/* ---------- 画像プレースホルダー（画像用意後に img へ差し替え） ---------- */
.c_placeholder {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background-color: var(--color-surface);
}

.c_placeholder::after {
  position: absolute;
  bottom: 10px;
  left: 12px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.06em;
  color: var(--color-text-sub);
  content: attr(data-label);
}

.c_placeholder--portrait {
  aspect-ratio: 3 / 4;
}

/* ---------- 下層ページの見出し ---------- */
.c_page-head {
  padding: 72px 0 56px;
  color: var(--color-on-primary);
  background-color: var(--color-primary);
}

.c_page-head__title {
  font-family: var(--font-display);
  font-size: 36px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.005em;
}

.c_page-head__lead {
  max-width: 34em;
  margin-top: 24px;
  font-size: 15px;
  line-height: 2;
  color: var(--color-on-primary-sub);
}

@media (max-width: 768px) {
  .c_page-head {
    padding: 48px 0 40px;
  }

  .c_page-head__title {
    font-size: 28px;
  }
}

/* ---------- パンくず ---------- */
.c_breadcrumb {
  padding: 14px 0;
  border-bottom: 1px solid var(--color-border);
}

.c_breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--color-text-sub);
}

.c_breadcrumb__link {
  transition: color 0.25s ease;
}

.c_breadcrumb__link:hover {
  color: var(--color-accent);
}

.c_breadcrumb__item::after {
  margin-left: 8px;
  content: "／";
}

.c_breadcrumb__item:last-child::after {
  content: none;
}

/* ---------- 問い合わせCTA ---------- */
.c_cta {
  padding: 96px 0;
  color: var(--color-on-primary);
  background-color: var(--color-primary);
}

.c_cta__title {
  font-family: var(--font-display);
  font-size: 31px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.005em;
}

.c_cta__text {
  max-width: 34em;
  margin-top: 24px;
  font-size: 15px;
  line-height: 2;
  color: var(--color-on-primary-sub);
}

.c_cta__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px;
  margin-top: 40px;
}

.c_cta__mail {
  font-family: var(--font-mono);
  font-size: 14px;
  color: var(--color-on-primary-sub);
  border-bottom: 1px solid var(--color-on-primary-rule);
  transition: color 0.25s ease, border-color 0.25s ease;
}

.c_cta__mail:hover {
  color: var(--color-accent);
  border-color: var(--color-accent);
}

@media (max-width: 768px) {
  .c_cta {
    padding: 64px 0;
  }

  .c_cta__title {
    font-size: 24px;
  }

  .c_cta__actions {
    display: grid;
    gap: 20px;
    justify-items: start;
  }
}

/* ---------- フォーム ---------- */
.c_form__row {
  padding: 28px 0;
  border-bottom: 1px solid var(--color-border);
}

.c_form__row:first-child {
  border-top: 1px solid var(--color-border);
}

.c_form__label {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  font-size: 15px;
  font-weight: 700;
  color: var(--color-primary);
}

.c_form__required {
  padding: 2px 8px;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--color-white);
  background-color: var(--color-accent);
}

.c_form__optional {
  padding: 2px 8px;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--color-text-sub);
  border: 1px solid var(--color-border-strong);
}

.c_form__input,
.c_form__textarea {
  display: block;
  width: 100%;
  padding: 12px 14px;
  font-family: inherit;
  font-size: 16px;
  line-height: 1.7;
  color: var(--color-text);
  background-color: var(--color-white);
  border: 1px solid var(--color-border-strong);
  border-radius: 2px;
  transition: border-color 0.25s ease;
}

.c_form__input:focus,
.c_form__textarea:focus {
  border-color: var(--color-primary);
  outline: none;
}

.c_form__textarea {
  min-height: 220px;
  resize: vertical;
}

/* 相談内容のチェックボックス群 */
.c_form__checks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 24px;
}

.c_form__check-label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  line-height: 1.6;
  cursor: pointer;
}

.c_form__agree {
  padding: 28px 0;
}

.c_form__agree-label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  cursor: pointer;
}

/*
  reset.css が input に appearance: none を指定しているため、
  チェックボックスの見た目はここで作り直す
*/
.c_form__checkbox {
  position: relative;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  background-color: var(--color-white);
  border: 1px solid var(--color-border-strong);
  border-radius: 2px;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

.c_form__checkbox:hover {
  border-color: var(--color-primary);
}

.c_form__checkbox:checked {
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

.c_form__checkbox:checked::after {
  position: absolute;
  top: 2px;
  left: 5px;
  width: 4px;
  height: 8px;
  content: "";
  border-right: 2px solid var(--color-white);
  border-bottom: 2px solid var(--color-white);
  transform: rotate(45deg);
}

.c_form__submit {
  margin-top: 8px;
}

.c_form__notice {
  margin-top: 20px;
  font-size: 13px;
  line-height: 1.9;
  text-align: center;
  color: var(--color-text-sub);
}

@media (max-width: 768px) {
  .c_form__checks {
    grid-template-columns: 1fr;
  }
}

/* ---------- Contact Form 7（reset.cssでinput装飾が消えるため作り直す） ---------- */
.wpcf7-form-control-wrap {
  display: block;
}

/* ご相談内容のチェックボックス群 */
.c_form__cf7-checks .wpcf7-checkbox {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 24px;
}

.wpcf7-list-item {
  margin: 0;
}

.wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 15px;
  line-height: 1.6;
  cursor: pointer;
}

/* CF7が生成する素のチェックボックス（相談内容・同意とも）をサイトの意匠に合わせる */
.wpcf7 input[type="checkbox"] {
  position: relative;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  background-color: var(--color-white);
  border: 1px solid var(--color-border-strong);
  border-radius: 2px;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

.wpcf7 input[type="checkbox"]:hover {
  border-color: var(--color-primary);
}

.wpcf7 input[type="checkbox"]:checked {
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

.wpcf7 input[type="checkbox"]:checked::after {
  position: absolute;
  top: 2px;
  left: 5px;
  width: 4px;
  height: 8px;
  content: "";
  border-right: 2px solid var(--color-white);
  border-bottom: 2px solid var(--color-white);
  transform: rotate(45deg);
}

/* 送信ボタン（[submit class:c_button--wide]）を中央・全幅に */
.wpcf7 .c_button--wide {
  display: block;
  width: 100%;
  max-width: 420px;
  margin: 0 auto;
}

/* 応答メッセージ・入力エラー */
.wpcf7-response-output {
  margin: 24px 0 0;
  padding: 14px 18px;
  font-size: 14px;
  line-height: 1.8;
  border: 1px solid var(--color-border-strong);
  border-radius: 2px;
}

.wpcf7 .wpcf7-not-valid-tip {
  margin-top: 6px;
  font-size: 13px;
  color: #c0392b;
}

.wpcf7-not-valid {
  border-color: #c0392b !important;
}

@media (max-width: 768px) {
  .c_form__cf7-checks .wpcf7-checkbox {
    grid-template-columns: 1fr;
  }
}

/* ---------- 本文（プライバシーポリシー等） ---------- */
.c_prose__section {
  padding-top: 40px;
}

.c_prose__title {
  padding-bottom: 12px;
  margin-bottom: 20px;
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.6;
  color: var(--color-primary);
  border-bottom: 1px solid var(--color-border);
}

.c_prose__text {
  font-size: 15px;
  line-height: 2;
}

.c_prose__text + .c_prose__text {
  margin-top: 16px;
}

.c_prose__list {
  display: grid;
  gap: 10px;
  padding-left: 20px;
  margin-top: 16px;
}

.c_prose__item {
  position: relative;
  font-size: 15px;
  line-height: 2;
}

.c_prose__item::before {
  position: absolute;
  top: 0.9em;
  left: -20px;
  width: 8px;
  height: 1px;
  content: "";
  background-color: var(--color-accent);
}

/* ---------- 控えめなフェードイン（セクション単位のみ） ---------- */
.is-js .c_fade {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.is-js .c_fade.is-visible {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .is-js .c_fade {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* ==========================================================================
   ページ別
   ========================================================================== */

/* ---------- ホーム：ヒーロー ---------- */
.top_hero {
  position: relative;
  padding: 96px 0 104px;
  overflow: hidden;
  color: var(--color-on-primary);
  background-color: var(--color-primary);
}

/*
  背景写真（img/hero-01.jpg）。画像が未配置でもネイビー地のままになるよう
  img ではなく background-image で敷いている
*/
.top_hero__media {
  position: absolute;
  inset: 0;
  background-image: url("../img/hero-01.jpg");
  background-repeat: no-repeat;
  /* ノートPCを右寄りに見せるため、画像は左側を基準に配置 */
  background-position: 28% center;
  background-size: cover;
  /* 写真は見せつつ、白文字が乗る程度に暗く整える */
  filter: grayscale(0.25) brightness(0.72) contrast(1.03);
}

/* 左側ほど濃くして、見出しの可読性を確保する（写真は右側で見せる） */
.top_hero::after {
  position: absolute;
  inset: 0;
  content: "";
  background-image: linear-gradient(
    95deg,
    var(--color-primary) 0%,
    rgba(30, 48, 80, 0.88) 30%,
    rgba(30, 48, 80, 0.6) 66%,
    rgba(30, 48, 80, 0.48) 100%
  );
}

.top_hero__body {
  position: relative;
  z-index: var(--z-index-default);
}

.top_hero__area {
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--color-on-primary-sub);
}

.top_hero__title {
  max-width: 15em;
  margin-top: 24px;
  font-family: var(--font-display);
  font-size: 48px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.005em;
}

.top_hero__text {
  max-width: 38em;
  margin-top: 32px;
  font-size: 15px;
  line-height: 2.1;
  color: var(--color-on-primary-sub);
}

.top_hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px;
  margin-top: 40px;
}

.top_hero__mail {
  font-family: var(--font-mono);
  font-size: 14px;
  color: var(--color-on-primary-sub);
  border-bottom: 1px solid var(--color-on-primary-rule);
  transition: color 0.25s ease, border-color 0.25s ease;
}

.top_hero__mail:hover {
  color: var(--color-accent);
  border-color: var(--color-accent);
}

@media (max-width: 768px) {
  .top_hero {
    padding: 56px 0 64px;
  }

  /* SPは縦長でPCが右に切れるため、画像を左へ寄せてノートPCを中央に見せる */
  .top_hero__media {
    background-position: 50% center;
  }

  /* SPは文字量に対して面積が狭いので、veilを濃くする */
  .top_hero::after {
    background-image: linear-gradient(
      180deg,
      var(--color-primary) 0%,
      rgba(30, 48, 80, 0.86) 55%,
      rgba(30, 48, 80, 0.7) 100%
    );
  }

  /* 「つくって終わりにしない。」が1行に収まるサイズ */
  .top_hero__title {
    max-width: none;
    margin-top: 20px;
    font-size: 27px;
  }

  .top_hero__actions {
    display: grid;
    gap: 20px;
    justify-items: start;
  }
}

/* ---------- ホーム：公開後も続く線（このサイトの主役） ---------- */
.top_line {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-top: 88px;
}

/* 相談→公開までの線 */
.top_line::before {
  position: absolute;
  top: 5px;
  left: 0;
  width: 50%;
  height: 1px;
  content: "";
  background-color: var(--color-on-primary-rule);
  transform: scaleX(0);
  transform-origin: left center;
  animation: top_line-draw 0.9s 0.15s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* 公開より先。画面外まで伸ばして「終わらない」ことを示す */
.top_line::after {
  position: absolute;
  top: 4px;
  right: -50vw;
  left: 50%;
  height: 2px;
  content: "";
  background-color: var(--color-accent);
  transform: scaleX(0);
  transform-origin: left center;
  animation: top_line-draw 1.4s 0.9s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.top_line__step {
  position: relative;
  padding: 22px 20px 0 0;
}

.top_line__step::before {
  position: absolute;
  top: 0;
  left: 0;
  width: 11px;
  height: 11px;
  content: "";
  background-color: var(--color-primary);
  border: 1px solid var(--color-on-primary-rule);
  border-radius: 50%;
}

.top_line__step--after::before {
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

.top_line__label {
  display: block;
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.6;
}

.top_line__step--after .top_line__label {
  color: var(--color-accent);
}

.top_line__sub {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.8;
  color: var(--color-on-primary-sub);
}

@keyframes top_line-draw {
  to {
    transform: scaleX(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  .top_line::before,
  .top_line::after {
    animation: none;
    transform: scaleX(1);
  }
}

@media (max-width: 768px) {
  .top_line {
    grid-template-columns: 1fr;
    margin-top: 56px;
  }

  /* 縦並びでは各ステップが自前の縦線を持つ */
  .top_line::before,
  .top_line::after {
    display: none;
  }

  .top_line__step {
    padding: 0 0 24px 24px;
  }

  .top_line__step::before {
    top: 5px;
  }

  .top_line__step::after {
    position: absolute;
    top: 20px;
    bottom: 0;
    left: 5px;
    width: 1px;
    content: "";
    background-color: var(--color-on-primary-rule);
  }

  .top_line__step--continue::after {
    width: 2px;
    background-color: var(--color-accent);
  }

  .top_line__step:last-child {
    padding-bottom: 0;
  }

  .top_line__step:last-child::after {
    display: none;
  }

  .top_line__label {
    font-size: 15px;
  }
}

/* ---------- ホーム：紹介 ---------- */
.top_about__inner {
  display: grid;
  grid-template-columns: 232px minmax(0, 1fr);
  gap: 40px;
}

.top_about__photo {
  aspect-ratio: 3 / 4;
  object-fit: cover;
}

.top_about__button {
  margin-top: 32px;
}

@media (max-width: 768px) {
  .top_about__inner {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .top_about__image {
    max-width: 200px;
  }
}

/* ---------- ホーム：事例 ---------- */
.top_case__more {
  margin-top: 32px;
}

/* ---------- 事業内容 ---------- */
.business_block {
  margin-top: 40px;
}

.business_block__title {
  padding-bottom: 10px;
  margin-bottom: 20px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--color-primary);
  border-bottom: 1px solid var(--color-border);
}

.business_area__cities {
  margin-top: 24px;
}

/* ---------- CRAFTRUSTについて ---------- */
.commitment_profile__inner {
  display: grid;
  grid-template-columns: 232px minmax(0, 1fr);
  gap: 40px;
}

.commitment_profile__photo {
  aspect-ratio: 3 / 4;
  object-fit: cover;
}

.commitment_profile__name {
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--color-primary);
}

.commitment_profile__role {
  display: block;
  margin-top: 8px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--color-text-sub);
}

.commitment_profile__body {
  margin-top: 24px;
}

@media (max-width: 768px) {
  .commitment_profile__inner {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .commitment_profile__image {
    max-width: 200px;
  }

  .commitment_profile__name {
    font-size: 22px;
  }
}

/* ---------- 事例 ---------- */
.case_filter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 32px;
}

.case_detail__title {
  margin-top: 14px;
  font-family: var(--font-display);
  font-size: 34px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-primary);
}

.case_detail__thumb {
  margin: 40px 0;
}

.case_detail__block {
  padding-top: 32px;
  margin-top: 48px;
  border-top: 1px solid var(--color-border-strong);
}

.case_detail__block-title {
  margin-bottom: 20px;
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-primary);
}

.case_detail__back {
  margin-top: 56px;
}

@media (max-width: 768px) {
  .case_detail__title {
    font-size: 24px;
  }

  .case_detail__block-title {
    font-size: 19px;
  }
}

/* ---------- お問い合わせ ---------- */
.contact_lead {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  margin-bottom: 40px;
}

.contact_lead__text {
  font-size: 15px;
  line-height: 2;
}

.contact_thanks {
  padding: 64px 40px;
  text-align: center;
  background-color: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: 2px;
}

.c_icon.contact_thanks__icon {
  width: 72px;
  height: 72px;
  margin-bottom: 24px;
}

.contact_thanks__title {
  font-family: var(--font-display);
  font-size: 30px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--color-primary);
}

.contact_thanks__text {
  max-width: 34em;
  margin: 24px auto 0;
  font-size: 15px;
  line-height: 2;
  /* 中央寄せで最後の行が短く浮かないよう、行の長さを均す */
  text-wrap: balance;
}

.contact_thanks__button {
  margin-top: 40px;
}

@media (max-width: 768px) {
  .contact_thanks {
    padding: 40px 16px;
  }

  .contact_thanks__title {
    font-size: 23px;
  }
}

/* ---------- プライバシーポリシー ---------- */
.privacy_date {
  margin-top: 48px;
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  text-align: right;
  color: var(--color-text-sub);
}

/* ==========================================================================
   ユーティリティ
   ========================================================================== */
.u_mt-16 {
  margin-top: 16px;
}

.u_mt-24 {
  margin-top: 24px;
}

.u_mt-32 {
  margin-top: 32px;
}

.u_mt-40 {
  margin-top: 40px;
}

.u_br-pc {
  display: inline;
}

.u_br-sp {
  display: none;
}

@media (max-width: 768px) {
  .u_br-pc {
    display: none;
  }

  .u_br-sp {
    display: inline;
  }
}
