@charset "utf-8";

/* ==========================================================================
   Base & Reset
   ========================================================================== */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 62.5%;
}

body {
  font-family: 'Noto Sans JP', "游ゴシック体", "Yu Gothic", YuGothic, "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  font-size: 1.4rem;
  line-height: 1.8;
  color: #000;
  -webkit-text-size-adjust: 100%;
}

@media (min-width: 992px) {
  body { font-size: 18px; }
}

img {
  max-width: 100%;
  height: auto;
  vertical-align: bottom;
}

a {
  text-decoration: none;
  color: #009AA7;
  transition: 0.3s;
}

a:hover {
  color: #009AA7;
}

ul {
  list-style: none;
}

/* ==========================================================================
   Common Components
   ========================================================================== */
.wrap {
  width: 92%;
  max-width: 1150px;
  margin: 0 auto;
}

.mwrap {
  width: 92%;
  max-width: 1560px;
  margin: 0 auto;
}

.flex {
  display: flex;
  flex-wrap: wrap;
}

.justify {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  padding: 0;
}

.figtree {
  font-family: "Figtree", sans-serif;
}

.en {
  font-family: 'Urbanist', sans-serif;
}

/* Embed Components (Map, Video) */
.gmap, .gmap2, .youtube {
  position: relative;
  height: 0;
  padding-top: 30px;
  overflow: hidden;
}

.gmap, .youtube {
  padding-bottom: 40.25%;
}

.gmap iframe, .gmap object, .gmap embed,
.youtube iframe, .youtube object, .youtube embed {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
}

.gmap iframe, .youtube iframe {
  height: 100%;
}

.contents p {
  margin-bottom: 2em;
}

/* ==========================================================================
   Layout Blocks
   ========================================================================== */
.container {
  position: relative;
  overflow: hidden;
}

.main-contents {
  padding-top: 102px;
}

/* Header */
.header {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 100;
  width: 100%;
  padding: 18px 0;
}

.header__inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 92%;
  max-width: 1475px;
  margin: 0 auto;
  padding: 10px 70px 10px 40px;
  background: #fff;
  border: 3px solid #042AC7;
  border-radius: 3em;
}

.header__logo {
  flex-shrink: 0;
  font-size: 44px;
  line-height: 1;
}

a.header__logo-link {
  color: #06239B;
  font-weight: 500;
  letter-spacing: 2px;
}

a.header__logo-link:hover {
  color: #06239B;
}

/* Navigation */
.header__nav {
  flex-shrink: 0;
}

.gnav__list {
  display: flex;
}

.gnav__link {
  display: block;
  margin-left: 4rem;
  padding: 0.5rem 0;
  text-align: center;
}

.gnav__link span {
  display: block;
  text-align: center;
}

.gnav__link span:nth-of-type(1) {
  color: #08ADF7;
  font-size: 23px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 2px;
  transform: scaleX(1.1);
}

.gnav__link span:nth-of-type(2) {
  color: #707070;
  font-size: 15px;
  font-weight: 300;
}

.gnav__link:hover,
.gnav__link--active {
  border-bottom: 2px solid #F79428;
}

/* ==========================================================================
   Footer Blocks
   ========================================================================== */
.footer {
  background: linear-gradient(135deg, #4DE7F4, #06239B);
  color: #fff;
}

.footer__inner {
  width: 94%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 96px 0 86px;
}

.footer__logo {
  margin-bottom: 2rem;
}

a.footer__logo-link {
  color: #fff;
  font-size: 55px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 2px;
}

a.footer__logo-link:hover {
  color: #fff;
}

.footer__table {
  text-align: left;
  font-size: 14px;
  font-style: normal;
  font-weight: 300;
  line-height: 1.2;
  letter-spacing: 4px;
  border-collapse: separate;
  border-spacing: 0 10px;
}

.footer__table-label {
  padding: 0 0.5em;
  font-weight: 300;
  border-right: 1px solid #fff;
}

.footer__table-data {
  padding: 0 0.5em;
}

/* Footer Navigation */
.fnav__list {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
}

.fnav__item {
  position: relative;
  font-size: 16px;
}

.fnav__item:before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  display: block;
  width: 8px;
  height: 8px;
  background: url(../img/common/footnav_list.png) no-repeat center center;
  background-size: contain;
  transform: translateY(-50%);
}

.fnav__link {
  color: #fff;
  padding: 0 2.4rem 0 1.5rem;
}

.fnav__link:hover{
    color: #fff;
    opacity:0.7;
}

.fnav__item:last-of-type .fnav__link {
  padding-right: 0;
}

.footer__copyright {
  margin-top: 2.4rem;
  padding-top: 8rem;
  border-top: 1px solid rgba(255, 255, 255, 1);
  font-size: 13px;
  text-align: right;
}

/* ==========================================================================
   Page Specific Components
   ========================================================================== */
.page-title {
  position: relative;
  margin: 0 0;
  padding: 200px 0 120px;
  background: url(../img/common/headbg.png) no-repeat top center;
  background-size: cover;
  text-align: center;
}

.page-title:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -11px;
  width: 100%;
  height: 11px;
  background: linear-gradient(to right, #4DE7F4, #06239B);
}

.page-title__en {
  color: #08ADF7;
  font-size: 65px;
  font-weight: 400;
  line-height: 1.2;
  transform: scaleX(1.1);
}

.page-title__ja {
  color: #313131;
  font-size: 18px;
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: 0.2em;
}

.page-box {
  margin-top: 157px;
  margin-bottom: 157px;
}

/* Top Page Elements */
.top {
  background: linear-gradient(to bottom, 
    #ffffff 0%, #ffffff 15%, 
    #FFFCDE 15%, #FFFCDE 85%, 
    #ffffff 85%, #ffffff 100%
  );
}

.main-visual {
  position: relative;
}

.main-visual__inner {
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  font-size: 70px;
  font-weight: 500;
  line-height: 1.6;
  color: #fff;
  text-align: center;
  text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
  transform: translateY(-50%);
}

.main-visual .slick-slider {
  position: relative;
  margin-bottom: 30px;
}

.main-visual .slick-slider:after {
  content: "";
  position: absolute;
  bottom: -17px;
  left: 0;
  display: block;
  width: 100%;
  height: 17px;
  background: linear-gradient(135deg, #4DE7F4, #06239B);
}

.main-visual .slick-dots {
  bottom: -60px;
}

.main-visual .slick-dots li, 
.main-visual .slick-dots li button {
  width: 15px;
  height: 15px;
}

.main-visual .slick-dots li {
  background: #4DE7F4;
  border-radius: 50%;
}

.main-visual .slick-dots li button:before {
  display: none;
}

.main-visual .slick-dots li.slick-active {
  background: #06239B;
}

/* Home Sections */
.home-section {
  margin: 0 0 96px;
}

.home-section:last-of-type {
  margin: 0;
}

.home-section:nth-of-type(even) .home-section__container {
  flex-direction: row-reverse;
}

.home-section__text-block {
  width: 41%;
  padding: 60px 40px 46px 60px;
  background: url(../img/top/bg01.png) no-repeat top left;
  background-size: cover;
}

.home-section__image-block {
  width: 59%;
}

.home-section__title {
  margin: 0 0 24px;
}

.home-section__title .en {
  display: block;
  color: #fff;
  font-size: 55px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 4px;
}

.home-section__title .ja {
  display: block;
  font-size: 15px;
  font-weight: 400;
}

p.home-section__desc {
  margin: 0 0 2em;
  line-height: 1.8em;
}

/* Buttons */
a.common-btn {
  position: relative;
  display: block;
  width: 244px;
  padding: 2em;
  font-size: 15px;
  line-height: 1.2;
  color: #0F1419;
  background: #fff;
  border-radius: 3em;
}

a.common-btn:after {
  content: "";
  position: absolute;
  top: 50%;
  right: 10px;
  display: block;
  width: 54px;
  height: 54px;
  background: url(../img/top/arrow01.png) no-repeat center center;
  background-size: contain;
  transform: translateY(-50%);
}

a.common-btn:hover {
  opacity: 0.7;
}

a.common-btn:hover:after {
  background: url(../img/top/arrow01_on.png) no-repeat center center;
  background-size: contain;
}

/* Home Section Backgrounds */
.home-section--business .home-section__image-block {
  background: url(../img/top/business.png) no-repeat center center;
  background-size: cover;
}

.home-section--works .home-section__image-block {
  background: url(../img/top/works.png) no-repeat center center;
  background-size: cover;
}

.home-section--mission .home-section__image-block {
  background: url(../img/top/mission.png) no-repeat center center;
  background-size: cover;
}

/* ==========================================================================
   Business Page
   ========================================================================== */
.business-unit {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 60px;
  margin: 0 0 90px;
  padding: 0 0 90px;
  border-bottom: 1px solid #202931;
}

.business-unit-title {
  grid-column: 1;
  margin-bottom: 30px;
  color: #06239B;
  font-size: 40px;
  font-weight: 400;
  line-height: 1;
}

.business-unit-img {
  grid-column: 2;
  grid-row: 1 / span 3;
}

.business-unit-img img {
  display: block;
  width: 100%;
}

.business-unit-text {
  grid-column: 1;
  font-size: 15px;
  line-height: 2.2em;
}

.business-unit-btn {
  margin-top: 30px;
  font-size: 16px;
  text-align: right;
}

.business-unit-btn a {
  position: relative;
  display: inline-block;
  padding-right: 30px;
  color: #202931;
}

.business-unit-btn a span {
  text-decoration: underline;
}

.business-unit-btn a:after {
  content: "";
  position: absolute;
  top: 50%;
  right: 0;
  display: block;
  width: 25px;
  height: 25px;
  background: url(../img/business/arrow01.png) no-repeat center center;
  background-size: contain;
  transform: translateY(-50%);
}

.business-unit-btn a:hover {
  opacity: 0.7;
}

.business-unit:nth-of-type(even) .business-unit-title,
.business-unit:nth-of-type(even) .business-unit-text {
  grid-column: 2;
}

.business-unit:nth-of-type(even) .business-unit-img {
  grid-column: 1;
}

/* ==========================================================================
   Works Page
   ========================================================================== */
.works-unit {
  margin: 0 0 90px;
}

.works-unit-title {
  margin-bottom: 10px;
  color: #06239B;
  font-size: 35px;
  font-weight: 400;
  line-height: 1;
}

.works-unit-list {
  margin-top: 30px;
}

.works-unit-list div {
  width: 31%;
}

.works01 {
  padding-top: 157px;
  padding-bottom: 157px;
  background: url(../img/works/bg01.png) no-repeat top center;
  background-size: cover;
}

.works02 {
  padding-top: 157px;
  padding-bottom: 157px;
  background: url(../img/works/bg02.png) no-repeat top center;
  background-size: cover;
}

.works-unit-list01 {
  border-top: 1px solid #202931;
}

.works-unit-list01 th {
  padding: 1em 1em 1em 0;
  color: #2759A7;
  font-weight: 500;
  border-bottom: 1px solid #202931;
}

.works-unit-list01 td {
  padding: 1em 1em 1em;
  font-weight: 400;
  border-bottom: 1px solid #202931;
}

.works02 .works-unit-list01 {
  margin-left: auto;
  margin-right: 0;
}

/* ==========================================================================
   Company Page
   ========================================================================== */
.company-title {
  margin: 0 0 3em;
}

.company-title__en {
  color: #DDD;
  font-size: 40px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 2px;
}

.company-title__ja {
  color: #313131;
  font-size: 14px;
  font-weight: 400;
  letter-spacing: 2px;
}

.company-inner {
  position: relative;
}

.company-list {
  width: 100%;
}

.company-list th {
  padding: 1em 1em 1em 0;
  color: #2759A7;
  font-weight: 400;
  border-bottom: 1px solid #C7C7C7;
}

.company-list td {
  padding: 1em 1em 1em 0;
  font-weight: 400;
  border-bottom: 1px solid #C7C7C7;
}

.company-img {
  position: absolute;
  top: 0;
  right: 0;
  width: 45%;
}

.company02 {
  padding: 157px 0;
  background: #FFFCDE;
}

.access01 {
  margin: 0 0 3em;
}

.access02-unit {
  width: 48%;
}

.company02 .company-title,
.access02-unit-title {
  margin: 0 0 1em;
}

/* ==========================================================================
   Mission Page
   ========================================================================== */
.mission-title {
  margin: 0 0 2em;
}

.mission-title__en {
  color: #DDD;
  font-size: 40px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 2px;
}

.mission-title__ja {
  color: #0F1419;
  font-size: 50px;
  font-weight: 400;
}

p.mission-text {
  line-height: 3em;
}

.mission-name {
  display: block;
  text-align: right;
}

.mission-img {
  display: block;
  width: 100%;
  height: 656px;
  background: url(../img/mission/bg01.png) no-repeat center center;
  background-size: cover;
}

/* ==========================================================================
   Contact Page
   ========================================================================== */
.step {
  width: 100%;
  margin-bottom: 50px;
}

.step div {
  position: relative;
  width: 30%;
  padding: 15px;
  font-size: 23px;
  background: #fff;
  border: 2px solid #056CF8;
  text-align: center;
}

.step div:after {
  content: "";
  position: absolute;
  top: 50%;
  right: -18%;
  z-index: -1;
  display: block;
  width: 18%;
  height: 2px;
  background: #056CF8;
}

.step div:nth-of-type(3):after {
  display: none;
}

.step .active {
  background: #056CF8;
  color: white;
}

p.contact-text {
  margin: 0 0 2em;
  text-align: center;
}

.contact-table {
  width: 100%;
  border-collapse: collapse;
}

.contact-table th {
  width: 200px;
  padding: 20px;
  font-weight: 400;
  vertical-align: top;
  text-align: left;
}

.contact-table td {
  padding: 20px;
  vertical-align: top;
}

input, textarea {
  width: 100%;
  padding: 10px;
  background: #FAFAFA;
  border: 1px solid #9F9F9F;
  font-size: 18px;
}

textarea {
  height: 180px;
}

.btn-area {
  margin-top: 40px;
  text-align: center;
}

.btn-area button,
a.topback {
  position: relative;
  display: inline-block;
  width: 264px;
  padding: 12px 80px;
  color: #202931;
  font-size: 23px;
  background: #fff;
  border: 6px solid #056CF8;
  border-radius: 6px;
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  cursor: pointer;
}

.btn-area button:after,
a.topback:after {
  content: "";
  position: absolute;
  top: 50%;
  right: 0.4em;
  display: block;
  width: 40px;
  height: 40px;
  background: url(../img/contact/arrow01.png) no-repeat center center;
  background-size: contain;
  transform: translateY(-50%);
}

.btn-area button.back:after,
a.topback:after {
  left: 0.4em;
  right: auto;
  background: url(../img/contact/arrow02.png) no-repeat center center;
  background-size: contain;
}

.btn-area__confirm {
  justify-content: center;
  gap: 70px;
}

a.topback {
  display: block;
  width: 300px;
  margin: 0 auto;
  text-align: center;
}

/* ==========================================================================
   Utilities & Responsive Basic
   ========================================================================== */
.only_pc {
  display: block;
}

.only_sp {
  display: none;
}

.spnav {
  display: none;
}

.spnav__list {
  display: none;
}

@media screen and (min-width: 768px) {
  .snav, .spnav, .spnav__list {
    display: none;
  }
  .header {
    height: 70px;
  }
  .main-contents {
    padding-top: 70px;
  }
}