@charset "UTF-8";
/* ========== ========== ==========
会社概要（templateParts/company-v2.php）
========== ========== ========== */

.cp-page {
  --cp-main: #6460c1;
  --cp-pale: #f3f2fb;
  --cp-text: #2b2b33;
  --cp-sub: #6b6b78;
  --cp-line: #e4e3ee;
  color: var(--cp-text);
}

/* ページ上部の空白を詰める */
.cp-page .mainVisual {
  height: auto;
  min-height: 0;
  padding-bottom: 24px;
}

.cp-wrap {
  max-width: 1080px;
  margin-inline: auto;
  padding: 0 24px;
}

.cp-eyebrow {
  font-family: "Lato", sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cp-main);
}

.cp-heading {
  margin: 6px 0 32px;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.5;
}

/* ---------- 代表挨拶 ---------- */
.cp-message {
  padding: 32px 0 112px;
}

.cp-message__grid {
  display: grid;
  grid-template-columns: 400px minmax(0, 1fr);
  gap: 56px;
  align-items: start;
}

/* 横長の写真をセクションの上に大きく（切り抜き・角丸なし） */
.cp-message__photo {
  margin-bottom: 56px;
}

/* 写真は切り抜かず元の形のまま、スクロールにも追従させない */
.cp-message__photo img {
  display: block;
  width: 100%;
  height: auto;
}

.cp-message__title {
  margin-top: 6px;
  font-size: 16px;
  font-weight: 700;
  color: var(--cp-sub);
}

.cp-message__catch {
  margin-top: 16px;
  font-size: 30px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.02em;
}

.cp-message__text {
  margin-top: 32px;
}

.cp-message__text p {
  font-size: 16px;
  line-height: 2;
  letter-spacing: 0.03em;
}

.cp-message__text p + p {
  margin-top: 1.4em;
}

.cp-message__sign {
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1px solid var(--cp-line);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-align: right;
}

.cp-message__sign span {
  display: block;
  margin-bottom: 4px;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.04em;
  color: var(--cp-sub);
}

/* ---------- ロゴと社名の由来 ---------- */
.cp-origin {
  padding: 96px 0;
  background: linear-gradient(135deg, #f3f1fc 0%, #edf5fd 100%);
}

.cp-origin__card {
  display: grid;
  grid-template-columns: 360px minmax(0, 1fr);
  gap: 56px;
  align-items: center;
  padding: 48px;
  border-radius: 0;
  background: #fff;
  box-shadow: 0 2px 24px rgba(80, 76, 160, 0.08);
}

.cp-origin__logo {
  display: grid;
  place-items: center;
  aspect-ratio: 4 / 3;
  border: 1px solid var(--cp-line);
  background: #fff;
}

.cp-origin__logo img {
  width: 72%;
  height: auto;
}

.cp-origin__text p {
  font-size: 16px;
  line-height: 2;
  letter-spacing: 0.03em;
}

.cp-origin__text p + p,
.cp-origin__steps + p {
  margin-top: 1em;
}

.cp-origin__text .cp-origin__lead {
  font-size: 21px;
  font-weight: 700;
  line-height: 1.7;
}

/* 1 → 10 → 100 → L の成長イメージ */
.cp-origin__steps {
  display: flex;
  align-items: flex-end;
  gap: 18px;
  margin: 24px 0 8px;
}

.cp-origin__steps li {
  position: relative;
  font-family: "Lato", sans-serif;
  font-weight: 700;
  line-height: 1;
  color: #b9b2f0;
  list-style: none;
}

.cp-origin__steps li:nth-child(1) { font-size: 18px; }
.cp-origin__steps li:nth-child(2) { font-size: 26px; }
.cp-origin__steps li:nth-child(3) { font-size: 36px; }

.cp-origin__steps li.is-l {
  font-size: 56px;
  background: linear-gradient(160deg, var(--cp-main) 10%, #d926a6 90%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.cp-origin__steps li + li::before {
  content: "→";
  position: absolute;
  left: -15px;
  bottom: 4px;
  font-size: 12px;
  color: #c9c5f0;
}

/* ---------- 会社情報 ---------- */
.cp-info {
  padding: 96px 0 120px;
}

.cp-info__list {
  border-top: 1px solid var(--cp-line);
}

.cp-info__row {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 24px;
  padding: 24px 8px;
  border-bottom: 1px solid var(--cp-line);
}

.cp-info__row dt {
  font-size: 15px;
  font-weight: 700;
  color: var(--cp-main);
}

.cp-info__row dd {
  font-size: 16px;
  line-height: 1.9;
}

/* ---------- タブレット ---------- */
@media screen and (max-width: 1000px) {
  .cp-message__grid,
  .cp-origin__card {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .cp-message__photo {
    margin-bottom: 40px;
  }

  .cp-origin__logo {
    max-width: 420px;
  }
}

/* ---------- スマホ ---------- */
@media screen and (max-width: 768px) {
  .cp-wrap {
    padding: 0 20px;
  }

  .cp-heading {
    margin-bottom: 24px;
    font-size: 22px;
  }

  .cp-message {
    padding: 16px 0 72px;
  }

  .cp-message__grid {
    gap: 28px;
  }

  .cp-message__photo {
    margin: 0 -20px 28px;
  }

  .cp-message__catch {
    margin-top: 12px;
    font-size: 24px;
  }

  .cp-message__text {
    margin-top: 24px;
  }

  .cp-message__text p,
  .cp-origin__text p {
    font-size: 15px;
    line-height: 1.9;
  }

  .cp-message__text br {
    display: none;
  }

  .cp-message__sign {
    font-size: 19px;
  }

  .cp-origin {
    padding: 64px 0;
  }

  .cp-origin__card {
    gap: 24px;
    padding: 24px 20px;
  }

  .cp-origin__logo {
    max-width: none;
    aspect-ratio: 16 / 9;
  }

  .cp-origin__text .cp-origin__lead {
    font-size: 18px;
  }

  .cp-info {
    padding: 64px 0 80px;
  }

  .cp-info__row {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 18px 4px;
  }

  .cp-info__row dt {
    font-size: 13px;
  }

  .cp-info__row dd {
    font-size: 15px;
  }
}

/* 代表挨拶の大事な一文に下線マーカー（画面に入ると左から引かれる） */
.cp-mark {
  font-weight: 700;
  background: linear-gradient(transparent 64%, rgba(212, 198, 247, 0.8) 64%) no-repeat 0 0 / 0% 100%;
  transition: background-size 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.4s;
}

.cp-message.is-shown .cp-mark,
.cp-message:not(.u-reveal) .cp-mark {
  background-size: 100% 100%;
}

@media (prefers-reduced-motion: reduce) {
  .cp-mark {
    background-size: 100% 100%;
    transition: none;
  }
}

/* 会社情報：事業内容の箇条書き */
.cp-info__biz li {
  position: relative;
  padding-left: 18px;
  list-style: none;
}

.cp-info__biz li + li {
  margin-top: 6px;
}

.cp-info__biz li::before {
  content: "";
  position: absolute;
  top: 0.8em;
  left: 2px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #b9b2f0;
}

.cp-info__biz a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: #c9c5f0;
  text-underline-offset: 4px;
}

.cp-info__biz a:hover {
  color: #6460c1;
}
