/*------------------------
  mainvisual
------------------------*/
.grid-container {
  background: url(../images/common/bg-top01.png) no-repeat center top/100% auto;
}

.kv {
  position: relative;
  width: 100%;
  height: 100vh;
  height: 100dvh;
  min-height: 40rem;
  max-height: 52rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  padding-top: 6.25rem;
  margin-bottom: 7.5rem;
}
.kv .kv-text {
  position: relative;
}
.kv h1 {
  text-align: center;
  font-weight: 900;
  font-size: 3.75rem;
  letter-spacing: 0.03em;
  line-height: 1.2;
  margin-bottom: 1.25rem;
}
.kv h1 span {
  display: block;
}
.kv h1 small {
  display: block;
  margin-bottom: 0.625rem;
  font-size: 1.25rem;
  font-weight: 700;
  letter-spacing: 0.1em;
}
.kv .ellipse {
  position: absolute;
  background-color: rgba(255, 255, 255, 0.7);
  border-radius: 50%;
  font-size: 1.0625rem;
  font-weight: 700;
  color: #0092FF;
  text-align: center;
  line-height: 1.8;
  display: flex;
  align-items: center;
  justify-content: center;
}
.kv .ellipse.large {
  width: 10.3125rem;
  height: 10.3125rem;
  bottom: 0;
  left: -10.9375rem;
  animation-delay: 0.8s;
}
.kv .ellipse.small {
  width: 8.125rem;
  height: 8.125rem;
  bottom: 3.75rem;
  right: -9.375rem;
  animation-delay: 1s;
}
.kv .ellipse.contact {
  width: 10rem;
  height: 10rem;
  flex-direction: column;
  right: 2.5rem;
  bottom: 1.875rem;
  background: transparent;
}
.kv .ellipse.contact::before, .kv .ellipse.contact::after {
  content: "";
  position: absolute;
  box-sizing: border-box;
  border-radius: 50%;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  height: 100%;
}
.kv .ellipse.contact::before {
  z-index: 0;
  background: #FFF url(../images/top/kv-contact.svg) no-repeat center/100% auto;
}
.kv .ellipse.contact::after {
  z-index: 0;
  background: #0092FF url(../images/top/kv-contact.svg) no-repeat center/100% auto;
  transition: all 0.2s;
  -webkit-transition: all 0.2s;
  width: 0;
  height: 0;
}
.kv .ellipse.contact:hover::after {
  width: 100%;
  height: 100%;
}
.kv .ellipse.contact a {
  color: #0092FF;
  font-size: 0.875rem;
  position: relative;
  z-index: 2;
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: 100%;
  grid-template-rows: 2;
  align-items: center;
  padding: 2.8125rem 0;
}
.kv .ellipse.contact a svg {
  fill: #0092FF;
  width: 2.25rem;
  display: block;
  margin: 0 auto 0.625rem;
}
.kv .ellipse.contact a:hover {
  color: #FFF;
}
.kv .ellipse.contact a:hover svg {
  fill: #FFF;
}
.kv p.phrase {
  letter-spacing: 0.1em;
  text-align: center;
  line-height: 1.7;
  position: relative;
  z-index: 1;
}
.kv .kv-img {
  position: relative;
  width: 100%;
}
.kv .loop {
  position: absolute;
  z-index: 0;
  left: 0;
  top: -1.875rem;
  width: 100%;
  overflow: hidden;
  display: flex;
  justify-content: center;
  width: 100%;
  height: 8.125rem;
}
.kv .loop img {
  width: auto;
  max-width: none;
  height: 100%;
}
.kv figure {
  margin-top: 2.5rem;
  position: relative;
  text-align: center;
}
.kv figure img {
  position: relative;
  max-width: 53.75rem;
  width: 80%;
  margin: 0 auto;
  display: block;
}
.kv .kv-scroll {
  position: absolute;
  font-family: "Poppins", sans-serif;
  font-size: 0.875rem;
  font-weight: 700;
  color: #0092FF;
  letter-spacing: 0.29em;
  transform: rotate(90deg);
  transform-origin: left bottom;
  left: 2.5rem;
  bottom: 8.125rem;
  width: 8.125rem;
}
.kv .kv-scroll::after {
  content: "";
  position: absolute;
  left: 6.5em;
  top: 50%;
  transform: translateY(-50%);
  width: 2.5rem;
  height: 0.3125rem;
  background-color: #0092FF;
  border-radius: 0 0.15625rem 0.15625rem 0;
  display: block;
  animation: scroll-down 2.2s infinite;
  -webkit-animation: scroll-down 2.2s infinite;
}

@keyframes scroll-down {
  0% {
    width: 0;
  }
  40% {
    width: 2.5rem;
  }
}
@media screen and (max-width: 768px) {
  .kv {
    height: auto;
    min-height: auto;
    max-height: none;
    padding-top: 6.25rem;
    margin-bottom: 9.375rem;
  }
  .kv h1 {
    font-size: 3rem;
    margin-bottom: 0;
    position: relative;
    z-index: 2;
  }
  .kv h1 small {
    font-size: 1.0625rem;
  }
  .kv p.phrase {
    font-size: 0.875rem;
  }
  .kv .ellipse-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: -0.9375rem 0 0.625rem;
  }
  .kv .ellipse {
    position: relative;
    font-size: 0.75rem;
    font-weight: 700;
    margin: 0 0.625rem;
  }
  .kv .ellipse.large {
    width: 7.5rem;
    height: 7.5rem;
    bottom: auto;
    left: auto;
  }
  .kv .ellipse.small {
    width: 5.625rem;
    height: 5.625rem;
    bottom: auto;
    right: auto;
  }
  .kv .ellipse.contact {
    width: 8.125rem;
    height: 8.125rem;
    right: 1.25rem;
    bottom: -1.875rem;
    position: absolute;
  }
  .kv .ellipse.contact a {
    font-size: 0.8125rem;
    padding: 2.5rem 0;
  }
  .kv .ellipse.contact a svg {
    width: 1.625rem;
    margin: 0 auto 0.3125rem;
  }
  .kv .loop {
    position: absolute;
    z-index: 0;
    left: 0;
    top: 1.25rem;
    height: 5rem;
  }
  .kv figure img {
    width: 75%;
  }
  .kv .kv-scroll {
    font-size: 0.625rem;
    left: 1.25rem;
    bottom: 2.5rem;
    width: 6.25rem;
  }
}
@media screen and (max-width: 576px) {
  .kv {
    margin-bottom: 6.25rem;
  }
  .kv .ellipse.contact {
    width: 6.875rem;
    height: 6.875rem;
    right: 0;
    bottom: -2.5rem;
  }
  .kv .ellipse.contact a {
    padding: 2.1875rem 0;
    font-size: 0.625rem;
  }
  .kv .ellipse.contact a svg {
    width: 1.375rem;
  }
  .kv .loop {
    display: none;
  }
  .kv figure {
    margin-top: 1.25rem;
  }
  .kv .kv-scroll {
    bottom: 5rem;
  }
}
/*------------------------
  NEWS
------------------------*/
.news-sect .ly-wrapper {
  position: relative;
  z-index: 4;
}
.news-sect .ly-row {
  justify-content: space-between;
}
.news-sect .col2 {
  width: 44%;
  position: relative;
  z-index: 3;
}
.news-sect .col2 + .col2 {
  margin-top: 8.125rem;
}
@media screen and (max-width: 768px) {
  .news-sect .ly-wrapper {
    padding-top: 1.25rem;
  }
  .news-sect .col2 {
    width: 100%;
  }
  .news-sect .col2 + .col2 {
    margin: 5rem 0 2.5rem;
  }
}

/*------------------------
  recruit
------------------------*/
.recruit-sect {
  position: relative;
}
.recruit-sect::before {
  content: "";
  position: absolute;
  box-sizing: border-box;
  z-index: 1;
  top: -5rem;
  left: 0;
  width: 100%;
  height: 70%;
  min-height: 12.5rem;
  background: url(../images/common/bg-pattern.png) no-repeat center bottom/100% auto;
}
.recruit-sect .ly-container {
  position: relative;
  z-index: 2;
}
.recruit-sect .col-right {
  position: relative;
}
.recruit-sect .icon-main {
  position: absolute;
  top: -16.5625rem;
  left: 0;
}
.recruit-sect .icon-main img {
  width: 12.5rem;
}
@media screen and (max-width: 768px) {
  .recruit-sect::before {
    top: -2.5rem;
    height: 22.5rem;
    min-height: auto;
  }
  .recruit-sect h2 + .ly-row {
    flex-direction: column-reverse;
  }
  .recruit-sect .col-right {
    position: static;
  }
  .recruit-sect .icon-main {
    position: absolute;
    top: -10rem;
    left: 16.25rem;
  }
  .recruit-sect .icon-main img {
    width: 8.75rem;
  }
}

/*------------------------
  seminar
------------------------*/
.seminar-sect .ly-wrapper {
  position: relative;
}
.seminar-sect .icon-main {
  position: absolute;
  z-index: 3;
  left: 3.75rem;
  bottom: -5.625rem;
}
.seminar-sect .icon-main img {
  width: 10.625rem;
}
@media screen and (max-width: 768px) {
  .seminar-sect .ly-wrapper {
    padding-top: 2.5rem;
    padding-bottom: 1.875rem;
  }
  .seminar-sect h2 + .ly-row {
    flex-direction: column-reverse;
  }
  .seminar-sect .icon-main {
    position: absolute;
    z-index: 3;
    left: 17.5rem;
    bottom: auto;
    top: -0.9375rem;
  }
  .seminar-sect .icon-main img {
    width: 4.375rem;
  }
}

/*------------------------
  sns
------------------------*/
.sns-cont .img-title {
  width: 65%;
  display: block;
  margin: 0 auto;
}
.sns-cont .ly-row {
  margin: 1.5625rem 0 3.125rem;
  justify-content: space-between;
}
.sns-cont .ly-row .col2 {
  width: 46%;
}
.sns-cont .ly-row .fb-page {
  width: 100%;
}
@media screen and (max-width: 768px) {
  .sns-cont .img-title {
    width: 85%;
  }
  .sns-cont .ly-row {
    margin: 1.25rem 0 2.5rem;
  }
}
@media screen and (max-width: 576px) {
  .sns-cont .ly-row .col2 {
    width: 100%;
  }
  .sns-cont .ly-row .col2 + .col2 {
    margin-top: 1.25rem;
  }
}