@media screen and (max-width: 1023px) {
  .c-secTitle__ja {
    margin-top: -1.0666666667vw;
  }
}
.mv {
  position: relative;
  height: 100vh;
  min-height: 640px;
  background: #ffffff;
  overflow-x: clip;
}
.mv canvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  display: block;
  z-index: 1;
  will-change: opacity;
  pointer-events: none;
}
@media screen and (max-width: 1023px) {
  .mv {
    height: 100vh;
    min-height: 100vh;
  }
}

.copywrap {
  position: fixed;
  z-index: 2;
  left: 50%;
  top: 50svh;
  transform: translate(-50%, -50%);
  pointer-events: none;
  text-align: center;
}
.copywrap.is-hidden {
  visibility: hidden;
  opacity: 0;
}
.copywrap::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 150%;
  height: 230%;
  z-index: -1;
  background: radial-gradient(ellipse at center, rgba(255, 255, 255, 0.72) 0%, rgba(255, 255, 255, 0.55) 42%, rgba(255, 255, 255, 0) 72%);
}
.copywrap .copysvg {
  display: block;
  margin: 0 auto;
  overflow: visible;
  visibility: hidden;
}
.copywrap .copysvg.is-ready, .copywrap .copysvg.done {
  visibility: visible;
}
.copywrap #copyMain *,
.copywrap #copyMainSp * {
  fill: #222;
  fill-opacity: 0;
  stroke: #222;
  stroke-width: 0.8px;
}
.copywrap #copyMain.done *,
.copywrap #copyMainSp.done * {
  fill-opacity: 1;
  stroke-opacity: 0;
  transition: fill-opacity 0.5s ease, stroke-opacity 0.5s ease;
}
.copywrap #copyMain {
  width: 639.27px;
}
.copywrap #copyMainSp {
  display: none;
}
.copywrap #copySub {
  width: 258.72px;
}
.copywrap #copySub * {
  fill: #B91E24;
  fill-opacity: 0;
  stroke: #B91E24;
  stroke-width: 0.6px;
}
.copywrap #copySub.done * {
  fill-opacity: 1;
  stroke-opacity: 0;
  transition: fill-opacity 0.5s ease, stroke-opacity 0.5s ease;
}
.copywrap .copyItem {
  display: block;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}
.copywrap .copyItem--sub {
  margin-top: 47px;
}
@media screen and (max-width: 1023px) {
  .copywrap #copyMain *,
  .copywrap #copyMainSp * {
    stroke-width: 0.6px;
  }
  .copywrap #copyMain {
    display: none;
  }
  .copywrap #copyMainSp {
    display: block;
    width: 57.7466666667vw;
  }
  .copywrap #copySub {
    width: 57.6vw;
  }
  .copywrap .copyItem--sub {
    margin-top: 12vw;
  }
}
@media screen and (orientation: landscape) and (max-width: 1023px) and (hover: none) and (pointer: coarse) {
  .copywrap #copyMain *,
  .copywrap #copyMainSp * {
    stroke-width: 0.6px;
  }
  .copywrap #copyMainSp {
    width: 216.55px;
  }
  .copywrap #copySub {
    width: 216px;
  }
  .copywrap .copyItem--sub {
    margin-top: 45px;
  }
}

.contents {
  position: relative;
  z-index: 3;
}

.oclAi {
  padding: 40px 0;
  position: relative;
  --oclaiScale: 0.67;
  overflow-x: clip;
}
.oclAi__bg {
  background-color: #FAF9F8;
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  transform: translateX(-50%);
  width: 100%;
  z-index: -1;
}
.oclAi__inner {
  position: relative;
  display: flex;
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
  background-color: #fff;
}
.oclAi__eyebrow {
  position: absolute;
  left: 32px;
  top: 21px;
  font-size: 1.4rem;
  letter-spacing: 0.08em;
  font-family: "Outfit", sans-serif;
  color: #B91E24;
}
.oclAi__visual {
  width: 50%;
  padding: 80px 0 54.7px 84px;
}
.oclAi__body {
  width: 50%;
  padding: 80px 60px 0 30px;
}
.oclAi__lead {
  font-size: 1.6rem;
  letter-spacing: 0.08em;
  font-weight: bold;
  margin-top: 38px;
}
.oclAi__desc {
  font-size: 1.4rem;
  letter-spacing: 0.08em;
  margin-top: 12px;
}
.oclAi__btn {
  text-align: right;
  margin-top: 39px;
}
@media screen and (max-width: 1023px) {
  .oclAi {
    padding: 4.2666666667vw;
  }
  .oclAi__bg {
    left: 0;
    top: 0;
    bottom: 0;
    transform: translateX(0);
  }
  .oclAi__inner {
    display: block;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding: 0 4.2666666667vw 4.2666666667vw;
  }
  .oclAi__eyebrow {
    left: 4.2666666667vw;
    top: 3.4666666667vw;
    font-size: 3.2vw;
  }
  .oclAi__visual {
    width: 100%;
    padding: 10.6666666667vw 0 6.4vw;
    text-align: center;
  }
  .oclAi__visual img {
    width: 59.8186666667vw;
  }
  .oclAi__body {
    width: 100%;
    padding: 0;
  }
  .oclAi__logo img {
    width: 43.5066666667vw;
  }
  .oclAi__lead {
    font-size: 3.7333333333vw;
    letter-spacing: 0.08em;
    font-weight: bold;
    margin-top: 4vw;
  }
  .oclAi__desc {
    font-size: 3.7333333333vw;
    letter-spacing: 0;
    margin-top: 0.8vw;
  }
  .oclAi__btn {
    text-align: right;
    margin-top: 5.8666666667vw;
  }
}

.businessField {
  margin-top: 201px;
}
.businessField__head {
  display: flex;
  justify-content: space-between;
}
.businessField__intro {
  font-size: 1.6rem;
  letter-spacing: 0.08em;
  font-weight: bold;
  margin: 16px 5px 0 0;
}
.businessField__more {
  text-align: right;
  margin-top: 60px;
}
.businessField .bizList {
  display: flex;
  flex-wrap: wrap;
  position: relative;
}
.businessField .bizList::before {
  content: "";
  background-color: #fff;
  position: absolute;
  inset: 0;
  z-index: -1;
}
.businessField .bizCard {
  position: relative;
  width: 50%;
  height: 359px;
  padding: 137px 80px 0;
}
.businessField .bizCard__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  position: absolute;
  top: 58px;
  right: 79px;
}
.businessField .bizCard__tag {
  font-size: 1.6rem;
  letter-spacing: 0.08em;
  color: #B91E24;
}
.businessField .bizCard__title {
  font-size: 2.4rem;
  letter-spacing: 0.08em;
  font-weight: bold;
  margin-top: 10px;
}
.businessField .bizCard__desc {
  font-size: 1.4rem;
  letter-spacing: 0.08em;
  margin-top: 25px;
}
@media screen and (max-width: 1023px) {
  .businessField {
    margin-top: 26.4vw;
  }
  .businessField__head {
    display: block;
  }
  .businessField__intro {
    font-size: 3.7333333333vw;
    letter-spacing: 0;
    font-weight: 400;
    margin: 7.7333333333vw 0 0 0;
  }
  .businessField__more {
    margin-top: 10.6666666667vw;
  }
  .businessField .bizList {
    display: block;
  }
  .businessField .bizCard {
    width: 100%;
    height: auto;
    padding: 20.8vw 6.1333333333vw 5.3333333333vw;
  }
  .businessField .bizCard:not(:last-child) {
    border-bottom: 1px solid #CCC;
  }
  .businessField .bizCard__icon {
    width: 11.3866666667vw;
    height: 11.3866666667vw;
    top: 6.9866666667vw;
    right: 7.12vw;
  }
  .businessField .bizCard__icon img {
    width: 8.5333333333vw;
  }
  .businessField .bizCard__tag {
    font-size: 3.4666666667vw;
    letter-spacing: 0;
  }
  .businessField .bizCard__title {
    font-size: 4.8vw;
    margin-top: 0.5333333333vw;
  }
  .businessField .bizCard__desc {
    font-size: 3.7333333333vw;
    letter-spacing: 0;
    margin-top: 2.6666666667vw;
  }
}

.bizGrid {
  position: relative;
  margin-top: 59px;
}
@media screen and (max-width: 1023px) {
  .bizGrid {
    margin-top: 7.7333333333vw;
  }
}

.bizGrid__lines {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.bizGrid__line {
  position: absolute;
  background: #CCC;
}
.bizGrid__line--top, .bizGrid__line--bottom, .bizGrid__line--cH {
  left: 0;
  width: 100%;
  height: 1px;
}
.bizGrid__line--left, .bizGrid__line--right, .bizGrid__line--cV {
  top: 0;
  width: 1px;
  height: 100%;
}
.bizGrid__line--top {
  top: 0;
}
.bizGrid__line--bottom {
  bottom: 0;
}
.bizGrid__line--left {
  left: 0;
}
.bizGrid__line--right {
  right: 0;
}
.bizGrid__line--cH {
  top: 50%;
  transform: translateY(-50%);
}
.bizGrid__line--cV {
  left: 50%;
  transform: translateX(-50%);
}
@media screen and (max-width: 1023px) {
  .bizGrid__line--cH, .bizGrid__line--cV {
    display: none;
  }
}

.js-anim .bizCard {
  opacity: 0;
  transform: translateY(7px);
  transition: opacity 0.5s cubic-bezier(0.215, 0.61, 0.355, 1), transform 0.5s cubic-bezier(0.215, 0.61, 0.355, 1);
  transition-delay: var(--cardDelay, 0s);
  will-change: opacity, transform;
}
.js-anim .bizCard:nth-child(1) {
  --cardDelay: 0.2s;
}
.js-anim .bizCard:nth-child(2) {
  --cardDelay: 0.27s;
}
.js-anim .bizCard:nth-child(4) {
  --cardDelay: 0.34s;
}
.js-anim .bizCard:nth-child(3) {
  --cardDelay: 0.41s;
}
.js-anim .bizGrid__line {
  transition: transform 0.45s linear;
}
.js-anim .bizGrid__line--top {
  transform: scaleX(0);
  transform-origin: left center;
}
.js-anim .bizGrid__line--right {
  transform: scaleY(0);
  transform-origin: center top;
}
.js-anim .bizGrid__line--bottom {
  transform: scaleX(0);
  transform-origin: right center;
}
.js-anim .bizGrid__line--left {
  transform: scaleY(0);
  transform-origin: center bottom;
}
.js-anim .bizGrid__line--cH {
  transform: translateY(-50%) scaleX(0);
  transition: transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
}
.js-anim .bizGrid__line--cV {
  transform: translateX(-50%) scaleY(0);
  transition: transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
}
.js-anim .bizGrid.is-inview .bizGrid__line--top,
.js-anim .bizGrid.is-inview .bizGrid__line--bottom {
  transform: scaleX(1);
}
.js-anim .bizGrid.is-inview .bizGrid__line--right,
.js-anim .bizGrid.is-inview .bizGrid__line--left {
  transform: scaleY(1);
}
.js-anim .bizGrid.is-inview .bizGrid__line--cH {
  transform: translateY(-50%) scaleX(1);
}
.js-anim .bizGrid.is-inview .bizGrid__line--cV {
  transform: translateX(-50%) scaleY(1);
}
.js-anim .bizGrid.is-inview .bizCard {
  opacity: 1;
  transform: translateY(0);
}
@media screen and (max-width: 1023px) {
  .js-anim .bizCard:nth-child(1) {
    --cardDelay: .05s;
  }
  .js-anim .bizCard:nth-child(2) {
    --cardDelay: .12s;
  }
  .js-anim .bizCard:nth-child(3) {
    --cardDelay: .19s;
  }
  .js-anim .bizCard:nth-child(4) {
    --cardDelay: .26s;
  }
  .js-anim .bizGrid__line--top {
    transition-delay: 0s;
  }
  .js-anim .bizGrid__line--right,
  .js-anim .bizGrid__line--left {
    transition-delay: 0.12s;
  }
  .js-anim .bizGrid__line--bottom {
    transition-delay: 0.3s;
  }
}

@media (prefers-reduced-motion: reduce) {
  .js-anim .bizGrid__line,
  .js-anim .bizCard {
    transition: none;
  }
  .js-anim .bizGrid__line--top,
  .js-anim .bizGrid__line--right,
  .js-anim .bizGrid__line--bottom,
  .js-anim .bizGrid__line--left {
    transform: none;
  }
  .js-anim .bizGrid__line--cH {
    transform: translateY(-50%);
  }
  .js-anim .bizGrid__line--cV {
    transform: translateX(-50%);
  }
  .js-anim .bizCard {
    opacity: 1;
    transform: none;
  }
}
.aboutUs {
  margin-top: 203px;
  overflow-x: clip;
  container-type: inline-size;
}
.aboutUs__lead {
  white-space: nowrap;
  font-size: 3.4rem;
  font-weight: bold;
  line-height: 2;
  margin-top: 89px;
  letter-spacing: 0.08em;
}
.aboutUs__text {
  font-size: 1.6rem;
  line-height: 3;
  margin-top: 58px;
}
.aboutUs__body {
  display: flex;
  justify-content: space-between;
}
.aboutUs__text {
  width: 500px;
  letter-spacing: 0.08em;
}
.aboutUs__visual {
  width: 689.65px;
  margin-top: 393px;
}
@media screen and (min-width: 1024px) {
  .aboutUs__visual {
    width: auto;
    flex: 1 1 0;
    min-width: 0;
    margin-right: calc((100% - 100cqi) / 2);
  }
}
.aboutUs__visual .logo-svg {
  display: block;
  width: 67%;
  height: auto;
  margin-left: auto;
  margin-right: auto;
  transform: translateX(-7px);
}
.aboutUs__more {
  margin-top: 68px;
}
.aboutUs .logo-svg path {
  fill-opacity: 0;
  transition: fill-opacity 0.5s, stroke-opacity 0.5s;
}
.aboutUs .logo-svg.done .cls-2 {
  fill: #222;
  fill-opacity: 1;
}
.aboutUs .logo-svg.done .cls-1 {
  fill: #b91e24;
  fill-opacity: 1;
}
.aboutUs .logo-svg.done path {
  stroke-opacity: 0;
}
@media screen and (max-width: 1023px) {
  .aboutUs {
    margin-top: 26.9333333333vw;
  }
  .aboutUs__lead {
    font-size: 5.3333333333vw;
    line-height: 1.75;
    margin-top: 15.2vw;
  }
  .aboutUs__text {
    font-size: 4vw;
    line-height: 1.75;
    margin-top: 5.0666666667vw;
  }
  .aboutUs__body {
    display: flex;
    flex-direction: column-reverse;
  }
  .aboutUs__text {
    width: auto;
    letter-spacing: 0;
  }
  .aboutUs__visual {
    width: auto;
    margin-top: 15.3866666667vw;
  }
  .aboutUs__visual .logo-svg {
    width: 68.9706666667vw;
    transform: translateX(0);
  }
  .aboutUs__more {
    margin-top: 10.1333333333vw;
  }
}

.news {
  margin-top: 202px;
}
.news .newsList {
  border-top: 1px solid #EAEAEA;
  font-size: 1.6rem;
  letter-spacing: 0.08em;
  margin-top: 57px;
}
.news .newsItem {
  border-bottom: 1px solid #EAEAEA;
}
.news .newsItem__link {
  display: flex;
  align-items: center;
  padding: 40px 24px 39.5px;
  text-decoration: none;
}
.news .newsItem__date {
  flex-shrink: 0;
  font-family: "Outfit", sans-serif;
  font-variant-numeric: tabular-nums;
}
.news .newsItem__cat {
  width: 140px;
  line-height: 30px;
  border-radius: 30px;
  text-align: center;
  font-size: 1.4rem;
  letter-spacing: 0.08em;
  font-family: "Outfit", sans-serif;
  color: #B91E24;
  background-color: #FAF9F8;
  transition: background-color 0.15s ease-out;
  margin-left: 46px;
  letter-spacing: 0.05em;
}
.news .newsItem__title {
  flex: 1;
  text-overflow: ellipsis;
  word-break: break-all;
  margin-left: 38px;
}
.news .newsItem .news__underline {
  position: relative;
  display: inline-block;
}
.news .newsItem .c-icoBlank {
  color: #B91E24;
}
.news .newsItem .c-arrow {
  flex-shrink: 0;
  width: 14px;
  height: 13px;
  color: #B91E24;
}
@media screen and (min-width: 1024px) {
  .news .newsItem__link {
    position: relative;
    z-index: 0;
    overflow: hidden;
  }
  .news .newsItem__link::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: -1;
    background: #FAF9F8;
    transform: scaleX(0) translateZ(0);
    transform-origin: right center;
    transition: transform 0.4s cubic-bezier(0.19, 1, 0.22, 1);
  }
  .news .newsItem__link:hover::before {
    transform: scaleX(1);
    transform-origin: left center;
  }
  .news .newsItem__link:hover .newsItem__cat {
    background-color: #fff;
  }
  .news .newsItem .news__underline::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 3px;
    width: 100%;
    height: 1px;
    background: #222;
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.3s cubic-bezier(0.19, 1, 0.22, 1);
  }
  .news .newsItem__link:hover .news__underline::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
}
@media screen and (max-width: 1023px) {
  .news {
    margin-top: 26.6666666667vw;
  }
  .news .newsList {
    margin-top: 8.2666666667vw;
  }
  .news .newsItem__link {
    position: relative;
    flex-wrap: wrap;
    padding: 5.8666666667vw 0 5.6vw;
  }
  .news .newsItem__date {
    font-size: 4vw;
    letter-spacing: 0.08em;
  }
  .news .newsItem__cat {
    width: 29.3333333333vw;
    line-height: 5.3333333333vw;
    border-radius: 5.3333333333vw;
    font-size: 3.4666666667vw;
    letter-spacing: 0.08em;
    margin-left: 5.3333333333vw;
    letter-spacing: 0.04em;
  }
  .news .newsItem__title {
    flex: 0 0 100%;
    margin-top: 2.6666666667vw;
    padding-right: 7.4666666667vw;
    font-size: 3.7333333333vw;
    letter-spacing: 0;
    margin-left: 0;
  }
  .news .newsItem .news__underline {
    position: relative;
    display: inline;
  }
  .news .newsItem .c-icoBlank {
    position: absolute;
    top: 50%;
    right: 0;
    transform: translateY(-50%);
    width: 4.2666666667vw;
    height: 3.7333333333vw;
    color: #B91E24;
  }
  .news .newsItem .c-arrow {
    position: absolute;
    top: 50%;
    right: 0;
    transform: translateY(-50%);
    flex-shrink: 0;
    width: 3.7333333333vw;
    height: 3.4666666667vw;
    color: #B91E24;
  }
}
@media screen and (max-width: 1023px) and (min-width: 1024px) {
  .news .newsItem__link {
    transition: background-color 0.15s ease-out;
  }
  .news .newsItem__link:hover {
    background: #FAF9F8;
  }
  .news .newsItem__link:hover .newsItem__cat {
    background-color: #fff;
  }
  .news .newsItem .news__underline::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 3px;
    width: 100%;
    height: 1px;
    background: #222;
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.3s cubic-bezier(0.19, 1, 0.22, 1);
  }
  .news .newsItem__link:hover .news__underline::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
}

@keyframes fade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes fadeScale {
  from {
    opacity: 0;
    transform: scale(1.015);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}