.p-hero {
  position: relative;
  height: 95svh;
  height: 95dvh;
  min-height: 600px;
  background: #070A4A;
}

.p-hero__bg {
  position: absolute;
  inset: 0;
}
.p-hero__bg img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.p-hero__body {
  position: absolute;
  inset: 0;
  max-width: 1280px;
  margin-inline: auto;
  padding-inline: clamp(25.6px, 0px + 3.3333333333vw, 40px);
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
}
@media screen and (max-width: 768px) {
  .p-hero__body {
    padding-inline: 20px;
  }
}

.p-hero__catch img {
  height: clamp(28.16px, 0px + 3.6666666667vw, 44px);
  width: auto;
}
@media screen and (max-width: 768px) {
  .p-hero__catch img {
    height: 55vh;
    max-height: 470px;
    margin-top: 80px;
    margin-left: 30px;
  }
}

@-webkit-keyframes scroll-dot {
  0% {
    top: -3px;
    opacity: 1;
  }
  65% {
    opacity: 1;
  }
  100% {
    top: 56px;
    opacity: 0;
  }
}

@keyframes scroll-dot {
  0% {
    top: -3px;
    opacity: 1;
  }
  65% {
    opacity: 1;
  }
  100% {
    top: 56px;
    opacity: 0;
  }
}
.p-hero__scroll {
  position: absolute;
  bottom: -30px;
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
      -ms-flex-align: start;
          align-items: flex-start;
  gap: 10px;
}

.p-hero__scroll-line {
  position: relative;
  width: 1px;
  height: 60px;
  background: currentColor;
}
.p-hero__scroll-line::before {
  content: "";
  position: absolute;
  top: -3px;
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
  -webkit-animation: scroll-dot 1.8s ease-in infinite;
          animation: scroll-dot 1.8s ease-in infinite;
}

.p-hero__scroll-text {
  -webkit-writing-mode: vertical-rl;
      -ms-writing-mode: tb-rl;
          writing-mode: vertical-rl;
  font-size: 10px;
  line-height: 1.4;
  letter-spacing: 0.2em;
  letter-spacing: 0.2em;
  margin-top: 4px;
}

.p-message {
  padding-block: clamp(96px, 0px + 12.5vw, 150px);
  background: #ffffff;
}
@media screen and (max-width: 768px) {
  .p-message {
    padding-block: 100px;
  }
}

.p-message__inner {
  max-width: 800px;
  margin-inline: auto;
  text-align: center;
}

.p-message__body {
  margin-top: clamp(25.6px, 0px + 3.3333333333vw, 40px);
  font-size: 16px;
  line-height: 1.8125;
  letter-spacing: 0.1em;
  color: #000000;
  text-align: center;
}
.p-message__body p + p {
  margin-top: 1.1em;
}
@media screen and (max-width: 768px) {
  .p-message__body {
    margin-top: 26px;
    text-align: left;
    line-height: 2;
  }
}

.p-message__attribution {
  margin-top: clamp(22.4px, 0px + 2.9166666667vw, 35px);
  font-size: 16px;
  line-height: 1.625;
  letter-spacing: 0.1em;
  font-weight: 500;
  color: #000000;
  text-align: center;
}
@media screen and (max-width: 768px) {
  .p-message__attribution {
    margin-top: 40px;
  }
}

.p-banner {
  height: clamp(384px, 0px + 50vw, 600px);
  overflow: hidden;
}
@media screen and (max-width: 768px) {
  .p-banner {
    height: 400px;
  }
}

.p-banner__img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  -o-object-position: center;
     object-position: center;
}

.p-service {
  padding-top: clamp(96px, 0px + 12.5vw, 150px);
  padding-bottom: clamp(320px, 0px + 41.6666666667vw, 500px);
  background: #ffffff;
  border-bottom-right-radius: clamp(256px, 0px + 33.3333333333vw, 400px);
}
@media screen and (max-width: 768px) {
  .p-service {
    padding-top: 100px;
    padding-bottom: 300px;
    border-bottom-right-radius: 200px;
  }
}

.p-service__inner {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  gap: clamp(25.6px, 0px + 3.3333333333vw, 40px);
}
@media screen and (max-width: 768px) {
  .p-service__inner {
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
    gap: 50px;
  }
}

.p-service__left {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 45%;
      -ms-flex: 0 0 45%;
          flex: 0 0 45%;
}

.p-service__sticky {
  position: -webkit-sticky;
  position: sticky;
  top: 100px;
}
@media screen and (max-width: 768px) {
  .p-service__sticky {
    position: static;
  }
}

.p-service__main-img {
  display: block;
  width: 100%;
  aspect-ratio: 1/1;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 5px;
}

.p-service__right {
  -webkit-box-flex: 1;
  -webkit-flex: 1;
      -ms-flex: 1;
          flex: 1;
  min-width: 0;
}

.p-service__list {
  list-style: none;
}

.p-service__list-item {
  padding-block: clamp(16px, 0px + 2.0833333333vw, 25px);
}
.p-service__list-item:first-child {
  padding-top: 0;
}
.p-service__list-item:last-child {
  padding-bottom: 0;
}

.p-service__list-title {
  font-size: 20px;
  line-height: 1.6;
  letter-spacing: 0.1em;
  font-weight: 700;
  color: #000000;
}

.p-service__list-divider {
  position: relative;
  border: none;
  border-top: 1px solid #2a2f72;
  margin-block: 16px;
}
@media screen and (max-width: 768px) {
  .p-service__list-divider {
    margin-top: 20px;
    margin-bottom: 30px;
  }
}
.p-service__list-divider::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #2a2f72;
}
.p-service__list-divider::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #2a2f72;
}

.p-service__list-desc {
  font-size: 16px;
  line-height: 1.8125;
  letter-spacing: 0.1em;
  font-weight: 300;
  color: #000000;
  text-align: justify;
}
@media screen and (max-width: 768px) {
  .p-service__list-desc {
    text-align: left;
  }
}

.p-company-banner {
  position: relative;
  height: clamp(384px, 0px + 50vw, 600px);
  margin-top: clamp(-300px, 0px + -25vw, -192px);
}
@media screen and (max-width: 768px) {
  .p-company-banner {
    height: 400px;
    margin-top: -200px;
  }
}
.p-company-banner .l-container {
  height: 100%;
}

.p-company-banner__inner {
  margin-left: calc(50% - 50vw);
  height: 100%;
}

.p-company-banner__bg {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  -o-object-position: center top;
     object-position: center top;
}

.p-company-banner__body {
  position: absolute;
  bottom: clamp(76.8px, 0px + 10vw, 120px);
  left: 0;
  right: 0;
}
@media screen and (max-width: 768px) {
  .p-company-banner__body {
    bottom: 50px;
    margin-right: 20px;
  }
}

.p-company-banner__copy {
  height: clamp(28.16px, 0px + 3.6666666667vw, 44px);
  width: auto;
}
@media screen and (max-width: 768px) {
  .p-company-banner__copy {
    height: 30px;
  }
}

.p-company {
  padding-top: clamp(576px, 0px + 75vw, 900px);
  padding-bottom: clamp(70.4px, 0px + 9.1666666667vw, 110px);
  margin-top: clamp(-700px, 0px + -58.3333333333vw, -448px);
  background: #070A4A;
  color: #ffffff;
  position: relative;
  z-index: -1;
}
@media screen and (max-width: 768px) {
  .p-company {
    padding-top: 500px;
    padding-bottom: 45px;
  }
}

.p-company__body {
  display: grid;
  grid-template-columns: 4fr 3fr;
  margin-top: clamp(40.96px, 0px + 5.3333333333vw, 64px);
  -webkit-box-align: start;
  -webkit-align-items: start;
      -ms-flex-align: start;
          align-items: start;
}
@media screen and (max-width: 768px) {
  .p-company__body {
    grid-template-columns: 1fr;
    margin-top: 50px;
  }
}

.p-company__photo {
  -webkit-align-self: stretch;
      -ms-flex-item-align: stretch;
          align-self: stretch;
  margin-left: -30px;
  width: calc(100% + 50px);
}
@media screen and (max-width: 768px) {
  .p-company__photo {
    -webkit-box-ordinal-group: 0;
    -webkit-order: -1;
        -ms-flex-order: -1;
            order: -1;
    -webkit-align-self: auto;
        -ms-flex-item-align: auto;
            align-self: auto;
    margin-left: auto;
    margin-right: 0;
    width: 220px;
  }
}

.p-company__photo-sticky {
  position: -webkit-sticky;
  position: sticky;
  top: 150px;
}
.p-company__photo-sticky img {
  width: 100%;
  -o-object-fit: contain;
     object-fit: contain;
  border-radius: 4px;
}
@media screen and (max-width: 768px) {
  .p-company__photo-sticky {
    position: fixed;
  }
}

.p-company__table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: clamp(30.72px, 0px + 4vw, 48px);
}
@media screen and (max-width: 768px) {
  .p-company__table {
    margin-top: 64px;
    margin-bottom: 50px;
  }
}

.p-company__table-head,
.p-company__table-data {
  font-size: 18px;
  line-height: 2;
  letter-spacing: 0.1em;
  vertical-align: top;
  text-align: left;
  color: #ffffff;
}

.p-company__table-head {
  width: 5em;
  white-space: nowrap;
  font-weight: 700;
}

.p-company__table-data {
  font-weight: 500;
}

.p-company__section-label {
  font-size: 20px;
  line-height: 1.5;
  letter-spacing: 0.1em;
  font-weight: 700;
  color: #ffffff;
  margin-bottom: clamp(10.24px, 0px + 1.3333333333vw, 16px);
}

.p-company__section-divider {
  position: relative;
  border: none;
  border-top: 1px solid #fff;
  margin-top: clamp(12.8px, 0px + 1.6666666667vw, 20px);
  margin-bottom: clamp(19.2px, 0px + 2.5vw, 30px);
}
@media screen and (max-width: 768px) {
  .p-company__section-divider {
    margin-top: 20px;
    margin-bottom: 30px;
  }
}
.p-company__section-divider::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #fff;
}
.p-company__section-divider::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #fff;
}

.p-company__list {
  font-size: 18px;
  line-height: 2;
  letter-spacing: 0.1em;
  font-weight: 500;
  color: #ffffff;
  list-style: disc;
  padding-left: 1.5em;
  margin-bottom: clamp(25.6px, 0px + 3.3333333333vw, 40px);
}
@media screen and (max-width: 768px) {
  .p-company__list {
    margin-bottom: 50px;
  }
}

.p-contact {
  padding-block: clamp(96px, 0px + 12.5vw, 150px);
  background: #ffffff;
}
@media screen and (max-width: 768px) {
  .p-contact {
    padding-block: 100px;
  }
}

.p-contact__inner {
  text-align: center;
}

.p-contact__lead {
  font-size: 16px;
  line-height: 1.8125;
  letter-spacing: 0.1em;
  color: #000000;
}
@media screen and (max-width: 768px) {
  .p-contact__lead {
    margin-top: 64px;
  }
}

.p-contact__form-wrap {
  margin-top: clamp(32px, 0px + 4.1666666667vw, 50px);
  text-align: left;
}
@media screen and (max-width: 768px) {
  .p-contact__form-wrap {
    margin-top: 48px;
  }
}

.p-contact__submit {
  margin-top: 50px;
  text-align: center;
}

.p-contact__modal {
  position: fixed;
  inset: 0;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  background: rgba(140, 140, 140, 0.5);
  z-index: 2000;
  opacity: 0;
  pointer-events: none;
  -webkit-transition: opacity 0.3s ease;
  transition: opacity 0.3s ease;
}
.p-contact__modal.is-visible {
  opacity: 1;
  pointer-events: auto;
}

.p-contact__modal-inner {
  position: relative;
  width: min(800px, 100% - 40px);
  background: #ffffff;
  padding: clamp(60.8px, 0px + 7.9166666667vw, 95px) clamp(64px, 0px + 8.3333333333vw, 100px) clamp(65.92px, 0px + 8.5833333333vw, 103px);
  text-align: center;
}
@media screen and (max-width: 768px) {
  .p-contact__modal-inner {
    padding: 64px 18px 40px;
  }
}

.p-contact__modal-close {
  position: absolute;
  top: 40px;
  right: 40px;
  width: 19px;
  height: 19px;
  padding: 0;
  background: none;
  border: none;
  cursor: pointer;
}
.p-contact__modal-close::before, .p-contact__modal-close::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 25px;
  height: 2px;
  background: #000000;
  -webkit-transform-origin: center;
          transform-origin: center;
}
.p-contact__modal-close::before {
  -webkit-transform: translate(-50%, -50%) rotate(45deg);
          transform: translate(-50%, -50%) rotate(45deg);
}
.p-contact__modal-close::after {
  -webkit-transform: translate(-50%, -50%) rotate(-45deg);
          transform: translate(-50%, -50%) rotate(-45deg);
}
@media screen and (max-width: 768px) {
  .p-contact__modal-close {
    top: 20px;
    right: 20px;
  }
}

.p-contact__modal-title {
  font-size: 16px;
  line-height: 1.8;
  letter-spacing: 0.1em;
  font-weight: 700;
  color: #000000;
  margin-bottom: 44px;
}

.p-contact__modal-text {
  font-size: 16px;
  line-height: 1.8;
  letter-spacing: 0.1em;
  color: #000000;
  max-width: 600px;
  margin-inline: auto;
  text-align: left;
}