@charset "UTF-8";
/* CSS Document */
/*=======================================
  共　通
=======================================*/
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&family=Roboto:wght@500&display=swap');
:root {
	--base: #4d4d4d;
	--base_rgba0: rgba(77, 77, 77,0);
	--base_rgba1: rgba(77, 77, 77,1);
	--about:#e1f5ff;
	--ca:#e4faf0;
	--mem:#f0f0fc;

	--blue01:#3370ce;
	--blue02:#88adf5;
	--green01:#219c7e;
	--green02:#58c2c9;
	--yel01:#e5a800;
	--yel02:#fec552;
	--red01:#e35665;
	--red02:#fc907e;

	--gray01:rgba(243, 246, 248,1);
	--gray01_rgba05:rgba(243, 246, 248,0.5);
}
/*
:root {
	--KOKUYO-TEXT-DARK: #454545;
}
body.kc_GREEN .kc_bg{background: var(--KOKUYO-GREEN)!important;}
*/
/*
#loadArea {
	width: 100%;
	height: 100%;
	position: fixed;
	top: 0;
	left: 0;
	z-index: 10000;
	visibility: visible;
	opacity: 1;
	background: #fff;
	transition:
		opacity 0.8s ease,
		visibility 0.8s ease;
	z-index: 10000;
}
body.is-loaded #loadArea{
	visibility: hidden;
	opacity: 0;
}
#loadArea .loadpBar {
	position: fixed;
	top:50%;
	left:0;
	background: #000;
	height: 1px;
	width: 0;
	transition: width 0.2s ease;
}
#loadArea .loadPer {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 9999;
	transform: translate(-50%, -50%);
	font-size: 50px;
}
*/

html {
	background:#FFF;
	color:var(--base);
	font-size: 625%;/*rem用100px*/
	/*scrollbar hidden*/
	/*-ms-overflow-style: none;*//* IE, Edge 対応 */
	/*scrollbar-width: none;*//* Firefox 対応 */
}
/*scrollbar hidden*/
html::-webkit-scrollbar {/* Chrome, Safari 対応 */
	/*display:none;*/
}

html.lock{
	overflow: hidden;
	-ms-touch-action: none;
	touch-action: none;
}

body{
	/*font-size:12px;*/
	font-size: 0.12em;/*rem用12px 以下rem chrome対策でem 以下fontsizeはremで1/100指定*/
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 500;
  font-style: normal;
  font-variation-settings:"wdth" 100;
	font-feature-settings: "palt";/*Google Notoは効く、Adobe notoは効かない、メイリオは効かない*/
	line-height:1.0;
	letter-spacing: 0.05em;
	-webkit-text-size-adjust: 100%;/*スマホ文字拡大対策*/
}
.fgo_l{font-family: "Noto Sans JP", sans-serif!important; font-weight: 300!important;}
.fgo_r{font-family: "Noto Sans JP", sans-serif!important; font-weight: 400!important;}
.fen_m{font-family: "Roboto", sans-serif!important; font-weight: 500!important;}


::selection {
  color: white;
  background-color: var(--base);
}

/* --A-- */
a {
	color: var(--base);
	cursor:pointer;
	text-decoration:none;
	-webkit-tap-highlight-color:rgba(0,0,0,0);/*リンクタップ時のハイライト表示無効*/
}
a.noLink{cursor: default;}

a:hover {
	text-decoration:none;
}
/* --HEADLINE-- */
h1, h2, h3, h4, h5, h6 {
	font-size:100%;
	margin:0;
	font-weight: 500;
	/*max-height: 100%;android chrome 文字大きくなるバグ対策→meta initial-scale あれば大丈夫*/
}
/* --OTHER TAGS-- */
p {
	margin-bottom:0;
	text-align:left;
	width:auto;
	/*max-height: 100%;android chrome 文字大きくなるバグ対策→meta initial-scale あれば大丈夫*/
}
em, strong {
	font-weight:bold;
}
/* --clearfix-- */
.clf:after{
	content: ".";
	display: block;
	height: 0;
	font-size:0;
	clear: both;
	visibility:hidden;
}
.clf{
	display: inline-block;
}
	/* Hides from IE Mac */
	* html .clf{
		height: 1%;
	}
	.clf{
		display:block;
	}
	

.vm,
.vmTxt{
	display: inline-block;
	position: relative;
	top:50%;
	transform: translateY(-50%);
}
/*========
上下中央寄せ
========*/
/*上下中央寄せ*/
.vmf,
.pc_vmf{
	display: flex;
	flex-direction: column;
	justify-content: center;
}
/*上下左右中央寄せ*/
.vmf_c,
.pc_vmf_c{
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}
.vmg_c,
.pc_vmg_c{
	display: grid;
	place-content: center;
	place-items: center;
}
.flex,
.pc_flex{
	display: flex;
}
.f_warp,.pc_f_warp	{flex-wrap: wrap;}
.f_ac,.pc_f_ac			{align-items: center;}
.f_as,.pc_f_as			{align-items: flex-start;}
.f_ae,.pc_f_ae			{align-items: flex-end;}
.f_dr,.pc_f_dr			{flex-direction: row-reverse;}/*逆順*/
.f_dc,.pc_f_dc			{flex-direction: column;}
.f_cc,.pc_f_cc			{justify-content: center;}
.f_ce,.pc_f_ce			{justify-content: flex-end;}/*後ろ付き*/
.f_cb,.pc_f_cb			{justify-content: space-between;}

.grid,
.pc_grid{display: grid;}
.grid .ga1,
.pc_grid .pc_ga1{grid-area: 1/1;}



.opBtf a,
a.opBtf{
	opacity: 1;
	transition: opacity 0.25s ease;
}
.opBtf a:not(.noLink):hover,
a.opBtf:not(.noLink):hover{
	opacity: 0.5;
	transition: opacity 0.35s ease;
}

a.op_hov .op{
	opacity: 1;
	transition: opacity 0.25s ease;
}
a.op_hov:not(.noLink):hover .op{
	opacity: 0.5;
	transition: opacity 0.35s ease;
}


.zoomBt a,
a.zoomBt{
	transform: scale(1.0);
	transition: transform 0.35s ease;
}
.zoomBt a,
a.zoomBt,
.zoomBt a *,
a.zoomBt *{
	backface-visibility: hidden;/*chrome transition 1pxズレ対策*/
}
.zoomBt a:not(.noLink):hover,
a.zoomBt:not(.noLink):hover{
	transition: transform 0.2s ease;
	transform: scale(1.15);
}


a.zoomImg_hov img.zoomImg,
.zoomImg_hovKey:has(a.zoomImg_hov) img.zoomImg{
	transform: scale(1);
	transition: transform 0.75s ease;
}
a.zoomImg_hov:not(.noLink):hover img.zoomImg,
.zoomImg_hovKey:has(a.zoomImg_hov:not(.noLink):hover) img.zoomImg,
.imgShowKey.show .zoomImg_hovKey:has(a.zoomImg_hov:not(.noLink):hover) img.zoomImg,
.imgShowKey.show a.zoomImg_hov:not(.noLink):hover img.zoomImg{
	transform: scale(1.1);
}

/*imgShowKeyとinViewを併用*/
.imgShowKey img.imgShowAni,
.imgShowKey .zoomImg_hovKey:has(a.zoomImg_hov) img.imgShowAni,
.imgShowKey a.zoomImg_hov img.imgShowAni{
	opacity: 0;
	transform: scale(1.3);
	transition:
		opacity 1s ease,
		transform 1s ease;
}
.imgShowKey.show img.imgShowAni,
.imgShowKey.show .zoomImg_hovKey:has(a.zoomImg_hov) img.imgShowAni,
.imgShowKey.show a.zoomImg_hov img.imgShowAni{
	opacity: 1;
	transform: scale(1.0);
}

a.txt_hovAni {
  display: inline;
  background-image: linear-gradient(#000, #000);
  background-size: 0% 1px;
  background-position: 0% 100%;
  background-repeat: no-repeat;
	transition: background 0.35s ease;
}

a.txt_hovAni:hover {
  background-size: 100% 1px;
}

#loaderOuter{
	position:fixed;
	width:100%;
	height:100%;
	z-index:499;
	background:#FFF;
}
#loader{
	position: fixed;
	top:50%;
	left:50%;
	z-index:90;
}
.sp{display: none !important;}
/*.pc{display: none !important;}*/

.noEvent{pointer-events:none;}/*IE11以降（IE11ではaタグには利かない）*/
.wrapper{overflow: hidden;}
.yokoSc::-webkit-scrollbar,
.yokoSc_pc::-webkit-scrollbar {
	display: none;
}

img.obFit,
img.obFit_ct{width: 100%;height: 100%;}
img.obFit   {object-fit: cover;}
img.obFit_ct{object-fit: contain;}
img.obPos_tc,
img.pc_obPos_tc{object-position: top center;}

.bdr999{
	isolation: isolate;
	border-radius: 9999px;
}
/*splide利用するしているページでoverflow:hiddeen;など使っている要素に*/
.willc_trans{will-change: transform;}




/*txtBtAni*/
a .txtBtAni{display: inline-block;}
a:hover:not(.noLink) .txtBtAni{
	position: relative;
	animation: txtBtAni 0.5s ease 0s 1 normal both;
}
@keyframes         txtBtAni {
	0% {
		top: 0;
		opacity: 1;
	}
	30% {
		top: -0.25em;
		opacity: 0;
	}
	31% {
		top: 0.25em;
		opacity: 0;
	}
	100% {
		top:0;
		opacity: 1;
	}
}

/*icon_next*/
a.icon_next .icon{
	display: grid;
	place-content: center;
	place-items: center;
	transition: background 0.35s ease;
}
a.icon_next .icon::before{
	content: '';
	display: block;
	mask-size: 100% 100%;
	transition: background 0.35s ease;
}
a.icon_next .icon_arrow01::before{
	width: 17px;
	height: 10px;
	mask-image: url('../img/icon_arrow01.svg');
}
a.icon_next .icon_arrow02::before{
	width: 40px;
	height: 12px;
	mask-image: url('../img/icon_arrow02.svg');
}
a.icon_next .icon_bk::before				{background: var(--base);}
a.icon_next .icon_w::before					{background: rgba(255,255,255,1);}
a.icon_next .icon_wBk::before				{background: rgba(255,255,255,1);}
a.icon_next:hover .icon_wBk::before	{background: var(--base);}

a.icon_next:hover .icon.iconAni::before					{animation: iconAni 0.5s ease 0.1s 1 normal both;}
a.icon_next:hover .icon.iconAni_deg90::before		{animation: iconAni_deg90 0.5s ease 0.1s 1 normal both;}
a.icon_next:hover .icon.iconAni_deg-90::before	{animation: iconAni_deg-90 0.5s ease 0.1s 1 normal both;}
@keyframes         iconAni {
	0% {
		transform: translateX(0px);
		opacity: 1;
	}
	50% {
		transform: translateX(10px);
		opacity: 0;
	}
	51% {
		transform: translateX(-10px);
		opacity: 0;
	}
	100% {
		transform: translateX(0px);
		opacity: 1;
	}
}
@keyframes         iconAni_deg90 {
	0% {
		transform: translateY(0);
		opacity: 1;
	}
	50% {
		transform: translateY(10px);
		opacity: 0;
	}
	51% {
		transform: translateY(-10px);
		opacity: 0;
	}
	100% {
		transform: translateY(0);
		opacity: 1;
	}
}
@keyframes         iconAni_deg-90 {
	0% {
		transform: translateY(0);
		opacity: 1;
	}
	50% {
		transform: translateY(-10px);
		opacity: 0;
	}
	51% {
		transform: translateY(10px);
		opacity: 0;
	}
	100% {
		transform: translateY( 0);
		opacity: 1;
	}
}

/*oneByOneTxt*/
.oneByOneTxt,
.oneByOneTxt span{opacity: 0;}
.oneByOneTxt span{display: inline-block; transform: translateY(0.25em);}
.oneByOneTxt.startAni{opacity: 1;}
.oneByOneTxt.startAni span{animation: oneByOneAni 0.5s ease-out forwards;}
@-webkit-keyframes oneByOneAni {
	0% {
		transform: translateY(0.25em);
		opacity: 0;
	}
	100% {
		transform: translateY(0);
		opacity: 1;
	}
}
@keyframes         oneByOneAni {
	0% {
		transform: translateY(0.25em);
		opacity: 0;
	}
	100% {
		transform: translateY(0);
		opacity: 1;
	}
}





/*deSVG
=============================*/
/*
.svgImg path{
	fill: #FFF;
}*/
/*=============================
  header
=============================*/
header .logo{
	position: fixed;
	top:95px;
	left:80px;
	z-index: 300;
}
header .logo a{
	font-size: 0.2rem;
}

@media screen and (min-width:1300px) {
	#gnav {
		position: fixed;
		top:80px;
		right:80px;
		z-index: 200;
		background: #FFF;
		height: 52px;
		isolation: isolate;
		border-radius: 16px;
	}
	#gnav > .inner{
		height: 100%;
	}

	#gmenu {
		height: 100%;
		padding: 0 35px;
	}
	#gmenu > li a{
		display: block;
		font-size: 0.14rem;
		padding-right: 1.5em;
		position: relative;
	}
	#gmenu > li a::after{
		content: '＞';
		position: absolute;
		top:50%;
		right:0;
		display: block;
		transform: translate(0,-50%);
		transition: transform 0.35s ease;
	}
	#gmenu > li a:hover::after{
		transform: translate(5px,-50%);
	}
	#gmenu > li:nth-child(n+3){
		margin-left: 25px;
	}


	#gnav .bt_contact{
		width: 144px;
		height: 100%;
		margin-left: auto;
	}
	#gnav .bt_contact a{
		width: 100%;
		height: 100%;
		font-size: 0.14rem;
		color: #FFF;
		position: relative;
		left:1px;
	}
	#gnav .bt_contact a::before{
		content: '';
		width: 100%;
		height: 100%;
		display: block;
		position: absolute;
		top:0;
		left:0;
		background: var(--base);
		isolation: isolate;
		border-radius: 16px;
		transform: scaleX(1.0);
		transition: transform 0.5s ease;
	}
	#gnav .bt_contact a:hover::before{
		transform: scaleX(1.1);
	}

	#gnav .bt_contact a span{
		position: relative;
		margin: auto;
	}
}





@media screen and (max-width:1300px) {
	header .sp{display: initial!important;}

	/*gnavBt
	=============================*/
	header #gnavBt {
		display: block!important;
		position: fixed;
		top:80px;
		right:80px;
		z-index:500;
	}
	header #gnavBt a{
		display: block;
		width: 52px;
		height: 52px;
		position: relative;
		background:#FFF;
		isolation: isolate;
		border-radius: 10px;
	}
	/*▼gnavBtアニメ*/
	header #gnavBtBorder{
		z-index: 1;
		position: absolute;
		top: 50%;
		left: 50%;
		margin-left: -13px;
		margin-top: -1px;
		display: block;
		width: 26px;
		height: 2px;
		transition: transform 0.3s ease, top 0.3s ease;
	}
	header #gnavBtBorder:before {
		top: -3px;
		content: "";
		display: block;
		width: 26px;
		height: 2px;
		background-color: var(--base);
		position: absolute;
		z-index: -1;
		transition: transform 0.3s ease, top 0.3s ease, margin 0.2s ease;
	}
	header #gnavBtBorder:after {
		top: 3px;
		content: "";
		display: block;
		width: 26px;
		height: 2px;
		background-color: var(--base);
		position: absolute;
		z-index: -1;
		transition: transform 0.3s ease, top 0.3s ease, margin 0.2s ease;
	}
	header #gnavBt a:active #gnavBtBorder:before {
		margin-top: -3px;
	}
	header #gnavBt a:active #gnavBtBorder:after {
		margin-top: 3px;
	}
	header #gnavBt a.open #gnavBtBorder {
		background: none;
	}
	header #gnavBt a.open #gnavBtBorder:before {
		top:0 !important;
		margin-top: 0 !important;
		transform:rotate(45deg);
	}
	header #gnavBt a.open #gnavBtBorder:after {
		top:0 !important;
		margin-top: 0 !important;
		transform:rotate(-45deg);
	}

	/*gnav ani
	=============================*/
	nav#gnav {
		position: fixed;
		top:0;
		left:0;
		width: 100%;
		height: 100%;
		z-index: 200;
		display: none;
		padding: 66px;
		overflow: auto;
	}
	nav#gnav.opening {
		display: block;
		animation: opening 0.8s ease 0s 1 normal both;
	}
	nav#gnav.opened{display: block;}

	nav#gnav.closing {
		display: block;
		animation: closing 0.25s ease 0s 1 normal both;
	}
	nav#gnav.closed{display: none;}


	@keyframes opening {
		0% {
		}
		100% {
		}
	}
	@keyframes         closing {
		0% {
		}
		100% {
		}
	}

	nav#gnav .gnav_bg{
		position: fixed;
		top:0;
		left:0;
		width: 100%;
		height: 100%;
		z-index: 0;
	}

	nav#gnav > .inner{
		display: block;
		width: fit-content;
		margin-left: auto;
		background: #f4f4f4;
		clip-path: inset(0 0 100% 100% round 16px);
		isolation: isolate;
		border-radius: 16px;
		padding: 80px 35px 50px;
	}
	nav#gnav.opening > .inner{
		animation: opening_inner 0.8s ease 0s 1 normal both;
	}
	nav#gnav.opened > .inner{
		clip-path: inset(0 0 0% 0% round 16px);
	}
	nav#gnav.closing > .inner{
		animation: closing_inner 0.25s ease 0s 1 normal both;
	}
	nav#gnav.closed > .inner{
		clip-path: inset(0 0 100% 100% round 16px);
	}

    @keyframes opening_inner {
        0% {
            clip-path: inset(0 0 100% 100% round 16px);
        }
        100% {
            clip-path: inset(0 0 0% 0% round 16px);
        }
    }
    @keyframes         closing_inner {
        0% {
            clip-path: inset(0 0 0% 0% round 16px);
        }
        100% {
            clip-path: inset(0 0 100% 100% round 16px);
        }
    }


	#gmenu {
		display: block;
	}
	#gmenu > li:nth-child(n+2){margin-top: 35px;}
	#gmenu > li a{
		display: block;
		width: fit-content;
	}
	#gmenu > li a span{
		display: block!important;
		width: fit-content;
	}
	#gmenu > li a .fen_m{
		font-size: 0.3rem;
		line-height: calc(44/38);
	}
	#gmenu > li a .jp{
		font-size: 0.12rem;
		line-height: calc(17/14);
		margin-top: 0.5em;
		position: relative;
		padding-right: 1.25em;
	}
	#gmenu > li a .jp::after{
		content: '＞';
		position: absolute;
		top:50%;
		right:0;
		display: block;
		transform: translate(0,-50%);
		transition: transform 0.35s ease;
	}
	#gmenu > li a:hover .jp::after{
		transform: translate(5px,-50%);
	}


	#gnav .bt_contact{
		width: 180px;
		height: 64px;
		margin: 50px auto 0;
	}
	#gnav .bt_contact a{
		width: 100%;
		height: 100%;
		font-size: 0.14rem;
		color: #FFF;
		position: relative;
	}
	#gnav .bt_contact a::before{
		content: '';
		width: 100%;
		height: 100%;
		display: block;
		position: absolute;
		top:0;
		left:0;
		background: var(--base);
		isolation: isolate;
		border-radius: 8px;
		transform: scaleX(1.0);
		transition: transform 0.5s ease;
	}
	#gnav .bt_contact a:hover::before{
		transform: scaleX(1.1);
	}

	#gnav .bt_contact a span{
		position: relative;
		margin: auto;
	}
	/*
	nav#gnav {
		position: fixed;
		top:0;
		left:0;
		width: 100%;
		height: 100%;
		z-index: 200;
		background: rgba(255,255,255,1);
		display: none;
		padding: 80px;
		overflow: auto;
	}
	nav#gnav::before{
		content: '';
		display: block;
		position: fixed;
		top:40px;
		left:40px;
		width: calc(100% - 80px);
		height: calc(100% - 80px);
		z-index: 0;
		background: #f4f4f4;
		isolation: isolate;
		border-radius: 24px;
	}

	nav#gnav > .inner{
		width: fit-content;
		margin: auto;
		position: relative;
		z-index: 1;
	}



	nav#gnav.opening {
		display: flex;
		animation: opening 0.8s ease 0s 1 normal both;
	}
	nav#gnav.opened{display: flex;}

	nav#gnav.closing {
		display: flex;
		animation: closing 0.25s ease 0s 1 normal both;
	}
	nav#gnav.closed{display: none;}



	@keyframes opening {
		0% {
			perspective: 1300px;
			transform: scale(1.5);
			filter: alpha(opacity=000);
			opacity: 0.0;
		}
		100% {
			transform: scale(1.0);
			filter: alpha(opacity=100);
			opacity: 1.0;
		}
	}
	@keyframes         closing {
		0% {
			transform: scale(1.0);
			filter: alpha(opacity=100);
			opacity: 1.0;
		}
		100% {
			perspective: 1300px;
			transform: scale(1.5);
			filter: alpha(opacity=000);
			opacity: 0.0;
		}
	}
	#gmenu {padding-left: 35px;}
	#gmenu > li.sp{display: block!important;}
	#gmenu > li:nth-child(n+2){margin-top: 35px;}
	#gmenu > li a{
		display: block;
		width: fit-content;
	}
	#gmenu > li a span{
		display: block!important;
		width: fit-content;
	}
	#gmenu > li a .fen_m{
		font-size: 0.38rem;
		line-height: calc(44/38);
	}
	#gmenu > li a .jp{
		font-size: 0.14rem;
		line-height: calc(17/14);
		margin-top: 0.5em;
		position: relative;
		padding-right: 1.25em;
	}
	#gmenu > li a .jp::after{
		content: '＞';
		position: absolute;
		top:50%;
		right:0;
		display: block;
		transform: translate(0,-50%);
		transition: transform 0.35s ease;
	}
	#gmenu > li a .jp:active::after{
		transform: translate(5px,-50%);
	}


	#gnav .bt_contact{
		width: 180px;
		height: 64px;
		margin: 85px auto 0;
	}
	#gnav .bt_contact a{
		width: 100%;
		height: 100%;
		font-size: 0.16rem;
		color: #FFF;
		position: relative;
	}
	#gnav .bt_contact a::before{
		content: '';
		width: 100%;
		height: 100%;
		display: block;
		position: absolute;
		top:0;
		left:0;
		background: var(--base);
		isolation: isolate;
		border-radius: 16px;
		transform: scaleX(1.0);
		transition: transform 0.5s ease;
	}
	#gnav .bt_contact a:active::before{
		transform: scaleX(1.1);
	}

	#gnav .bt_contact a span{
		position: relative;
		margin: auto;
	}*/

}


/*=============================
  footer
=============================*/
footer{margin-top: 100px;}
#backToTop{
	padding: 0 40px;
}
#backToTop a{
	width: 80px;
	height: 80px;
	margin-left: auto;
	background: var(--base);
	isolation: isolate;
	border-radius: 16px 16px 0px 0px / 16px 16px 0px 0px;
}
#backToTop a .icon::before{
	content: '';
	width: 13px;
	height: 14px;
	display: block;
	mask-image: url('../img/icon_back.svg');
	mask-size: 100% 100%;
	background: #FFF;
}


#fnav {
	padding: 135px 40px 45px;
	background: #f0f0f0;
	row-gap: 25px;
}
#fnav .logo{
	margin-right: auto;
}
#fnav .logo a{
	font-size: 0.2rem;
}

#fnav #fmenu li a{
	font-size: 0.13rem;
}
#fnav #fmenu li:nth-child(n+2){
	margin-left: 2.5em;
}

footer .copyRight{
	text-align: center;
	font-size: 0.1rem;
	padding: 1.5em 0;
}