@charset "UTF-8";
html {
	width: 100%;
	overflow-x: hidden;
	background: #fff;
	color: #444;
	font-size: 16px;
	line-height: 1.5;
	font-family: "Noto Sans JP", "Helvetica Neue", "Helvetica", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Arial",
		"Yu Gothic", "Meiryo", sans-serif;
}

a {
	display: inline-block;
	font-size: inherit;
	transition: 0.3s all;
}
a:focus,
a:hover {
	opacity: 0.7;
	transition: 0.3s all;
}

img {
	max-width: 100%;
}

table {
	width: 100%;
	border-spacing: 0;
}

.hp_fw {
	margin-right: calc(50% - 50vw);
	margin-left: calc(50% - 50vw);
}

.hp_bg {
	margin-right: calc(50% - 50vw);
	margin-left: calc(50% - 50vw);
	padding-right: calc(50vw - 50%);
	padding-left: calc(50vw - 50%);
}

.hp_bold {
	font-weight: bold;
}

.hp_font-accent {
	color: #3ba6c9;
}

.hp_font-upper {
	text-transform: uppercase;
}

.hp_underline {
	text-decoration: underline;
}

.sm_only {
	display: inherit;
}

.md_only {
	display: none;
}

@media screen and (min-width: 576px) {
	.md_only {
		display: inherit;
	}
	.sm_only {
		display: none;
	}
}
/* ======================
    共通
======================= */
.container {
	width: 100%;
	max-width: 1090px;
	margin: 0 auto;
	padding: 0 4%;
}

.sec-head {
	font-weight: bold;
	text-align: center;
}
.sec-head__ttl {
	font-size: clamp(1.5rem, 1.2692307692rem + 0.641025641vw, 1.75rem);
}
@media screen and (min-width: 576px) {
	.sec-head__ttl {
		font-size: clamp(1.6875rem, 1.3990384615rem + 0.8012820513vw, 2rem);
	}
}
.sec-head__sttl {
	display: inline-block;
	margin-top: 0.5rem;
	color: #3ba6c9;
	font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
}
@media screen and (min-width: 576px) {
	.sec-head__sttl {
		margin-top: 1.0625rem;
	}
}

.btn {
	width: 9.6875rem;
	max-width: 100%;
	padding: 0.5rem 0.625rem;
	border-radius: 10px;
	background: linear-gradient(90deg, #fa41cc, #6020b0);
	color: #fff;
	font-weight: bold;
	font-size: clamp(0.75rem, 0.6346153846rem + 0.3205128205vw, 0.875rem);
	text-align: center;
}
.btn:hover,
.btn:focus {
	opacity: 1;
	transform: translate(-1px, -1px);
	box-shadow: 0 3px 6px rgba(68, 68, 68, 0.16);
}

/* ======================
    header
======================= */
.header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	position: -webkit-sticky;
	position: sticky;
	top: 0;
	z-index: 100;
	height: 3.125rem;
	box-shadow: 0 3px 6px rgba(68, 68, 68, 0.16);
	background-color: #fff;
}
@media screen and (min-width: 992px) {
	.header {
		height: 5.875rem;
	}
}
.header__inner {
	display: flex;
	align-items: center;

	gap: 7.125rem;
}
@media screen and (min-width: 992px) {
	.header__inner {
		flex-direction: row;
	}
}
.header__main {
	display: flex;
	align-items: center;

	gap: 8.125rem;
}
.site-title {
	display: inline-block;
	font-weight: bold;
	font-size: clamp(1.3125rem, 1.1394230769rem + 0.4807692308vw, 1.5rem);
}
.site-title__img {
	display: inline-block;
	width: 2rem;
	vertical-align: middle;
}
@media screen and (min-width: 992px) {
	.site-title__img {
		width: 2.9375rem;
		margin-right: 0.9375rem;
	}
}

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

/* ===============
    hamburger
================= */
.gnav {
	background: #fff;
	font-weight: bold;
}
@media screen and (max-width: 991px) {
	.gnav {
		display: none;
		position: absolute;
		top: 3.125rem;
		left: 0;
		width: 100%;
	}
	.gnav__list {
		display: flex;
		justify-content: center;
		align-items: center;
		border-top: 0.5px solid #e5e5e5;
		border-bottom: 0.5px solid #e5e5e5;
	}
	.gnav__item a {
		padding: 1.25rem 1.875rem;
	}
}
@media screen and (min-width: 992px) {
	.gnav {
		display: block;
		position: static;
		width: auto;
		height: auto;
	}
	.gnav__list {
		display: flex;
	}
	.gnav__item a {
		padding: 1.25rem 1.4375rem;
	}
}

.ham {
	display: flex;
	justify-content: center;
	align-items: center;
	position: absolute;
	top: 0;
	right: 0;
	width: 3.125rem;
	height: 3.125rem;
	border: none;
	background: #fff;
}
@media screen and (min-width: 992px) {
	.ham {
		display: none;
	}
}
.ham__line {
	position: relative;
	width: 1.5625rem;
	height: 0.125rem;
	background: #444;
	transition: transform 0.5s ease;
}
.ham__line::before,
.ham__line::after {
	display: block;
	content: "";
	position: absolute;
	width: 1.5625rem;
	height: 0.125rem;
	background: #444;
	transition: transform 0.5s ease;
}
.ham__line::before {
	top: -0.5rem;
}
.ham__line::after {
	bottom: -0.5rem;
}
.ham[aria-expanded="true"] .ham__line {
	background: transparent;
}
.ham[aria-expanded="true"] .ham__line::before {
	top: 0;
	transform: rotate(135deg);
}
.ham[aria-expanded="true"] .ham__line::after {
	bottom: 0;
	transform: rotate(-135deg);
}

/* ======================
    hero
======================= */
.hero {
	padding-top: 5.625rem;
	padding-bottom: 5.625rem;
}
@media screen and (min-width: 768px) {
	.hero {
		padding-top: 8.125rem;
		padding-bottom: 7.0625rem;
		background-image: url(../img/top_circle.png);
		background-position: 113% -7.8125rem;
		background-repeat: no-repeat;
	}
}
.hero__inner {
	width: 100%;
	margin-right: auto;
	margin-left: auto;
}
@media screen and (max-width: 767px) {
	.hero__inner {
		position: relative;
	}
}
@media screen and (min-width: 768px) {
	.hero__inner {
		display: flex;
		flex-direction: row-reverse;
		justify-content: space-between;
		align-items: center;
	}
}
.hero__body {
	width: 100%;
	font-weight: bold;
	line-height: 2;
	text-align: center;
}
@media screen and (min-width: 768px) {
	.hero__body {
		text-align: left;
	}
}
.hero__ttl {
	font-size: clamp(1.5rem, 1.2692307692rem + 0.641025641vw, 1.75rem);
	line-height: 1.4375;
}
@media screen and (min-width: 576px) {
	.hero__ttl {
		font-size: clamp(1.6875rem, 1.3990384615rem + 0.8012820513vw, 2rem);
	}
}
.hero__txt {
	margin-top: 2.5rem;
	font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
}
.hero__btn {
	margin-top: 2.8125rem;
}
.hero__img {
	width: 100%;
	margin-right: auto;
	margin-left: auto;
}
.hero__img img {
	width: 100%;
}
@media screen and (max-width: 767px) {
	.hero__img {
		opacity: 0.2;
		position: absolute;
		top: 50%;
		left: 50%;
		z-index: -1;
		transform: translate(-50%, -50%);
		width: 100%;
	}
}
@media screen and (min-width: 768px) {
	.hero__img {
		flex-shrink: 0;
		width: 50.706%;
	}
}

/* ======================
    feature
======================= */
.feature {
	padding-top: 4.0625rem;
	padding-bottom: 5.3125rem;
}
@media screen and (min-width: 576px) {
	.feature {
		padding-top: 5.5rem;
		padding-bottom: 9.625rem;
	}
}
.feature__list {
	width: 100%;
	max-width: 32.5rem;
	margin-top: 2.5rem;
	margin-right: auto;
	margin-left: auto;
}
@media screen and (min-width: 576px) {
	.feature__list {
		margin-top: 3.75rem;
	}
}
@media screen and (min-width: 992px) {
	.feature__list {
		max-width: 100%;
	}
}
.media + .media {
	padding-top: 5rem;
}
@media screen and (min-width: 576px) {
	.media + .media {
		padding-top: 6.25rem;
	}
}
.media__ttl {
	font-weight: bold;
	font-size: clamp(1.3125rem, 1.1394230769rem + 0.4807692308vw, 1.5rem);
	text-align: center;
}
@media screen and (min-width: 576px) {
	.media__ttl {
		font-size: clamp(1.5rem, 1.2692307692rem + 0.641025641vw, 1.75rem);
	}
}
.media__body {
	display: flex;
	flex-direction: column;
	align-items: center;
	margin-top: 1.875rem;
}
@media screen and (min-width: 992px) {
	.media__body {
		flex-direction: row;
		align-items: flex-start;
	}
}
.media__img {
	width: 75%;
}
.media__img img {
	width: 100%;
}
@media screen and (min-width: 992px) {
	.media__img {
		flex: 0 1 35%;
		margin-right: 10%;
	}
}
.media__desc {
	margin-top: 1.875rem;
	font-weight: bold;
	text-align: center;
}
@media screen and (min-width: 992px) {
	.media__desc {
		flex: 1;
		margin-top: 0;
		text-align: left;
	}
}
.media__lead {
	font-size: clamp(1.0625rem, 0.8894230769rem + 0.4807692308vw, 1.25rem);
	line-height: 1.8;
}
@media screen and (min-width: 576px) {
	.media__lead {
		font-size: clamp(1.3125rem, 1.1394230769rem + 0.4807692308vw, 1.5rem);
		line-height: 2;
	}
}
.media__txt {
	margin-top: 1.25rem;
	font-size: clamp(0.75rem, 0.6346153846rem + 0.3205128205vw, 0.875rem);
	line-height: 1.5;
}
@media screen and (min-width: 576px) {
	.media__txt {
		font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
		line-height: 1.625;
	}
}
@media screen and (min-width: 992px) {
	.media--rev .media__body {
		flex-direction: row-reverse;
	}
	.media--rev .media__img {
		margin-right: 0;
		margin-left: 15%;
	}
}

/* ======================
    price
======================= */
.price {
	padding-top: 3.125rem;
	padding-bottom: 4.375rem;
	background-color: #f5fcf8;
}
.price__table {
	margin-top: 2.8125rem;
}
@media screen and (min-width: 576px) {
	.price__table {
		margin-top: 4.375rem;
	}
}
.price__note {
	margin-top: 2.25rem;
	font-weight: bold;
	font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
	text-align: center;
}
.table {
	max-width: 57.875rem;
	margin-right: auto;
	margin-left: auto;
	box-shadow: 0 3px 6px rgba(68, 68, 68, 0.16);
	background-color: #fff;
	border-collapse: collapse;
}
.table__row {
	display: flex;
	flex-wrap: wrap;
}
.table__head,
.table__data {
	flex-grow: 1;
	flex-basis: calc((45em - 100%) * 999);
	padding: 1.5em 1em;
	border: none;
	box-shadow: rgba(0, 0, 0, 0.1) 0 0 1px 0, rgba(0, 0, 0, 0.1) 0 0 1px 0;
	font-size: clamp(1.0625rem, 0.8894230769rem + 0.4807692308vw, 1.25rem);
	text-align: center;
}
@media screen and (min-width: 768px) {
	.table__head,
	.table__data {
		padding: 2.4em 1em;
		font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
	}
}
@media screen and (min-width: 992px) {
	.table__head,
	.table__data {
		text-align: left;
	}
}
.table__head {
	padding-left: 2em;
	font-weight: bold;
}

/* ======================
    faq
======================= */
.faq {
	padding-top: 3.4375rem;
	padding-bottom: 5.375rem;
}
.faq__accordion {
	margin-top: 2rem;
}
.accordion {
	max-width: 56.6875rem;
	margin-right: auto;
	margin-left: auto;
	border-top: 1px solid #e5e5e5;
	border-right: 1px solid #e5e5e5;
	border-left: 1px solid #e5e5e5;
	background-color: #fff;
}
.accordion__item {
	font-weight: bold;
	font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
	line-height: 1.5;
}
@media screen and (min-width: 576px) {
	.accordion__item {
		font-size: clamp(0.75rem, 0.6346153846rem + 0.3205128205vw, 0.875rem);
		line-height: 1.625;
	}
}
.accordion__btn {
	display: inline-block;
	width: 100%;
	padding: 1.1em;
	text-align: center;
}
@media screen and (min-width: 576px) {
	.accordion__btn {
		padding: 1.1em 3em;
	}
}
.accordion__txt {
	display: inline-block;
	width: 100%;
	padding: 1.1em;
}
@media screen and (min-width: 576px) {
	.accordion__txt {
		padding: 1.5em 3em;
	}
}
.accordion__ttl,
.accordion__desc {
	border-bottom: 1px solid #e5e5e5;
}
.accordion__desc {
	background-color: #f5fcf8;
	line-height: 1.85;
}

/* ======================
    blog
======================= */
.blog {
	padding-top: 3.4375rem;
	padding-bottom: 5.625rem;
	background: #f5fcf8;
}
.blog__posts-wrap {
	width: 100%;
	max-width: 1366px;
	margin-top: 3.125rem;
	margin-right: auto;
	margin-left: auto;
	padding: 0 5%;
}
.cards {
	display: grid;

	gap: 1.875rem;
}
@media screen and (min-width: 576px) {
	.cards {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media screen and (min-width: 992px) {
	.cards {
		grid-template-columns: repeat(3, 1fr);
	}
}

.card {
	box-shadow: 0 3px 6px rgba(68, 68, 68, 0.16);
	background-color: #fff;
	transition: 0.5s all;
}
.card:hover,
.card:focus {
	opacity: 0.7;
	transform: translate(-2px, -2px);
	transition: 0.5s all;
}
.card__link {
	width: 100%;
}
.card__img {
	width: 100%;

	aspect-ratio: 3/2;
	-o-object-fit: cover;
	object-fit: cover;
}
.card__body {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	min-height: 8.125rem;
	padding: 0.875rem 1.125rem;
	font-weight: bold;
	font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
}
.card__time {
	text-align: right;
}

/* ======================
    works
======================= */
.works {
	padding-top: 3.4375rem;
	padding-bottom: 5.625rem;
}
.works__swiper {
	padding-top: 3.75rem;
}
.slide {
	width: 100%;
	border: #e5e5e5 solid 1px;
	border-radius: 8px;
	background-color: #fff;
}
.slide__img {
	width: 100%;

	-o-object-fit: cover;
	object-fit: cover;
	aspect-ratio: 322/205;
}
.slide__desc {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	width: 100%;
	min-height: 12.5rem;
	padding: 1.125rem 1.125rem 2.5rem;
	font-weight: bold;
}
.slide__lead {
	font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);
}
.slide__detail {
	font-size: clamp(0.75rem, 0.6346153846rem + 0.3205128205vw, 0.875rem);
}

/* ======================
    contact
======================= */
input[type="text"],
input[type="email"],
textarea {
	display: inline-block;
	width: 100%;
	padding: 0.6em 1em;
	border-radius: 3px;
	background-color: #eefbfb;
	resize: none;

	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
}
input[type="text"]:focus,
input[type="email"]:focus,
textarea:focus {
	box-shadow: 0 3px 6px rgba(68, 68, 68, 0.16);
	outline: none;
}
.is_error input[type="text"],
.is_error input[type="email"],
.is_error textarea {
	border-color: #e60033;
	color: #e60033;
}

input[type="checkbox"] {
	opacity: 0;
	position: absolute;
}
input[type="checkbox"]:focus + span {
	box-shadow: 0 3px 6px rgba(68, 68, 68, 0.16);
	outline: none;
}
input[type="checkbox"] + span {
	display: inline-block;
	position: relative;
	margin: 0 2em 0 0;
	padding: 0.3em 0.3em 0.3em 2em;
	line-height: 1;
	vertical-align: middle;
	cursor: pointer;
}
input[type="checkbox"] + span:before {
	content: "";
	position: absolute;
	top: 0.3em;
	left: 0;
	width: 1.25em;
	height: 1.25em;
	border: 1px solid #e5e5e5;
	background: #fff;
	line-height: 1;
	vertical-align: middle;
}
input[type="checkbox"] + span:after {
	display: none;
	content: "";
}
input[type="checkbox"]:checked + span:after {
	display: block;
	content: "";
	position: absolute;
	top: 0.3em;
	left: 0.4em;
	transform: rotate(45deg);
	width: 0.5em;
	height: 1em;
	border-right: 3px solid #1b224c;
	border-bottom: 3px solid #1b224c;
}

.contact {
	padding-top: 3.75rem;
	padding-bottom: 4.375rem;
	box-shadow: 0 3px 6px rgba(68, 68, 68, 0.16);
	background: linear-gradient(90deg, #05a5fa, #63fbd7);
}
.contact__head {
	color: #fff;
}
.contact__head span {
	color: inherit;
}
.contact__lead {
	margin-top: 2.25rem;
	color: #fff;
	font-weight: bold;
	font-size: clamp(0.75rem, 0.6346153846rem + 0.3205128205vw, 0.875rem);
	text-align: center;
}
.contact__form {
	margin-top: 2.75rem;
	font-weight: bold;
}
.form {
	max-width: 57rem;
	margin-right: auto;
	margin-left: auto;
	padding: 1.9375rem 6.5% 2.1875rem;
	background: #fff;
}
.form__item + .form__item {
	padding-top: 1.875rem;
}
.form__name {
	display: inline-block;
	margin-bottom: 0.9375rem;
	font-weight: bold;
}
.form__required {
	display: inline-block;
	width: 3.75rem;
	max-width: 100%;
	margin-left: 0.9375rem;
	padding: 0.3em 0.5em;
	border-radius: 10px;
	background-color: #0c449b;
	color: #fff;
	font-size: clamp(0.75rem, 0.6346153846rem + 0.3205128205vw, 0.875rem);
	text-align: center;
}
.form__input {
	max-width: 31.25rem;
	margin-top: 1.3125rem;
}
.form__txtarea {
	max-width: 100%;
	margin-top: 0.625rem;
}
.form__body {
	position: relative;
}
.form__error {
	display: none;
	position: absolute;
	color: #e60033;
	font-size: clamp(0.6875rem, 0.6298076923rem + 0.1602564103vw, 0.75rem);
}
.form__error--check {
	left: 50%;
	transform: translateX(-50%);
}
.check__label.is_error + .form__error--check {
	display: block;
}
.form__input.is_error + .form__error,
.form__txtarea.is_error + .form__error {
	display: block;
}
.form__check {
	margin-top: 1.5625rem;
	text-align: center;
}
.form__btn {
	display: inline-block;
}
.form__btn-wrap {
	margin-top: 1.75rem;
	text-align: center;
}

/* ======================
    footer
======================= */
.footer {
	padding-top: 2.5rem;
	padding-bottom: 3.125rem;
	text-align: center;
}
.footer__ttl {
	font-weight: bold;
	font-size: clamp(1.3125rem, 1.1394230769rem + 0.4807692308vw, 1.5rem);
}
.footer__menu {
	display: flex;
	justify-content: center;
	align-items: center;
	margin-top: 1.25rem;
	font-weight: bold;
	font-size: clamp(0.875rem, 0.7596153846rem + 0.3205128205vw, 1rem);

	gap: 1.875rem;
}
.footer__copyright {
	margin-top: 3.125rem;
	font-size: clamp(0.75rem, 0.6346153846rem + 0.3205128205vw, 0.875rem);
}
