@charset "UTF-8";

/* 変数 */
:root {
  --background-color: #f4f4f4;
  --background-color-rgb: 244, 244, 244;
  --main-color: #0342AB;
  --accent-color: #88c920;
  --hover-color: #0056b3;
  --gradation-color: #94ABCC;
  --text-color: #333;
}

/* 余白の初期化 */
* {
  margin: 0;
  padding: 0;
}

html,
body {
  background-color: var(--background-color);
  margin: 0;
  padding: 0;
}

a {
  text-decoration: none;
}

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

header {
  flex-shrink: 0;
  /* ヘッダーのサイズを固定 */
}

footer {
  margin-top: auto;
  /* フッターを底に押し下げ */
}

/* header(home) */
.top-header {
  position: relative;
  z-index: 20;
}

.top-header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0 40px;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 30;
  padding: 20px 0;
}

.top-logo {
  margin-left: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.top-logo img {
  max-height: 80px;
  width: auto;
  display: block;
}

.top-header-main-nav {
  display: flex;
  gap: 50px;
}

.nav-toggle {
  display: none;
}

.top-header-main-nav a {
  color: var(--text-color);
  text-decoration: none;
  font-size: 18px;
  font-weight: bold;
  position: relative;
}

.highlight {
  color: var(--accent-color);
}

.icon-pc {
  width: 20px;
  height: 20px;
  position: relative;
  top: 2px;
}

.link-sp {
  display: none;
}


/* 画像とh1を重ねる部分 */
.top-section {
  position: relative;
  width: 100%;
  height: 650px;
}

.top-section::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(255, 255, 255, 0.5);
  /* 半透明の白 */
  pointer-events: none;
  /* クリックや操作は通す */
}

.main-visual {
  width: 100%;
  height: 650px;
  object-fit: cover;
  display: block;
}

.top-section h1 {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  font-size: 50px;
  font-weight: bold;
  font-style: italic;
  color: var(--background-color);
  z-index: 10;
  white-space: nowrap;
}

/* news */
.news-section {
  padding: 40px 80px;
  background-color: var(--background-color);
  max-width: 1360px;
  margin: 0 auto;
}

/* h2とulを横並びにするためのレイアウト */
.news-header {
  display: flex;
  align-items: flex-start;
  gap: 200px;
}

.news-section h2 {
  font-size: 40px;
}

.news-content {
  flex: 1;
}

.news-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.news-item {
  display: flex;
  align-items: flex-start;
  padding: 15px 0;
}

.news-date {
  font-size: 19px;
  color: var(--text-color);
  margin-right: 40px;
  min-width: 120px;
}

.news-category {
  background-color: var(--main-color);
  color: var(--background-color);
  padding: 6px 50px;
  border-radius: 15px;
  font-size: 14px;
  margin-right: 40px;
  white-space: nowrap;
  text-align: center;
  display: inline-block;
}

.news-title {
  flex: 1;
  font-size: 19px;
  line-height: 1.5;
  color: var(--text-color);
}

/* ニュースグループのスタイル */
.news-group {
  display: none !important;
}

.news-group.show {
  display: block !important;
}

.more-btn-container {
  text-align: center;
  margin: 0px 0;
}

.more-btn-container button {
  background: none;
  border: none;
  color: var(--main-color);
  font-size: 14px;
  cursor: pointer;
  text-decoration: underline;
  padding: 0px 20px;
  margin: 0 5px;
}

.more-btn-container button:hover {
  color: var(--hover-color);
}

/* main */
.main-content h2 {
  font-size: 40px;
  /* 見出しサイズ */
}

.main-content p {
  margin-top: 40px;
  /* 上余白 */
}

/* セクション共通 */
.section {
  display: flex;
  /* 横並びにする */
  align-items: center;
  /* 縦方向中央揃え */
  width: 100%;
  /* セクション幅いっぱい */
  box-sizing: border-box;
}

/* 左側に画像（COMPANY / RECRUIT） */
.layout-left {
  flex-direction: row;
  /* 左が画像、右がテキスト */
}

/* 右側に画像（SERVICE / EC） */
.layout-right {
  flex-direction: row;
}

/* テキスト側 */
.section-content {
  flex: 1;
  /* 残り幅を占有 */
  padding: 0 30px;
  /* 画像との間隔 */
  box-sizing: border-box;
}

/* 画像側（共通） */
.section-image {
  display: flex;
  align-items: center;
  /* 縦中央 */
  flex-shrink: 0;
  /* 基本的に縮まさない */
}

/* 左側画像（imageが先に来るHTMLのとき） */
.layout-left .section-image {
  justify-content: flex-start;
  /* 左端寄せ（念のため） */
  margin-right: 0;
  /* 余白調整不要 */
  margin-bottom: 0;
}

.layout-right .section-image {
  justify-content: flex-end;
  margin-left: 0;
}

/* 画像本体 */
.section-image img {
  height: 460px;
  /* 高さ固定 */
  width: auto;
  /* 横比率維持 */
  display: block;
  /* ブロック表示 */
  object-fit: contain;
  /* 比率を維持して収める */
}

/* ヘッダー部分 */
.section-header {
  display: flex;
  align-items: center;
  /* 見出しとアイコン縦位置揃え */
  gap: 20px;
  /* 見出しとアイコン間隔 */
}

.section-header h2 {
  margin: 0;
  /* デフォルト余白削除 */
}

/* アイコン */
.arrow-icon {
  height: 40px;
  width: 40px;
}

/* contact */
.contact-section {
  color: var(--background-color);
  background: linear-gradient(to right, var(--gradation-color), var(--main-color));
  min-height: 400px;
  /* 高さを500pxに固定 */
  margin: 40px 0;
  /* 上下40px、左右0pxの余白 */
}

.contact-section p {
  font-size: 19px;
  margin-bottom: 20px;
}

.contact-header {
  text-align: center;
  /* padding: 60px 20px 20px 20px; */
}

.contact-header h2 {
  font-size: 40px;
  margin: 25px 0px;
}

.contact-inner {
  max-width: 1360px;
  margin: 0 auto;
}

.contact-wrap {
  display: flex;
  /* 横並びにする */
  align-items: stretch;
  /* 高さをそろえる */
  margin: 0 auto;
  /* 中央寄せ */
}

.call-contact-content,
.web-contact-content {
  flex: 1;
  /* 均等に分割 */
  padding: 40px 20px;
  /* 内側の余白 */
  text-align: center;
  /* 中央揃え */
}

/* 左のカラムの右に縦線を入れる */
.call-contact-content {
  border-right: 2px solid var(--background-color);
}

/* .call-contact-content {
  text-align: center; 見出しなど中央寄せ
  margin: 20px auto;
}

.call-number {
  display: flex;
  align-items: center;     アイコンとテキストを縦位置で揃える
  justify-content: center; 全体を中央寄せ
  gap: 10px;               アイコンとテキストの間隔
}

.phone-icon {
  font-size: 50px !important;        電話アイコン大きめ
  color: var(--background-color);     色は自由に
}

番号＋営業時間を縦並び
.number-time-wrap {
  display: flex;
  flex-direction: column;
  align-items: flex-start; 左寄せ
}

.number {
  font-size: 40px;
  font-weight: bold;
  line-height: 1.2;
}

.time {
  font-size: 14px;
  margin-top: 5px; numberのすぐ下に配置
  color: var(--background-color);
} */

.web-contact-content a {
  text-decoration: none;
  color: inherit;
  display: block;
  /* ブロックにして div と同じ幅を持たせる */
}

.web-contact {
  background-color: var(--background-color);
  min-height: 85px;
  width: 490px;
  margin: 0 auto;

  display: flex;
  /* Flexboxにする */
  align-items: center;
  /* 縦方向中央寄せ */
  justify-content: flex-start;
  /* 左寄せのままにする場合 */
  padding-left: 50px;
  /* 左の余白を保持 */
  box-sizing: border-box;
  /* パディング込みでサイズ計算 */
}

.mail-icon {
  font-size: 40px !important;
  /* アイコンサイズ */
  color: var(--main-color) !important;
  /* メインカラー */
}

.contact-form {
  color: var(--main-color);
  padding-right: 50px;
  margin: 0 auto;
}

.section-link {
  color: var(--text-color);
}

/* header */
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 0px;
  margin: 0 40px;
}

.logo {
  margin-left: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.logo img {
  max-height: 80px;
  width: auto;
  display: block;
}

.top-logo h1 {
  display: none;
}

.header-main-nav {
  display: flex;
  gap: 50px;
}

.header-main-nav a {
  color: var(--text-color);
  text-decoration: none;
  font-size: 18px;
  font-weight: bold;
  position: relative;
}

.first-letter {
  color: var(--accent-color);
}

.header-content {
  position: relative;
  height: 500px;
  overflow: hidden;
}

.header-text {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
}

.h1-title {
  font-weight: bold;
  margin-left: 160px;
  font-size: 40px;
}

.sub-title {
  font-size: 16px;
  color: var(--text-color);
  margin-left: 160px;
}

/* .header-image {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  width: auto;
  height: 400px;
  z-index: 1;
}*/

.svg-wrapper {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 400px;
  width: 100%;
  overflow: hidden;
  z-index: 1;
}

.fixed-right-svg {
  position: absolute;
  right: 0;
  height: 100%;
  width: auto;
  min-width: 400px;
  display: block;
}

/* footer */
.site-footer {
  background-color: var(--main-color);
  /* 青背景 */
  color: var(--background-color);
  font-family: sans-serif;
  padding-bottom: 20px;
}

.wave-top {
  width: 100%;
  overflow: hidden;
  line-height: 0;
}

.wave-top svg {
  display: block;
  width: 100%;
  height: 80px;
  background-color: var(--background-color);
}

.wave-pc {
  display: block;
}

.wave-sp {
  display: none;
}

.footer-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 0px;
  /* max-width: 1200px; */
  margin: 0 40px;
}

.logo {
  margin-left: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.logo img {
  max-height: 80px;
  width: auto;
  display: block;
}

.main-nav {
  display: flex;
  gap: 100px;
}

.main-nav a {
  color: var(--background-color);
  text-decoration: none;
  font-size: 18px;
  position: relative;
}

.main-nav a:not(:last-child)::after {
  content: "";
  position: absolute;
  right: -50px;
  top: 50%;
  width: 1px;
  height: 16px;
  background-color: var(--background-color);
  transform: translateY(-50%);
}

.divider {
  border: none;
  border-top: 1px solid var(--background-color);
  margin: 10px 40px 20px 40px;
}

.footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 40px;
  /* max-width: 1200px; */
  margin: 0 auto;
}

.footer-links {
  font-size: 14px;
}

.footer-links a {
  color: var(--background-color);
  text-decoration: none;
}

.footer-links span {
  margin: 0 10px;
}

.copyright {
  font-size: 14px;
}

@media screen and (max-width: 768px) {

  /* 共通 */
  html,
  body {
    overflow-x: hidden;
  }

  .top-logo h1 {
    display: block;
    font-size: 20px;
    font-weight: bold;
    font-style: italic;
  }

  .icon-sp {
    width: 18px;
    height: 18px;
    position: relative;
    top: 3px;
  }

  .link-pc {
    display: none;
  }

  .link-sp {
    display: inline;
  }

  /* ヘッダー */
  .top-header {
    position: relative;
    z-index: 20;
  }

  .header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 0px;
    margin: 0 20px;
    height: 60px;
  }

  .h1-title {
    font-weight: bold;
    font-size: 30px;
    margin-left: 30px
  }

  .sub-title {
    margin-left: 30px
  }

  .header-content {
    height: 250px;
  }

  .svg-wrapper {
    height: 200px
  }

  /* ロゴ＋ハンバーガーの親 */
  .top-header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 0 20px;
    position: absolute;
    /* メインビジュアルの上に重ねるため絶対 */
    top: 0;
    left: 0;
    right: 0;
    z-index: 30;
    /* ハンバーガーより低くてもOK */
    height: 60px;
    /* 親の高さを確保しないと子が消える */
  }

  #btn19 span {
    display: block;
    width: 25px;
    height: 2px;
    margin: 6px auto;
    /* 縦間隔 */
    background: var(--main-color);
    border-radius: 4px;
    transition: all .5s;
    transform-origin: center center;
    /* 回転の中心 */
  }

  /* active時 */
  #btn19.active span:nth-of-type(1) {
    transform: translateY(10px) rotate(-45deg);
    /* 微調整 */
    background: var(--background-color);
  }

  #btn19.active span:nth-of-type(2) {
    opacity: 0;
    /* 高さは変えない */
  }

  #btn19.active span:nth-of-type(3) {
    transform: translateY(-6px) rotate(45deg);
    /* 微調整 */
    background: var(--background-color);
  }

  /* :after はそのまま */
  #btn19::after {
    position: absolute;
    top: 50%;
    left: 50%;
    display: block;
    content: '';
    width: 30px;
    height: 30px;
    margin: -16px;
    border-radius: 50%;
    border: 2px solid transparent;
    transition: all .75s;
    transform-origin: center center;
  }

  #btn19.active::after {
    -webkit-animation: active-btn19 .7s .25s forwards;
    animation: active-btn19 .7s .25s forwards;
  }

  @-webkit-keyframes active-btn19 {
    0% {
      border-color: transparent;
      -webkit-transform: rotate(0);
    }

    25% {
      border-color: transparent var(--background-color) transparent transparent;
    }

    50% {
      border-color: transparent var(--background-color) var(--background-color) transparent;
    }

    75% {
      border-color: transparent var(--background-color) var(--background-color) var(--background-color);
    }

    100% {
      border-color: var(--background-color);
      -webkit-transform: rotate(-680deg);
    }
  }

  @keyframes active-btn19 {
    0% {
      border-color: transparent;
      transform: rotate(0);
    }

    25% {
      border-color: transparent var(--background-color) transparent transparent;
    }

    50% {
      border-color: transparent var(--background-color) var(--background-color) transparent;
    }

    75% {
      border-color: transparent var(--background-color) var(--background-color) var(--background-color);
    }

    100% {
      border-color: var(--background-color);
      transform: rotate(-680deg);
    }
  }

  /* ロゴ */
  .top-logo {
    margin-left: 0;
    display: flex;
    align-items: center;
  }

  .top-logo img {
    max-height: 40px;
    width: auto;
  }

  /* メインビジュアル */
  .top-section {
    position: relative;
    width: 100%;
    height: 300px;
  }

  .top-section::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.5);
    /* 半透明の白 */
    pointer-events: none;
    /* クリックや操作は通す */
  }

  .main-visual {
    width: 100%;
    height: 300px;
    object-fit: cover;
    display: block;
  }

  .top-section h1 {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    margin: 0;
    font-size: 20px;
    font-weight: bold;
    font-style: italic;
    color: var(--background-color);
    z-index: 10;
    white-space: nowrap;
  }

  .top-header-main-nav {
    position: fixed;
    top: 0;
    right: -100%;
    /* 初期は画面外 */
    width: 80%;
    height: auto;
    background: var(--main-color);
    display: flex;
    flex-direction: column;
    padding: 80px 20px;
    transition: right 0.3s ease;
    z-index: 100;
    gap: 10px;
  }

  .top-header-main-nav a {
    color: var(--background-color);
    text-decoration: none;
    padding: 10px 0;
    border-bottom: 1px solid var(--background-color);
    font-size: 12px;
  }

  .hamburger-menu.open .top-header-main-nav {
    right: 0;
  }

  .btn-trigger {
    cursor: pointer;
    position: relative;
    width: 30px;
    height: 22px;
    z-index: 200;
  }

  .btn-trigger span {
    display: block;
    width: 100%;
    height: 3px;
    margin: 5px 0;
    background: var(--background-color);
    transition: 0.4s;
  }

  .btn-trigger.active span:nth-of-type(1) {
    transform: translateY(8px) rotate(-45deg);
  }

  .btn-trigger.active span:nth-of-type(2) {
    opacity: 0;
  }

  .btn-trigger.active span:nth-of-type(3) {
    transform: translateY(-8px) rotate(45deg);
  }

  /* news */
  .news-section {
    padding: 20px 40px;
    background-color: var(--background-color);
    /* max-width: 1360px; */
    margin: 0 auto;
  }

  /* h2とulを横並びにするためのレイアウト */
  .news-header {
    display: block;
    /* align-items: flex-start;
    gap: 200px; */
  }

  .news-section h2 {
    font-size: 20px;
  }

  .news-content {
    flex: 1;
  }

  .news-list {
    list-style: none;
    padding: 0;
    margin: 0;
  }

  .news-item {
    display: flex;
    flex-wrap: wrap;
    /* 折り返しを許可 */
    align-items: flex-start;
    padding: 15px 0;
  }

  .news-date {
    font-size: 13px;
    color: var(--text-color);
    margin-right: 15px;
    min-width: 20px;
  }

  .news-category {
    background-color: var(--main-color);
    color: var(--background-color);
    padding: 3px 35px;
    border-radius: 15px;
    font-size: 10px;
    margin-right: 20px;
    white-space: nowrap;
    text-align: center;
    display: inline-block;
  }

  .news-title {
    flex-basis: 100%;
    /* ここがポイント：下に回す */
    font-size: 13px;
    line-height: 1.5;
    color: var(--text-color);
    margin-top: 5px;
    /* 少し間をあける */
  }

  /* ニュースグループのスタイル */
  .news-group {
    display: none !important;
  }

  .news-group.show {
    display: block !important;
  }

  .more-btn-container {
    text-align: center;
    margin: 0px 0;
  }

  .more-btn-container button {
    background: none;
    border: none;
    color: var(--main-color);
    font-size: 14px;
    cursor: pointer;
    text-decoration: underline;
    padding: 0px 20px;
    margin: 0 5px;
  }

  .more-btn-container button:hover {
    color: var(--hover-color);
  }

  /* main */
  .main-content {
    display: flex;
    flex-direction: column;
    /* 縦並びにしたいので column */
    gap: 100px;
    /* セクション間の間隔 */
  }

  .main-content h2 {
    font-size: 20px;
    /* 見出しサイズ */
  }

  .main-content p {
    margin-top: 12px;
    /* 上余白 */
    font-size: 13px;
  }

  /* セクション共通 */
  .section {
    display: flex;
    /* 横並びにする */
    /* align-items: center;              縦方向中央揃え */
    width: 100%;
    /* セクション幅いっぱい */
    box-sizing: border-box;
    position: relative;
    /* 重なりに備える */
    overflow: visible;
    /* はみ出しを許可 */
  }

  /* 左側に画像（COMPANY / RECRUIT） */
  .layout-left {
    flex-direction: row;
    /* 左が画像、右がテキスト */
  }

  /* 右側に画像（SERVICE / EC） */
  .layout-right {
    flex-direction: row;
    justify-content: flex-end;
    /* flex の右寄せ */
  }

  /* テキスト側 */
  .section-content {
    /* flex: none; */
    padding: 20px;
    box-sizing: border-box;
    position: relative;
    z-index: 2;
    background-color: rgba(var(--background-color-rgb), 0.7);
    border-radius: 30px;
    height: auto;
    width: 350px;
  }

  .section-content-left {
    top: 100px;
    margin-left: -65%;
    /* 横: -210px, 縦: 20px */
  }

  .section-content-right {
    top: 100px;
    margin-right: -65%;
    /* 横: 207px, 縦: 20px */
  }

  /* aタグの整形 */
  .section-link {
    display: block;
    color: inherit;
    text-decoration: none;
  }

  /* 画像側（共通） */
  .section-image {
    flex-shrink: 0;
    position: relative;
    z-index: 1;
    /* 画像を下側に */
  }

  /* 左側画像（imageが先に来るHTMLのとき） */
  .layout-left .section-image {
    justify-content: flex-start;
    /* 左端寄せ（念のため） */
    margin-right: 0;
    /* 余白調整不要 */
    margin-bottom: 0;
  }

  .layout-right .section-image {
    justify-content: flex-end;
    margin-left: 0;
  }

  /* 画像本体 */
  .section-image img {
    height: 229px;
    /* 高さ固定 */
    width: auto;
    /* 横比率維持 */
    display: block;
    /* ブロック表示 */
    object-fit: contain;
    /* 比率を維持して収める */
  }

  /* ヘッダー部分 */
  .section-header {
    display: flex;
    align-items: center;
    /* 見出しとアイコン縦位置揃え */
    gap: 20px;
    /* 見出しとアイコン間隔 */
  }

  .section-header h2 {
    margin: 0;
    /* デフォルト余白削除 */
  }

  /* アイコン */
  .arrow-icon {
    height: 25px;
    width: 25px;
  }

  /* contact */
  .contact-section {
    color: var(--background-color);
    background: linear-gradient(to right, var(--gradation-color), var(--main-color));
    min-height: 300px;
    /* 高さを500pxに固定 */
    margin-top: 100px;
    margin-bottom: 40px;
    /* 上下40px、左右0pxの余白 */
  }

  .contact-section p {
    font-size: 12px;
    margin-bottom: 20px;
  }

  .contact-header {
    text-align: center;
    /* padding: 60px 20px 20px 20px; */
  }

  .contact-header h2 {
    font-size: 20px;
    margin: 25px 0px;
  }

  .contact-inner {
    /* max-width: 1360px; */
    margin: 0 auto;
  }

  .contact-wrap {
    display: flex;
    /* 横並びにする */
    align-items: stretch;
    /* 高さをそろえる */
    margin: 0 auto;
    /* 中央寄せ */
  }

  .call-contact-content,
  .web-contact-content {
    flex: 1;
    /* 均等に分割 */
    padding: 20px 20px;
    /* 内側の余白 */
    text-align: center;
    /* 中央揃え */
  }

  /* 左のカラムの右に縦線を入れる */
  .call-contact-content {
    border-right: 2px solid var(--background-color);
  }

  /* .call-contact-content {
    text-align: center; 見出しなど中央寄せ
    margin: 20px auto;
  }

  .call-number {
    display: flex;
    align-items: center;     アイコンとテキストを縦位置で揃える
    justify-content: center; 全体を中央寄せ
    gap: 10px;               アイコンとテキストの間隔
  }

  .phone-icon {
    font-size: 50px !important;        電話アイコン大きめ
    color: var(--background-color);     色は自由に
  }

  番号＋営業時間を縦並び
  .number-time-wrap {
    display: flex;
    flex-direction: column;
    align-items: flex-start; 左寄せ
  }

  .number {
    font-size: 40px;
    font-weight: bold;
    line-height: 1.2;
  }

  .time {
    font-size: 14px;
    margin-top: 5px; numberのすぐ下に配置
    color: var(--background-color);
  } */

  .web-contact-content a {
    text-decoration: none;
    color: inherit;
    display: block;
    /* ブロックにして div と同じ幅を持たせる */
  }

  .web-contact {
    background-color: var(--background-color);
    min-height: 65px;
    width: 320px;
    margin: 0 auto;

    display: flex;
    /* Flexboxにする */
    align-items: center;
    /* 縦方向中央寄せ */
    justify-content: flex-start;
    /* 左寄せのままにする場合 */
    padding-left: 50px;
    /* 左の余白を保持 */
    box-sizing: border-box;
    /* パディング込みでサイズ計算 */
  }

  .mail-icon {
    font-size: 20px !important;
    /* アイコンサイズ */
    color: var(--main-color) !important;
    /* メインカラー */
  }

  .contact-form {
    color: var(--main-color);
    padding-right: 50px;
    margin: 0 auto;
    font-size: 12px;
  }

  .section-link {
    color: var(--text-color);
  }

  /* footer */
  /* contactの案によっては削除する */
  /* .site-footer {
    margin-top: 60px;
  } */

  .wave-top svg {
    display: block;
    width: 100%;
    height: 25px;
    background-color: var(--background-color);
  }

  .wave-pc {
    display: none;
  }

  .wave-sp {
    display: block;
  }

  .footer-inner {
    display: flex;
    flex-direction: column;
    /* 縦積み */
    align-items: flex-start;
    /* 左寄せ */
    margin: 0 20px;
    gap: 15px;
  }

  .logo {
    margin-left: 0;
    display: flex;
    align-items: center;
  }

  .logo img {
    max-height: 40px;
    width: auto;
    align-items: flex-start;
    display: block;
  }

  .main-nav {
    display: flex;
    gap: 15px;
    flex-wrap: wrap;
    /* スマホで折返しOK */
    justify-content: center;
    width: 100%;
  }

  .main-nav a {
    color: var(--background-color);
    text-decoration: none;
    font-size: 14px;
  }

  .main-nav a:not(:last-child)::after {
    display: none;
  }

  .footer-bottom {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0 20px;
    gap: 10px;
  }

  /* dividerを非表示にして擬似要素で再現 */
  .divider {
    display: none;
  }

  .footer-links {
    font-size: 14px;
    position: relative;
    display: flex;
    justify-content: center;
    gap: 10px;
    flex-wrap: wrap;
    /* スマホでも折り返し */
  }

  /* 疑似線をfooter-linksの下にブロックで出す */
  .footer-links::after {
    content: "";
    display: block;
    /* ← 横並び回避のポイント */
    width: 400px;
    border-top: 1px solid var(--background-color);
    margin: 10px auto 0;
    /* リンクとの間隔 */
  }

  .footer-links a {
    color: var(--background-color);
    text-decoration: none;
  }

  .footer-links span {
    display: none;
  }

  .copyright {
    font-size: 10px;
    color: var(--background-color);
  }

}



/************************** bootstrap **************************/
.row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(-1 * var(--bs-gutter-y));
  margin-right: calc(-.5 * var(--bs-gutter-x));
  margin-left: calc(-.5 * var(--bs-gutter-x))
}

.row>* {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * .5);
  padding-left: calc(var(--bs-gutter-x) * .5);
  margin-top: var(--bs-gutter-y)
}

.col {
  flex: 1 0 0%
}

.col-auto {
  flex: 0 0 auto;
  width: auto
}

.col-1 {
  flex: 0 0 auto;
  width: 8.33333333%
}

.col-2 {
  flex: 0 0 auto;
  width: 16.66666667%
}

.col-3 {
  flex: 0 0 auto;
  width: 25%
}

.col-4 {
  flex: 0 0 auto;
  width: 33.33333333%
}

.col-5 {
  flex: 0 0 auto;
  width: 41.66666667%
}

.col-6 {
  flex: 0 0 auto;
  width: 50%
}

.col-7 {
  flex: 0 0 auto;
  width: 58.33333333%
}

.col-8 {
  flex: 0 0 auto;
  width: 66.66666667%
}

.col-9 {
  flex: 0 0 auto;
  width: 75%
}

.col-10 {
  flex: 0 0 auto;
  width: 83.33333333%
}

.col-11 {
  flex: 0 0 auto;
  width: 91.66666667%
}

.col-12 {
  flex: 0 0 auto;
  width: 100%
}

.d-flex {
  display: flex !important;
}

.position-relative {
  position: relative !important
}

.align-items-center {
  align-items: center !important
}

.m-0 {
  margin: 0 !important
}

.m-1 {
  margin: .25rem !important
}

.m-2 {
  margin: .5rem !important
}

.m-3 {
  margin: 1rem !important
}

.m-4 {
  margin: 1.5rem !important
}

.m-5 {
  margin: 3rem !important
}

.m-auto {
  margin: auto !important
}

.mx-0 {
  margin-right: 0 !important;
  margin-left: 0 !important
}

.mx-1 {
  margin-right: .25rem !important;
  margin-left: .25rem !important
}

.mx-2 {
  margin-right: .5rem !important;
  margin-left: .5rem !important
}

.mx-3 {
  margin-right: 1rem !important;
  margin-left: 1rem !important
}

.mx-4 {
  margin-right: 1.5rem !important;
  margin-left: 1.5rem !important
}

.mx-5 {
  margin-right: 3rem !important;
  margin-left: 3rem !important
}

.mx-auto {
  margin-right: auto !important;
  margin-left: auto !important
}

.my-0 {
  margin-top: 0 !important;
  margin-bottom: 0 !important
}

.my-1 {
  margin-top: .25rem !important;
  margin-bottom: .25rem !important
}

.my-2 {
  margin-top: .5rem !important;
  margin-bottom: .5rem !important
}

.my-3 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important
}

.my-4 {
  margin-top: 1.5rem !important;
  margin-bottom: 1.5rem !important
}

.my-5 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important
}

.my-auto {
  margin-top: auto !important;
  margin-bottom: auto !important
}

.mt-0 {
  margin-top: 0 !important
}

.mt-1 {
  margin-top: .25rem !important
}

.mt-2 {
  margin-top: .5rem !important
}

.mt-3 {
  margin-top: 1rem !important
}

.mt-4 {
  margin-top: 1.5rem !important
}

.mt-5 {
  margin-top: 3rem !important
}

.mt-auto {
  margin-top: auto !important
}

.me-0 {
  margin-right: 0 !important
}

.me-1 {
  margin-right: .25rem !important
}

.me-2 {
  margin-right: .5rem !important
}

.me-3 {
  margin-right: 1rem !important
}

.me-4 {
  margin-right: 1.5rem !important
}

.me-5 {
  margin-right: 3rem !important
}

.me-auto {
  margin-right: auto !important
}

.mb-0 {
  margin-bottom: 0 !important
}

.mb-1 {
  margin-bottom: .25rem !important
}

.mb-2 {
  margin-bottom: .5rem !important
}

.mb-3 {
  margin-bottom: 1rem !important
}

.mb-4 {
  margin-bottom: 1.5rem !important
}

.mb-5 {
  margin-bottom: 3rem !important
}

.mb-auto {
  margin-bottom: auto !important
}

.ms-0 {
  margin-left: 0 !important
}

.ms-1 {
  margin-left: .25rem !important
}

.ms-2 {
  margin-left: .5rem !important
}

.ms-3 {
  margin-left: 1rem !important
}

.ms-4 {
  margin-left: 1.5rem !important
}

.ms-5 {
  margin-left: 3rem !important
}

.ms-auto {
  margin-left: auto !important
}

.p-0 {
  padding: 0 !important
}

.p-1 {
  padding: .25rem !important
}

.p-2 {
  padding: .5rem !important
}

.p-3 {
  padding: 1rem !important
}

.p-4 {
  padding: 1.5rem !important
}

.p-5 {
  padding: 3rem !important
}

.px-0 {
  padding-right: 0 !important;
  padding-left: 0 !important
}

.px-1 {
  padding-right: .25rem !important;
  padding-left: .25rem !important
}

.px-2 {
  padding-right: .5rem !important;
  padding-left: .5rem !important
}

.px-3 {
  padding-right: 1rem !important;
  padding-left: 1rem !important
}

.px-4 {
  padding-right: 1.5rem !important;
  padding-left: 1.5rem !important
}

.px-5 {
  padding-right: 3rem !important;
  padding-left: 3rem !important
}

.py-0 {
  padding-top: 0 !important;
  padding-bottom: 0 !important
}

.py-1 {
  padding-top: .25rem !important;
  padding-bottom: .25rem !important
}

.py-2 {
  padding-top: .5rem !important;
  padding-bottom: .5rem !important
}

.py-3 {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important
}

.py-4 {
  padding-top: 1.5rem !important;
  padding-bottom: 1.5rem !important
}

.py-5 {
  padding-top: 3rem !important;
  padding-bottom: 3rem !important
}

.pt-0 {
  padding-top: 0 !important
}

.pt-1 {
  padding-top: .25rem !important
}

.pt-2 {
  padding-top: .5rem !important
}

.pt-3 {
  padding-top: 1rem !important
}

.pt-4 {
  padding-top: 1.5rem !important
}

.pt-5 {
  padding-top: 3rem !important
}

.pe-0 {
  padding-right: 0 !important
}

.pe-1 {
  padding-right: .25rem !important
}

.pe-2 {
  padding-right: .5rem !important
}

.pe-3 {
  padding-right: 1rem !important
}

.pe-4 {
  padding-right: 1.5rem !important
}

.pe-5 {
  padding-right: 3rem !important
}

.pb-0 {
  padding-bottom: 0 !important
}

.pb-1 {
  padding-bottom: .25rem !important
}

.pb-2 {
  padding-bottom: .5rem !important
}

.pb-3 {
  padding-bottom: 1rem !important
}

.pb-4 {
  padding-bottom: 1.5rem !important
}

.pb-5 {
  padding-bottom: 3rem !important
}

.ps-0 {
  padding-left: 0 !important
}

.ps-1 {
  padding-left: .25rem !important
}

.ps-2 {
  padding-left: .5rem !important
}

.ps-3 {
  padding-left: 1rem !important
}

.ps-4 {
  padding-left: 1.5rem !important
}

.ps-5 {
  padding-left: 3rem !important
}



/************************** TOP **************************/
.top-diagonal-image-left {
  width: 100%;
  height: 100vh;
  background-size: cover;
  background-position: center;
  clip-path: polygon(0 0, 100% 0, 80% 100%, 0 100%);
}

.top-diagonal-image-right {
  width: 100%;
  height: 100vh;
  background-size: cover;
  background-position: center;
  clip-path: polygon(20% 0, 100% 0, 100% 100%, 0 100%);
}



/************************** SERVICE **************************/
.service-section {
  max-width: 1360px;
  margin: 0 auto;
  display: flex;
  align-items: flex-start;
  /* 上揃え */
  justify-content: center;
  /* 真ん中に寄せる */
  gap: 60px;
  /* テキストと画像の間 */
  margin-bottom: 40px;
}

/* 右左反転 */
.service-section.reverse {
  flex-direction: row-reverse;
}

/* テキスト領域 */
.text-area-right {
  flex: 1;
  /* 均等に伸びる */
  width: 480px;
  padding-right: 20px;
}

.text-area-left {
  flex: 1;
  /* 均等に伸びる */
  width: 480px;
  padding-left: 20px;
}

.text-area-left h3,
.text-area-right h3 {
  font-size: 30px;
  font-weight: 600;
  margin-bottom: 15px;
}

.section-number {
  color: var(--accent-color);
  font-weight: bold;
  margin-right: 6px;
}

.section-title {
  border-left: 2px solid var(--accent-color);
  ;
  padding-left: 8px;
  font-weight: bold;
}

.text-area p {
  font-size: 16px;
  line-height: 1.6;
  margin: 0;
}

/* 画像領域 */
.image-area {
  flex: 1;
  width: 480px;
  height: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: 6px;
}

.image-area img {
  max-width: 100%;
  max-height: 100%;
  object-fit: cover;
  /* ちょうどよくトリミングして収まる */
  display: block;
}

@media screen and (max-width: 768px) {
  .service-section {
    max-width: 90%;
    margin: 0 auto;
    display: block;
    align-items: flex-start;
    /* 上揃え */
    justify-content: center;
    /* 真ん中に寄せる */
    gap: 20px;
    /* テキストと画像の間 */
    margin-bottom: 40px;
  }

  /* 右左反転 */
  .service-section.reverse {
    flex-direction: row-reverse;
  }

  /* テキスト領域 */
  .text-area-right {
    flex: 1;
    /* 均等に伸びる */
    width: 100%;
    /* 親幅にフィット */
    max-width: 430px;
    /* 大きすぎる端末にも対応 */
    padding-right: 0px;
    margin-bottom: 20px;
  }

  .text-area-left {
    flex: 1;
    /* 均等に伸びる */
    width: 100%;
    /* 親幅にフィット */
    max-width: 430px;
    /* 大きすぎる端末にも対応 */
    padding-left: 0px;
    margin-bottom: 20px;
  }

  .text-area-left h3,
  .text-area-right h3 {
    font-size: 20px;
    font-weight: 600;
    margin-bottom: 10px;
  }

  .section-number {
    color: var(--accent-color);
    font-weight: bold;
    margin-right: 6px;
  }

  .section-title {
    border-left: 2px solid var(--accent-color);
    ;
    padding-left: 8px;
    font-weight: bold;
  }

  .text-area p {
    font-size: 13px;
    line-height: 1.6;
    margin: 0;
  }

  /* 画像領域 */
  .image-area {
    flex: 1;
    width: 100%;
    /* 親幅にフィット */
    max-width: 430px;
    /* 大きすぎる端末にも対応 */
    height: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-radius: 6px;
  }

  .image-area img {
    max-width: 100%;
    max-height: 100%;
    object-fit: cover;
    /* ちょうどよくトリミングして収まる */
    display: block;
  }
}



/************************** PRIVACYPOLICY/SECURITYPOLICY/MARGIN **************************/
/* 区切り線（中央にラベル） */
.section-divider {
  display: flex;
  align-items: center;
  gap: .75rem;
  font-size: 13px;
  color: #555;
  letter-spacing: .04em;
  margin: 2em 0 1.5em;
}

.section-divider::before,
.section-divider::after {
  content: "";
  flex: 1;
  border-top: 2px dashed #ccc;
}

.section-divider>span {
  white-space: nowrap;
  padding: 0 .25rem;
  font-size: 20px;
  /* PC版 */
}

p {
  margin: .5em 0;
  font-size: 16px;
  /* PC版 */
}

ol {
  margin: .5em 0 .5em 1.5em;
}

.text-standard {
  max-width: 1360px;
  margin: 0 auto;
  line-height: 1.8;
  color: var(--text-color);
}

p,
li {
  line-height: 1.4;
  font-size: 16px;
  /* PC版 for li */
}

@media screen and (max-width: 768px) {
  .text-standard {
    max-width: 90%;
    margin: 0 auto;
    line-height: 1.8;
    color: var(--text-color);
  }

  .section-divider>span {
    font-size: 15px;
    /* SP版 span */
  }

  p,
  li {
    font-size: 12px;
    /* SP版 p と li */
  }
}



/************************** RECRUIT **************************/

.recruit-content,
.company-content {
  width: 90%;
  max-width: 1000px;
  margin: 0 auto;
  line-height: 1.8;
  color: var(--text-color);
}

.recruit-content h2,
.company-content h2 {
  font-size: 30px;
  margin: 0 0 1rem;
  padding-left: 0.5rem;
}

.recruit-content h3 {
  font-size: 1.3rem;
  margin: 1.5rem 0 0.5rem;
}

.recruit-about blockquote {
  padding-inline: 1rem;
  margin-left: 0;
}

.recruit-about ul {
  padding-left: 2.0rem;
  /* デフォルトより小さめに調整 */
  margin-left: 0;
  /* 左余白をリセット */
}

.recruit-requirements-table {
  width: 100%;
  border-collapse: collapse;
  /* 線を共有してスッキリ */
  font-size: 0.95rem;
  line-height: 1.6;
}

.recruit-requirements-table th {
  background-color: var(--main-color);
  color: #fff;
  font-weight: 600;
  text-align: left;
  padding: 0.8rem 1rem;
  width: 20%;
  white-space: nowrap;
  /* 折り返し防止（見出し短めならおすすめ） */
}

.recruit-requirements-table td {
  background: #fafafa;
  padding: 0.8rem 1rem;
  border-bottom: 1px solid #ddd;
}

/* 最後の行だけ下線を消す */
.recruit-requirements-table tr:last-child td {
  border-bottom: none;
}

/* FAQ 全体 */
.recruit-faq {
  margin-top: 2.5rem;
  color: var(--text-color);
}

/* リスト本体：フラットでシンプル */
.faq-list {
  display: grid;
  gap: 10px;
  /* 行間だけで区切る */
}

/* 各項目 */
.recruit-faq-item {
  border-bottom: 1px solid #e8e8e8;
  /* ごく薄い下線のみ */
  padding-bottom: .6rem;
}

/* summary を行見出しとして扱う */
.recruit-faq-item>summary {
  list-style: none;
  cursor: pointer;
  padding: .8rem .2rem;
  font-size: 14px;
  font-weight: 600;
  outline: none;
  display: flex;
  align-items: center;
  gap: .6rem;
}

/* 先頭のアイコン（CSSだけで矢印） */
.recruit-faq-item>summary::before {
  content: "▶";
  font-size: .9rem;
  transform: translateY(-1px);
  transition: transform .2s ease;
  opacity: .7;
}

/* 開いたときに矢印回転 */
.recruit-faq-item[open]>summary::before {
  transform: rotate(90deg) translateY(0);
  opacity: 1;
}

/* WebKitのデフォルトマーカーを消す */
.recruit-faq-item>summary::-webkit-details-marker {
  display: none;
}

/* 回答文 */
.recruit-faq-item .recruit-answer {
  max-height: 0;
  overflow: hidden;
  padding: 0 1.2rem;
  line-height: 1.7;
  font-size: .95rem;
}

/* 余白調整（最後の項目の余白をスッキリ） */
.recruit-faq-item:last-child {
  border-bottom: none;
}

.recruit-section-line {
  border: none;
  border-top: 2px solid #ccc;
  /* 太さと色 */
  margin: 2rem 0;
  /* 上下の余白 */
}

.recruit-section-image {
  text-align: center;
  /* 画像を中央寄せ */
  margin: 3rem 0;
  /* 上下に余白 */
}

.recruit-section-image img,
.company-section-image img {
  max-width: 100%;
  /* 横幅に合わせて縮小 */
  height: auto;
}

/* 研修の流れの画像だけ上マージンなし */
.recruit-training-image {
  margin-top: 0;
}

/* まず両方非表示にしておく */
.training-image-pc,
.training-image-sp {
  width: 100%;
  height: auto;
  display: none;
}

/* PC表示（768px以上） */
@media screen and (min-width: 768px) {
  .training-image-pc {
    display: block;
  }
}

/* スマホ表示（768px未満） */
@media screen and (max-width: 767px) {

  .recruit-content h2,
  .company-content h2 {
    font-size: 20px;
    margin: 0 0 0.5rem;
    padding-left: 0.5rem;
  }

  .training-image-sp {
    display: block;
  }

  .recruit-content h3 {
    font-size: 15px;
    margin: 1.0rem 0 0.4rem;
  }

  .recruit-section-line {
    border: none;
    border-top: 2px solid #ccc;
    /* 太さと色 */
    margin: 1rem 0;
    /* 上下の余白 */
  }

  .recruit-about blockquote {
    padding-left: 0.7rem;
    margin-left: 0;
    font-size: 13px;
  }

  .recruit-about ul {
    padding-left: 2.0rem;
    /* デフォルトより小さめに調整 */
    margin-left: 0;
    /* 左余白をリセット */
    font-size: 13px;
  }

  .recruit-requirements-table {
    width: 100%;
    border-collapse: collapse;
    /* 線を共有してスッキリ */
    font-size: 13px;
    line-height: 1.6;
  }

  .recruit-requirements-table th {
    background-color: var(--main-color);
    color: #fff;
    font-weight: 600;
    text-align: left;
    padding: 0.8rem 1rem;
    width: 20%;
    white-space: nowrap;
    /* 折り返し防止（見出し短めならおすすめ） */
  }

  .recruit-requirements-table td {
    background: #fafafa;
    padding: 0.8rem 1rem;
    border-bottom: 1px solid #ddd;
  }

  /* 最後の行だけ下線を消す */
  .recruit-requirements-table tr:last-child td {
    border-bottom: none;
  }

  .recruit-section-image {
    text-align: center;
    /* 画像を中央寄せ */
    margin: 1.5rem 0;
    /* 上下に余白 */
  }

  /* FAQ 全体 */
  .recruit-faq {
    margin-top: 1.5rem;
    color: var(--text-color);
  }

  /* リスト本体：フラットでシンプル */
  .faq-list {
    display: grid;
    gap: 10px;
    /* 行間だけで区切る */
  }

  .recruit-faq-item .recruit-answer {
    padding-left: 1rem;
  }

  /* 各項目 */
  .recruit-faq-item {
    border-bottom: 1px solid #e8e8e8;
    /* ごく薄い下線のみ */
    padding-bottom: .6rem;
  }

  /* summary を行見出しとして扱う */
  .recruit-faq-item>summary {
    list-style: none;
    cursor: pointer;
    padding: .8rem .2rem;
    font-weight: 600;
    outline: none;
    display: flex;
    align-items: center;
    gap: .6rem;
  }

  /* 先頭のアイコン（CSSだけで矢印） */
  .recruit-faq-item>summary::before {
    content: "▶";
    font-size: .9rem;
    transform: translateY(-1px);
    transition: transform .2s ease;
    opacity: .7;
  }

  /* 開いたときに矢印回転 */
  .recruit-faq-item[open]>summary::before {
    transform: rotate(90deg) translateY(0);
    opacity: 1;
  }

  /* WebKitのデフォルトマーカーを消す */
  .recruit-faq-item>summary::-webkit-details-marker {
    display: none;
  }

  /* 回答文 */
  .recruit-faq-item .recruit-answer {
    max-height: 0;
    overflow: hidden;
    padding: 0 1.2rem;
    line-height: 1.7;
    font-size: 13px;
  }

  /* 余白調整（最後の項目の余白をスッキリ） */
  .recruit-faq-item:last-child {
    border-bottom: none;
  }
}


/************************** COMPANY **************************/
.company-philosophy,
.company-goal {
  margin-bottom: 2.5rem;
}

.company-philosophy-title {
  /* font-size: 1.8rem; */
  /* font-weight: 700; */
  color: var(--text-color);
  /* デフォルト色 */
  text-align: left;
  margin-bottom: 24px;
}

.company-philosophy-box {
  background-color: #fff;
  border-radius: 12px;
  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.06);
  padding: 40px 32px;
  display: flex;
  flex-direction: column;
  gap: 24px;
  line-height: 1.8;
  color: #555;
}

.company-philosophy-box p {
  margin: 0;
  font-size: 16px;
}

.company-goal-title {
  /* font-size: 40px; */
  /* font-weight: 700; */
  color: var(--text-color);
  margin-bottom: 30px;
  text-align: left;
}

.company-goal-box {
  background-color: #fff;
  border-radius: 12px;
  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.06);
  padding: 40px 32px;
  display: flex;
  flex-direction: column;
  gap: 24px;
  line-height: 1.8;
  color: #555;
}

.company-goal-main {
  text-align: center;
  font-size: 16px;
  color: #444;
  line-height: 1.8;
}

.goal-diagram {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 60px;
  flex-wrap: wrap;
  margin: -60px;
}

/* 3つの丸 */
.goal-circle {
  width: 280px;
  height: 280px;
  background-color: #fff;
  border: 10px solid var(--accent-color);
  border-radius: 50%;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 30px 20px;
  text-align: center;
  line-height: 1.6;
  z-index: 2;
}

.goal-circle h3 {
  font-size: 1.1rem;
  font-weight: bold;
  color: var(--main-color);
  margin-bottom: 10px;
}

.goal-circle p {
  font-size: 12px;
  color: var(--text-color);
}

/* 中央の薄い円 */
.goal-center-circle {
  position: absolute;
  width: 340px;
  height: 340px;
  border: 12px solid rgba(139, 30, 30, 0.15);
  border-radius: 50%;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}

/* 丸の位置調整 */
.goal1 {
  transform: translateY(80px);
}

.goal2 {
  transform: translateY(80px);
}

.goal3 {
  transform: translateY(0px);
}

.company-greeting-container {
  display: flex;
  gap: 2rem;
  align-items: flex-start;
  flex-direction: row;
  /* 常に横並びがデフォルト */
}

.company-greeting-left {
  flex: 1 1 500px;
  text-align: center;
}

.company-greeting-photo {
  width: 100%;
  max-width: 500px;
  aspect-ratio: 4/3;
  /* 横長 */
  background: #ccc;
  border-radius: 12px;
  margin: 0 auto 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.company-greeting-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.company-greeting-message span {
  display: inline-block;
  font-size: 20px;
  margin-bottom: 1rem;
  font-weight: 500;
}

.company-greeting-right {
  flex: 2 1 600px;
  font-size: 0.95rem;
  line-height: 1.9;
  color: #444;
}

.company-greeting-right p {
  margin-bottom: 1rem;
  font-size: 16px;
}

.company-profile {
  margin: 3rem auto;
}

.company-profile-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 16px;
  background: #fff;
}

.company-profile-table th,
.company-profile-table td {
  padding: 0.9rem 1rem;
  border-bottom: 1px solid #ddd;
  text-align: left;
  vertical-align: top;
}

.company-profile-table th {
  width: 20%;
  font-weight: 600;
  color: var(--text-color);
  background: #f9f9f9;
}

.company-profile-table td a {
  color: var(--main-color);
  text-decoration: none;
}

.company-profile-table td a:hover {
  text-decoration: underline;
}

.company-isms-image img {
  width: 100px;
  height: auto;
}

.company-access {
  margin: 4rem auto;
}

.company-map-container {
  width: 100%;
  height: 400px;
  margin-bottom: 1.5rem;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
}

.company-access-info {
  font-size: 0.95rem;
  line-height: 1.7;
  color: #444;
}

.company-address {
  font-weight: 600;
  margin-bottom: 1rem;
  text-align: center;
}

.company-transport p {
  margin: 0.3rem 0;
}

@media (max-width: 900px) {
  .goal-diagram {
    flex-direction: column;
    gap: 10px;
    margin: 0px;
  }

  .goal1,
  .goal2,
  .goal3 {
    transform: none;
    width: 200px;
    height: 200px;
  }

  .goal-center-circle {
    display: none;
  }
}

/* 📱 スマホ（幅768px以下）では上下配置 */
@media (max-width: 768px) {


  .company-philosophy-box {
    padding: 24px 20px;
    gap: 16px;
  }

  .company-philosophy-box p {
    margin: 0;
    font-size: 12px;
  }

  .company-greeting-container {
    flex-direction: column;
    /* スマホだけ縦並び */
    align-items: center;
  }

  .company-greeting-left,
  .company-greeting-right {
    flex: 1 1 100%;
    text-align: center;
    font-size: 14px;
  }

  .company-greeting-right {
    text-align: left;
    /* 本文だけ左揃えで読みやすく */
    margin-top: 1rem;
  }

  .company-greeting-message span {
    display: inline-block;
    font-size: 16px;
    margin-bottom: 1rem;
    font-weight: 500;
  }

  .company-greeting-right p {
    margin-bottom: 10px;
    font-size: 13px;
  }

  .company-profile {
    margin: 3rem auto;
  }

  .company-profile-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    background: #fff;
  }

  .company-profile-table th,
  .company-profile-table td {
    padding: 0.8rem 0.9rem;
    border-bottom: 1px solid #ddd;
    text-align: left;
    vertical-align: top;
  }

  .company-profile-table th {
    width: 26%;
    font-weight: 600;
    color: var(--text-color);
    background: #f9f9f9;
  }

  .company-profile-table td a {
    color: var(--main-color);
    text-decoration: none;
  }

  .company-profile-table td a:hover {
    text-decoration: underline;
  }

  .company-isms-image img {
    width: 100px;
    height: auto;
  }

  .company-access {
    margin: 4rem auto;
  }

  .company-map-container {
    width: 100%;
    height: 400px;
    margin-bottom: 1.5rem;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
  }

  .company-access-info {
    font-size: 13px;
    line-height: 1.7;
    color: #444;
  }

  .company-address {
    font-weight: 600;
    margin-bottom: 1rem;
    text-align: center;
  }

  .company-transport p {
    margin: 0.3rem 0;
  }
}



/************************** CONTACT **************************/
.contact-container-fluid *,
.contact-container-fluid *::before,
.contact-container-fluid *::after {
  box-sizing: border-box;
}

/* --- contact全体 --- */
.contact-container-fluid {
  display: flex;
  flex-direction: column;
  padding-left: 0;
  padding-right: 0;
}

.contact-contents {
  background-color: transparent;
  border-radius: 0.5rem;
  border: none;
  box-sizing: border-box;
  box-shadow: none;
  margin: 0 auto;
  padding: 2.5rem 5rem;
  max-width: 1360px;
  width: 100%;
}

/* --- ステップバー --- */
.contact-step-bar {
  margin: 16px 0;
  padding: 8px 0;
}

.contact-steps {
  height: 60px;
  display: flex;
  list-style: none;
  padding: 0;
  margin: 0;
  gap: 10px;
}

.contact-steps li {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 1;
  position: relative;
  text-align: center;
  padding: 10px 0;
  background: #ddd;
  color: #000;
  font-weight: bold;
  overflow: hidden;
  border: none;
}

/* 中央のステップ（両端斜め） */
.contact-steps li.contact-step-middle {
  transform: skewX(20deg);
}

.contact-steps li.contact-step-middle>span {
  display: inline-block;
  transform: skewX(-20deg);
}

/* 最初のステップ（両端斜め） */
.contact-steps li.contact-step-first {
  clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 100%, 0 100%);
  position: relative;
}

.contact-steps li.contact-step-first::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: 20px;
  height: 100%;
  background: inherit;
  transform: skewX(20deg);
  transform-origin: top right;
  pointer-events: none;
}

/* 最後のステップ（両端斜め） */
.contact-steps li.contact-step-last {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 20px 100%);
  position: relative;
}

.contact-steps li.contact-step-last::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 20px;
  height: 100%;
  background: inherit;
  transform: skewX(20deg);
  transform-origin: bottom left;
  pointer-events: none;
}

/* アクティブステップ */
.contact-steps li.active {
  background: #0342ab;
  color: #fff;
  border: none;
}

/* --- フォームエリア --- */
.contact-form-fieldset {
  margin-bottom: 2rem;
}

/* 設問タイトル */
.contact-form-fieldset legend {
  margin-bottom: 0.5rem;
}

.contact-form-fieldset>legend {
  color: #424242;
  font-size: 1rem;
  font-weight: bold;
  word-break: break-word;
}

/* 設問回答のラベル */
.contact-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* 回答エリア */
.contact-form-control {
  display: block;
  width: 100%;
  padding: 0.5rem 0.75rem;
  font-weight: 400;
  color: #424242;
  background-color: #ffffff;
  background-clip: padding-box;
  border: 1px solid rgba(189, 189, 189, 0.75);
  appearance: none;
  border-radius: 0.5rem;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

input.contact-form-control[type=text],
input.contact-form-control[type=email],
input.contact-form-control[type=tel] {
  display: inline-block;
  width: auto;
  max-width: 100%;
  min-width: 5rem;
}

input.contact-form-company[type=text],
input.contact-form-name[type=text],
input.contact-form-kana[type=text],
input.contact-form-phone-number[type=tel] {
  width: 100%;
}

input.contact-form-email[type=email] {
  width: 100%;
}

.contact-form-select {
  padding: 0.5rem 2.25rem 0.5rem 0.75rem;
  -moz-padding-start: calc(0.75rem - 3px);
  font-weight: 400;
  color: #424242;
  background-color: #ffffff;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23424242' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  background-size: 16px 12px;
  border: 1px solid rgba(189, 189, 189, 0.75);
  border-radius: 0.5rem;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
  appearance: none;
}

select.contact-form-select {
  display: inline-block;
  width: 100%;
}

.contact-form-fieldset input,
.contact-form-fieldset button,
.contact-form-fieldset select,
.contact-form-fieldset optgroup,
.contact-form-fieldset textarea {
  margin: 0;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

.contact-invalid-feedback {
  display: block;
}

.contact-invalid-feedback {
  display: none;
  width: 100%;
  margin-top: 0.25rem;
  font-size: 0.875em;
  color: #e53935;
}

.contact-form-label-radio-checkbox {
  padding: 0.4rem 0.5rem;
  background: transparent;
  border: rgba(189, 189, 189, 0.75) solid 1px;
  border-radius: 0.5rem;
  color: #424242;
  cursor: pointer;
  display: inline-block;
  width: 100% 656px;
}

.contact-form-label-radio-checkbox {
  background: #ffffff;
}

input.contact-form-check-input {
  display: inline-block;
  width: auto;
  margin-top: 0;
  margin-right: 0.5rem;
}

/* テキストエリア文字数 */
.contact-char-count {
  font-size: 12px;
  color: #666;
  margin-top: 4px;
  text-align: left;
}

/* 必須マーク */
.contact-form-fieldset.contact-required>legend:after,
.contact-form-fieldset-privacypolicy.contact-required:after,
.contact-form-group.contact-required>label:after {
  content: "※";
  color: #e53935;
  padding: 0.25rem 0.4rem;
  border-radius: 0.4rem;
  font-size: 0.65rem;
  margin-left: 0.25rem;
  vertical-align: super;
  white-space: nowrap;
}

/* リクエストボタン */
.contact-button input[type="submit"] {
  width: 200px;
  font-size: 18px;
  padding: 12px 24px;
  line-height: 1.2;
  background-color: #0342ab;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  display: inline-block;
  vertical-align: middle;
}

.contact-button input[type="submit"]:hover {
  background-color: #004080;
}

.contact-button {
  text-align: center;
}

/* バリデーション */
.contact-was-validated input.contact-form-control[type=text].is-invalid,
.contact-was-validated input.contact-form-control[type=email].is-invalid,
.contact-was-validated input.contact-form-control[type=tel].is-invalid,
.contact-was-validated textarea.contact-form-control.is-invalid,
.contact-was-validated select.is-invalid,
.contact-was-validated .form-label-radio-checkbox.is-invalid {
  background-color: #ffffff;
  border-color: #e53935;
  box-shadow: 0 0 0 0 #e53935;
  color: #616161;
}

.contact-was-validated input.contact-form-control[type=text].is-valid,
.contact-was-validated input.contact-form-control[type=email].is-valid,
.contact-was-validated input.contact-form-control[type=tel].is-valid,
.contact-was-validated textarea.contact-form-control.is-valid,
.contact-was-validated select.is-valid,
.contact-was-validated .form-label-radio-checkbox.valid {
  background-color: #ffffff;
  border-color: #43a047;
  box-shadow: 0 0 0 0 #43a047;
  color: #616161;
}

.contact-was-validated .contact-form-label-radio-checkbox.is-invalid,
.contact-was-validated .contact-form-label-radio-checkbox.valid {
  background: #ffffff;
  color: #686868;
}

.contact-was-validated .contact-form-control.is-invalid {
  padding-right: calc(1.5em + 1rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-exclamation-circle-fill' viewBox='0 0 16 16'%3e%3cpath fill='%23e53935' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.25rem) center;
  background-size: calc(0.75em + 0.5rem) calc(0.75em + 0.5rem);
}

.contact-was-validated .contact-form-control.is-valid {
  padding-right: calc(1.5em + 1rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-check-circle-fill' viewBox='0 0 16 16'%3e%3cpath fill='%2343a047' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z'/%3e%3c/svg%3e");
  background-position: right 0.75rem center, center right 2.25rem;
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.25rem) center;
  background-size: calc(0.75em + 0.5rem) calc(0.75em + 0.5rem);
}

.contact-was-validated .contact-form-select.is-valid:not([multiple]):not([size]),
.contact-was-validated .contact-form-select.is-valid:not([multiple])[size="1"],
.contact-form-select.is-valid:not([multiple]):not([size]),
.contact-form-select.is-valid:not([multiple])[size="1"] {
  padding-right: 4.125rem;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23424242' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-check-circle-fill' viewBox='0 0 16 16'%3e%3cpath fill='%2343a047' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z'/%3e%3c/svg%3e");
  background-position: right 0.75rem center, center right 2.25rem;
  background-size: 16px 12px, calc(0.75em + 0.5rem) calc(0.75em + 0.5rem);
}

.contact-was-validated .contact-form-select.is-invalid:not([multiple]):not([size]),
.contact-was-validated .contact-form-select.is-invalid:not([multiple])[size="1"],
.contact-form-select.is-invalid:not([multiple]):not([size]),
.contact-form-select.is-invalid:not([multiple])[size="1"] {
  padding-right: 4.125rem;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23424242' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-exclamation-circle-fill' viewBox='0 0 16 16'%3e%3cpath fill='%23e53935' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z'/%3e%3c/svg%3e");
  background-position: right 0.75rem center, center right 2.25rem;
  background-size: 16px 12px, calc(0.75em + 0.5rem) calc(0.75em + 0.5rem);
}

/* 送信の最終確認文言　*/
.contact-container-fluid .contact-confirm-message {
  font-size: 1.4em;
  font-weight: bold;
  text-align: center;
  color: #333;
}

/* 確認画面・完了画面の項目全体を四角で囲む */
.contact-container-fluid .contact-confirm-box,
.contact-container-fluid .contact-complete-box {
  border: 2px solid #004080;
  border-radius: 18px;
}

/* 確認項目 */
.contact-container-fluid .contact-confirm-box .contact-answer-row {
  display: flex;
}

.contact-container-fluid .contact-confirm-box .contact-answer-label,
.contact-container-fluid .contact-confirm-box .contact-answer-value {
  width: 50%;
  box-sizing: border-box;
}

.contact-container-fluid .contact-confirm-box .contact-answer-label {
  font-weight: bold;
}

.contact-container-fluid .contact-confirm-box .contact-answer-value {
  box-sizing: border-box;
  word-wrap: break-word;
  overflow-wrap: break-word;
  white-space: normal;
}

/* --- 完了画面 --- */
.contact-container-fluid .contact-complete-box {
  padding: 30px;
  margin: 0 auto;
  text-align: center;
  font-weight: 600;
}

.contact-container-fluid .contact-complete-box h2 {
  font-size: 1.8em;
  margin-bottom: 30px;
}

.contact-container-fluid .contact-complete-box p {
  margin: 5px 0;
  font-size: 1em;
}

.contact-container-fluid .contact-complete-box .contact-phone-number {
  height: 22px;
  vertical-align: bottom;
}

/* スマホ表示：縦1列表示に変更 */
@media screen and (max-width: 768px) {
  .contact-contents {
    padding: 2.5rem 1rem;
  }

  .contact-container-fluid .contact-confirm-box .contact-answer-row {
    display: block;
  }

  .contact-container-fluid .contact-confirm-box .contact-answer-label {
    width: 100%;
    margin-bottom: 0.3rem;
  }

  .contact-container-fluid .contact-confirm-box .contact-answer-value {
    width: 100%;
  }

  .contact-container-fluid .contact-complete-box {
    padding: 1rem;
  }

  .contact-container-fluid .contact-confirm-message {
    font-size: 1em;
  }

  .contact-contents .contact-confirm-box .contact-confirm-box-group,
  .contact-contents .contact-confirm-box .contact-complete-box-group {
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }
}

/***********************************************************/