@charset "utf-8";

/* ==========  ======================================== */

html {
	width: 100%;
	font-size: 62.5%;
	overflow-x: hidden;
	scroll-behavior: smooth;
}

body{
	width: 100%;
	font-family: 'Noto Sans JP', sans-serif;
	line-height: 1.8;
}

@media screen and (max-width: 750px) {
	body {
		font-size: 3.1999vw;
	}
}
@media screen and (min-width: 751px) {
	body {
		font-size: 1.1428vw;
	}
}
@media screen and (min-width: 1400px) {
	body {
		font-size: 1.6em;
	}
}



/* ========== STYLE ======================================== */

/* loader */
.loader_wrap {
	position: fixed;
	z-index: 999;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100vh;
	background: #fff;
}

.loader,
.loader:before,
.loader:after {
	width: 1em;
	height: 4em;
	background: #fff;
	animation: load1 1s infinite ease-in-out;
}
.loader {
	color: #c1272d;
	text-indent: -9999em;
	margin: 88px auto;
	position: relative;
	font-size: 11px;
	transform: translateZ(0);
	animation-delay: -0.16s;
}
.loader:before,
.loader:after {
	content: "";
	position: absolute;
	top: 0;
}
.loader:before {
	left: -1.5em;
	animation-delay: -0.32s;
}
.loader:after {
	left: 1.5em;
}

@keyframes load1 {
	0%,
	80%,
	100% {
		box-shadow: 0 0;
		height: 4em;
	}
	40% {
		box-shadow: 0 -2em;
		height: 5em;
	}
}
	

/* block */
.sec {
	padding: 0 1.8em;
}

.inner {
	width: 100%;
	max-width: 1400px;
	margin: 0 auto;
	padding: 3.6em 1.8em;
}

.flex {
	display: flex;
	flex-wrap: wrap;
}

@media screen and (max-width: 750px) {
	.pc {
		display: none;
	}

	.sp_flex {
		display: flex;
		flex-wrap: wrap;
	}
}
@media screen and (min-width: 751px) {
	.sp {
		display: none;
	}

	.inner {
		padding: 4.5em 1.8em;
	}
	
	.pc_flex {
		display: flex;
		flex-wrap: wrap;
	}
}


/* image */
img {
	vertical-align: top;
}


/* font */
h1 {
	font-size: 2.0em;
	font-weight: 800;
	line-height: 1.5;
}
h2 {
	font-size: 2.0em;
	font-weight: 800;
	line-height: 1.5;
}
h3 {
	font-size: 1.6em;
	font-weight: 800;
	line-height: 1.6;
}
h4 {
	font-size: 1em;
	font-weight: 800;
}
@media screen and (min-width: 751px) {
	h1 {
		font-size: 3em;
	}
	h2 {
		font-size: 3em;
	}
	h3 {
		font-size: 1.5em;
	}
	h4 {
		font-size: 1.0em;
	}
}

/* text */
.center {
	text-align: center;
}
.right {
	text-align: right;
}

small {
	font-size: .8em;
}
big {
	font-size: 1.2em;
}


/* link / action */
a:hover {
	cursor: pointer;
}

.link:hover {
	text-decoration: underline;
}

.btn {
	position: relative;
	display: block;
	width: 13.5em;
	margin: 1.8em auto;
	background: #c1272d;
	border: 1px solid #c1272d;
	border-radius: .45em;
	color: #fff;
	cursor: pointer;
	line-height: 2.8;
	overflow: hidden;
	text-align: center;
	transition: 0.2s;
}

.btn:hover::before {
	content: "";
	display: block;
	width: 1.8em;
	height: 1.8em;
	position: absolute;
	top: .9em;
	left: calc(50% - .9em);
	border: 1px solid #fff;
	border-radius: 50%;
	opacity: 0;
	animation: circleanime 0.6s;
}

@keyframes circleanime{
  0%{
    transform: scale(1);
		opacity: 0.8;
  }
  100%{
    transform:scale(8);
    opacity: 0;
  }
}

.btn:active {
	background: #fff;
	color:#c1272d;
}

.anchor{
	margin-top: -4.8em;
	padding-top: 4.8em;
	
}


/* ========== HEADER ======================================== */

#header {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 100;
	background: #fff;
	box-shadow: 0 0 1.8em .45em rgba(0,0,0,0.1);
	opacity: 1;
	transition: 0.2s;
}

#header .inner {
	display: flex;
	justify-content: space-between;
	align-content: center;
	max-width: none;
	padding: .9em 1.8em;
}

/* logo */
h1.logo,
a.logo {
	display: block;
	position: relative;
	z-index: 101;
	white-space: nowrap;
}

img.logo {
	width: auto;
	height: 1.8em;
	margin-right: .9em;
	vertical-align: top;
}

/* tagline */
.tagline {
	color: #666;
	font-size: .9em;
	font-style: italic;
}


/* nav */
.header_nav {	
}
.header_nav a {
	display: block;
	padding: .9em;
}

.header_nav a.contact span{
	padding-left: 1.45em;
	background: url("../img/icon_contact.png") left center no-repeat;
	background-size: 1em;
}

@media screen and (max-width: 750px) {
	.nav_btn {
		display: block;
		width: 3.6em;
		height: 3.6em;
		position: absolute;
		top: 0;
		right: 0;
		z-index: 101;
		padding: .9em;
		color: transparent;
	}
	
	.nav_btn::before,
	.nav_btn::after {
		content: "";
		display: block;
		width: 1.8em;
		position: absolute;
		left: .9em;
		transition: transform 0.2s;
	}

	.nav_btn::before {
		height: 2px;
		top: calc(50% - 1px);
		background: #c1272d;
	}
	.nav_btn::after {
		height: 1.3em;
		top: 1.2em;
		border-top: 2px solid #c1272d;
		border-bottom: 2px solid #c1272d;
	}

	#nav_sw:checked ~ .nav_btn::before,
	#nav_sw:checked ~ .nav_btn::after {
	}

	#nav_sw:checked ~ .nav_btn::before {
		transform: rotate(45deg);
	}
	#nav_sw:checked ~ .nav_btn::after {
		height: 0;
		top: calc(50% - 1px);
		border-width: 1px;
		transform: rotate(-45deg);
	}

	#header nav {
		position: fixed;
		top: 3.6em;
		left: 0;
		bottom: 0;
		z-index: 99;
		width: 100%;
		padding: 1.8em;
		background: rgba(255,255,255,0.9);
		display: none;
	}
	#header #nav_sw:checked ~ nav  {
		display: block;
	}
}
@media screen and (min-width: 751px) {
	#header .inner {
		padding: 0;
	}

	h1.logo,
	a.logo {
		padding: 1.5em 1.8em;
	}
	.tagline {
		font-size: 1em;
	}

	.header_nav  {
		display: flex;
		align-content: center;
		width: calc(100% - 30em);
	}
	
	.header_nav a {
		width: calc(100% / 4);
		padding: 1.5em 0;
		border-left: 1px solid #eee;
		text-align: center;
	}
}



/* ========== MAIN ======================================== */

main {
	min-height: calc(100vh - 23em);
	padding: 3.6em 0 calc(29vw - 5em);
	background: url("../img/bg_foot.webp") center bottom no-repeat;
	background-size: contain;
}

@media screen and (min-width: 751px) {
	main {
		min-height: calc(100vh - 13em);
		padding-top: 4.8em;
	}

}


/* ========== FOOTER ======================================== */

#footer .inner {
	padding: .9em 1.8em;
}

/* nav */
.footer_nav {
	margin-bottom: 1.8em;
}

.footer_nav a {
	display: block;
	padding: .9em;
}
.footer_nav a.contact span {
	padding-left: 1.45em;
	background: url("../img/icon_contact.png") left center no-repeat;
	background-size: 1em;
}

.footer_nav.sub a {
	color: #666;
}

#footer p {
	color: #666;
	font-size: 10px;
	text-align: center;
}


@media screen and (max-width: 750px) {
	/* nav sub */
	.footer_nav.sub {
		position: relative;
	}
	.footer_nav.sub::before {
		content: "－";
		position: absolute;
		top: -2em;
		left: 0;
		color: #ccc;
		transform: scale(3,1);
	}
}
@media screen and (min-width: 751px) {
	.footer_nav {
		display: flex;
		justify-content: space-between;
		align-items: center;
		margin-bottom: 3.6em;
	}

	/* nav sub */
	.footer_nav.sub {
		justify-content: center;
	}

	.footer_nav.sub a {
		padding: 0 1.8em;
		font-size: .9em;
	}
	.footer_nav.sub a + a {
		border-left: 1px solid #ccc;
	}
}


/* ========== FORM ======================================== */


.form dl {
}

.form dt {
	position: relative;
	padding-left: 3em;
}
.form dt::before {
	content: "任意";
	position: absolute;
	top: .2em;
	left: 0;
	display: block;
	padding: .3em .45em .2em;
	background: #999;
	color: #fff;
	font-size: .8em;
	line-height: 1;
}
.form dt.required::before {
	content: "必須";
	background: #c1272d;
}

.form dd {
	position: relative;
	margin-bottom: .9em;
}

/* privacy*/
.form .privacy a {
	color: #c1272d;
}

/* error */
.form .error {
	display: block;
	width: 100%;
	color: #c1272d;
}


@media screen and (min-width: 751px) {
	.form dl {
	}

	.form dt {
		width: 11em;
		padding: calc(.2em + 1px) 0 calc(.2em + 1px) 3em;
	}
	.form dt::before {
		top: .75em;
		padding: .2em .45em;
	}

	.form dd {
		width: calc(100% - 11em);
	}

	.form dd.checkbox,
	.form dd.radio {
		display: flex;
		flex-wrap: wrap;
	}
	
	.form .privacy {
		text-align: center;
	}

	/* confirm */
	.form.confirm .inner {
		max-width: 800px;
	}
	.form.confirm dt {
		padding: 0 0 0 3em;
	}
	.form.confirm dt::before {
		top: .5em;
	}

		/* complete */
	.form.complete .inner {
		max-width: 800px;
	}
	.form.complete p {
		margin-bottom: .9em;
	}
}

/* ----- form item ----- */

.form input:not(.btn),
.form textarea {
	width: 100%;
	margin: 0 0 .45em;
	padding: .45em .675em;
	background: #fff;
	border: 1px solid #000;
	border-radius: .3em;
	font-size: 1em;
	line-height: 1.5;
	transition: 0.2s;
}

.form textarea {
	height: 10em;
	line-height: 1.5;
}


/* -- checkbox / radio -- */
.form input.checkbox,
.form input.radio {
	position: absolute;
	left: 0;
	opacity: 0;
	z-index: -99;
}
.form label.checkbox,
.form label.radio {
	position: relative;
	display: block;
	margin: 0 .45em .45em 0;
	padding: .45em .9em .45em 2.35em;
	background: #fff;
	border: 1px solid #ccc;
	border-radius: .3em;
	font-size: 1em;
	line-height: 1.5;
	cursor: pointer;
	transition: 0.2s;
}
.form label.checkbox::before,
.form label.radio::before {
	content: "";
	position: absolute;
	top: .675em;
	left: .675em;
	display: block;
	width: 1em;
	height: 1em;
	margin-right: .675em;
	border: 3px solid #ccc;
	transition: 0.2s;
}

/* -- checkbox -- */
.form label.checkbox::before {
	width: .5em;
	border-top: none;
	border-left: none;
	transform: rotate(30deg);
	transform-origin: right bottom;
}

/* -- radio -- */
.form label.radio::before {
	border-radius: 50%;
}

/* checked */
.form input:checked + label.checkbox,
.form input:checked + label.radio {
	border-color: #000;
}
.form input:checked + label.checkbox::before,
.form input:checked + label.radio::before {
	/*border-color: #c1272d;*/
	border-color: #000;
}


/* placeholder */
.form ::placeholder {
	color: #cd5257;
	color: #999;
}
.form input:placeholder-shown,
.form textarea:placeholder-shown {
  border-color: #ccc;
}

/* focus */
.form input:not(.btn):focus,
.form textarea:focus {
	border-color: #000;
}


