@charset "UTF-8";
/* ---------------------------------------
基本情報
-----------------------------------------*/
html {
	font-size: 62.5%;
	overflow-y: scroll;
}
@media screen and (max-width: 1440px) {
	html {
		font-size: 0.6944444444vw;
	}
}
@media screen and (max-width: 767px) {
	html {
		font-size: 1.3333333333vw;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	html {
		font-size: 1.0638297872vw;
	}
}

*,
*:after,
*:before {
	box-sizing: border-box;
}

body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
address,
time,
ul,
ol,
li,
dl,
dt,
dd,
table,
th,
td,
img,
figure,
figcaption,
form,
input,
button,
textarea,
select {
	margin: 0;
	padding: 0;
	border: none;
	line-height: 100%;
	letter-spacing: 0;
	list-style-type: none;
	font-style: normal;
	font-weight: 400;
	font-family: "Zen Kaku Gothic New", sans-serif;
	font-feature-settings: "palt";
	word-break: break-all;
	line-break: strict;
	-webkit-text-size-adjust: 100%;
}

input,
button,
textarea,
select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	border: none;
	border-radius: 0;
	resize: none;
	outline: none;
	background: none;
}

select::-ms-expand {
	display: none;
}

button:hover {
	cursor: pointer;
}

img,
object {
	vertical-align: bottom;
	max-width: 100%;
	height: auto;
}

a {
	color: inherit;
	text-decoration: none;
}

.preload* {
	transition: none !important;
}

@media screen and (max-width: 767px) {
	img {
		width: 100%;
	}
}
/* responsive
--------------------------------*/
@media screen and (min-width: 768px) {
	.sp, .sp_yoko {
		display: none !important;
	}
}
@media screen and (max-width: 767px) {
	.pc, .sp_yoko {
		display: none !important;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sp_yoko {
		display: block !important;
	}
}
/* base
--------------------------------*/
body {
	color: #333333;
	font-size: 1rem;
	text-align: left;
}

.main {
	display: block;
	overflow: hidden;
	padding-top: 12.5rem;
}

section {
	position: relative;
}

.wrap {
	position: relative;
	width: 100%;
	max-width: 120rem;
	padding: 0 2rem;
	margin: 0 auto;
}

p,
th,
td,
dt,
dd,
li,
input,
button,
textarea {
	font-size: 1.6rem;
	line-height: 2.125;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	line-height: 1.5;
}

.flex {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
}

.flex.reverse {
	flex-direction: row-reverse;
}

.left {
	float: left;
}

.right {
	float: right;
}

.tal {
	text-align: left;
}

.tar {
	text-align: right;
}

.tac {
	text-align: center;
}

.center {
	display: block;
	text-align: center;
	margin-left: auto;
	margin-right: auto;
}

.bold,
strong {
	font-weight: bold;
	font-weight: 700;
}

.is-fixed {
	position: fixed;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
}

.min {
	font-family: "Shippori Mincho", serif;
}

.en {
	font-family: "EB Garamond", serif;
}

.inter {
	font-weight: 700;
	font-family: "Inter", sans-serif;
}

.lato {
	font-weight: 700;
	font-family: "Lato", sans-serif;
}

.green {
	color: #188060;
}

@media screen and (min-width: 768px) {
	a[href*="tel:"] {
		pointer-events: none;
		cursor: default;
	}
	.fade {
		cursor: pointer;
		transition: opacity 0.3s ease;
	}
	.fade:hover {
		opacity: 0.6;
	}
}
@media screen and (max-width: 767px) {
	.main {
		padding-top: 11.7rem;
	}
	.wrap {
		width: 100%;
		padding: 0 4rem;
	}
	p,
	th,
	td,
	dt,
	dd,
	li,
	input,
	button,
	textarea {
		font-size: 2.8rem;
		line-height: 1.75;
	}
}
/* scroll-animation
--------------------------------*/
.fadeup {
	opacity: 0;
	transform: translateY(3rem);
	transition: opacity 1s, transform 1s;
}

.fadein {
	opacity: 0;
	transition: opacity 1s;
}

.scroll.is-show.fadeup,
.scroll.is-show .fadeup {
	opacity: 1;
	transform: translate(0, 0);
}

.onload.is-show .fadein,
.scroll.is-show.fadein,
.scroll.is-show .fadein {
	opacity: 1;
}

/* ---------------------------------------
  main common
-----------------------------------------*/
.bg_green {
	background-color: #EAF3EE;
}

.bg_grid {
	background-image: linear-gradient(0deg, transparent 1.7rem, rgba(0, 0, 0, 0.05) 1.8rem), linear-gradient(90deg, transparent 1.7rem, rgba(0, 0, 0, 0.05) 1.8rem);
	background-color: #EBF6F0;
	background-size: 1.8rem 1.8rem;
}

#sec_pagettl .bg {
	width: calc(100% - 10rem);
	height: 100%;
	position: absolute;
	top: 0;
	right: 0;
}
@media screen and (max-width: 767px) {
	#sec_pagettl .bg {
		width: 100%;
	}
}
#sec_pagettl .bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}
#sec_pagettl .wrap {
	height: 59.7rem;
	display: flex;
	align-items: center;
	align-items: flex-end;
	padding-bottom: 26.5rem;
}
@media screen and (max-width: 767px) {
	#sec_pagettl .wrap {
		height: 51.2rem;
		align-items: flex-end;
		padding-bottom: 3.7rem;
	}
}
#sec_pagettl .ttl span {
	display: inline-block;
}
#sec_pagettl .ttl span.en {
	color: #ffffff;
	font-weight: 600;
	font-size: 1.8rem;
	line-height: 1.2777777778;
	letter-spacing: 0.04em;
	padding: 0.2rem 1.4rem 0.5rem;
	background-color: #188060;
}
@media screen and (max-width: 767px) {
	#sec_pagettl .ttl span.en {
		font-size: 2.6rem;
		line-height: 1.3076923077;
		padding: 0.2rem 1.8rem;
	}
}
#sec_pagettl .ttl span.min {
	color: #188060;
	font-weight: 500;
	font-size: 3.2rem;
	line-height: 1.1875;
	padding: 1rem 1rem 1.4rem;
	background-color: #ffffff;
}
@media screen and (max-width: 767px) {
	#sec_pagettl .ttl span.min {
		font-size: 4.4rem;
		line-height: 1.2272727273;
		padding: 1.4rem 1.5rem 1.8rem;
	}
}
#sec_pagettl .ttl span.note {
	display: block;
	font-size: 1.4rem;
	line-height: 1.5714285714;
	padding: 0.9rem 1.3rem;
	background-color: #F5F5F5;
}
@media screen and (max-width: 767px) {
	#sec_pagettl .ttl span.note {
		font-size: 2.6rem;
		line-height: 1.3846153846;
		padding: 1.3rem 1.7rem;
	}
}
#sec_pagettl .ttl span.note .txt {
	padding-left: 1.25em;
	text-indent: -1.25em;
}

.page_wrap {
	width: 134rem;
	background-color: #ffffff;
	padding: 4.4rem 0 0;
	margin: -19.8rem auto 0;
	position: relative;
	z-index: 1;
}
@media screen and (max-width: 767px) {
	.page_wrap {
		width: 100%;
		padding: 4.5rem 0 0;
		margin-top: 0;
	}
}

.breadcrumb {
	width: 116rem;
	margin: 0 auto;
}
@media screen and (max-width: 767px) {
	.breadcrumb {
		width: 100%;
		padding: 0 4rem;
	}
}
.breadcrumb ol {
	text-align: right;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.breadcrumb ol li {
	display: inline;
	font-weight: 500;
	font-size: 1.2rem;
	line-height: 1.5;
	margin-right: 3.2rem;
	position: relative;
}
@media screen and (max-width: 767px) {
	.breadcrumb ol li {
		font-size: 2.2rem;
		margin-right: 5rem;
	}
}
.breadcrumb ol li::after {
	content: "";
	display: inline-block;
	width: 0.5rem;
	height: 0.5rem;
	border-top: 1px solid #000000;
	border-right: 1px solid #000000;
	rotate: 45deg;
	position: absolute;
	right: -1.5rem;
	top: 0.7rem;
}
@media screen and (max-width: 767px) {
	.breadcrumb ol li::after {
		width: 0.9rem;
		height: 0.9rem;
		right: -2.7rem;
		top: 1.3rem;
	}
}
.breadcrumb ol li:last-child {
	margin-right: 0;
}
.breadcrumb ol li:last-child::after {
	content: none;
}
.breadcrumb ol li a {
	display: inline-block;
	transition: color 0.3s ease;
}
@media (any-hover: hover) {
	.breadcrumb ol li a:hover {
		color: #188060;
	}
}
.breadcrumb ol li img {
	width: 1.8rem;
}
@media screen and (max-width: 767px) {
	.breadcrumb ol li img {
		width: 3.1rem;
	}
}

.btn a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 33.5rem;
	min-height: 6.3rem;
	text-align: center;
	color: #ffffff;
	font-weight: 700;
	font-size: 1.6rem;
	line-height: 1.85;
	padding: 1rem 5rem;
	background-color: #188060;
	border-radius: 0.5rem;
	position: relative;
	overflow: hidden;
}
@media screen and (max-width: 767px) {
	.btn a {
		min-width: 44.2rem;
		min-height: 8.3rem;
		font-size: 2.6rem;
		line-height: 1.7307692308;
		padding: 1.5rem 7.5rem;
		border-radius: 0.6rem;
	}
}
.btn a::before {
	content: "";
	display: block;
	width: 102%;
	aspect-ratio: 1;
	border-radius: calc(infinity * 1px);
	background-color: #1E4E40;
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translate(-50%, -50%) scale(0.2);
	opacity: 0;
	pointer-events: none;
	transition: 0.5s cubic-bezier(0.19, 1, 0.22, 1);
}
.btn a .btn_txt {
	position: relative;
	z-index: 1;
}
.btn a.hover_roll .btn_txt {
	overflow: hidden;
}
.btn a.hover_roll .btn_txt > span {
	display: block;
	transition: transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);
}
.btn a.hover_roll .btn_txt > span + span {
	position: absolute;
	left: 0;
	top: calc(100% + 0.2rem);
}
.btn a .arw {
	width: 2.4rem;
	height: 2.4rem;
	background-color: #ffffff;
	border-radius: 50%;
	position: absolute;
	right: 2.2rem;
	top: 50%;
	transform: translate(0, -50%);
}
@media screen and (max-width: 767px) {
	.btn a .arw {
		width: 3.8rem;
		height: 3.8rem;
		right: 3.3rem;
	}
}
.btn a .arw::before {
	content: "";
	width: 1rem;
	height: 1rem;
	mask: url(../img/common/ico_arw_green.svg) no-repeat center/contain;
	background-color: #188060;
	position: absolute;
	left: 50%;
	top: 50%;
	translate: -38% -50%;
	transition: background-color 0.3s ease;
}
@media screen and (max-width: 767px) {
	.btn a .arw::before {
		width: 1.5rem;
		height: 1.5rem;
	}
}
@media (any-hover: hover) {
	.btn a:hover::before {
		transform: translate(-50%, -50%) scale(1);
		opacity: 1;
		top: 50%;
	}
	.btn a:hover .arw::before {
		background-color: #1E4E40;
	}
	.btn a.hover_roll:hover .btn_txt > span {
		transform: translateY(calc(-100% - 0.2rem));
	}
}

.marker {
	background-image: linear-gradient(transparent 70%, #FFF2AB 0%);
	background-repeat: no-repeat;
	background-position: left bottom;
	background-size: 0 100%;
	transition: all 0.5s ease;
	transition-delay: 1s;
}

.is-show .marker {
	background-size: 100% 100%;
}

/* ---------------------------------------
  header
-----------------------------------------*/
#header {
	width: 100%;
	background-color: #ffffff;
	position: fixed;
	left: 0;
	top: 0;
	z-index: 997;
}
@media screen and (max-width: 767px) {
	#header {
		position: absolute;
	}
}
#header .header_wrap {
	display: flex;
	justify-content: flex-end;
	position: relative;
}
@media screen and (max-width: 767px) {
	#header .header_wrap {
		height: 11.7rem;
	}
}
#header .logo {
	width: 35.9rem;
	height: 15.3rem;
	position: absolute;
	left: 0;
	top: 0;
	z-index: 999;
}
@media screen and (max-width: 767px) {
	#header .logo {
		width: 41.8rem;
	}
}
#header .logo a {
	width: 100%;
	height: 100%;
	display: flex;
	justify-content: center;
	align-items: center;
	background-color: #1E4E40;
}
#header .logo a img {
	width: 27.4rem;
}
@media screen and (max-width: 767px) {
	#header .logo a img {
		width: 33.9rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .logo a img {
		width: 27rem;
	}
}
@media screen and (min-width: 768px) {
	#header .logo {
		transition: all 0.3s ease;
	}
	#header .logo img {
		transition: width 0.3s ease;
	}
}
@media screen and (max-width: 767px) {
	#header .menu_trigger {
		width: 13rem;
		height: 11.7rem;
		background-color: #188060;
		position: fixed;
		right: 0;
		top: 0;
		z-index: 999;
	}
	#header .menu_trigger span {
		width: 4.8rem;
		height: 0.3rem;
		background-color: #ffffff;
		border-radius: 100vh;
		position: absolute;
		left: 0;
		right: 0;
		margin: 0 auto;
		transition: all 0 0.3s ease;
	}
	#header .menu_trigger span:nth-child(1) {
		top: 4.1rem;
	}
	#header .menu_trigger span:nth-child(2) {
		top: 5.7rem;
	}
	#header .menu_trigger span:nth-child(3) {
		top: 7.3rem;
	}
	#header.is-open .menu_trigger span:nth-child(1) {
		top: 5.7rem;
		rotate: -36deg;
	}
	#header.is-open .menu_trigger span:nth-child(2) {
		opacity: 0;
	}
	#header.is-open .menu_trigger span:nth-child(3) {
		top: 5.7rem;
		rotate: 36deg;
	}
}
#header .header_menu {
	height: 12.5rem;
	display: flex;
	align-items: center;
	gap: 0 3.1rem;
}
@media screen and (min-width: 768px) {
	#header .header_menu {
		transition: height 0.3s ease;
	}
}
@media screen and (max-width: 767px) {
	#header .header_menu {
		display: none;
		width: 100%;
		height: 100%;
		position: fixed;
		left: 0;
		top: 0;
		overflow-y: auto;
		z-index: 998;
	}
}
#header .header_menu .menu_wrap {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 1.1rem 0;
	padding: 0.5rem 0;
}
@media screen and (max-width: 767px) {
	#header .header_menu .menu_wrap {
		min-height: 100%;
		display: block;
		padding: 20.5rem 7.5rem 4.5rem;
		background-color: #F7F7F7;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .menu_wrap {
		display: flex;
		justify-content: space-between;
		flex-direction: row;
		flex-wrap: wrap;
		align-items: flex-start;
		padding: 20.5rem 4rem 4.5rem;
	}
}
#header .header_menu .tel {
	display: flex;
	align-items: center;
	padding: 0.6rem 1.7rem 0.9rem 1.2rem;
	background-color: #F8F8F8;
	border-radius: 0.5rem;
	margin-left: auto;
}
@media screen and (max-width: 767px) {
	#header .header_menu .tel {
		flex-wrap: wrap;
		justify-content: center;
		align-items: flex-end;
		padding: 2.8rem 2rem 2.3rem;
		background-color: #ffffff;
		border: 1px solid #699D8D;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .tel {
		width: 49%;
		padding: 2.2rem 1.6rem 1.8rem;
		margin: 0;
	}
}
#header .header_menu .tel .txt {
	font-weight: 700;
	font-size: 1.5rem;
	line-height: 1;
}
@media screen and (max-width: 767px) {
	#header .header_menu .tel .txt {
		width: 100%;
		text-align: center;
		font-size: 2.6rem;
		margin-bottom: 1.8rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .tel .txt {
		font-size: 2rem;
		margin-bottom: 1.4rem;
	}
}
#header .header_menu .tel .num {
	font-weight: 600;
	font-size: 1.8rem;
	line-height: 1;
	margin-left: 2rem;
}
@media screen and (max-width: 767px) {
	#header .header_menu .tel .num {
		font-size: 2.2rem;
		margin-left: 0;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .tel .num {
		font-size: 1.7rem;
	}
}
#header .header_menu .tel .num a {
	display: inline-block;
	color: #188060;
	font-weight: 700;
	font-size: 2.6rem;
	line-height: 1;
}
@media screen and (max-width: 767px) {
	#header .header_menu .tel .num a {
		font-size: 4rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .tel .num a {
		font-size: 3.2rem;
	}
}
#header .header_menu .tel .time {
	color: #6A6868;
	font-weight: 700;
	font-size: 1.3rem;
	line-height: 1;
	margin-left: 1em;
}
@media screen and (max-width: 767px) {
	#header .header_menu .tel .time {
		font-weight: 500;
		font-size: 2.2rem;
		line-height: 1.0909090909;
		margin-left: 0.5em;
	}
	#header .header_menu .tel .time .inter {
		font-family: "EB Garamond", serif;
		font-weight: 500;
		font-size: 2.8rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .tel .time {
		font-size: 1.7rem;
		margin-top: 0.5rem;
	}
	#header .header_menu .tel .time .inter {
		font-size: 2.2rem;
	}
}
#header .header_menu .gnav {
	display: flex;
	align-items: center;
	gap: 3.8rem;
}
@media screen and (max-width: 767px) {
	#header .header_menu .gnav {
		display: block;
		margin-top: 3rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .gnav {
		width: 100%;
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		gap: 0 2rem;
	}
}
#header .header_menu .gnav li {
	font-weight: 500;
	font-size: 1.4rem;
	line-height: 2.3571428571;
}
@media screen and (max-width: 767px) {
	#header .header_menu .gnav li {
		font-weight: 700;
		font-size: 2.8rem;
		line-height: 1.1785714286;
		border-bottom: 1px solid #BCBCBC;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .gnav li {
		font-size: 2.2rem;
	}
}
#header .header_menu .gnav li a {
	display: block;
	position: relative;
}
@media screen and (min-width: 768px) {
	#header .header_menu .gnav li a::after {
		content: "";
		width: 100%;
		height: 1px;
		background-color: #188060;
		position: absolute;
		left: 0;
		right: 0;
		bottom: 0;
		margin: 0 auto;
		transform: scale(0);
		transition: transform 0.3s ease;
	}
	#header .header_menu .gnav li a:hover::after {
		transform: scale(1);
	}
}
@media screen and (max-width: 767px) {
	#header .header_menu .gnav li a {
		padding: 3.2rem 0 3.2rem 7.4rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .gnav li a {
		padding: 2.5rem 0 2.5rem 6rem;
	}
}
#header .header_menu .gnav li .ico {
	display: none;
}
@media screen and (max-width: 767px) {
	#header .header_menu .gnav li .ico {
		display: block;
		width: 4.8rem;
		position: absolute;
		left: 0;
		top: 2.5rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .gnav li .ico {
		width: 3.8rem;
		top: 2rem;
	}
}
#header .header_menu .btn_contact {
	width: 22.2rem;
	height: 100%;
}
@media screen and (max-width: 767px) {
	#header .header_menu .btn_contact {
		width: 100%;
		height: auto;
		margin-top: 2.4rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .btn_contact {
		width: 49%;
		margin: 0;
	}
}
#header .header_menu .btn_contact a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	text-align: center;
	color: #ffffff;
	font-weight: 700;
	font-size: 1.6rem;
	line-height: 1.75;
	letter-spacing: 0.1em;
	padding: 2rem;
	background-color: #188060;
	position: relative;
	overflow: hidden;
}
@media screen and (max-width: 767px) {
	#header .header_menu .btn_contact a {
		height: 10.8rem;
		font-size: 2.8rem;
		line-height: 1.4285714286;
		letter-spacing: 0;
		padding: 2rem 7rem;
		border-radius: 1rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .btn_contact a {
		height: calc(13.495rem + 2px);
		font-size: 2.2rem;
		padding: 1.6rem 3rem;
		border-radius: 0.8rem;
	}
}
#header .header_menu .btn_contact a::before {
	content: "";
	display: block;
	width: 120%;
	aspect-ratio: 1;
	border-radius: calc(infinity * 1px);
	background-color: #1E4E40;
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translate(-50%, -50%) scale(0.2);
	opacity: 0;
	pointer-events: none;
	transition: 0.5s cubic-bezier(0.19, 1, 0.22, 1);
}
#header .header_menu .btn_contact a .btn_txt {
	position: relative;
	z-index: 1;
}
@media screen and (max-width: 767px) {
	#header .header_menu .btn_contact a .btn_txt .ico {
		display: inline-block;
		width: 3.8rem;
		margin-right: 1rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .btn_contact a .btn_txt .ico {
		width: 3rem;
		margin-right: 0.8rem;
	}
}
@media screen and (max-width: 767px) {
	#header .header_menu .btn_contact a .arw {
		width: 3.2rem;
		height: 3.2rem;
		background-color: #ffffff;
		border-radius: 50%;
		position: absolute;
		right: 3.3rem;
		top: 50%;
		translate: 0 -50%;
	}
	#header .header_menu .btn_contact a .arw::before {
		content: "";
		width: 1.4rem;
		height: 1.4rem;
		mask: url(../img/common/ico_arw_green.svg) no-repeat center/contain;
		background-color: #188060;
		position: absolute;
		left: 50%;
		top: 50%;
		translate: -38% -50%;
		transition: background-color 0.3s ease;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .header_menu .btn_contact a .arw {
		width: 2.5rem;
		height: 2.5rem;
		right: 1.2rem;
	}
	#header .header_menu .btn_contact a .arw::before {
		width: 1.1rem;
		height: 1.1rem;
	}
}
@media (any-hover: hover) {
	#header .header_menu .btn_contact a:hover::before {
		transform: translate(-50%, -50%) scale(1);
		opacity: 1;
		top: 50%;
	}
}
@media screen and (max-width: 767px) {
	#header .snav {
		margin-top: 3.5rem;
	}
	#header .snav li {
		font-size: 2.4rem;
		line-height: 2;
	}
	#header .snav li.corporate {
		font-weight: 700;
		font-size: 2.6rem;
		margin-bottom: 1rem;
	}
	#header .snav li a {
		display: inline-block;
	}
	#header .snav li a[target=_blank]::after {
		content: "";
		display: inline-block;
		vertical-align: -0.2rem;
		width: 2.3rem;
		height: 2.3rem;
		background: url(../img/common/ico_link_blank.svg) no-repeat center/contain;
		margin-left: 1rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#header .snav {
		width: 100%;
		margin-top: 2.8rem;
	}
	#header .snav li {
		font-size: 1.9rem;
	}
	#header .snav li.corporate {
		font-size: 2rem;
		margin-bottom: 0.8rem;
	}
	#header .snav li a::after {
		vertical-align: -0.16rem;
		width: 1.8rem;
		height: 1.8rem;
		margin-left: 0.8rem;
	}
}
@media screen and (max-width: 767px) {
	#header .logo_en {
		width: 14.6rem;
		margin: 4.5rem 0 0 auto;
	}
}
@media screen and (min-width: 768px) {
	#header.is-scrolled .logo {
		width: 28rem;
		height: 9rem;
	}
	#header.is-scrolled .logo img {
		width: 22rem;
	}
	#header.is-scrolled .header_menu {
		height: 9rem;
	}
	#header.is-scrolled .header_menu .menu_wrap {
		gap: 0.6rem 0;
	}
}

/* sec_footer_contact
--------------------------------*/
.sec_footer_contact {
	padding: 16.8rem 0 11.9rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact {
		padding: 11.9rem 0 8.5rem;
	}
}
.sec_footer_contact .box {
	padding: 7.8rem 10rem 7.5rem;
	background-color: #ffffff;
	border: 0.3rem solid #188060;
	border-radius: 0.5rem;
	position: relative;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box {
		padding: 8.3rem 5.4rem 4.5rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box {
		padding: 8.3rem 3rem 4.5rem;
	}
}
.sec_footer_contact .box .ttl {
	width: fit-content;
	color: #ffffff;
	font-weight: 700;
	font-size: 2.2rem;
	line-height: 1.6818181818;
	padding: 1.3rem 8.7rem;
	background-color: #188060;
	position: absolute;
	left: 0;
	top: -2.4rem;
	right: 0;
	margin: 0 auto;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .ttl {
		font-size: 3.2rem;
		line-height: 1.6875;
		padding: 2.3rem 5.5rem;
		top: -5rem;
	}
}
.sec_footer_contact .box .lead {
	color: #000000;
	font-weight: 500;
	font-size: 2.2rem;
	line-height: 2.0454545455;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .lead {
		font-size: 2.8rem;
		line-height: 1.9285714286;
	}
}
.sec_footer_contact .box .lead .large {
	font-weight: 700;
	font-size: 2.6rem;
	line-height: 1.7307692308;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .lead .large {
		font-size: 3.4rem;
		line-height: 1.5882352941;
	}
}
.sec_footer_contact .box .illust {
	width: 22.6rem;
	position: absolute;
	right: 4.4rem;
	top: -4.6rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .illust {
		width: 25.9rem;
		position: static;
		margin: 1.1rem auto;
	}
}
.sec_footer_contact .box .btn_wrap {
	display: flex;
	justify-content: space-between;
	margin-top: 2.5rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap {
		flex-direction: column;
		gap: 3rem 0;
		margin-top: 3rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap {
		display: flex;
		flex-direction: row;
		justify-content: space-between;
		gap: 0;
		margin-top: 2.5rem;
	}
}
.sec_footer_contact .box .btn_wrap .btn {
	width: 43.5rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap .btn {
		width: 100%;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap .btn {
		width: 49%;
	}
}
.sec_footer_contact .box .btn_wrap .btn a {
	flex-direction: column;
	width: 100%;
	height: 18.3rem;
	font-weight: 700;
	font-size: 2rem;
	line-height: 2;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap .btn a {
		height: 17.6rem;
		font-size: 2.6rem;
		border-radius: 1rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap .btn a {
		min-width: inherit;
		height: 14rem;
		font-size: 2rem;
		padding: 1.5rem 4rem;
	}
}
.sec_footer_contact .box .btn_wrap .btn a::before {
	width: 110%;
}
.sec_footer_contact .box .btn_wrap .btn a .arw {
	width: 2.6rem;
	height: 2.6rem;
	transition: all 0.3s ease;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap .btn a .arw {
		width: 3.4rem;
		height: 3.4rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap .btn a .arw {
		width: 2.7rem;
		height: 2.7rem;
		right: 1.5rem;
	}
	.sec_footer_contact .box .btn_wrap .btn a .arw::before {
		width: 1.2rem;
		height: 1.2rem;
	}
}
@media (any-hover: hover) {
	.sec_footer_contact .box .btn_wrap .btn a:hover .arw {
		transform: translate(0.5rem, -50%);
	}
}
.sec_footer_contact .box .btn_wrap .btn .btn_txt .ico {
	display: inline-flex;
	justify-content: center;
	align-items: center;
	margin-right: 0.3rem;
	position: relative;
}
.sec_footer_contact .box .btn_wrap .btn .btn_txt .ico img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}
.sec_footer_contact .box .btn_wrap .btn .btn_txt .large {
	display: block;
	line-height: 1.5;
}
.sec_footer_contact .box .btn_wrap .btn._tel a {
	color: #333333;
	line-height: 1.1818181818;
	background-color: #ffffff;
	border: 0.2rem solid #188060;
	pointer-events: all;
	cursor: pointer;
}
.sec_footer_contact .box .btn_wrap .btn._tel a::before {
	background-color: #F8F8F8;
}
.sec_footer_contact .box .btn_wrap .btn._tel a .btn_txt .ico {
	width: 2.6rem;
	height: 2.6rem;
	top: 0.6rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap .btn._tel a .btn_txt .ico {
		width: 3.3rem;
		height: 3.3rem;
		top: 0.8rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap .btn._tel a .btn_txt .ico {
		width: 2.6rem;
		height: 2.6rem;
		top: 0.6rem;
	}
}
.sec_footer_contact .box .btn_wrap .btn._tel a .btn_txt .large {
	font-weight: 500;
	color: #333333;
	font-size: 4.4rem;
	line-height: 1.3181818182;
	margin: 0.5rem 0 0;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap .btn._tel a .btn_txt .large {
		font-size: 5.66rem;
		line-height: 1.2279151943;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap .btn._tel a .btn_txt .large {
		font-size: 4.5rem;
	}
}
.sec_footer_contact .box .btn_wrap .btn._tel a .arw {
	background-color: #188060;
}
.sec_footer_contact .box .btn_wrap .btn._tel a .arw::before {
	background-color: #ffffff;
}
@media (any-hover: hover) {
	.sec_footer_contact .box .btn_wrap .btn._tel a:hover .arw {
		background-color: #1E4E40;
	}
}
.sec_footer_contact .box .btn_wrap .btn._contact .btn_txt .ico {
	width: 3.2rem;
	height: 3.2rem;
	top: 0.8rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap .btn._contact .btn_txt .ico {
		width: 4.1rem;
		height: 4.1rem;
		top: 1rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap .btn._contact .btn_txt .ico {
		width: 3.2rem;
		height: 3.2rem;
		top: 0.8rem;
	}
}
.sec_footer_contact .box .btn_wrap .btn._contact .btn_txt .large {
	font-size: 2.8rem;
	line-height: 1.7857142857;
	margin: 0.2rem 0 1.3rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .btn_wrap .btn._contact .btn_txt .large {
		font-size: 3.6rem;
		line-height: 1.7888888889;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	.sec_footer_contact .box .btn_wrap .btn._contact .btn_txt .large {
		font-size: 2.8rem;
	}
}
.sec_footer_contact .box .txt {
	font-weight: 700;
	font-size: 2.6rem;
	line-height: 2;
	margin-top: 3rem;
}
@media screen and (max-width: 767px) {
	.sec_footer_contact .box .txt {
		font-size: 2.8rem;
		margin-top: 3rem;
	}
}
.sec_footer_contact .box .txt .large {
	font-size: 3rem;
}
.sec_footer_contact .box .txt .xlarge {
	display: inline-block;
	font-size: 3.4rem;
	line-height: 1.1470588235;
}
.sec_footer_contact .box .txt .xlarge .underline {
	display: inline-block;
	border-bottom: 1px solid #333333;
}

/* ---------------------------------------
footer
-----------------------------------------*/
#footer .pagetop,
#footer .fixed_btn {
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s ease, visibility 0.3s ease;
}
#footer .pagetop.is-show,
#footer .fixed_btn.is-show {
	opacity: 1;
	visibility: visible;
}
#footer .pagetop {
	position: relative;
	z-index: 10;
}
#footer .pagetop a {
	width: 5.2rem;
	height: 2.6rem;
	font-size: 0;
	position: fixed;
	right: 4.6rem;
	bottom: 7.7rem;
	transition: transform 0.3s ease;
}
@media screen and (max-width: 767px) {
	#footer .pagetop a {
		width: 8.2rem;
		height: 4rem;
		right: 4.8rem;
		bottom: 17rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .pagetop a {
		bottom: 12rem;
	}
}
#footer .pagetop a::before, #footer .pagetop a::after {
	content: "";
	width: 1px;
	height: 3.4rem;
	background-color: #234339;
	position: absolute;
	bottom: 0;
	transition: background-color 0.3s ease;
}
@media screen and (max-width: 767px) {
	#footer .pagetop a::before, #footer .pagetop a::after {
		height: 5.4rem;
	}
}
#footer .pagetop a::before {
	rotate: 45deg;
	left: 0;
	transform-origin: left bottom;
}
#footer .pagetop a::after {
	rotate: -45deg;
	right: 0;
	transform-origin: right bottom;
}
@media (any-hover: hover) {
	#footer .pagetop a:hover {
		transform: translate(0, -1rem);
	}
	#footer .pagetop a:hover::before, #footer .pagetop a:hover::after {
		background-color: #188060;
	}
}
@media screen and (max-width: 767px) {
	#footer .fixed_btn {
		width: 100%;
		display: flex;
		position: fixed;
		left: 0;
		bottom: 0;
		z-index: 100;
	}
	#footer .fixed_btn .btn {
		width: 50%;
	}
	#footer .fixed_btn .btn a {
		width: 100%;
		min-width: inherit;
		min-height: 13.2rem;
		padding: 1rem;
		border-radius: 0;
	}
	#footer .fixed_btn .btn a::before {
		content: none;
	}
	#footer .fixed_btn .btn .ico {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		margin-right: 0.3rem;
		position: relative;
	}
	#footer .fixed_btn .btn._tel a {
		color: #000000;
		font-weight: 600;
		font-size: 4.6rem;
		line-height: 1;
		background-color: #ffffff;
		border: 1px solid #188060;
	}
	#footer .fixed_btn .btn._tel a .time {
		display: block;
		color: #6A6868;
		font-family: "Zen Kaku Gothic New", sans-serif;
		font-weight: 500;
		font-size: 2rem;
		line-height: 1.45;
	}
	#footer .fixed_btn .btn._tel .btn_txt .ico {
		width: 3.3rem;
		height: 3.3rem;
		top: 0.6rem;
	}
	#footer .fixed_btn .btn._contact a {
		font-size: 2.8rem;
		line-height: 1.4285714286;
	}
	#footer .fixed_btn .btn._contact .btn_txt {
		display: flex;
		align-items: flex-start;
	}
	#footer .fixed_btn .btn._contact .btn_txt .ico {
		width: 4.1rem;
		height: 4.1rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .fixed_btn .btn a {
		min-height: 9rem;
	}
	#footer .fixed_btn .btn._tel a {
		font-size: 3.6rem;
		pointer-events: all;
		cursor: pointer;
	}
	#footer .fixed_btn .btn._tel a .time {
		font-size: 1.6rem;
	}
	#footer .fixed_btn .btn._tel .btn_txt .ico {
		width: 2.6rem;
		height: 2.6rem;
		top: 0.5rem;
	}
	#footer .fixed_btn .btn._contact a {
		font-size: 2.2rem;
	}
	#footer .fixed_btn .btn._contact .btn_txt br {
		display: none;
	}
	#footer .fixed_btn .btn._contact .btn_txt .ico {
		width: 3.5rem;
		height: 3.5rem;
	}
}

#footer {
	padding: 6.3rem 0 8rem;
	background-color: #ffffff;
	position: relative;
}
@media screen and (max-width: 767px) {
	#footer {
		padding: 6.7rem 0 23rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer {
		padding: 6.7rem 0 18rem;
	}
}
#footer .inner {
	display: flex;
	justify-content: space-between;
}
@media screen and (max-width: 767px) {
	#footer .inner {
		flex-direction: column;
	}
}
@media screen and (max-width: 767px) {
	#footer .footer_left {
		display: contents;
	}
}
#footer .footer_left .logo {
	width: 28.7rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_left .logo {
		order: 1;
		width: 47rem;
	}
}
#footer .footer_left .logo a {
	display: block;
}
#footer .footer_left .address {
	font-weight: 500;
	line-height: 2;
	letter-spacing: 0.02em;
	margin-top: 2rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_left .address {
		order: 2;
		font-size: 2.5rem;
		margin-top: 4.6rem;
	}
}
#footer .footer_left .snav {
	margin-top: 7.5rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_left .snav {
		order: 4;
		margin-top: 5rem;
	}
}
#footer .footer_left .snav li {
	font-size: 1.5rem;
	line-height: 2;
}
@media screen and (max-width: 767px) {
	#footer .footer_left .snav li {
		font-size: 2.4rem;
	}
}
#footer .footer_left .snav li + li {
	margin-top: 1.5rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_left .snav li + li {
		margin-top: 0;
	}
}
#footer .footer_left .snav li.corporate {
	font-weight: 700;
	font-size: 1.6rem;
	margin-bottom: 2rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_left .snav li.corporate {
		font-size: 2.6rem;
		margin-bottom: 1rem;
	}
}
#footer .footer_left .snav li a {
	display: inline-block;
	transition: color 0.3s ease;
}
#footer .footer_left .snav li a[target=_blank]::after {
	content: "";
	display: inline-block;
	vertical-align: -0.2rem;
	width: 1.6rem;
	height: 1.6rem;
	mask: url(../img/common/ico_link_blank.svg) no-repeat center/contain;
	background-color: rgba(51, 51, 51, 0.8);
	margin-left: 0.5rem;
	transition: all 0.3s ease;
}
@media screen and (max-width: 767px) {
	#footer .footer_left .snav li a[target=_blank]::after {
		width: 2.3rem;
		height: 2.3rem;
		margin-left: 1rem;
	}
}
@media (any-hover: hover) {
	#footer .footer_left .snav li a:hover {
		color: #188060;
	}
	#footer .footer_left .snav li a:hover::after {
		background-color: #188060;
		translate: 0.5rem;
	}
}
#footer .footer_right {
	width: 39.5rem;
	overflow: hidden;
}
@media screen and (max-width: 767px) {
	#footer .footer_right {
		order: 3;
		width: 100%;
	}
}
#footer .footer_right .gnav {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1.9rem 3.8rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .gnav {
		gap: 2.8rem 4.5rem;
		padding-right: 4rem;
		margin-top: 5.8rem;
	}
}
#footer .footer_right .gnav li {
	color: #000000;
	font-weight: 500;
	font-size: 1.6rem;
	line-height: 1.4375;
	position: relative;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .gnav li {
		font-size: 2.8rem;
		line-height: 1.4642857143;
	}
}
#footer .footer_right .gnav li + li::before {
	content: "";
	width: 1px;
	height: 2rem;
	background-color: #D9D9D9;
	position: absolute;
	left: -1.7rem;
	top: 0.1rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .gnav li + li::before {
		width: 0.16rem;
		height: 3.3rem;
		left: -2.3rem;
		top: 0.3rem;
	}
}
#footer .footer_right .gnav li a {
	display: block;
	position: relative;
}
#footer .footer_right .gnav li a::after {
	content: "";
	width: 100%;
	height: 1px;
	background-color: #188060;
	position: absolute;
	left: 0;
	right: 0;
	bottom: -0.5rem;
	margin: 0 auto;
	transform: scale(0);
	transition: transform 0.3s ease;
}
@media (any-hover: hover) {
	#footer .footer_right .gnav li a:hover::after {
		transform: scale(1);
	}
}
#footer .footer_right .btn_wrap {
	margin-top: 4.3rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap {
		margin-top: 7rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .footer_right .btn_wrap {
		display: flex;
		justify-content: space-between;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .footer_right .btn_wrap .btn {
		width: 49%;
	}
}
#footer .footer_right .btn_wrap .btn + .btn {
	margin-top: 1.8rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap .btn + .btn {
		margin-top: 2.7rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .footer_right .btn_wrap .btn + .btn {
		margin-top: 0;
	}
}
#footer .footer_right .btn_wrap .btn a {
	min-width: inherit;
	width: 100%;
	min-height: 6.8rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap .btn a {
		min-height: 10.9rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .footer_right .btn_wrap .btn a {
		padding: 1.6rem 3rem;
	}
	#footer .footer_right .btn_wrap .btn a .arw {
		width: 2.7rem;
		height: 2.7rem;
		right: 1.5rem;
	}
	#footer .footer_right .btn_wrap .btn a .arw::before {
		width: 1.2rem;
		height: 1.2rem;
	}
}
#footer .footer_right .btn_wrap .btn .ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-right: 0.3rem;
	position: relative;
}
#footer .footer_right .btn_wrap .btn._tel a {
	color: #333333;
	font-weight: 600;
	font-size: 2.6rem;
	background-color: #ffffff;
	border: 1px solid #188060;
	pointer-events: all;
	cursor: pointer;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap .btn._tel a {
		font-size: 4.2rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .footer_right .btn_wrap .btn._tel a {
		font-size: 3.2rem;
	}
}
#footer .footer_right .btn_wrap .btn._tel a::before {
	background-color: #F8F8F8;
}
#footer .footer_right .btn_wrap .btn._tel a .btn_txt .ico {
	width: 1.9rem;
	height: 1.9rem;
	top: 0.3rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap .btn._tel a .btn_txt .ico {
		width: 3.3rem;
		height: 3.3rem;
		top: 0.6rem;
	}
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap .btn._tel a .btn_txt .ico {
		width: 2.6rem;
		height: 2.6rem;
		top: 0.5rem;
	}
}
#footer .footer_right .btn_wrap .btn._tel a .arw {
	background-color: #188060;
	transition: background-color 0.3s ease;
}
#footer .footer_right .btn_wrap .btn._tel a .arw::before {
	background-color: #ffffff;
}
@media (any-hover: hover) {
	#footer .footer_right .btn_wrap .btn._tel a:hover .arw {
		background-color: #1E4E40;
	}
}
#footer .footer_right .btn_wrap .btn._contact a {
	font-size: 1.8rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap .btn._contact a {
		font-size: 2.8rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .footer_right .btn_wrap .btn._contact a {
		font-size: 2.2rem;
	}
}
#footer .footer_right .btn_wrap .btn._contact .btn_txt .ico {
	width: 2.4rem;
	height: 2.4rem;
	top: 0.5rem;
}
@media screen and (max-width: 767px) {
	#footer .footer_right .btn_wrap .btn._contact .btn_txt .ico {
		width: 4.1rem;
		height: 4.1rem;
		top: 1rem;
	}
}
@media screen and (max-width: 767px) and (orientation: landscape) {
	#footer .footer_right .btn_wrap .btn._contact .btn_txt .ico {
		width: 3.2rem;
		height: 3.2rem;
		top: 0.8rem;
	}
}
#footer .logo_en {
	width: 13.4rem;
	margin: 3rem auto 0;
}
@media screen and (max-width: 767px) {
	#footer .logo_en {
		width: 22.5rem;
		margin: 11rem 0 0;
	}
}
#footer .copyright {
	color: #000000;
	text-align: right;
	font-size: 1.1rem;
	line-height: 1;
	letter-spacing: 0.1em;
	padding: 2rem 0 0;
	border-top: 1px solid #E1E1E1;
	margin-top: 3.3rem;
}
@media screen and (max-width: 767px) {
	#footer .copyright {
		font-size: 2.2rem;
		padding: 1.8rem 0 0;
	}
}

/* ---------------------------------------
clearfix
-----------------------------------------*/
.cf:after {
	content: ".";
	display: block;
	height: 0;
	font-size: 0;
	clear: both;
	visibility: hidden;
}

.cf {
	display: inline-block;
}

/* Hides from IE Mac */
* html .cf {
	height: 1%;
}

.cf {
	display: block;
}

/* End Hack */