@charset "UTF-8";
/* CSS Document */

:root {
	--default: #1f2529;
	--blue1: #354592;
	--blue2: #297cbe;
	--blue3: #6cb8c7;
	--blue4: #05a9f4;
	--gradient-blue: linear-gradient(90deg,rgba(120, 185, 207, 1) 0%,rgba(27, 148, 206, 1) 20%,rgba(57, 72, 156, 1) 100%);
	--gradient-blue2: linear-gradient(90deg,rgba(27, 148, 206, 1) 0%,rgba(57, 72, 156, 1) 100%);
	--gradient-gold: linear-gradient(90deg,rgba(187, 140, 34, 1) 0%, rgba(220, 214, 83, 1) 50%, rgba(186, 141, 32, 1) 100%);
	--ja1: YakuHanJP, "Zen Kaku Gothic New","Hiragino Sans", sans-serif;
	--light-gray: #f5f5f5;
	--dark-gray: #787b80;
}


ul,ol {
	margin-left: 0;
	 padding: 0;
}
ul li{
	list-style:none;
}
img {
    outline: none;
    border: none;
    max-width: 100%;
    height: auto;
}
figure img {
	width: auto;
    max-width: 100%;
    height: auto;
}

a:focus-visible {
    outline: 1px solid #3184d9;
    outline: -webkit-focus-ring-color auto 1px;
	outline-offset: 1px;
}

.wrapper {
	background: #fff;
	position: relative;
	z-index: +1;
}
.wrapper::before {
	content: '';
	display: block;
	width: 100%;
	height: 80px;
	position: absolute;
	left: 0;
	top: -78px;
	background: url(images/common/bg_wave.svg) center top/100% no-repeat;
	z-index: +3
}

.container.container-s {
	max-width: 960px;
}
.container, .container-fluid, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl {
    --bs-gutter-x: 30px;
 }
/*-----------------------------------------------------------------------------
	Typography
-----------------------------------------------------------------------------*/
html {
  	width: 100%;
    height: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-text-size-adjust: 100%;
    font-size: 16px;
}
body {
	position: relative;
	color: var(--default);
	font-size: 1rem;
    font-weight: 500;
    font-style: normal;
    font-family: YakuHanJP, "Zen Kaku Gothic New","Hiragino Sans", sans-serif;
    line-height: 2;
    overflow-x: hidden;
}
.en1 {
	font-family: "Montserrat", sans-serif;
}
.en2 {
	font-family: "Jost", sans-serif;
}
.en3 {
	font-family: "Playfair Display", serif;
}
.mincho {
	font-family: "リュウミン M-KL", 游明朝, YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", HG明朝E, "ＭＳ Ｐ明朝", "ＭＳ 明朝", serif;
}
h2,h3,h4 {
	line-height: 1.65;
	letter-spacing: .03em;
	font-family:  "Zen Kaku Gothic New","Hiragino Sans", sans-serif;
}
h2.title-center {
	text-align: center;
	font-size: clamp(1rem, 0.909rem + 0.45vw, 1.25rem);
	letter-spacing: .075em;
	margin-bottom: 2.5em;
	font-weight: 400;
}
h2.title-center span {
	display: block;
	font-size: clamp(1.875rem, 1.33rem + 2.73vw, 3.375rem);
	font-weight: 300;
}
h2.min {
	font-size: clamp(1.5rem, 1.227rem + 1.36vw, 2.25rem);
	font-weight: 600;
    margin-bottom: 1em;
    font-family: "リュウミン M-KL", 游明朝, YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Mincho ProN", HG明朝E, "ＭＳ Ｐ明朝", "ＭＳ 明朝", serif;
        background: var(--gradient-blue);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}
h3.title-center {
	text-align: center;
	font-size: clamp(1.25rem, 0.886rem + 1.82vw, 2.25rem);
	letter-spacing: .075em;
	margin-bottom: 1.5em;
	font-weight: 500;
	line-height: 1.5;
}
h3.title-center span.ja {
	display: block;
	font-size: clamp(0.938rem, 0.915rem + 0.11vw, 1rem);
	font-weight: 500;
	line-height: 1.5;
}
/*-----------------------------------------------------------------------------
	Misc
-----------------------------------------------------------------------------*/
.w-100 {
	width: 100%;
}
.mb-0 {
	margin-bottom: 0;
}
.mb-5 {
	margin-bottom: 5px;
}
.mb-10 {
	margin-bottom: 10px;
}
.mb-20 {
	margin-bottom: 20px;
}
.mb-30 ,.mb20-30 {
	margin-bottom: 30px;
}
.mb-40,.mb20-40 {
	margin-bottom: 40px;
}
.mb-50 {
	margin-bottom: 50px;
}
.mb-60,.mb30-60 {
	margin-bottom: 60px;
}
.mb30-80 {
	margin-bottom: 80px;
}
.ptb40,.ptb20-40 {
	padding-top: 40px;
	padding-bottom: 40px;
}
.ptb50,.ptb30-50 {
	padding-top: 50px;
	padding-bottom: 50px;
}
.ptb30-80 {
	padding-top: 80px;
	padding-bottom: 80px;
}
.ptb30-80b {
	padding-top: 80px;
	padding-bottom: 30px;
}
.sec {
	padding-top: 100px;
	padding-bottom: 100px;
}
.sec__01 {
	padding-top: 100px;
	padding-bottom: 50px;
}
.sec__02 {
	padding-top: 70px;
	padding-bottom: 70px;
}
.pt40 {
	padding-top: 40px;
}
.ptb30 {
	padding-top: 30px;
	padding-bottom: 30px;
}
.ptb50 {
	padding-top: 50px;
	padding-bottom: 50px;
}
.ptb20 {
	padding-top: 20px;
	padding-bottom: 20px;
}
.pt30 {
	padding-top: 30px;
}
.f-left{
	float:left;
}
.f-right{
	float:right;
}
.box-link:hover {
	cursor: pointer;
}
.gray {
	background: #f5f3ef;
}
.color-red {
	color: #fb5357;
}
.color-white {
	color: #fff;
}
.text-right {
	text-align: right;
}
.text-center,.text-left-center {
	text-align: center;
}
.marker {
	display: inline-block;
    position: relative;
}
.marker:before {
    content: "";
    position: absolute;
    display: inline-block;
    width: 100%;
    height: 30%;
    bottom: 4px;
    background: #f3ef7f;
    z-index: -1;
}
.shadow {
	box-shadow: 20px 20px #f1f1f1;
}
.kome {
	padding-left: 1em;
	position: relative;
}
.kome::before {
	content: "※";
	position: absolute;
	left: 0;
	top: 0;
}
.round {
	border-radius: 12px;
}
.border_box {
	padding: 1em 2em;
	border: 3px solid var(--lightblue2);
	border-radius: 12px;
}
.font-l {
	font-size: 1.2em;
}
.font-m {
	font-size: 1.1em;
}
ul.image li {
	padding-left: 1.5em;
	position: relative;
}
ul.image li::before {
	content: '';
	display: block;
	width: 8px;
	height: 8px;
	background: var(--blue2);
	position: absolute;
	left: 4px;
	top:  .8em;
	border-radius: 50%;
}
/*-----------------------------------------------------------------------------
	リンク
-----------------------------------------------------------------------------*/
a,a:link {
	transition: .25s ease-in;
	text-decoration: none;
	color: var(--default);
}
a:hover {
	color: var(--default);
}
a.btn {
	display: flex;
	justify-content: center;
	align-items: center;
	overflow: hidden;
    transition: .3s ease;
    padding: 5px 1rem;
    width: 250px;
    height: 46px;
    color: #fff;
    background: var(--gradient-gold);
    position: relative;
    font-weight: 600;
}
a.btn span {
	display: inline-block;
	position: relative;
	z-index: +1;
}
a.btn::before {
	top: 0;
    left: 0;
    position: absolute;
    content: ' ';
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg,rgba(187, 140, 34, 1) 0%, rgba(220, 214, 83, 1) 20%, rgba(186, 141, 32, 1) 100%);
    transform: translateX(-120%) skewX(63deg);
    transition: .4s cubic-bezier(.23, 1, .32, 1);
    z-index: -1;
}
a.btn::after {
	content: "";
	display: block;
	width: 12px;
	height: 12px;
	background: url(images/common/arrow_white.svg) center center/cover no-repeat;
	transition: .3s ease;
	position: absolute;
	right: 10px;
	top: calc(50% - 6px);
}
a.btn:hover:before {
    transform: translateX(0%) skewX(0deg);
}
a.btn:hover::after {
	transform: translateX(2px);
}
a.btn.trans {
	color: var(--blue2); 
	border: 1px solid var(--blue2);
	background: transparent;
}
a.btn.trans:hover {
	color: #fff;
}
a.btn.trans::before {
	background: var(--blue2);
}
a.btn.trans::after {
	background: url(images/common/arrow_blue.svg) center center/cover no-repeat;
}
a.btn.trans:hover::after {
	background-image: url(images/common/arrow_white.svg);
}
a.btn.btn_white {
	color: #fff;
	border: 1px solid rgba(255,255,255,.6);
	background: transparent;
}
a.btn.btn_white::before {
	background: rgba(255,255,255,.8);
}
a.btn.btn_white::after {
	background: url(images/common/arrow_white.svg) center center/cover no-repeat;
}
a.btn.btn_white:hover {
	color: var(--blue2);
}
a.btn.btn_white:hover::after {
	background-image: url(images/common/arrow_blue.svg);
}

.view-more {
    display: block;
    width: 100%;
    position: relative;
    text-align: right;
    font-size: 13px;
    transition: .25s ease-out;
}
.view-more::before {
	content: '';
    width: calc(100% - 9em);
    height: 1px;
    background: #222;
    opacity: .2;
    transition: .25s ease-out;
    position: absolute;
    left: 0;
    top: 50%;
}
.view-more::after  {
	content: '';
    width: calc(100% - 9em);
    height: 1px;
    background: #222;
    opacity: .4;
    transition: .25s ease-out;
    position: absolute;
    left: 0;
    top: 50%;
    transform: scaleX(0);
    transform-origin: left;
    z-index: +1;
}
.view-more i {
	font-size: 10px;
	margin-left: .25em;
	transition: .25s ease-out;
}
a:hover .view-more i {
	transform: translateX(.5em);
}
a:hover .view-more::after {
	transform: scaleX(1);
}

/*-----------------------------------------------------------------------------
	ローディングアニメーション
-----------------------------------------------------------------------------*/
#loading {
	position: fixed;
	inset: 0;
	background: #fff;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	transition:
		transform 1s cubic-bezier(.77,0,.175,1),
		opacity .6s ease;
}
#loading img {
	width: 160px;
	opacity: 0;
	filter: blur(10px);
	transform: translateY(10px) scale(1.02);
	animation: logoFade 1.4s cubic-bezier(.77,0,.175,1) forwards;
}
#loading.hide {
	transform: translateY(-100%);
	opacity: 0;
}

@keyframes logoFade {
	0% {
		opacity: 0;
		filter: blur(10px);
		transform: translateY(10px) scale(1.02);
	}
	100% {
		opacity: 1;
		filter: blur(0);
		transform: translateY(0) scale(1);
	}
}
/*-----------------------------------------------------------------------------
	フォーム
-----------------------------------------------------------------------------*/
table.table-contact {
	width: 100%;
	margin-bottom: 1.5em;
}
table.table-contact p {
	margin: 0;
}
table.table-contact th {
	white-space: nowrap;
	padding: 2em 1em;
	font-weight: bold;
	border-bottom: 1px solid rgba(0,0,0,.1);
	background: var(--lightblue1);
	width: 240px;
}
table.table-contact td {
	padding: 2em 1em;
	border-bottom: 1px solid rgba(0,0,0,.1);
}
.contact-form span.hissu {
	display: inline-block;
    color: #fff;
    font-size: 1.2rem;
    padding: 2px 12px;
    border-radius: 3px;
    background: #fb5357;
    font-weight: bold;
}
table.table-contact span.hissu {
	float: right;
}
.wpcf7-form-control-wrap {
/*   display: block; */
}
.wpcf7-form-control.wpcf7-checkbox {
  display: flex;
  flex-wrap: wrap;
}
span.wpcf7-list-item {
  position: relative;
  margin: 0 24px 0 0 !important;/*項目ごとの余白を調整*/
}
table.table-contact input[type="checkbox"],.form__about_policy input[type="checkbox"] {
  position: absolute;
  opacity: 0;/*既存のチェックボックスを見えなくする*/
}
.wpcf7-list-item-label:before {/*チェックボックスの枠*/
  content: '';
  border: 1px solid #222;
  display: inline-block;
  width: 18px;
  height: 18px;
  position: relative;
  top: -1px;
  margin-right: 10px;
  vertical-align: middle;
  cursor: pointer;
  text-align: center;
}
input[type="checkbox"] + .wpcf7-list-item-label:after {
  content: '';
  display: block;
  visibility: hidden;
  width: 20px;
  height: 20px;
  border: 2px solid #6cc0e5;
  position: absolute;
  left: 0;
  top: 0;
  opacity: 0;
  -webkit-transition: all .12s, border-color .08s;
  transition: all .12s, border-color .08s;
}
input[type="checkbox"]:checked + .wpcf7-list-item-label:after {
	visibility: visible;
    width: 10px;
  top: 0;
  left: 7px;
  border-radius: 0;
  opacity: 1;
  border-top-color: transparent;
  border-left-color: transparent;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

input[type="checkbox"]:checked + label:before {
  width: 10px;
  top: -5px;
  left: 5px;
  border-radius: 0;
  opacity: 1;
  border-top-color: transparent;
  border-left-color: transparent;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}
.table-contact input[type=text],
.table-contact input[type=email],
.table-contact input[type=tel] {
	width: 50%;
}
.table-contact input[type=text].long {
	width: 100%;
}
.table-contact input[type=text].short {
	width: 140px;
}
.table-contact input#zip {
	width: 140px;
	margin-bottom: 8px;
    margin-left: .5em;
}
.table-contact select {
    word-wrap: normal;
    min-width: 200px;
    height: 36px;
}
.table-contact textarea {
	width: 100%;
}
input[type=submit],input[type=button] {
	display: inline-block;
    font-weight: bold;
    color: #fff;
    width: 270px;
    height: 46px;
    line-height: 46px;
    text-align: center;
    background-color: var(--default);
    border: none;
    position: relative;
    z-index: 1;
    transition: all .25s ease-out;
    margin: 0 5px;
}
input[type=button] {
	color: #999;
	background-color: #eaecee;
	border: 2px solid #ccc;
	border-radius: 10px;
}
input[type=submit]:hover {
	background: #c3a264;
}
input[type=button]:hover {
	background-color: #ccc;
}
.wpcf7-spinner {
	position: absolute !important;
    left: 20px;
}

.alert {
	display: inline-block;
	color: #fb5357;
	border: 1px solid #fb5357;
	padding: 1rem 1.5em;
}
.form__about_policy {
	background: var(--lightblue);
	text-align: center;
	padding: 1em 2em;
	margin-top: 3rem;
	margin-bottom: 2rem;
}
::placeholder {
   color: #aaa;
}
/*-----------------------------------------------------------------------------
	テーブル
-----------------------------------------------------------------------------*/
.table-simple {
	margin-bottom: .5em;
}
.table-simple th {
	vertical-align: top;
	font-weight: 500;
	white-space: nowrap;
}
.table-simple td {
	vertical-align: top;
}

.table-simple-bg th {
	vertical-align: top;
	font-weight: 500;
	white-space: nowrap;
	padding: 3px 0;
}
.table-simple-bg th span {
    display: block;
    color: var(--blue1);
    background: var(--lightblue1);
    padding: 0 2em;
    border-radius: 200px;
    white-space: nowrap;
    text-align: center;
    font-weight: 600;
    line-height: 1.75;
}
.table-simple-bg td {
	padding: 3px 0 3px 1em;
	line-height: 1.65;
	vertical-align: top;
}

/*--------------------------------------------------------------
# footer_info
--------------------------------------------------------------*/
#footer_info {
	height: 440px;
	margin-top: 3rem;
}
#footer_info > .row {
}
#footer_info::before {
	/* background: var(--gradient-blue); */
}
.footer_info_right {
	padding: 1rem 3rem;
	/* color: #fff; */
}
.footer_info_right table {
	width: 100%;;
}
.footer_info_right table th {
	vertical-align: top;
	font-family: "Jost", sans-serif;
	font-weight: 500;;
	padding: 1rem;
	border-bottom: 1px solid rgba(0,0,0,.1);
}
.footer_info_right table td {
	padding: 1rem;
	vertical-align: top;
	border-bottom: 1px solid rgba(0,0,0,.1);
}
.footer_info_right table tr:last-child th,.footer_info_right table tr:last-child td {
	border-bottom: none;
}
#map {
  filter: grayscale(90%);
  height: 100%;
  overflow: hidden;
}
#map iframe {
	width: 100%;
	height: 100%;
	min-height: 440px;
}
/*--------------------------------------------------------------
# footer
--------------------------------------------------------------*/
#footer {
	position: relative;
	padding-top: 40px;
	padding-bottom: 30px;
}
/* #footer::before {
    content: '';
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
    background: url(images/common/bg_milk.jpg) center top / cover no-repeat;
    z-index: -1;
    filter: blur(20px);
} */
#footer::after {
	content: '';
	display: block;
	width: 100%;
	height: 3px;
    position: absolute;
    left: 0;
    top: 0;
    z-index: +1;
	background: var(--gradient-gold);
}
.footer_container {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 0 5%;
}
#footer .footer_logo img {
	margin-bottom: 1em;
}
#footer .address {
	text-align: center;
	opacity: .7;
}
.footer_sns {
	display: flex;
	justify-content: center;
	margin-bottom: 1rem;
}
.footer_sns a {
	display: inline-block;
	color: var(--default);
	font-size: 1.25rem;
	padding: 0 4px;
	line-height: 1.5;
	opacity: .7;
}
.footer_sns a:hover {
	opacity: 1;
}
.copyright {
	font-size: 11px;
	opacity: .7;
}
/*--------------------------------------------------------------
# SNS banner
--------------------------------------------------------------*/
.following-banner {
	position: fixed;
	z-index: 100;
	right: 0;
	bottom: 15%;
	transform: translateX(60px);
	transition: .3s ease;
}
.following-banner.active {
	transform: translateX(0);
}
.following-banner a {
	color: #fff;
	font-size: 1.1em;
	font-weight: 600;
	letter-spacing: 0.1em;
	writing-mode: vertical-rl;
	white-space: nowrap;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 50px;
	height: 180px;
	padding-bottom: 1rem;
	background: linear-gradient(120deg, rgba(120, 185, 207, 1) 0%, rgba(27, 148, 206, 1) 20%, rgba(57, 72, 156, 1) 100%);
}
.following-banner a:hover {
	opacity: .9;
}
.following-banner a span {
	display: block;
	width: 12px;
    height: 12px;
    background: url(images/common/arrow_white.svg) center center / cover no-repeat;
    transition: .2s ease;
    position: absolute;
    bottom: 13px;
}
.following-banner a:hover span {
	transform: translateX(2px);
}

/* 1301px以上 */
@media (min-width: 1301px) {
	.gx-6{--bs-gutter-x:6rem}
}
/* 992px以上 */
@media (min-width: 992px) {
	.side_padding {
		padding-left: 1.5em;
		padding-right: 1.5em;
	}

}
/* 768px以上 */
@media (min-width: 768px) {
	a.tel {
		pointer-events: none;
	    text-decoration: none;
	}

}

/* 1200px以下 */
@media (max-width: 1200px) {
}



/* 991px以下 */
@media (max-width: 991px) {
	h2.title {
		font-size: 3.6rem;
	}
	h3.has_en {
		font-size: 2rem;
		margin-bottom: .65em;
	}
	h3.has_en span {
		font-size: 1.4rem;
		margin-bottom: .5em;
	}
	#footer_info {
		height: 480px;
	}
	#map iframe {
		height: 480px;
	}

}
@media (max-width: 767px) {
	
	body {
		font-size:  0.9375rem;
		line-height: 1.75;
	}
	.wrapper::before {
		height: 30px;
		top: -28px;
	}

	.mb20-40,.mb20-30 {
		margin-bottom: 20px;
	}
	.mb30-60,.mb30-80 {
		margin-bottom: 30px;
	}
	.ptb20-40 {
		padding-top: 20px;
		padding-bottom: 20px;
	}
	.ptb30-50,.ptb30-80,.ptb30-80b  {
		padding-top: 30px;
		padding-bottom: 30px;
	}
	.text-left-center {
		text-align: left;
	}
	section.bar:after {
	    height: 3rem;
	}
	.border_box {
		padding: .75em 1em;
		border: 2px solid var(--lightblue2);
		border-radius: 12px;
	}
	ul.disc li {
	    padding-left: 1.5rem;
	}
	ul.disc li::before {
	    width: 8px;
	    height: 8px;
	    top: 0.6em;
	    border-radius: 50%;
	}

/********************************************** 
	Typography
********************************************* */	
	h2, h3, h4 {
		line-height: 1.5;
	}
	.font-l {
		font-size: 1em;
	}
	h2.title-center {
		margin-bottom: 1.5em;
	}
	h3.title-center {
		margin-bottom: 1em;
	}
/********************************************** 
	Tables
********************************************* */
	table.table th {
	     padding: .75em;
	     width: auto;
	}
	table.table td {
	     padding: .75em;
	}
	table.table.table-res th {
		display: block;
		width: 100%;
		border-right: none;
		background: rgba(201,235,250,.3)
	}
	table.table.table-res td {
		display: block;
		width: 100%;
		border-top: none;
	}
/********************************************** 
	Contact
********************************************* */
	table.table-contact {
		margin-bottom: 1rem;
	}
	table.table-contact th {
		display: block;
		width: 100%;
		padding: 1rem 1em 0;
		border-bottom: none;
	}
	table.table-contact td {
		display: block;
		width: 100%;
		padding: 1em 1rem;
		border-bottom: 1px solid rgba(0,0,0,.1);
	}
	.table-contact {
		margin-bottom: 20px;
		border-top: 1px solid rgba(0,0,0,.1);
	}
	.table-contact input[type=text],
	.table-contact input[type=email],
	.table-contact input[type=tel] {
		width: 100%;
	}
	input[type=submit],input[type=button] {
	    width: 100%;
	    margin: 3px 0;
	}
	input[type="checkbox"]:checked + .wpcf7-list-item-label:after {
		top: -3px;
	}
/********************************************** 
	footer_info
********************************************* */
	#footer_info {
		height: auto;
		margin-top: 1rem;
	}
	#map {
		height: 300px;
	}
	.footer_info_right {
		padding: 1rem;
	}
	.footer_info_right table th,
	.footer_info_right table td {
		display: block;
		width: 100%;
		border-bottom: none;
		padding: 10px 0 0;
	}
	.footer_info_right table td {
		padding: 0 0 10px;
		border-bottom: 1px solid rgba(0, 0, 0, .1);
	}

/********************************************** 
	footer
********************************************* */
	#footer {
		padding-top: 30px;
	}
	.footer_container {
		display: block;
		padding: 0px 15px;
		text-align: center;
	}
/*--------------------------------------------------------------
# SNS banner
--------------------------------------------------------------*/
	.following-banner {
		bottom: 0;
	}
	.following-banner a {
		font-size: 1em;
		width: 40px;
		height: 100px;
	}

}
@media (max-width: 576px) {
	#footer .address {
		text-align: left;
	}
}