.mask_wrap{
  display: table;
  overflow: hidden;
}
.mask-wrap .mask{
  display: table;
  position: relative;
  margin-bottom: .25em;
  left: -100%;
  overflow: hidden;
}
.mask-wrap .mask-bg{
  display: block;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: #eaeaea;
}

.image-wrapper {
  overflow: hidden;
 /* height: 400px; /* 任意の高さに合わせて調整 */
}

.slide-in-image {
  width: 100%;
  height: 100%;
  object-fit: cover;

  /* 初期状態：クリップして非表示 */
  clip-path: inset(100% 0 0 0); 
  transition: clip-path 0.5s ease-out;
}




/**===========================
 gradation btn animation
 ==========================**/
.grade_link {
  display: inline-block;
}
.grade_link a {
  display: inline-block;
  transition: transform 1s ease-out;
  color: #fff;
  padding: 0.7rem 0rem;
}

.grade_blue a {
  /*width:20rem;*/
  background-image: linear-gradient(90deg, rgba(23, 67, 152, 1) 0%, rgba(23, 67, 152, 0.6) 50%, rgba(23, 67, 152, 1));
}
.grade_pink a {
  background: linear-gradient(0.25turn,#154499, #DB071B);
}
.grade_red a {
  background-image: linear-gradient(90deg, rgba(219, 7, 27, 1) 0%, rgba(219, 7, 27, 0.6) 50%, rgba(219, 7, 27, 1));
}


.grade_link a span{
  padding: 0.5rem 5rem;
  /**border-right: 1px solid #fff;**/
}

.grade_link a span.btn_text {
  position: relative;
}
.grade_link a span.btn_text:after {
  position: absolute;
  content: "";
  width: 1px;
  height: 90%;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
  background: #fff;
}


.grade_link a img.arrow_img {
	width: 1rem;
	margin: 0 2rem;
  vertical-align: sub;
}

.grade_link a:hover {
  transition:0.5s;
  box-shadow: 0px 3px 6px #adadad;
}
.grade_blue a:hover {
  background-color: #174398;
}
.grade_red a:hover {
  background-color: #cb071a;
}
.grade_link a:hover img.arrow_img {
  transform: rotate(45deg);
  transition-duration: 0.3s;
}
.grade_link a:not(:hover) img.arrow_img{
  transition-duration: 0.5s;
}

@media screen and (max-width:1280px) {
  .grade_link a img.arrow_img {
    width: 1rem;
    margin: 0 1.3rem;
    vertical-align: sub;
  }
}
@media screen and (max-width:991px) {
  .grade_link a img.arrow_img {
    width: 1rem;
    margin: 0 2rem;
    vertical-align: sub;
  }
}
/**===========================
text animasion
 ==========================**/
.slide-in {
	overflow: hidden;
    display: inline-block;
}

.slide-in_inner {
	display: inline-block;
  position: relative;
  color: #174398; /* 最初は赤 */
  /*line-height: 1.3;*/
}
.leftAnime{
    opacity: 0;/
}
.slideAnimeLeftRight {
  padding-bottom: 0.7rem;
	animation-name:slideTextX100;
	animation-duration:0.5s;
	animation-fill-mode:forwards;
    opacity: 0;
    padding-bottom: 0;
    /*line-height: 1.3;*/
}
@keyframes slideTextX100 {
  from {
	  transform: translateX(-100%);
    opacity: 0;
  }

  to {
	transform: translateX(0);
    opacity: 1;
  }
}
.slideAnimeRightLeft {
	animation-name:slideTextX-100;
	animation-duration:0.5s;
	animation-fill-mode:forwards;
    opacity: 0;
}

@keyframes slideTextX-100 {
  from {
	transform: translateX(100%);
    opacity: 0;
  }
  to {
	transform: translateX(0);
    opacity: 1;
  }
}


/* 黒文字マスク */
.slide-in_inner::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  color: #1f1b1b;
  white-space: nowrap;
  width: 100%;
  height: 100%;
  line-height: inherit;
  /* 左から色が広がるためのマスク */
  clip-path: inset(0 100% 0 0);
}

/* スライド完了後に色マスク開始 */
.slideAnimeLeftRight .slide-in_inner::after {
  animation: colorFill 0.6s ease forwards;
  animation-delay: 0.5s; /* ← スライド時間と合わせる */
}
@keyframes colorFill {
  from {
    clip-path: inset(0 100% 0 0);
  }
  to {
    clip-path: inset(0 0 0 0);
  }
}

@media screen and (max-width:991px) {
  .slideAnimeRightLeft {
    animation-name:slideTextX-100;
    animation-duration:0.5s;
    animation-fill-mode:forwards;
      opacity: 0;
      font-size: 1.5rem;
      line-height: 2;
  }
}
@media screen and (max-width:540px) {
  .slideAnimeLeftRight {
    padding-bottom: 0rem;
    animation-name:slideTextX100;
    animation-duration:0.5s;
    animation-fill-mode:forwards;
      opacity: 0;
  }
  .slideAnimeRightLeft {
    animation-name:slideTextX-100;
    animation-duration:0.5s;
    animation-fill-mode:forwards;
      opacity: 0;
      font-size: 1.2rem;
      line-height: 2;
  }
}
/**===========================
image animation
 ==========================**/

.image-wrapper {
  overflow: hidden;
  height: fit-content;
    
}
.image-wrapper-bg {
  overflow: hidden;
  height: fit-content;
}
.slide-in-image {
  width: 100%;
  height: auto;
  object-fit: cover;
  clip-path: inset(0 100% 0 0);
  transition: clip-path 0.5s ease-out;
}


.image-wrapper {
  position: relative;
  overflow: hidden;
  padding: 0;
}



/* 画像は常にフル表示 */
.slide-cover {
  display: block;
  width: 100%;
  height: auto;
}

/* 上にかぶせる色レイヤー */
.image-wrapper-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0.25turn, #DB071B, #154499);
  transform: translateX(0);
  transition: transform 0.5s ease-out;
  z-index: 2;
  transition-delay: 0.2s;

}

/* 発火後：右へ消える */
.image-wrapper-bg.is-show::before {
  transform: translateX(101%);
}

@media screen and (max-width:540px) {
  .image-wrapper-bg::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(0.25turn, #DB071B, #154499);
    transform: translateX(0);
    transition: transform 0.5s ease-out;
    z-index: 2;
    transition-delay: 0.2s;
    border: 1px solid #fff;
  }
}




/**===========================
parallax
 ==========================**/
 .text {
  height: 100svh;
  display: grid;
  place-items: center;
}
/*
.section {
  height: 95svh;
  position: sticky;
  top: 0;
  display: grid;
  place-items: center;
}*/

.section {
  background-color: #fff;
}

@media screen and (max-width:991px) {
  .section {
    height: initial;
    position: initial;
    top: 0;
    display: block;
    place-items: center;
  }
  .section__inner {
    width: 100%;
  }
}


/**===========================
accordion
 ==========================**/
/*アコーディオン全体*/
.accordion-area{
  margin:0 auto;
}

/*アコーディオンタイトル*/
#feature .title {
  position: relative;/*+マークの位置基準とするためrelative指定*/
  cursor: pointer;
  transition: all .5s ease;
}

/*アイコンの＋と×*/
#feature .title::before,
#feature .title::after{
  position: absolute;
  content:'';
  width: 0.7rem;
  height: 0.1rem;  
}
#feature .title::before{
  top:48%;
  right: 2rem;
  transform: rotate(0deg);
  background: #1B4599;
}
#feature .title::after{    
  top:48%;
  right: 2rem;
  transform: rotate(90deg);
  background: #1B4599;
}
/*　closeというクラスがついたら形状変化　*/
#feature .title.close::before{
transform: rotate(0deg);
}

#feature .title.close::after{
transform: rotate(0deg);
}

/*アコーディオンで現れるエリア*/
.box {
  display: none;/*はじめは非表示*/

}

@media screen and (max-width:991px) {
  
  #feature .title::before{
    top:48%;
    right: 2.2rem;
    transform: rotate(0deg);
    background: #1B4599;
  }
  #feature .title::after{    
    top:48%;
    right: 2.2rem;
    transform: rotate(90deg);
    background: #1B4599;
  }
}

@media screen and (max-width:540px) {
  #feature .title::before{
    top:48%;
    right: 1.7rem;
    transform: rotate(0deg);
    background: #1B4599;
  }
  #feature .title::after{    
    top:48%;
    right: 1.7rem;
    transform: rotate(90deg);
    background: #1B4599;
  }
}


/**===========================
border animation
==========================**/
.st0 {
  fill: none;
  stroke: url(#lineGradient01);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width:0.2rem;
}
.st1 {
  fill: none;
  stroke: url(#lineGradient);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width:0.2rem;
}

.st3 {
  fill: none;
  stroke: url(#lineGradient);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width:0.2rem;
}
.snake-line .path {
  stroke-dasharray: 2619;   /* 線の長さに応じて調整 */
  stroke-dashoffset: 2519;  /* 最初は見えない */
  transition: stroke-dashoffset 3s ease-out;
}
.snake-line01 .path {
  stroke-dasharray: 3700;   /* 線の長さに応じて調整 */
  stroke-dashoffset: 3700;  /* 最初は見えない */
  transition: stroke-dashoffset 4s ease-out;
}
.snake-line03 .path {
  stroke-dasharray: 2400;   /* 線の長さに応じて調整 */
  stroke-dashoffset: 2400;  /* 最初は見えない */
  transition: stroke-dashoffset 3s ease-out;
}


/* 表示されたらこのクラスを付ける */
.js-snake.active .path{
  stroke-dashoffset: 0;
}

@media screen and (max-width:540px) {
  .st0 {
    fill: none;
    stroke: url(#lineGradient01);
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width:0.5rem;
  }
  .st1 {
    fill: none;
    stroke: url(#lineGradient);
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width:0.5rem;
  }
  
  .st3 {
    fill: none;
    stroke: url(#lineGradient);
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width:0.5rem;
  }
}










#aboutus .page_main {
  position: relative;
}
#aboutus .page_main .slickslide {
  position: absolute;
  right: 8rem;
  top: 7rem;
}

.sliderArea {
  max-width: 100%;
  margin: 0 auto;
  padding: 0 25px;
}
.sliderArea.w300 {
  max-width: 300px;
}
.slick-slide {
  /*margin: 0 5px;*/
  margin: 0;
}
.slick-slide img {
  width: 100%;
  height: auto;
}
.slick-prev, .slick-next {
  z-index: 1;
}
.slick-prev:before, .slick-next:before {
  color: #000;
}
.slick-slide {
  transition: all ease-in-out .3s;
  /**opacity: .2;**/
}
.slick-active {
  opacity: 1;
}
.slick-current {
  opacity: 1;
}
.thumb {
  margin: 20px 0 0;
}
.thumb .slick-slide {
  cursor: pointer;
}
.thumb .slick-slide:hover {
  opacity: .7;
}
.slick-dots {
 text-align: left;
}
.slick-dots li {
  height:7px;
  width: 45px;
  border: 1px solid #707070;
  padding: 0;
  margin: 0px 3px;
}
.slick-dots li.slick-active {
   height:7px;
  width: 45px;
  border: 1px solid #707070;
  padding: 0;
  background-color: #A09A91;

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

.slide-items {
  width: 100%;
  height: fit-content;
  padding-left: 0;
}
.slick-list {
  border-radius: 10px !important;
}


@media screen and (max-width:540px) {
  .slick-dots {
    position: absolute;
    bottom: -25px;
    left: 10px;
    display: block;
    width: auto;
    padding: 0;
    margin: 0;
    list-style: none;
    text-align: left;
  }
}




