html {
  font-size: 62.5%;
  box-sizing: border-box;
}
*, *::before, *::after {
  box-sizing: inherit;
}
body {
  margin: 0;
  font-family: "Noto Sans JP", "游ゴシック", YuGothic, "Hiragino Kaku Gothic Pro", "Meiryo", sans-serif;
  color: #222;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background: #f5f5f5;
  line-height: 1.7;
}
a {
  color: inherit;
  text-decoration: none;
  box-sizing: border-box;
}
img {
  display: block;
  max-width: 100%;
  height: auto;
}
/* ====================================================
PC / SP 表示切り替え
==================================================== */
/* PC：769px以上 */
@media (min-width: 769px) {
  .pc-only {
    display: block !important;
  }
  .sp-only {
    display: none !important;
  }
  /* タブの pc-only を必ず inline に */
  .tab span.pc-only {
    display: inline !important;
    white-space: nowrap;
  }
}
/* SP：768px以下 */
@media (max-width: 768px) {
  .pc-only {
    display: none !important;
  }
  .sp-only {
    display: block !important;
  }
  /* スライダーのコントローラーを横並びに戻す */
  .job-slider-controls {
    display: flex !important;
    justify-content: center;
    align-items: center;
    gap: 20px;
  }
}
/* =========================
area,inner
========================== */
.area {
  width: 100%;
  padding: 6rem 0;
}
.inner {
  width: 90%;
  max-width: 1200px;
  margin: 0 auto;
}
@media (max-width: 768px) {
  .area {
    padding: 4rem 0 6rem;
  }
}
/* =========================
category-title,category-txt,underline_ol
========================== */
.category-title-en {
  text-align: center;
  font-family: "游明朝", "YuMincho", "Noto Serif JP", serif;
  font-size: 4.5rem;
  margin-bottom: 1rem;
  color: #00693e;
}
.category-title-jp {
  text-align: center;
  font-family: "游明朝", "YuMincho", "Noto Serif JP", serif;
  font-size: 2.4rem;
  margin-bottom: 1rem;
  color: #222222;
}
.category-txt {
  text-align: center;
  margin-bottom: 3rem;
  font-size: 1.6rem;
  font-weight: 500;
  color: #222222;
}
.category-txt-bottom {
  text-align: center;
  margin-top: 3rem;
  font-size: 1.6rem;
  font-weight: 500;
  color: #222222;
}
.underline_ol {
  background: linear-gradient(transparent 80%, #e3b322 80%);
  font-weight: 700;
}
@media(max-width:768px) {
  .category-txt {
    margin-bottom: 0;
  }
  .category-txt-bottom {
    margin-top: 0;
  }
}
/* =========================
header
========================== */
.site-header {
  background: #fff;
  border-bottom: 0.1rem solid #e6e6e6;
  position: relative;
}
.site-header .inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2.0rem 0;
  gap: 1.6rem;
}
.logo img {
  width: 21rem;
  height: auto;
}
.header-cta {
  display: flex;
  gap: 1.2rem;
  align-items: center;
}
.header-cta-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 1.0rem 2.0rem;
  font-size: 1.6rem;
  border-radius: 6rem;
  cursor: pointer;
  border: 0.2rem solid transparent;
  transition: opacity .3s ease, background-color .3s ease;
  font-family: "Yu Mincho", 游明朝体, 游明朝, Meiryo, serif;
}
.btn-primary {
  background: #00693e;
  color: #fff;
  border-color: #00693e;
}
.btn-secondary {
  background: #dba500;
  color: #fff;
  border-color: #dba500;
}
.btn-primary:hover {
  background: transparent;
  color: #00693e;
  border-color: #00693e;
}
.btn-secondary:hover {
  background: transparent;
  color: #dba500;
  border-color: #dba500;
}
.header-cta-btn:hover {
  transition-duration: 0.3s;
}
@media (max-width:768px) {
  .logo {
    margin: 0 auto;
  }
  .header-cta {
    display: none;
  }
  .hero .inner {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }
}
/* =========================
hero
========================== */
.mainV-area {
  width: 100%;
  padding: 0;
}
.hero {
  background: #f5f5f5;
  position: relative;
  overflow: visible;
}
@media (max-width: 768px) {
  picture .hero-image {
    display: inline-block;
    width: 100vw;
  }
}
/* =========================
features
========================== */
.features {
  background: #f6f6f6;
}
.features .items {
  display: flex;
  gap: 2rem;
  justify-content: center;
  align-items: center;
  width: 76.5%;
  margin: 0 auto;
}
.feature {
  text-align: center;
  padding: 0;
}
.feature .title {
  font-family: "Yu Mincho", "游明朝体", "游明朝", "Meiryo", serif;
  font-weight: 700;
  color: #00693e;
  font-size: 2.4rem;
  position: relative;
  white-space: nowrap;
}
.feature .title::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url("../img/catch_img1.png");
  background-size: contain;
}
.feature .title::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url("../img/catch_img2.png");
  background-size: contain;
  background-position: right;
}
.feature .title .desc {
  font-family: "Yu Mincho", "游明朝体", "游明朝", "Meiryo", serif;
  font-weight: 700;
  color: #222222;
  font-size: 2.2rem;
}
@media (max-width: 768px) {
  .features .items {
    width: 100%;
    padding: 0;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0;
  }
  .feature {
    width: calc(100% / 2);
    padding: 1rem 0.5rem;
  }
}
@media (max-width: 480px) {
  .features.area {
    padding: 2rem 0 2rem;
  }
}
/* =========================
cta
========================== */
.cta-area {
  padding: 0 0 10rem;
  text-align: center;
}
.cta-inner {
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cta-btn {
  display: inline-block;
  width: 50rem;
  max-width: 90%;
  padding: 2rem 4.8rem;
  border-radius: 6rem;
  font-size: 2.2rem;
  font-family: "Yu Mincho", "游明朝体", "游明朝", "Meiryo", serif;
  font-weight: 700;
  border: .3rem solid transparent;
}
.cta-btn:hover {
  transition: background-color .3s ease;
}
#cta-base {
  background: #f6f6f6;
  padding: 0 0 5rem;
}
#cta-job-openings {
  background: #f6f6f6;
}
#cta-successful-case {
  background: linear-gradient(90deg, #89c9bf, #bfe6dc);
}
#cta-our-advantage {
  background: #f6f6f6;
}
#cta-service-flow {
  background: linear-gradient(90deg, #89c9bf, #bfe6dc);
}
#cta-QandA {
  background: #f6f6f6;
}
#cta-footer {
  background: #f6f6f6;
}
@media (max-width:768px) {
  .cta-area {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 2rem 0;
    background: transparent;
    z-index: 1200;
  }
  .cta-inner {
    width: 100%;
    display: flex;
    justify-content: center;
  }
  .cta-btn {
    width: 90%;
    padding: 1.5rem;
    font-size: 1.8rem;
    border-radius: 25rem;
  }
  #cta-footer .cta-inner:nth-of-type(2) {
    margin-top: 2rem;
  }
  .site-footer {
    padding: 0 0 20rem !important;
  }
}
/* =========================
job-openings
========================== */
.job-openings {
  background: url(../img/img_bg_left_pc.png), url(../img/img_bg_right_pc.png), #f6f6f6;
  background-size: 30% auto, 30% auto;
  background-position: left -6rem top, bottom right;
  background-repeat: no-repeat, no-repeat;
}
.job-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
  margin-top: 6rem;
}
.job-card {
  background: #fff;
  border-radius: 0.8rem;
  overflow: hidden;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
  display: flex;
  flex-direction: column;
  text-decoration: none;
  font-weight: 700;
}
.job-title {
  background: #0f6948;
  color: #fff;
  padding: 0.8rem 1.2rem;
  font-size: 1.6rem;
  text-align: center;
}
.job-details {
  margin-top: 2rem;
  text-align: center;
  font-size: 1.6rem;
  color: #222222;
}
.job-salary {
  text-align: center;
  font-size: 2rem;
  color: #37720b;
}
.job-id {
  margin-right: 1rem;
  margin-bottom: .8rem;
  text-align: right;
  font-size: 1.2rem;
  color: #888888;
}
/* =========================
js用  job-openings 4) job-openings
========================== */
.job-slider-wrap {
  position: relative;
  width: 100%;
  overflow: hidden;
  margin-top: 2rem;
  border-radius: 0.8rem;
}
.job-slider {
  display: flex;
  transition: transform 0.45s cubic-bezier(.22, .9, .36, 1);
  will-change: transform;
}
.job-slide {
  flex: 0 0 100%;
  min-width: 100%;
  box-sizing: border-box;
  padding: 0 1rem;
}
.job-slide .job-card {
  margin: 0 auto;
  max-width: 36rem;
}
.job-slider-controls {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1.6rem;
  margin-top: 1rem;
}
.job-slider-controls .job-arrow {
  width: 4.4rem;
  height: 4.4rem;
  border-radius: 50%;
  border: none;
  background: #00693e;
  color: #fff;
  font-size: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.job-slider-controls .job-page {
  font-size: 1.7rem;
  color: #222;
  font-weight: 700;
}
@media (max-width:1024px) {
  .cards {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 768px) {
  .cards {
    display: none;
  }
  .job-grid.pc-only {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
  }
  .job-card {
    border-radius: 1.0rem;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
    overflow: hidden;
  }
  .job-title {
    font-size: 1.6rem;
    padding: 1rem;
  }
  .job-details {
    font-size: 1.6rem;
    margin-top: 1.2rem;
  }
  .job-salary {
    font-size: 1.9rem;
  }
  .job-id {
    font-size: 1.2rem;
  }
  .job-slide {
    padding: 0;
  }
  .job-slide .job-card {
    width: 100%;
    max-width: 100%;
  }
  .job-slider-controls.sp-only {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 4rem;
    margin-top: 3rem;
  }
}
@media (max-width: 480px) {
  .job-title {
    font-size: 1.4rem;
    padding: 0.9rem;
  }
  .job-details {
    font-size: 1.4rem;
  }
  .job-salary {
    font-size: 1.7rem;
  }
  .job-arrow {
    width: 4rem;
    height: 4rem;
    font-size: 1.8rem;
  }
  .job-page {
    font-size: 1.4rem;
  }
}
/* =========================
successful-case
========================== */
.successful-case {
  background: linear-gradient(90deg, #89c9bf, #bfe6dc);
  text-align: center;
}
.successful-case .inner {
  text-align: center;
}
.successful-case .category-title-en {
  color: #ffffff;
}
.successful-case .category-title-jp {
  color: #222222;
}
.tab-nav {
  display: flex;
  gap: 1.2rem;
  justify-content: center;
  margin: 6rem 0 0.3rem;
}
.tab {
  padding: 1.0rem 2.0rem;
  background: #f5f5f5;
  border-radius: 0.6rem 0.6rem 0 0;
  cursor: pointer;
  color: #00693e;
  font-size: 1.8rem;
  font-weight: 700;
  width: calc(100% / 3);
  box-sizing: border-box;
}
.tab.active {
  background: #00693e;
  color: #fff;
}
.tab-content {
  background: #fff;
  padding: 5.0rem;
  border-radius: 0rem 0rem 0.6rem 0.6rem;
  margin: 0 auto;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
  /*  display: flex;*/
  gap: 2.0rem;
  align-items: flex-start;
  /*追加*/
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .4s ease, transform .4s ease;
  pointer-events: none;
  display: none;
} /* 非表示がデフォルト */
.tab-content.active {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
  display: flex;
}
.tab-content img {
  width: 38%;
  border-radius: 0.4rem;
}
.tab-content .content-right {
  flex: 1;
  text-align: left;
  font-size: 1.6rem;
  margin-left: 2rem;
}
.successful-case-title-en {
  font-family: '游明朝', 'Noto Serif JP', serif;
  color: #e3b322;
  font-size: 3.6rem;
  margin: 0 0 0.6rem;
}
.successful-case-details {
  font-size: 2.4rem;
  color: #00693e;
  font-weight: 700;
  margin-bottom: 2rem;
}
.successful-case-segment {
  font-size: 2rem;
  display: inline-block;
  margin-right: 1rem;
  padding: 0.1rem 2rem;
  border: 0.2rem solid #00693e;
  border-radius: 0.2rem;
  background: #fff;
}
.successful-case-success {
  font-size: 2.6rem;
  display: inline-block;
  margin-left: 1rem;
}
.successful-case-txt {
  margin-top: 3.0rem;
}
.successful-case-details:nth-of-type(2) {
  font-size: 1.6rem;
  color: #222222;
}
.successful-case-details:nth-of-type(2) .successful-case-segment {
  font-size: 1.6rem;
  color: #222222;
}
/* =========================
js用  successful-case 1) successful-case
========================== */
@media (max-width:768px) {
  .tab-content {
    flex-direction: column;
    padding: 2rem 2rem 4rem;
  }
  .tab-content img {
    width: 100%;
    max-height: 35rem;
    object-fit: cover;
    object-position: top center;
  }
  .tab-content .content-right {
    font-size: 1.5rem;
    margin-left: 0;
  }
  .tab-nav {
    margin: 4rem 0 0.3rem;
  }
  .successful-case-segment {
    font-size: 1.8rem;
  }
  .successful-case-details {
    font-size: 2rem;
  }
  .successful-case-success {
    font-size: 2.2rem;
  }
}
@media (max-width:480px) {
  .tab {
    padding: 0.9rem 1.4rem;
    font-size: 1.4rem;
  }
}
/* =========================
our-advantage
========================== */
.our-advantage {
  background: url(../img/img_bg_left_pc2.png), url(../img/img_bg_right_pc2.png), #f6f6f6;
  background-size: 30% auto, 30% auto;
  background-position: left bottom, right top;
  background-repeat: no-repeat, no-repeat;
}
.adv-block {
  display: flex;
  margin-top: 6rem;
  position: relative;
}
.adv-block:nth-of-type(even) {
  flex-direction: row-reverse;
}
.adv-img {
  position: relative;
  z-index: 1;
  width: 37.5%;
}
.adv-img img {
  width: 100%;
  height: auto;
  display: block;
}
.adv-text {
  position: relative;
  z-index: 2;
  transform: translate(-4rem, 2rem);
  width: 62.5%;
  height: auto;
  padding: 3rem 6rem 3rem 11rem;
  background: #fff;
}
.adv-block:nth-of-type(even) .adv-text {
  transform: translate(4rem, 2rem);
}
.adv-head {
  font-size: 2.4rem;
  font-family: "Yu Mincho", serif;
  color: #00693e;
  margin: 1rem 0 2rem;
  position: relative;
}
.adv-head::before {
  top: -1.5rem;
  left: -7rem;
  position: absolute;
  font-size: 4.0rem;
  color: #00693e;
  font-weight: 700;
}
.adv-01 .adv-head::before {
  content: "01";
}
.adv-02 .adv-head::before {
  content: "02";
}
.adv-03 .adv-head::before {
  content: "03";
}
.adv-04 .adv-head::before {
  content: "04";
}
.adv-desc {
  font-size: 1.6rem;
  line-height: 1.8;
}
@media (max-width: 768px) {
  .category-title-en {
    font-size: 3rem;
  }
  .category-title-jp {
    font-size: 1.8rem;
  }
  .adv-block {
    flex-direction: column;
    gap: 0;
    margin-top: 0rem;
  }
  .adv-block:first-of-type {
    margin-top: 4rem;
  }
  .adv-block:nth-of-type(even) {
    flex-direction: column;
  }
  .adv-block:nth-of-type(even) .adv-text {
    transform: translate(4rem, -4rem);
    padding: 6rem 3rem 3rem 3rem;
  }
  .adv-text, .adv-img {
    width: calc(100% - 4rem);
    position: static;
    transform: none;
  }
  .adv-text {
    transform: translate(4rem, -4rem);
    padding: 6rem 3rem 3rem 3rem;
  }
  .adv-head::before {
    top: -6rem;
    left: 0;
  }
  .adv-num {
    font-size: 3.0rem;
  }
  .adv-head {
    font-size: 2rem;
  }
  .adv-desc {
    font-size: 1.4rem;
  }
}
/* =========================
service-flow
========================== */
.service-flow {
  background: linear-gradient(90deg, #89c9bf, #bfe6dc);
  color: #054c2e;
}
.sec-title {
  text-align: center;
  font-size: 38px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.sec-subtitle {
  text-align: center;
  margin-top: 6px;
  font-size: 18px;
}
.flow-grid {
  width: 100%;
  margin-top: 6rem;
  counter-reset: num;
}
.row1, .row2 {
  width: 100%;
  display: flex;
  gap: 2rem;
}
.row2 {
  margin-top: 4rem;
  justify-content: center;
}
.flow-empty {
  visibility: hidden;
}
.flow-item {
  width: calc(100% / 3);
  position: relative;
  background: #fff;
  border-radius: 12px;
  text-align: center;
  padding: 30px 25px 35px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
  counter-increment: num;
}
.flow-item::before {
  content: counter(num, decimal-leading-zero);
  position: absolute;
  top: -2rem;
  left: -2rem;
  padding: 1.5rem;
  line-height: 1;
  margin: 2rem;
  background: #0a6b45;
  color: #fff;
  border-radius: 0.6rem 0 0.6rem 0;
  font-size: 1.6rem;
}
.flow-title {
  font-size: 2rem;
  margin-bottom: 1.2rem;
  font-weight: 700;
}
.flow-text {
  margin-bottom: 2.5rem;
  font-size: 1.6rem;
  font-weight: 700;
  color: #222222;
}
.flow-note {
  font-size: 1.2rem;
  color: #222222;
}
.flow-img {
  width: 8rem;
  margin: 2rem auto;
}
.flow-slider {
  display: none;
  margin-top: 4rem;
}
.flow-slide {
  display: none;
  background: #fff;
  padding: 3rem 2rem;
  border-radius: 1.2rem;
  text-align: center;
  box-shadow: 0 .4rem 1.4rem rgba(0, 0, 0, 0.08);
}
.flow-slide.active {
  display: block;
}
.flow-nav {
  margin-top: 3rem;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 4rem;
}
.flow-prev, .flow-next {
  width: 4.4rem;
  height: 4.4rem;
  border-radius: 50%;
  border: none;
  background: #0a6b45;
  color: #fff;
  font-size: 2rem;
}
.flow-count {
  font-size: 1.7rem;
  font-weight: 700;
}
/* =========================
qanda
========================== */
.qanda {
  width: 100%;
  background: #f5f7f7;
}
.qanda-list {
  display: flex;
  flex-direction: column;
  gap: 2rem;
  margin-top: 5rem;
}
.qa-item {
  background: #fff;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  font-size: 1.6rem;
}
/* Q の部分 */
.qa-question {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1.6rem 1.8rem;
  border-bottom: 1px solid #ddd;
  background: transparent;
}
.qa-question-txt {
  text-align: left;
  display: flex;
  color: #00693e;
  font-weight: 700;
}
.qa-q {
  font-weight: 700;
  margin-right: 1rem;
  color: #0a5a2c;
}
/* + アイコン */
.qa-icon {
  font-size: 2rem;
  font-weight: bold;
  display: inline-block;
  transition: transform .35s ease;
}
.qa-item.open .qa-icon {
  transform: rotate(45deg);
}
/* --- A（アンサー） --- */
.qa-answer {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  padding: 0 1.8rem;
  transition:
    max-height .45s ease, opacity .35s ease, padding .35s ease;
}
/* 開いた時（JSで max-height が動的に設定される） */
.qa-answer.open {
  opacity: 1;
  padding: 1.6rem 1.8rem;
  background: #e8f0ee;
}
/* A テキスト */
.qa-answer p {
  margin: 0;
  display: flex;
}
.qa-a-mark {
  font-weight: bold;
  color: #d49a00;
  margin-right: 1rem;
}
.txt-underline {
  text-decoration: underline;
}
@media (max-width: 599px) {
  .qanda {
    padding: 3rem 1rem;
  }
}
/* =========================
to-top
========================== */
.to-top {
  position: fixed;
  right: 2.0rem;
  bottom: 8.0rem;
  width: 4.4rem;
  height: 4.4rem;
  background: #0b6b44;
  color: #fff;
  border-radius: 50%;
  display: none;
  align-items: center;
  justify-content: center;
  font-size: 2.0rem;
  cursor: pointer;
  z-index: 1500;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15);
}
@media (max-width: 768px) {
  .to-top {
    display: flex;
    bottom: 20.0rem;
  }
}
/* =========================
footer
========================== */
.site-footer {
  padding: 3.0rem 0;
  text-align: center;
  background: #f6f6f6;
}
.footer-logo {
  width: 200px;
  height: 48px;
  margin: 0 auto 1.0rem;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #666;
  border-radius: 0.4rem;
}
.footer-copy {
  font-size: 1.4rem;
  color: #777;
}
@media (max-width: 768px) {
  .footer-copy {
    font-size: 1.2rem;
  }
}