@charset "utf-8";

#contents {
	padding: 100px 0 0 0;
}
.mt100 {
	margin-top: 100px !important;
}
.sp {display: none;}

@media (max-width: 860px){
	.mt100 {
		margin-top: 50px !important;
	}
	.sp {display: block;}
}

.business_box {
	margin: 0 auto 120px;
}
#contents h2{
	margin-bottom: 20px;
}
#contents p.t_tx{
	text-align: left;
	margin-top: 40px;
	width: 820px;
}
#contents p.visual{
	text-align: center;
}

#contents .w-gray {
	background: #edeff3;
	padding: 70px 0 80px;
	line-height: 0;
	margin-bottom: 120px;
}

#contents .w-gray:last-child {
	margin-bottom: 0;
}
#contents h3 {
	font-size: 4.8rem;
	font-weight: 100;
	line-height: 120%;
	text-align: center;
	margin: 0 auto 60px;
}
#contents h3>small{
	display: block;
	font-size: 1.8rem;
	color: #229a9a;
	line-height: 120%;
	margin: 0 auto 10px;
}


/* --- benefits__grid --- */

.benefits__grid{
	max-width: 1100px;
	margin: 0 auto 100px;
	display:grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
  }
  
  .benefit-card{

  }
  
  .benefit-card__media{
	aspect-ratio: 16 / 9; /* 上部画像の比率 */
	overflow:hidden;
  }
  
  .benefit-card__media img{
	width:100%;
	height:100%;
	object-fit: cover;
	display:block;
  }
  
  .benefit-card__body{
	padding: 46px;
	background: #fff;
  }
  
  .benefit-card__title{
	margin: 0 0 18px;
	text-align:center;
	color: var(--title);
	font-size: 32px !important;
	color: #229a9a;
	font-weight: 600;
	letter-spacing: .02em;
	margin-bottom: 30px !important;
  }
  
  .check-list{
	list-style:none;
	padding:0;
	margin:0;
	display:grid;
	gap: 14px;
	font-size: 16px;
	line-height: 1.75;
  }
  
  .check-list li{
	position: relative;
	padding-left: 40px;
	text-align: left;
  }
  
  .check-list li::before{
	content:"";
	position:absolute;
	left:0;
	top:.35em;              /* テキスト行に合わせる */
	width:22px;
	height:22px;
	border-radius: 999px;
	background: var(--accent);
	background: #229a9a;
  }
  
  .check-list li::after{
	content:"";
	position:absolute;
	left:7px;
	top: 0.65em;
  width: 4px;
  height: 8px;
	border-right: 3px solid #fff;
	border-bottom: 3px solid #fff;
	transform: rotate(45deg);
  }
  
  /* 画面が狭い場合：1カラムに */
  @media (max-width: 860px){
	.benefits__grid{
	  grid-template-columns: 1fr;
	}
	.benefit-card__title{
	  font-size: 24px;
	}
	.benefit-card__body{
	  padding: 22px 20px 22px;
	}
  }


  /* 上段：2カラム */
.case__top{
	display:grid;
	grid-template-columns: 1fr 1fr; /* 左を大きめ */
	gap: var(--gap);
	align-items:start;
  }
  
  /* 左：大画像 */
  .case__hero{
	margin:0;
	background:#f3f3f3;
	overflow:hidden;
  }
  
  .case__hero img{
	width:100%;
	height:100%;
	display:block;
	object-fit:cover;
	aspect-ratio: 16 / 10; /* 画像の見え方を安定させる */
  }
  
  /* 右：テキストブロック */
  .case__content{
	padding: 10px 0 0 40px;
  }
  
  .case__meta{
	margin:0 0 12px;
	color: var(--muted);
	font-size: 18px;
	letter-spacing: .08em;
  }
  
  .case__name{
	margin:0 0 18px;
	font-size: 32px !important;
	font-weight: 500;
	letter-spacing: .02em;
  }
  
  .case__tags{
	display:flex;
	gap: 18px;
	flex-wrap:wrap;
	margin: 0 0 26px;
  }
  
  .case__tag{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	padding: 10px 22px;
	border-radius: 999px;
	background: #22a7a3;
	color:#fff;
	font-size: 16px;
	line-height: 1;
	white-space:nowrap;
  }
  
  .case__text{
	margin:0;
	font-size: 18px;
	line-height: 2.0;
	overflow-y: scroll;
	height: 160px;
	padding-right: 10px;
  }
  /* Chrome / Safari */
.case__text::-webkit-scrollbar {
	width: 8px;
  }
  
  .case__text::-webkit-scrollbar-track {
	background: #f1f1f1;
  }
  
  .case__text::-webkit-scrollbar-thumb {
	background: #888;
	border-radius: 10px;
  }
  
  .case__text::-webkit-scrollbar-thumb:hover {
	background: #555;
  }
  
  /* 下段：4カラム（左だけ写真、残りは枠） */
  .case__thumbs{
	margin-top: 34px;
	display:grid;
	grid-template-columns: 1fr 1fr 1fr 1fr;
	gap: 26px;
  }
  
  .thumb{
	display:block;
	background: linear-gradient(135deg, #1c8f8b, #22a7a3);
	aspect-ratio: 4 / 3;        /* スクショの比率感に寄せる */
	overflow:hidden;
  }
  
  .thumb--photo{
	background:#f3f3f3;
  }
  
  .thumb img{
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
  }
  
  /* レスポンシブ */
  @media (max-width: 900px){
	.case__top{
	  grid-template-columns: 1fr;
	  gap: 18px;
	}
	.case__name{ font-size: 30px; }
	.case__meta{ font-size: 16px; }
	.case__tag{ font-size: 16px; padding: 9px 18px; }
	.case__text{ font-size: 16px; line-height: 1.9; }
  
	.case__thumbs{
	  grid-template-columns: 1fr 1fr; /* スマホ/タブレットは2列 */
	  gap: 16px;
	}
  }
  
  @media (max-width: 520px){
	.case__thumbs{
	  grid-template-columns: 1fr; /* さらに狭ければ1列 */
	}
  }


  /* --- price-row --- */

  .price-row{
	display: flex;
	align-items: center;
	gap: 20px;
	justify-content: center;
  }
  
  /* 左の丸バッジ */
  .price-badge{
	display: inline-block;
	padding: 14px 18px;
	background: #229a9a;
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	border-radius: 999px; /* 完全なピル型 */
	white-space: nowrap;
  }
  
  /* 価格全体 */
  .price-main{
	font-size: 48px;
  }
  
  /* 円 */
  .price-unit{
	font-size: 18px;
	margin-left: 4px;
  }
  
  /* （税込）〜 */
  .price-tax{
	font-size: 14px;
  }
  

 

/* --- benefits__grid --- */

.service__grid{
	max-width: 1100px;
	margin: 0 auto 100px;
	display:grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
  }
  
  .service-card{
	display: flex;
	flex-direction: column;
	height: 100%;
  }
  
  .service-card__media{
	aspect-ratio: 16 / 9; /* 上部画像の比率 */
	overflow:hidden;
  }
  
  .service-card__media img{
	width:100%;
	height:100%;
	object-fit: cover;
	display:block;
  }
  
  .service-card__body{
	padding: 30px;
	background: #fff;
	flex: 1;
  }
  
  .service-card__title{
	margin: 0 0 18px;
	text-align:center;
	color: var(--title);
	font-size: 22px !important;
	color: #229a9a;
	font-weight: 600;
	letter-spacing: .02em;
	margin-bottom: 30px !important;
  }
  
  
  /* 画面が狭い場合：1カラムに */
  @media (max-width: 860px){
	.service__grid{
	  grid-template-columns: 1fr;
	}
	.service-card__title{
	  font-size: 22px;
	}
	.service-card__body{
	  padding: 22px 20px 22px;
	}
  }

  .service-card__body .cta-button{
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 12px 18px;
	background: linear-gradient(135deg, #1aa3a3, #229a9a);
	color: #fff;
	text-decoration: none;
	font-size: 13px;
	margin-top: 10px;
  }
  
  .service-card__body .cta-button__text{
	flex: 1;
	text-align: center;
	white-space: nowrap;
  }
  
  .service-card__body .cta-button__icon{
	font-size: 20px;
	line-height: 1;
	transform: translateX(0);
	transition: transform .2s ease;
  }
  
 
   /* --- step-grid --- */

  /* 全体 */
.step-grid{
	max-width: 1100px;
	margin: 0 auto 120px;
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 10px;
  }
  
  /* カード */
  .step-card{
	border: 1px solid #bfe8e8;
	border-radius: 16px;
	padding: 28px 22px;
	display: grid;
  grid-template-rows:
    80px   /* アイコン */
    40px   /* STEP */
    30px   /* タイトル */
    1fr;   /* 説明文（残り全部） */
  justify-items: center;
  text-align: center;
  }
  
  /* アイコン */
  .step-card img{
	max-height: 64px;
  }
  
  /* STEPラベル */
  .step-label{
	display: inline-block;
	margin-bottom: 14px;
	padding: 6px 16px;
	background: #229a9a;
	color: #fff;
	font-size: 12px;
	border-radius: 999px;
	align-self: center;
  }
  
  /* タイトル */
  .step-title{
	font-size: 16px !important;
  font-weight: 600 !important;
	margin: 0 0 12px !important;
	color: #229a9a;
  }
  
  /* 説明文 */
  .step-text{
	font-size: 13px !important;
	line-height: 1.8;
  }

  @media screen and (max-width: 1024px){
	.step-grid{
	  grid-template-columns: repeat(3, 1fr);
	}
  }
  
  @media screen and (max-width: 767px){
	.step-grid{
	  grid-template-columns: 1fr;
	  margin: 0 auto 60px;
	}
  }

  /*--- faq ---*/
.faq ul{
	display: block;
	line-height: 0;
	max-width: 880px;
	margin: 0 auto 40px;
}
.faq ul>li{
	display: block;
	line-height: 0;
	margin: 0 auto 20px;
}
.faq ul>li:last-child{
	margin-bottom: 0;
}
.faq ul>li span{
	display: block;
	text-align: left;
}
.faq ul>li span.q{
	background: #111;
	line-height: 120%;
	color: #fff;
	font-size: 2.2rem;
	padding: 32px 35px;
	cursor: pointer;
	transition: 0.3s ease-in-out;
	position: relative;
}
.faq ul>li span.q::after{
	position: absolute;
	top: 50%;
	right: 40px;
	display: block;
	content: '';
	width: 8px;
	height: 8px;
	margin-top: -4px;
	border-top: 1px solid #fff;
	border-right: 1px solid #fff;
	-webkit-transform: rotate(135deg);
	transform: rotate(135deg);
	transition: 0.3s ease-in-out;
}
.faq ul>li.active span.q::after{
	-webkit-transform: rotate(-45deg);
	transform: rotate(-45deg);
}
.faq ul>li span.q:hover{
	opacity: 0.7;
}
.faq ul>li span.a{
	padding: 35px;
	border: 2px solid #111;
	border-top: none;
	font-size: 1.8rem;
	line-height: 200%;
	display: none;
	background: #fff;
	width: 100%;
	box-sizing: border-box;
}
.faq ul>li span.a>span{
	display: inline;
	position: relative;
	z-index: 1;
	background: linear-gradient(transparent 80%, #d1eded 0%);
	line-height: 130%;
}

.faq ul>li span.under-line{
	display: initial;
	text-align: left;
}


#contents .price .cols{
	display: block;
	letter-spacing: -0.4em;
	text-align: left;
	line-height: 0;
	margin: 0 auto 90px;
}
#contents .price .cols.v2{
	background: #fff;
	padding: 35px 0 35px 70px;
}
#contents .price .cols.v3{
	margin: 0 auto 45px;
}
#contents .price .cols p.img{
	display: inline-block;
	letter-spacing: normal;
	vertical-align: top;
	width: 530px;
	margin: 0 40px 0 0;
	line-height: 0;
}
#contents .price .cols.v2 p.img{
	margin: 0;
}
#contents .price .cols .text{
	display: inline-block;
	letter-spacing: normal;
	vertical-align: top;
	width: 530px;
}
#contents .price .cols.v2 .text{
	width: 460px;
	margin: 0 40px 0 0;
}
#contents .price .cols .text h4{
	font-size: 3.3rem;
	line-height: 120%;
	color: #229a9a;
	margin: 0 auto 10px;
	font-weight: 100;
}
#contents .price .cols .text p.tx{
	font-size: 1.7rem;
	line-height: 200%;
	margin: 0 auto;
}
#contents .price .cols .text p.sm{
	font-size: 1.3rem;
	line-height: 140%;
	margin: 0 auto;
	padding: 5px 0 0;
}
#contents .price .cols .text p.p{
	font-size: 2.6rem;
	line-height: 200%;
	margin: 0 auto 35px;
	color: #229a9a;
}
#contents .price .cols .text p.p small{
	font-size: 2.6rem;
	padding: 0 20px 0 0;
}
#contents .price .cols .text p.p strong{
	font-size: 4.8rem;
	font-weight: normal;
}
#contents .price .cols .text .recommend{
	background: #fff;
	padding: 30px 35px;
	margin: 30px auto 0;
}
#contents .price .cols.v2 .text .recommend{
	background: #ebf6f6;
}
#contents .price .cols .text .recommend p.t{
	color: #229a9a;
	margin: 0 auto 20px;
	text-align: center;
}
#contents .price .cols .text .recommend p.t>span{
	display: inline-block;
	position: relative;
	font-size: 2.2rem;
	line-height: 160%;
}
#contents .price .cols .text .recommend p.t>span::before{
	content: '|';
	font-size: 2rem;
	position: absolute;
	top: 0;
	left: -20px;
	transform: rotate(-20deg);
}
#contents .price .cols .text .recommend p.t>span::after{
	content: '|';
	font-size: 2rem;
	position: absolute;
	top: 0;
	right: -20px;
	transform: rotate(20deg);
}
#contents .price .cols .text .recommend ol{
	display: block;
}
#contents .price .cols .text .recommend ol>li{
	display: block;
	font-size: 1.7rem;
	padding: 0 0 0 1em;
	margin: 0 auto 5px;
	position: relative;
	line-height: 180%;
}
#contents .price .cols .text .recommend ol>li::before{
	content: '・';
	position: absolute;
	top: 0;
	left: 0;
}

#contents .price .table{
	max-width: 880px;
	margin: -40px auto 40px;
}
#contents .price .table th{
	background: #229a9a;
	padding: 24px 60px 22px;
	color: #fff;
	border: none;
	font-size: 2rem;
	line-height: 140%;
}
#contents .price .table td{
	font-size: 1.6rem;
	line-height: 140%;
	padding: 24px 50px 22px;
	border: 1px solid #edeff3;
	background: #fff;
}
#contents .price .table tr td:nth-child(1){
	background: #c9e4e4;
	border: none;
}
#contents .price .table td span{
	font-size: 2rem;
}
#contents .price .table p.sm{
	font-size: 1.3rem;
	line-height: 180%;
	margin: 0 auto;
	padding: 10px 0 0;
}

#contents .price .payment{
	max-width: 880px;
	background: #fff;
	padding: 65px 80px;
	margin: 0 auto;
	line-height: 0;
	-webkit-box-sizing: border-box;
	box-sizing: border-box;
}
#contents .price .payment h4{
	font-size: 3.3rem;
	font-weight: 100;
	line-height: 120%;
	margin: 0 auto 25px;
}
#contents .price .payment table{
	border: none;
	width: auto !important;
	margin: 0 auto 30px;
}
#contents .price .payment table td{
	border: none;
	padding: 5px 18px;
	line-height: 160%;
	font-size: 1.6rem;
	text-align: center;
	vertical-align: middle;
}
#contents .price .payment p.t{
	color: #229a9a;
	margin: 0 auto 20px;
	text-align: center;
}
#contents .price .payment p.t>span{
	display: inline-block;
	position: relative;
	font-size: 2.2rem;
	line-height: 160%;
}
#contents .price .payment p.t>span::before{
	content: '|';
	font-size: 2rem;
	position: absolute;
	top: 0;
	left: -20px;
	transform: rotate(-20deg);
}
#contents .price .payment p.t>span::after{
	content: '|';
	font-size: 2rem;
	position: absolute;
	top: 0;
	right: -20px;
	transform: rotate(20deg);
}
#contents .price .payment p.img{
	line-height: 0;
	text-align: center;
}
#contents .price .payment p.tx{
	font-size: 1.7rem;
	line-height: 200%;
	margin: 0 auto;
}

#contents .line{
	position: relative;
	margin: 0 auto 160px;
}
#contents .line p.img{
	line-height: 0;
	position: absolute;
	top: 0;
	left: -70px;
}
#contents .line .text{
	width: 550px;
	padding: 0 0 0 40px;
	margin: 0 0 0 auto;
	-webkit-box-sizing: border-box;
	box-sizing: border-box;
}
#contents .line .text h2{
	text-align: left;
	margin: 0 auto 30px;
}
#contents .line .text p.tx{
	font-size: 1.7rem;
	line-height: 200%;
	margin: 0 auto;
}
#contents .line .text p.sub{
	font-size: 2.2rem;
	line-height: 180%;
	margin: 30px auto 10px;
	color: #229a9a;
}
#contents .line .text p.sub span{
	display: inline-block;
	position: relative;
	z-index: 1;
}
#contents .line .text p.sub span::before{
	content: '';
	width: 100%;
	height: 10px;
	background: #e8f6f6;
	position: absolute;
	bottom: 4px;
	left: 0;
	z-index: -1;
}

#contents ul.images{
	display: block;
	letter-spacing: -0.4em;
	text-align: left;
	line-height: 0;
	margin: 40px auto 0;
}
#contents ul.images>li{
	display: inline-block;
	letter-spacing: normal;
	vertical-align: top;
	margin: 0 40px 0 0;
	width: 340px;
}
#contents ul.images>li:last-child{
	margin-right: 0;
}
#contents ul.images>li a{
	display: block;
	line-height: 0;
	color: #111;
}
#contents ul.images>li span{
	display: block;
}
#contents ul.images>li img{
	width: 100%;
	height: auto;
}
#contents ul.images>li .img{
	margin: 0 auto 15px;
}
#contents ul.images>li .t{
	font-size: 1.8rem;
	line-height: 160%;
	color: #229a9a;
	margin: 0 auto 5px;
}
#contents ul.images>li .tx{
	font-size: 1.5rem;
	line-height: 180%;
}

#contents .price .cam-bnr {
	margin:30px auto 0;
}




@media screen and (max-width:767px){
	#contents h2{font-size: 2rem;}
	#contents p.visual{margin-bottom: 20px;}
	#contents p.t_tx {width: 100% !important;margin-bottom: 30px;}
	.business_box {margin: 0 auto 60px;}
	#contents h3 {font-size: 2.4rem; margin: 0 auto 30px;}
	#contents h3 > small {font-size: 1.4rem;margin: 0 auto 5px;}
	.benefit-card__title {font-size: 2.2rem !important;margin-bottom: 14px !important;}
	.check-list {font-size: 14px;gap: 6px;}
	.check-list li {padding-left: 30px;}
	.benefits__grid {margin: 0 auto 60px;}
	#contents .w-gray {margin-bottom: 60px;padding: 30px 0 40px;}
	.case__content {padding: 0;}
	.case__meta {margin: 0;}
	.case__name {font-size: 2rem !important;}
	.case__tag {font-size: 1.2rem !important;}
	.case__thumbs {grid-template-columns: 1fr 1fr;}
	.price-badge {font-size: 11px;}
	.price-main {font-size: 32px;}
	.price-unit{font-size: 14px;margin-left: 2px;}
	.price-tax{font-size: 11px;}
	.step-card{width: 60%;margin: auto;}
	.faq ul>li span.q{font-size: 1.6rem;padding: 15px;line-height: 160%;padding-right: 60px;}
	.faq ul>li span.q::after{right: 25px;}
	.faq ul>li span.q:hover{opacity: 1;}
	.faq ul>li span.a{padding: 20px;font-size: 1.5rem;}

	#contents .price{padding: 40px 0;margin: 0 auto 60px;}
	#contents .price h3{font-size: 2.4rem;margin-bottom: 40px;}
	#contents .price h3>small{font-size: 1.4rem;margin: 0 auto;}
	#contents .price .cols{margin-bottom: 40px;padding: 0 20px;}
	#contents .price .cols.v2{padding: 20px;}
	#contents .price .cols p.img{display: block;width: auto;margin: 0 auto 20px;}
	#contents .price .cols.v2 p.img{margin-bottom: 20px;}
	#contents .price .cols .text{display: block;width: auto;}
	#contents .price .cols.v2 .text{width: auto;margin: 0;}
	#contents .price .cols .text h4{font-size: 2rem;}
	#contents .price .cols .text p.tx{font-size: 1.4rem;line-height: 180%;}
	#contents .price .cols .text p.p{font-size: 1.8rem;padding: 5px 0 0;margin-bottom: 15px;}
	#contents .price .cols .text p.p small{font-size: 1.8rem;}
	#contents .price .cols .text p.p strong{font-size: 2.4rem;}
	#contents .price .cols.v2 .text .recommend{padding: 20px;}
	#contents .price .cols .text .recommend p.t>span{font-size: 1.8rem;}
	#contents .price .cols .text .recommend ol>li{font-size: 1.4rem;margin: 0 auto 5px;}
	#contents .price .table{margin: 0 auto 40px;}
	#contents .price .table>div{width: 100%;overflow: auto;}
	#contents .price .table th{padding: 15px 20px;font-size: 1.8rem;}
	#contents .price .table td{padding: 15px 20px;font-size: 1.6rem;}
	#contents .price .table td span{font-size: 1.8rem;}
	#contents .price .payment{padding: 40px 20px;}
	#contents .price .payment h4{font-size: 2rem;}
	#contents .price .payment table{margin-left: 60px;}
	#contents .price .payment table td{font-size: 1.5rtem;text-align: left;}
	#contents .price .payment table td:nth-child(1){padding: 0;}
	#contents .price .payment table td img{max-width: 30px;}
	#contents .price .payment p.t>span{font-size: 1.8rem;}
	#contents .price .payment p.tx{font-size: 1.4rem;}
	#contents .line{margin: 0 auto 60px;}
	#contents .line p.img{position: static;margin: 0 auto 20px;}
	#contents .line .text{width: auto;margin: 0 auto;padding: 0;}
	#contents .line .text h2{margin-bottom: 20px;}
	#contents .line .text p.tx{font-size: 1.4rem;}
	#contents .line .text p.sub{font-size: 1.4rem;margin: 10px auto;}
	#contents .line .text p.sub span::before{height: 8px;bottom: 1px;}
	#contents ul.images>li{display: block;margin: 0 auto 30px;width: auto;}
	#contents ul.images>li .t{font-size: 1.6rem;}
	#contents ul.images>li .tx{font-size: 1.4rem;}
}