@charset "utf-8";

html {
  font-size: 100%;
  scroll-padding-top: 100px;
  scroll-behavior: smooth;
}

/* ==========================
    カスタムプロパティ
========================== */
:root {
  --main: #0d72a2;
  --02_main: #1b4472;
  --primary: #0e41a4;
  --color-text-primary: #000000;
  --black: #282828;
}

body {
  width: 100%;
  min-width: 1440px;
  font-family: "Noto Sans JP", sans-serif;
}

button:hover,
a:hover {
  opacity: 0.7;
  transition: all 0.3s;
}

.sp {
  display: none;
}

.pc {
  display: block;
}

.wrap {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
}

.en {
  font-family: "Outfit", sans-serif;
}

.noto {
  line-height: 1.8;
  font-size: 16px;
  font-weight: 400;
}

.js_up {
  transform: translateY(50px);
  opacity: 0;
  transition: all 1s ease var(--delay) !important;
}

.js_up.is-inview {
  transform: translateY(0);
  opacity: 1;
}

.js_r {
  transform: translateX(50px);
  opacity: 0;
  transition: all 1s ease var(--delay) !important;
}

.js_r.is-inview {
  transform: translateX(0);
  opacity: 1;
}

.js_l {
  transform: translateX(-50px);
  opacity: 0;
  transition: all 1s ease var(--delay) !important;
}

.js_l.is-inview {
  transform: translateX(0);
  opacity: 1;
}

.fade {
  opacity: 0;
  transition: all 1s ease var(--delay) !important;
}

.fade.is-inview {
  opacity: 1;
}

@media all and (min-width: 768px) {
  [href^="tel"] {
    pointer-events: none;
  }
}

/* ---------------------header-------------------- */

.header {
  height: 0 !important;
  position: sticky;
  top: 0;
  z-index: 100000000000;
  background-color: transparent !important;
}

.header > div {
  display: flex;
  padding: 13px 40px;
  justify-content: space-between;
  align-items: center;
  background-color: transparent;
}

.header > div.scroll {
  background-color: rgba(255, 255, 255, 0.9);
}

.header .logo {
  width: 332px;
}

.header nav {
  display: flex;
  align-items: center;
}

.header_nav {
  display: flex;
  column-gap: 40px;
  align-items: center;
  color: var(--main);
}

.header_nav .accordion {
  display: block;
  position: relative;
}

.accordion dt {
  display: block;
  position: relative;
  cursor: pointer;
  padding-right: 16px;
  font-weight: 500;
  line-height: 40px;
}

.accordion dt::after {
  content: "";
  display: block;
  width: 8px;
  aspect-ratio: 2/1;
  background: url(../img/down_arrow.svg) no-repeat center/cover;
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
}

.accordion .dd {
  width: 204px;
  padding-top: 30px;
  opacity: 0;
  color: var(--text-main);
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateY(-100vh) translateX(-50%);
  transition: opacity ease-in, translateY 0.2s;
}

.accordion:hover .dd {
  transform: translateY(0) translateX(-50%);
  opacity: 1;
}

.accordion .dd dd {
  border-bottom: 1px solid rgba(44, 179, 234, 0.8);
  background-color: rgba(255, 255, 255, 0.8);
  position: relative;
}

.accordion dd::before {
  content: "";
  width: 4px;
  aspect-ratio: 1/2;
  background: url(/assets/img/right_arrow.svg) no-repeat center/cover;
  position: absolute;
  top: 50%;
  left: 16px;
  transform: translateY(-50%);
}

.accordion .dd dd:last-child {
  border-bottom: none;
}

.accordion dd:hover {
  opacity: 0.8;
}

.accordion dd a {
  display: block;
  width: 100%;
  padding: 8px 16px 8px 28px;
}

.accordion dd a:hover {
  opacity: 1;
}

.contact_link {
  display: block;
  width: 74px;
  aspect-ratio: 1/1;
  background-image: url(/assets/img/contact.svg),
    url(/assets/img/contact_hover.svg);
  background-size: cover, 0 0;
}

.contact_link:hover {
  background-size: 0 0, cover;
  opacity: 1;
}

/* ---------------------main-------------------- */
.visually_hidden {
  display: block !important;
  width: 4px !important;
  height: 4px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  opacity: 0 !important;
  overflow: hidden !important;
  visibility: visible !important;
}

h2 .en {
  display: block;
  font-size: 48px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--black);
}

h2 .ja {
  display: block;
  padding-left: 48px;
  line-height: 1.4;
  font-weight: 500;
  color: var(--main);
  position: relative;
}

h2 .ja::before {
  content: "";
  display: block;
  width: 40px;
  aspect-ratio: 40/12;
  background: url(/assets/img/h2_ja_before.svg) no-repeat center center/cover;
  position: absolute;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
}

.btn {
  display: block;
  width: fit-content;
  color: var(--main);
  padding: 5px 60px 16px 0;
  font-size: 16px;
  line-height: 1.8;
  font-weight: 400;
  position: relative;
}

.btn:hover {
  opacity: 1;
}

.btn::before {
  content: "";
  width: 100%;
  border-bottom: 2px solid;
  border-image: linear-gradient(
      to right,
      rgba(1, 64, 96, 0.8),
      rgba(19, 169, 233, 0.8)
    )
    1;
  position: absolute;
  right: 0;
  bottom: 0;
}

.btn:hover::before {
  width: 0;
  animation: border_anim 0.7s ease;
}

@keyframes border_anim {
  0% {
    width: 100%;
  }
  100% {
    width: 0%;
  }
}

.btn::after {
  content: "";
  display: block;
  width: 40px;
  aspect-ratio: 1/1;
  background-image: url(/assets/img/btn.svg), url(/assets/img/btn_hover.svg);
  background-size: cover, 0 0;
  position: absolute;
  top: 0;
  right: 0;
}

.btn:hover::after {
  background-size: 0 0, cover;
}

/* ---------------------sub_mv-------------------- */
.sub_mv {
  width: 100%;
  height: 443px;
}

.sub_mv h1 {
  padding-top: 130px;
  padding-left: 80px;
  color: white;
  line-height: 1.4;
  font-weight: 500;
  text-shadow: 0 4px 4px rgba(0, 0, 0, 0.3);
}

.sub_mv h1 .en {
  display: block;
  font-size: 80px;
}

.sub_mv h1 .ja {
  display: block;
  font-size: 20px;
}

.breadcrumbs {
  display: flex;
  margin-top: 164px;
  margin-right: 40px;
  column-gap: 20px;
  justify-content: end;
  position: relative;
  z-index: 100;
}

.breadcrumbs li {
  font-size: 15px;
  color: white;
}

.breadcrumbs li::before {
  content: "―";
  margin-right: 20px;
}

.breadcrumbs li:first-child::before {
  content: "";
  margin: 0;
}

.back {
  margin-top: -86px;
  background: url(/assets/img/back.png) no-repeat center top/100% 887px;
}

/* ---------------------footer-------------------- */
/* ---------------------contact-------------------- */
.contact {
  padding: 150px 0 144px;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 1) 0%,
    rgba(19, 169, 233, 1) 50%,
    rgba(1, 64, 96, 1) 100%
  );
}

.contact .wrap {
  display: flex;
  width: 100%;
  column-gap: 56px;
  align-items: center;
  justify-content: center;
  color: white;
}

.contact h2 {
  margin-bottom: 19px;
}

.contact h2 .en,
.contact h2 .ja {
  color: white;
}

.contact address dl {
  display: flex;
  width: fit-content;
  column-gap: 48px;
}

.contact dl > a {
  display: block;
  width: 280px;
  padding: 20px 0;
  text-align: center;
  border: 1px solid white;
}

.contact dl > a:hover {
  background-color: rgba(255, 255, 255, 0.2);
  opacity: 1;
}

.contact address dt {
  margin-bottom: 20px;
  padding-top: 46px;
  font-size: 20px;
  font-weight: 500;
  line-height: 40px;
  position: relative;
}

.contact .tel dt::before {
  content: "";
  display: block;
  width: 38px;
  aspect-ratio: 1/1;
  background: url(/assets/img/tel.svg) no-repeat center center/cover;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

.contact .tel dd {
  font-size: 32px;
  font-weight: 600;
  line-height: 40px;
}

.contact .web dt::before {
  content: "";
  display: block;
  width: 42px;
  aspect-ratio: 42/38;
  background: url(/assets/img/web.svg) no-repeat center center/cover;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

.contact .web dd {
  width: fit-content;
  margin: 0 auto;
  padding: 5px 60px 16px 0;
  border-bottom: 2px solid white;
  position: relative;
}

.contact .web dd::after {
  content: "";
  display: block;
  width: 40px;
  aspect-ratio: 1/1;
  background: url(../img/web_btn.svg) no-repeat center/cover;
  position: absolute;
  top: 0;
  right: 0;
}

/* ---------------------footer_nav-------------------- */
.footer_nav {
  width: 100%;
  margin-top: -84px;
  padding: 104px 0 38px;
  background: url(/assets/img/footer_bg.png) no-repeat center top/100% 535px;
}

.footer_nav .flex {
  display: flex;
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding-bottom: 48px;
  align-items: stretch;
  justify-content: space-between;
  border-bottom: 1px solid #42baca;
  position: relative;
}

.footer_nav .flex::after {
  content: "";
  display: block;
  width: 205px;
  aspect-ratio: 205/238;
  background: url(/assets/img/mark.png) no-repeat center center/cover;
  position: absolute;
  bottom: -18px;
  right: -40px;
}

.footer_nav address {
  text-align: center;
}

.footer_nav .logo {
  display: block;
  width: 238px;
  margin: 0 auto 32px;
}

.footer_nav .logo img {
  width: 100%;
  aspect-ratio: 238/117;
  object-fit: cover;
}

.footer_nav .add {
  margin-bottom: 32px;
  font-size: 15px;
  line-height: 1.8;
  font-weight: 400;
  color: var(--black);
}

.footer_nav .pdf {
  display: block;
  width: 248px;
  margin: 0 auto;
  aspect-ratio: 248/60;
  border: 2px solid;
  border-image: linear-gradient(to right, #014060, #13a9e9) 1;
  align-content: center;
}

/* .footer_nav .pdf{
    visibility: hidden;
} */

.pdf span {
  display: block;
  width: fit-content;
  margin: 0 auto;
  padding-left: 50px;
  color: var(--main);
  line-height: 1.14;
  text-align: start;
  position: relative;
}

.pdf span::before {
  content: "";
  display: block;
  width: 40px;
  aspect-ratio: 1/1;
  background-image: url(/assets/img/download.svg),
    url(/assets/img/download_hover.svg);
  background-size: cover, 0 0;
  position: absolute;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
}

.pdf:hover {
  opacity: 1;
}

.pdf:hover span::before {
  background-size: 0 0, cover;
}

.footer_nav nav {
  display: flex;
  height: auto;
  padding-top: 36px;
  flex-direction: column;
  justify-content: space-between;
}

.nav1 {
  display: flex;
  width: fit-content;
  column-gap: 80px;
}

.footer_nav .nav1 .en {
  display: block;
  margin-bottom: 2px;
  font-size: 24px;
  color: white;
  font-weight: 500;
  letter-spacing: 0.05em;
}

.footer_nav .nav1 .ja {
  display: block;
  margin-bottom: 18px;
  padding-left: 20px;
  font-size: 13px;
  letter-spacing: 0.05em;
  font-weight: 500;
  color: white;
  position: relative;
}

.footer_nav .nav1 .ja::before {
  content: "";
  display: block;
  width: 7px;
  aspect-ratio: 1/1;
  border-radius: 50%;
  background: linear-gradient(
    90deg,
    rgba(19, 169, 233, 1) 0%,
    rgba(1, 64, 96, 1) 100%
  );
  position: absolute;
  top: 50%;
  left: 5px;
  transform: translateY(-50%);
}

.footer_nav .nav1 dd {
  margin-bottom: 8px;
  padding-left: 20px;
  font-size: 14px;
  line-height: 1.8;
  color: #176e00;
  position: relative;
}

.footer_nav .nav1 dd::before {
  content: "";
  display: block;
  width: 7px;
  aspect-ratio: 1/1;
  border-radius: 50%;
  background: linear-gradient(
    90deg,
    rgba(255, 255, 109, 1) 0%,
    rgba(88, 163, 31, 1) 100%
  );
  position: absolute;
  top: 50%;
  left: 5px;
  transform: translateY(-50%);
}

.footer_nav .nav1 dd:last-child {
  margin-bottom: 0;
}

.footer_nav .nav1 dd:has(a:hover)::before {
  opacity: 0.7;
  transition: all 0.3s;
}

.footer_nav .nav2 {
  display: flex;
  column-gap: 48px;
  align-items: center;
  font-size: 14px;
  font-weight: 400;
  color: #797979;
}

.footer_nav .nav2 li:first-child img {
  width: 176px;
}

.sdgs_icon {
  background-color: #ffffff;
  padding: 12px;
  display: inline-block;
}

.footer_nav .copy {
  width: 100%;
  max-width: 1280px;
  margin: 29px auto 0;
}

.copy small {
  font-size: 12px;
  font-weight: 400;
  color: #797979;
}

@media screen and (max-width: 750px) {
  html {
    scroll-padding-top: calc((100 / 390) * 66 * 1vw);
  }

  body {
    min-width: 0;
  }

  .sp {
    display: block;
  }

  .pc {
    display: none;
  }

  .wrap {
    max-width: calc((100 / 390) * 358 * 1vw);
  }

  .noto {
    font-size: calc((100 / 390) * 15 * 1vw);
  }

  .js_up {
    transform: translateY(calc((100 / 390) * 50 * 1vw));
  }

  /* ---------------------header-------------------- */
  .header > div {
    padding: calc((100 / 390) * 9 * 1vw) calc((100 / 390) * 16 * 1vw);
    background-color: transparent;
  }

  .header .logo {
    width: calc((100 / 390) * 261 * 1vw);
  }

  .header nav {
    display: block;
  }

  .header_nav {
    display: none;
  }

  /* ---------------------main-------------------- */
  h2 .en {
    font-size: calc((100 / 390) * 36 * 1vw);
  }

  h2 .ja {
    padding-left: calc((100 / 390) * 47 * 1vw);
    font-size: calc((100 / 390) * 15 * 1vw);
  }

  h2 .ja::before {
    width: calc((100 / 390) * 39 * 1vw);
  }

  .btn {
    padding: 0 calc((100 / 390) * 50 * 1vw) calc((100 / 390) * 10 * 1vw) 0;
    font-size: calc((100 / 390) * 15 * 1vw);
  }

  .btn::before {
    border-bottom: calc((100 / 390) * 2 * 1vw) solid;
  }

  .btn::after {
    width: calc((100 / 390) * 30 * 1vw);
  }

  /* ---------------------sub_mv-------------------- */
  .sub_mv {
    width: 100%;
    height: calc((100 / 390) * 219 * 1vw);
  }

  .sub_mv h1 {
    padding-top: calc((100 / 390) * 71 * 1vw);
    padding-left: calc((100 / 390) * 16 * 1vw);
    text-shadow: 0 calc((100 / 390) * 4 * 1vw) calc((100 / 390) * 4 * 1vw)
      rgba(0, 0, 0, 0.3);
  }

  .sub_mv h1 .en {
    font-size: calc((100 / 390) * 40 * 1vw);
  }

  .sub_mv h1 .ja {
    font-size: calc((100 / 390) * 16 * 1vw);
  }

  .breadcrumbs {
    margin-top: calc((100 / 390) * 73 * 1vw);
    margin-right: calc((100 / 390) * 16 * 1vw);
    column-gap: calc((100 / 390) * 10 * 1vw);
  }

  .breadcrumbs li {
    font-size: calc((100 / 390) * 12 * 1vw);
  }

  .breadcrumbs li::before {
    margin-right: calc((100 / 390) * 10 * 1vw);
  }

  .back {
    margin-top: calc((100 / 390) * -42 * 1vw);
    background: url(/assets/img/back_sp.png) no-repeat center top/100%
      calc((100 / 390) * 512 * 1vw);
  }

  /* ---------------------footer-------------------- */
  /* ---------------------contact-------------------- */
  .contact {
    padding: calc((100 / 390) * 75 * 1vw) 0 calc((100 / 390) * 123 * 1vw);
    background: linear-gradient(
      180deg,
      rgba(255, 255, 255, 1) 0%,
      rgb(19, 169, 233) 20%,
      rgb(1, 64, 96) 100%
    );
  }

  .contact .wrap {
    display: block;
    text-align: center;
  }

  .contact .texts {
    margin-bottom: calc((100 / 390) * 32 * 1vw);
  }

  .contact h2 {
    margin-bottom: calc((100 / 390) * 19 * 1vw);
  }

  .contact h2 .en,
  .contact h2 .ja {
    color: white;
  }

  .contact h2 .ja {
    width: fit-content;
    margin: 0 auto;
  }

  .contact address dl {
    display: block;
    width: 100%;
  }

  .contact dl > a {
    width: calc((100 / 390) * 280 * 1vw);
    margin: 0 auto;
    padding: calc((100 / 390) * 20 * 1vw) 0;
    border: calc((100 / 390) * 1 * 1vw) solid white;
  }

  .contact address dt {
    margin-bottom: 0;
    padding-top: calc((100 / 390) * 46 * 1vw);
    font-size: calc((100 / 390) * 16 * 1vw);
    line-height: calc((100 / 390) * 40 * 1vw);
  }

  .contact .tel {
    margin-bottom: calc((100 / 390) * 24 * 1vw);
  }

  .contact .tel dt {
    margin-bottom: calc((100 / 390) * 4 * 1vw);
  }

  .contact .tel dt::before {
    width: calc((100 / 390) * 38 * 1vw);
  }

  .contact .tel dd {
    font-size: calc((100 / 390) * 32 * 1vw);
    line-height: calc((100 / 390) * 40 * 1vw);
  }

  .contact .web dt {
    margin-bottom: calc((100 / 390) * 16 * 1vw);
  }

  .contact .web dt::before {
    width: calc((100 / 390) * 42 * 1vw);
  }

  .contact .web dd {
    padding: 0 calc((100 / 390) * 50 * 1vw) calc((100 / 390) * 10 * 1vw) 0;
    border-bottom: calc((100 / 390) * 2 * 1vw) solid white;
  }

  .contact .web dd::after {
    width: calc((100 / 390) * 30 * 1vw);
  }

  /* ---------------------footer_nav-------------------- */
  .footer_nav {
    margin-top: calc((100 / 390) * -34 * 1vw);
    padding: calc((100 / 390) * 80 * 1vw) 0 calc((100 / 390) * 29 * 1vw);
    background: url(/assets/img/footer_bg_sp.png) no-repeat center top/cover;
  }

  .footer_nav .flex {
    display: block;
    max-width: calc((100 / 390) * 328 * 1vw);
    padding-bottom: calc((100 / 390) * 40 * 1vw);
    border-bottom: calc((100 / 390) * 1 * 1vw) solid #42baca;
  }

  .footer_nav .flex::after {
    width: calc((100 / 390) * 157 * 1vw);
    bottom: 0;
    right: calc((100 / 390) * -9 * 1vw);
  }

  .footer_nav .logo {
    width: calc((100 / 390) * 150 * 1vw);
    margin: 0 auto calc((100 / 390) * 24 * 1vw);
  }

  .footer_nav .add {
    margin-bottom: calc((100 / 390) * 24 * 1vw);
    font-size: calc((100 / 390) * 12 * 1vw);
  }

  .footer_nav .pdf {
    width: calc((100 / 390) * 208 * 1vw);
    aspect-ratio: 208/55;
    border: calc((100 / 390) * 1 * 1vw) solid white;
  }

  .pdf span {
    padding-left: calc((100 / 390) * 43 * 1vw);
    color: white;
    font-size: calc((100 / 390) * 13 * 1vw);
  }

  .pdf span::before {
    width: calc((100 / 390) * 33 * 1vw);
    aspect-ratio: 1/1;
    background: url(/assets/img/download_sp.svg) no-repeat center center/cover;
  }

  .footer_nav .pdf {
    display: none;
  }

  .pdf:hover {
    opacity: 0.7;
  }

  .pdf:hover span::before {
    background-size: cover;
  }

  .footer_nav nav {
    display: block;
    padding-top: 0;
  }

  .footer_nav .nav1 {
    display: flex;
    width: calc((100 / 390) * 330 * 1vw);
    height: calc((100 / 390) * 345 * 1vw);
    margin: calc((100 / 390) * 76 * 1vw) auto calc((100 / 390) * 64 * 1vw);
    flex-wrap: wrap;
    row-gap: calc((100 / 390) * 36 * 1vw);
    column-gap: calc((100 / 390) * 24 * 1vw);
  }

  .footer_nav .nav1 > li:nth-child(odd) {
    width: calc((100 / 390) * 160 * 1vw);
  }

  .footer_nav .nav1 .en {
    margin-bottom: calc((100 / 390) * 2 * 1vw);
    font-size: calc((100 / 390) * 24 * 1vw);
  }

  .footer_nav .nav1 .ja {
    margin-bottom: calc((100 / 390) * 18 * 1vw);
    padding-left: calc((100 / 390) * 20 * 1vw);
    font-size: calc((100 / 390) * 13 * 1vw);
  }

  .footer_nav .nav1 .ja::before {
    width: calc((100 / 390) * 7 * 1vw);
    left: calc((100 / 390) * 5 * 1vw);
  }

  .footer_nav .nav1 dd {
    margin-bottom: calc((100 / 390) * 8 * 1vw);
    padding-left: calc((100 / 390) * 20 * 1vw);
    font-size: calc((100 / 390) * 14 * 1vw);
  }

  .footer_nav .nav1 dd::before {
    width: calc((100 / 390) * 7 * 1vw);
    left: calc((100 / 390) * 5 * 1vw);
  }

  .footer_nav .nav2 {
    display: flex;
    margin-left: 0;
    margin-bottom: 0;
    flex-wrap: wrap;
    row-gap: calc((100 / 390) * 11 * 1vw);
    column-gap: calc((100 / 390) * 32 * 1vw);
    font-size: calc((100 / 390) * 12 * 1vw);
    color: #797979;
  }

  .footer_nav .nav2::after {
    content: "";
    width: 100%;
  }

  .footer_nav .nav2 li:first-child img {
    width: calc((100 / 390) * 160 * 1vw);
  }

  .footer_nav .nav2 li:nth-child(n + 2) {
    order: 1;
  }

  .footer_nav .copy {
    max-width: calc((100 / 390) * 328 * 1vw);
    margin: calc((100 / 390) * 22 * 1vw) auto 0;
    text-align: center;
  }

  .copy small {
    font-size: calc((100 / 390) * 12 * 1vw);
  }
}
