html {
  overflow-x: hidden;
}

body {
  overflow-x: hidden;
}

:root {
  --primary-color:#05253B;
  --secondary-color:#EBE4D3;
  --accent-color:#EDDA0C;
}

/* 375px 1200px */
:root {
  --fs-ss: clamp(0.625rem, 0.583rem + 0.145vw, 0.8rem);
  /* 通常テキスト */
  --fs-s: clamp(0.875rem, 0.663rem + 0.567vw, 1.75rem);
  /* h3 */
  --fs-m: clamp(1.25rem, 1.174rem + 0.202vw, 1.5625rem);
  /* h2 */
  --fs-l: clamp(1.4375rem, 1.18rem + 0.688vw, 2.5rem);
}

main {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: var(--fs-s);
  font-weight: bold;
}

h1{
  font-size: 2rem;
  color: #ffffff;
  background-color: var(--primary-color);
  display: inline;
  padding-left: 10px;
  padding-right: 10px;
  padding-bottom: 0.1em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

h2{
  font-size: var(--fs-l);
  font-weight: 900;
  text-align: center;
  margin-bottom: 30px;
}

h3{
  font-size: var(--fs-m);
  font-weight: 900;
  margin-bottom: 20px;
}

h4{
  font-size: var(--fs-s);
  font-weight: bold;
}

img{
  width: 100%;
}





.pc{
  display: none;
}

.bg-navy{
  background-color: var(--primary-color);
  color: #ffffff;
}

.bg-navytile{
  background-color: #1B394C;
  background-image: url(images/gridbg.png);
  background-size: 50px 50px;
  color: #ffffff;
}

.bg-tilewhite{
  background-image: url(images/gridbg.png);
  background-size: 50px 50px;
}

/* メインビジュアルエリア */
.kv-subtitle{
  background-color: var(--primary-color);
  color: #ffffff;
  height: 70px;
  line-height: 1.2;
  padding: 10px;
}

.kv-subtitle p{
  font-size: var(--fs-m);
}

.kv-title {
  width: 100%;
  aspect-ratio: 750 / 858;
  background-image: url(images/sustainable-training_spkv.webp);
  background-size: cover;
  background-position: center;
  position: relative;
}

.kv-title-inner{
  position: absolute;
  top:50%;
  left:10px;
  transform: translate(0,-50%);
}

.kv-title1{
  font-size: var(--fs-m);
}

.h1box{
  margin-top: 20px;
  margin-bottom: 20px;
}

.kv-title2{
  font-size: var(--fs-m);
  color: #ffffff;
  background-color: #000000;
  display: inline;
  padding-left: 10px;
  padding-right: 10px;
  padding-bottom: 0.1em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

.kv-title span{
  color: var(--accent-color);
}

/* 問題と課題エリア */
.problem{
  padding: 40px 20px 0 20px;
  color: var(--primary-color);
}

.problem h3{
  text-align: center;
}

.problem-ex{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px 10px;
  justify-content: center;
  margin-top: 40px;
}

.problem-ex-box{
  width: 100%;
  aspect-ratio: 350 / 230;
}

.problem-ex-box:nth-child(odd){
  text-align: center;
  background-image: url(images/commentframe_l.png);
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  position: relative;
}

.problem-ex-box:nth-child(even){
  text-align: center;
  background-image: url(images/commentframe_r.png);
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  position: relative;
}

.problem-ex h4{
  color: #ffffff;
  background-color: var(--primary-color);
  border-radius: 50px;
  width: 80%;
  position: absolute;
  top:0;
  left:50%;
  transform: translate(-50%,-50%);
}

.problem-ex-box p{
  font-size: var(--fs-ss);
  position: absolute;
  top: 40%;
  left: 50%;
  transform: translate(-50%,-50%);
  width: 100%;
  padding: 10px;
}

.peoplecut{
  width: 60%;
  margin: 20px auto 0 auto;
}

/* 研修について */
.explanation{
  padding: 40px 20px;
}

.explanation h2{
  line-height: 1.8;
}

.explanation p{
  line-height: 1.8;
}

.explanation span{
  color: var(--primary-color);
  font-weight: 900;
  background-color: var(--accent-color);
  padding-left: 10px;
  padding-right: 10px;
  padding-bottom: 0.1em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* アプローチ */
.approach{
   padding-top: 40px;
   padding-bottom: 40px;
}

.approach-txt{
  padding: 0 20px;
  line-height: 1.8;
}

.approach span{
  color: var(--primary-color);
  background-color: var(--accent-color);
  padding-left: 10px;
  padding-right: 10px;
  padding-bottom: 0.1em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

.bg-baige{
  background-color: var(--secondary-color);
  padding: 20px;
  border-radius: 20px;
  color: var(--primary-color);
  font-size: var(--fs-ss);
  margin: 30px 10px 0 10px;
}

table {
  width: 100%;
  table-layout: fixed;
}

th:first-child,
td:first-child {
  width: 20%;
}

th:last-child,
td:last-child {
  width: 20%;
}

.bd-b{
  border-bottom: 2px solid var(--primary-color);
}

.bd-r{
  border-right: 2px solid var(--primary-color);
}

.bg-baige table th,
.bg-baige table td{
  text-align: center;
  padding:8px;
}

/* point1 */
.point1{
  padding: 40px 20px;
}

.point-desc{
  text-align: center;
}

.point-pic {
  width: 250px;
  height: 250px;
  margin: 20px auto;
  background-image: url(images/sustainable-training_img.webp);
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--primary-color);
  font-size: var(--fs-m);
  font-weight: 900;
  text-align: center;
  line-height: 1.3;
}

.point1 span{
  color: var(--accent-color);
}

.point-pic span{
  font-size: 2rem;
}

.point1-cards {
  margin-top: 20px;
}

.point1-card {
  color: var(--primary-color);
  font-size: var(--fs-m);
  text-align: center;
  background: var(--secondary-color);
  padding: 20px;
  border-radius: 20px;
  margin: 20px;
}

.point1-card h4{
  font-size: var(--fs-m);
  font-weight: 900;
}

.point1-card-txt{
  font-size: var(--fs-s);
  text-align: left;
}

/* point2 */
.point2{
  padding: 40px 20px;
}

.banner-box{
  background-color: #ffffff;
  padding: 10px;
  margin-top: 20px;
}

.banner-box-top {
  display: grid;
  grid-template-columns: 1fr 1fr; /* 2列 */
  gap: 10px 10px;
}

/* 左の大きい画像 */
.large {
  grid-row: span 3; /* 縦に3マス分 */
}

.banner-box-middle{
  grid-column: span 2;
  display: grid;
  gap: 10px;
}

.banner-box-bottom {
  grid-column: span 2;
  display: grid;
  grid-template-columns: 1fr 1fr; /* 2列 */
  gap: 10px;
}

.item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* point3 */
.point3{
  padding: 40px 20px;
}

.point3-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  margin-top: 30px;
}

.point3-card-txt {
  background: var(--secondary-color);
  padding: 20px;
  text-align: center;
  color: var(--primary-color);
  font-size: 1.2rem;
  font-weight: 900;
}

/* ボタンエリア */
.button-area{
  padding: 40px 20px;
}

.button-subtxt{
  color: var(--primary-color);
  text-align: center;
  font-size: var(--fs-m);
  font-weight: 900;
}

.button-txt{
  text-align: center;
  color: var(--primary-color);
  font-size: var(--fs-l);
  font-weight: 900;
  line-height: 1.2;
  display: block;
  width: 80%;
  background-color: var(--secondary-color);
  border-radius: 20px;
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.2);
  padding: 10px;
  margin: 30px auto 20px auto;
  position: relative;
}

.button-txt::after{
  content: "";
  position: absolute;
  top: -20px;
  right: -20px;
  width: 70px;
  height: 70px;
  background-image: url("images/buttonicon.png");
  background-size: contain;
  background-repeat: no-repeat;
}





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

  .pc{
    display: block;
  }

  .sp{
    display: none;
  }

  .kv-subtitle1,
  .kv-title-inner,
  .problem,
  .explanation,
  .approach,
  .point1,
  .point2,
  .point3,
  .button-area{
    max-width: 1200px;
    margin: 0 auto;
  }

  h1{
    font-size: 4.2rem;
  }

  h2{
    margin-bottom: 50px;
  }

  /* メインビジュアルエリア */
  .kv-subtitle1{
    height: 50px;
    line-height: 50px;
  }

  .kv-subtitle1{
    padding-left: 20px;
  }

  .kv-title {
    width: 100%;
    aspect-ratio: 1920 / 650;
    background-image: url(images/sustainable-training_pckv.webp);
    background-size: cover;
    background-position: center;
    position: relative;
  }

  .kv-title-inner{
    position: absolute;
    top:50%;
    left:50%;
    transform: translate(-50%,-50%);
    width: 100%;
  }

  .kv-title-inner{
    padding-left: 20px;
  }

  .kv-title1{
    font-size: var(--fs-l);
  }

  /* 問題と課題エリア */
  .problem{
    padding: 100px 20px 0 20px;
  }

  .problem-ex{
    gap:30px;
    margin-top: 50px;
  }

  .problem-ex-box{
    width: 70%;
  }

  .problem-ex-box:first-child,
  .problem-ex-box:last-child{
    margin: 0 0 0 auto;
  }

  .problem-ex-box p{
    font-size: var(--fs-s);
    padding: 20px;
  }

  .peoplecut{
    width: 40%;
    margin: 30px auto 0 auto;
  }

  /* 研修について */
  .explanation{
    padding: 100px 20px;
  }

  /* アプローチ */
  .approach{
   padding-top: 100px;
   padding-bottom: 100px;
  }

  .approach .approach-txt{
    padding: 0 20px;
  }

  .bg-baige{
    padding: 20px;
    border-radius: 20px;
    font-size: var(--fs-s);
    margin: 50px 20px 0 20px;
  }

  .bd-b{
    border-bottom: 3px solid var(--primary-color);
  }

  .bd-r{
    border-right: 3px solid var(--primary-color);
  }

  .bg-baige table th,
  .bg-baige table td{
    padding:20px;
  }

  /* point1 */
  .point1{
    padding: 100px 20px;
  }

  .point1-card-box{
    display: grid;
    place-items: center;
    position: relative;
  }

  .point1-cards {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 200px 60px;
    width: 100%;
    margin-top: 0;
  }

  .point-pic {
    font-size: var(--fs-s);
    position: absolute;
  }

  .point-pic span{
    font-size: 2rem;
  }

  .point1-card {
    padding: 30px;
  }

  .point1-card h4{
    font-size: clamp(1.5rem, 1.273rem + 0.0606vw, 2rem);
  }

  /* point2 */
  .point2{
    padding: 100px 20px;
  }

  .banner-box{
    background-color: #ffffff;
    padding: 10px;
    margin-top: 50px;
  }

  .banner-box-top {
    display: grid;
    grid-template-columns: 2.54fr 7.46fr;
    gap: 10px;
  }

  .banner-box-middle {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    gap: 10px;
  }

  .banner-box-middle2{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-column:  span 4;
    gap: 10px;
  }

  .a{
    grid-column:  span 4;
    grid-row: span 2;
  }

  .d{
    grid-column:  span 4;
  }

  .banner-box-bottom{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    padding-top: 10px;
  }

  .item img {
    width: 100%;
    height: auto;
    object-fit: contain;
  }

  /* point3 */
  .point3{
    padding: 100px 20px;
  }

  .flow img {
    max-width: 80%;
    height: auto;
    display: block;
    margin: 50px auto 30px auto;
  }

  .point3-cards {
    grid-template-columns: repeat(4, 1fr);
  }

  .point3-card-txt{
    font-size: 1.8rem;
    padding: 30px 20px;
  }

  /* ボタンエリア */
  .button-area{
    padding: 100px 20px;
  }

  .button-subtxt{
    font-size: var(--fs-l);
  }

  .button-txt{
    font-size: 3rem;
    padding: 10px;
    margin: 50px auto 20px auto;
    position: relative;
  }

  .button-txt:hover{
    opacity: 1;
    color: #ffffff;
    background-color: var(--primary-color);
  }

  .button-txt::after{
    content: "";
    position: absolute;
    top: -40px;
    right: -40px;
    width: 100px;
    height: 100px;
    background-image: url("images/buttonicon.png");
    background-size: contain;
    background-repeat: no-repeat;
  }

}



@media screen and (min-width: 768px) and (max-width: 1199px){
  h1{
    font-size: 2.5rem;
  }

  .kv-title1{
    font-size: var(--fs-m);
  }

  .kv-title2{
    font-size: var(--fs-s);
  }

  .h1box{
    margin-top: 5px;
    margin-bottom: 5px;
  }

  .point3-card-txt{
    font-size: 1.2rem;
  }

  .button-subtxt{
    font-size: 1.5rem;
  }

  .button-txt{
    font-size: 2rem;
  }
}
