@charset "UTF-8";
/* =====================================================
						scss設定用ファイル
 =====================================================*/
html {
		font-size: 62.5%;
		-ms-scroll-chaining: none;
		    overscroll-behavior: none;
		scroll-behavior: smooth;
		scroll-padding-top: 70px;
}

@view-transition {
		navigation: auto;
}
body {
		margin: 0;
		overflow-x: hidden;
}
body._open {
		overflow: hidden;
}

main {
		display: block;
}

a {
		background-color: transparent;
}

b,
strong {
		font-weight: bolder;
}

small {
		font-size: 80%;
}

sub,
sup {
		font-size: 75%;
		line-height: 0;
		position: relative;
		vertical-align: baseline;
}

sub {
		bottom: -0.25em;
}

sup {
		top: -0.5em;
}

img {
		border-style: none;
		width: 100%;
		max-width: 100%;
		height: auto;
		-o-object-fit: cover;
		   object-fit: cover;
}

/* Forms
========================================================================== */
/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
		font-family: inherit; /* 1 */
		font-size: 100%; /* 1 */
		line-height: 1.15; /* 1 */
		margin: 0; /* 2 */
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
input[type=text],
textarea {
		font-size: 1.6rem;
}

button,
input { /* 1 */
		overflow: visible;
}

button,
select { /* 1 */
		text-transform: none;
}

button {
		border-style: none;
		padding: 0;
		background-color: unset;
}

textarea {
		overflow: auto;
}

[type=checkbox],
[type=radio] {
		-webkit-box-sizing: border-box;
		        box-sizing: border-box; /* 1 */
		padding: 0; /* 2 */
}

address {
		font-style: normal;
}

/* ======================================================
	reset
========================================================= */
* {
		-webkit-box-sizing: border-box;
		        box-sizing: border-box;
}

p, ul, ol, h1, h2, h3, h4, h5, dl, dt, dd, figure, div {
		margin: 0;
		padding: 0;
		font-weight: inherit;
		font-style: inherit;
		font-size: 100%;
		text-align: justify;
		word-break: break-all;
		word-wrap: break-word;
		overflow-wrap: break-word;
}

ol, ul {
		list-style: none;
}

a {
		text-decoration: none;
}
a:focus {
		-webkit-box-shadow: none;
		        box-shadow: none;
		outline: none;
}

address {
		font-style: normal;
}

select {
		outline: none;
		text-indent: 0.01px;
		text-overflow: "";
		vertical-align: middle;
		font-size: inherit;
		color: inherit;
		background: none transparent;
}

summary {
		list-style: none;
}
summary::-webkit-details-marker {
		display: none;
}

:root {
		interpolate-size: allow-keywords; /* サイズキーワードによるアニメーションを許可 */
}

details::details-content {
		content-visibility: unset;
		display: block grid;
}
@media (prefers-reduced-motion: no-preference) {
		details::details-content {
				-webkit-transition-duration: 0.5s;
				        transition-duration: 0.5s;
				-webkit-transition-property: grid-template-rows;
				transition-property: grid-template-rows;
				transition-property: grid-template-rows, -ms-grid-rows;
		}
}
details:not([open])::details-content {
		-ms-grid-rows: 0fr;
		grid-template-rows: 0fr;
}
details[open]::details-content {
		-ms-grid-rows: 1fr;
		grid-template-rows: 1fr;
}

dialog {
		position: fixed;
		inset: 0;
		padding: 0;
		margin: 0;
		border: none;
		z-index: 9999;
		opacity: 0;
		-webkit-transition: opacity 0.3s, overlay 0.3s allow-discrete, display 0.3s allow-discrete;
		transition: opacity 0.3s, overlay 0.3s allow-discrete, display 0.3s allow-discrete;
}
dialog::-ms-backdrop {
		opacity: 0;
		-ms-transition: opacity 0.3s, overlay 0.3s allow-discrete, display 0.3s allow-discrete;
		transition: opacity 0.3s, overlay 0.3s allow-discrete, display 0.3s allow-discrete;
}
dialog::backdrop {
		opacity: 0;
		-webkit-transition: opacity 0.3s, overlay 0.3s allow-discrete, display 0.3s allow-discrete;
		transition: opacity 0.3s, overlay 0.3s allow-discrete, display 0.3s allow-discrete;
}
dialog[open]::-ms-backdrop {
		opacity: 1;
}
dialog[open], dialog[open]::backdrop {
		opacity: 1;
}

@starting-style {
		dialog[open]::-ms-backdrop {
				opacity: 0;
		}
		dialog[open],
		dialog[open]::backdrop {
				opacity: 0;
		}
}
@media screen and (max-width: 767px) {
		*:focus {
				outline: none;
		}
}
/* フォント定義域 */
/* よく使う400〜700を定義  variableフォントはなんかバグりやすいのでやめる。うまい書き方が見つかったら試す*/
@font-face {
		font-family: "Noto Serif JP";
		src: url(../fonts/NotoSerifJP-SemiBold.woff2) format("woff2");
		font-weight: 600;
		font-display: swap;
}
@font-face {
		font-family: "Noto Serif JP";
		src: url(../fonts/NotoSerifJP-Bold.woff2) format("woff2");
		font-weight: 700;
		font-display: swap;
}
@font-face {
		font-family: "Noto Serif JP";
		src: url(../fonts/NotoSerifJP-Medium.woff2) format("woff2");
		font-weight: 500;
		font-display: swap;
}
@font-face {
		font-family: "Noto Serif JP";
		src: url(../fonts/NotoSerifJP-Regular.woff2) format("woff2");
		font-weight: 400;
		font-display: swap;
}
@font-face {
		font-family: "Noto Serif JP";
		src: url(../fonts/NotoSerifJP-Light.woff2) format("woff2");
		font-weight: 300;
		font-display: swap;
}
@font-face {
		font-family: "Noto Serif JP";
		src: url(../fonts/NotoSerifJP-ExtraLight.woff2) format("woff2");
		font-weight: 200;
		font-display: swap;
}
body {
		font-family: "Noto Serif JP";
		font-smoothing: antialiased;
		-webkit-font-smoothing: antialiased;
		-moz-font-smoothing: antialiased;
		-moz-osx-font-smoothing: grayscale;
		font-size: 1.4rem;
		font-weight: 400;
		line-height: 1.5;
		color: #222222;
		background-color: #FAF8F4;
}
@media screen and (min-width: 768px) {
		body {
				font-size: 1.5rem;
		}
}
@media screen and (min-width: 1200px) {
		body {
				font-size: 1.6rem;
		}
}

/* =====================================================
							全ページ共通パーツ用ファイル
 =====================================================*/
#footer {
		border-top: solid 1px #DBD9CD;
}

.footer_inner {
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-orient: vertical;
		-webkit-box-direction: normal;
		    -ms-flex-direction: column;
		        flex-direction: column;
}
@media screen and (min-width: 768px) {
		.footer_inner {
				-webkit-box-orient: horizontal;
				-webkit-box-direction: normal;
				    -ms-flex-direction: row;
				        flex-direction: row;
				max-width: 1070px;
				margin-inline: auto;
		}
}

.footer_leftblock {
		display: contents;
}
@media screen and (min-width: 768px) {
		.footer_leftblock {
				display: block;
				padding-block: 60px;
				padding-inline: 80px 30px;
				-webkit-box-flex: 1;
				    -ms-flex: 1;
				        flex: 1;
				border-right: solid 1px #DBD9CD;
				max-width: 430px;
		}
}
@media screen and (min-width: 992px) {
		.footer_leftblock {
				padding-inline: 0 90px;
				padding-block: 80px;
		}
}

.footer_infowrap {
		-webkit-box-ordinal-group: 2;
		    -ms-flex-order: 1;
		        order: 1;
		padding-inline: 20px;
		padding-block: 60px;
}
@media screen and (min-width: 425px) {
		.footer_infowrap {
				padding-inline: 30px;
		}
}
@media screen and (min-width: 768px) {
		.footer_infowrap {
				padding-inline: 40px;
		}
}
@media screen and (min-width: 992px) {
		.footer_infowrap {
				padding-inline: 60px;
		}
}
@media screen and (min-width: 768px) {
		.footer_infowrap {
				display: contents;
		}
}

.footer_logo {
		width: 256px;
		-webkit-transition: opacity 0.3s;
		transition: opacity 0.3s;
		display: block;
}
@media screen and (min-width: 768px) {
		.footer_logo {
				width: 218px;
		}
}
@media (hover: hover) and (pointer: fine) {
		.footer_logo:hover {
				opacity: 0.7;
		}
}

.footer_text {
		font-size: 1.5rem;
		line-height: 1.8;
		-webkit-margin-before: 35px;
		        margin-block-start: 35px;
		color: currentColor;
}
@media screen and (min-width: 768px) {
		.footer_text {
				font-size: 1.3rem;
		}
}
.footer_text a {
		color: #222222;
}
@media (hover: hover) and (pointer: fine) {
		.footer_text a:hover {
				pointer-events: none;
		}
}

.footer_address {
		-webkit-margin-before: 15px;
		        margin-block-start: 15px;
		font-size: 1.5rem;
		line-height: 1.8;
}
@media screen and (min-width: 768px) {
		.footer_address {
				font-size: 1.3rem;
				-webkit-margin-before: 5px;
				        margin-block-start: 5px;
		}
}
.footer_address + .footer_text {
		margin: 0;
}
@media screen and (min-width: 992px) {
		.footer_address br {
				display: none;
		}
}

.footer_bottom_block {
		-webkit-box-ordinal-group: 4;
		    -ms-flex-order: 3;
		        order: 3;
		padding-inline: 20px;
		border-top: solid 1px #DBD9CD;
		padding-block: 30px 70px;
}
@media screen and (min-width: 425px) {
		.footer_bottom_block {
				padding-inline: 30px;
		}
}
@media screen and (min-width: 768px) {
		.footer_bottom_block {
				padding-inline: 40px;
		}
}
@media screen and (min-width: 992px) {
		.footer_bottom_block {
				padding-inline: 60px;
		}
}
@media screen and (min-width: 768px) {
		.footer_bottom_block {
				padding: 0;
				border-top: none;
		}
}

.footer_link_list {
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		gap: 40px;
}
@media screen and (min-width: 768px) {
		.footer_link_list {
				-webkit-margin-before: 25px;
				        margin-block-start: 25px;
		}
}

.footer_link a {
		position: relative;
		font-size: 1.3rem;
		line-height: 1.5;
		color: #222222;
		display: block;
		-webkit-padding-start: 12px;
		        padding-inline-start: 12px;
		-webkit-transition: color 0.3s, border-color 0.3s;
		transition: color 0.3s, border-color 0.3s;
}
.footer_link a::before {
		content: "";
		position: absolute;
		top: 0.6em;
		left: 0;
		width: 4px;
		height: 4px;
		border-top: solid 1px #222222;
		border-right: solid 1px #222222;
		rotate: 45deg;
		-webkit-transition: border-color 0.3s, translate 0.3s;
		transition: border-color 0.3s, translate 0.3s;
}
@media (hover: hover) and (pointer: fine) {
		.footer_link a:hover {
				color: #008C64;
		}
		.footer_link a:hover::before {
				border-color: #008C64;
				translate: 3px 0;
		}
}

.copyright {
		font-size: 1.3rem;
		line-height: 1.4;
		font-weight: 300;
		-webkit-margin-before: 30px;
		        margin-block-start: 30px;
}

.footer_rightblock {
		-webkit-box-ordinal-group: 3;
		    -ms-flex-order: 2;
		        order: 2;
		padding-inline: 20px;
		border-top: solid 1px #DBD9CD;
		padding-block: 30px;
}
@media screen and (min-width: 425px) {
		.footer_rightblock {
				padding-inline: 30px;
		}
}
@media screen and (min-width: 768px) {
		.footer_rightblock {
				padding-inline: 40px;
		}
}
@media screen and (min-width: 992px) {
		.footer_rightblock {
				padding-inline: 60px;
		}
}
@media screen and (min-width: 768px) {
		.footer_rightblock {
				padding: 60px 30px 60px 30px;
				width: 50%;
				border-top: none;
		}
}
@media screen and (min-width: 992px) {
		.footer_rightblock {
				padding-inline: 90px 0;
				padding-block: 80px;
				max-width: 620px;
				-webkit-box-flex: 1;
				    -ms-flex: 1;
				        flex: 1;
		}
}

.footer_nav_list {
		display: -ms-grid;
		display: grid;
		-ms-grid-columns: 1fr 15px 1fr;
		grid-template-columns: repeat(2, 1fr);
		gap: 20px 15px;
}
@media screen and (min-width: 992px) {
		.footer_nav_list {
				gap: 20px;
		}
}

.footer_nav a {
		position: relative;
		display: block;
		font-size: 1.8rem;
		line-height: 1.5;
		padding-bottom: 15px;
		border-bottom: solid 1px #222222;
		color: #222222;
		-webkit-padding-start: 12px;
		        padding-inline-start: 12px;
		-webkit-transition: border-color 0.3s, color 0.3s;
		transition: border-color 0.3s, color 0.3s;
}
@media screen and (min-width: 768px) {
		.footer_nav a {
				font-size: 1.5rem;
				-webkit-padding-after: 10px;
				        padding-block-end: 10px;
		}
}
.footer_nav a::before {
		content: "";
		position: absolute;
		top: 0.8em;
		left: 0;
		width: 4px;
		height: 4px;
		border-top: solid 1px #222222;
		border-right: solid 1px #222222;
		rotate: 45deg;
		-webkit-transition: border-color 0.3s, translate 0.3s;
		transition: border-color 0.3s, translate 0.3s;
}
@media screen and (min-width: 768px) {
		.footer_nav a::before {
				top: 0.6em;
		}
}
@media (hover: hover) and (pointer: fine) {
		.footer_nav a:hover {
				color: #008C64;
				border-color: #008C64;
		}
		.footer_nav a:hover::before {
				border-color: #008C64;
				translate: 3px 0;
		}
}

.footer_contact_btn {
		position: relative;
		display: block;
		border-radius: 100vmax;
		background-color: #222222;
		-webkit-margin-before: 30px;
		        margin-block-start: 30px;
		padding-block: 15px;
		text-align: center;
		border: solid 1px #222222;
		-webkit-transition: background-color 0.3s;
		transition: background-color 0.3s;
}
@media screen and (min-width: 768px) {
		.footer_contact_btn {
				max-width: 260px;
		}
}
.footer_contact_btn span {
		position: relative;
		text-align: center;
		color: #DBD9CD;
		font-size: 1.5rem;
		line-height: 1.5;
		-webkit-padding-start: 30px;
		        padding-inline-start: 30px;
		-webkit-transition: color 0.3s;
		transition: color 0.3s;
}
.footer_contact_btn span::before {
		content: "";
		position: absolute;
		bottom: 0;
		left: 0px;
		translate: 0% -10%;
		width: 22px;
		height: 20px;
		-webkit-mask-image: url(../img/common/contact_icon.svg);
		        mask-image: url(../img/common/contact_icon.svg);
		background-color: #DBD9CD;
		-webkit-mask-size: cover;
		        mask-size: cover;
		-webkit-transition: background-color 0.3s;
		transition: background-color 0.3s;
}
@media (hover: hover) and (pointer: fine) {
		.footer_contact_btn:hover {
				background-color: #faf8f4;
		}
		.footer_contact_btn:hover span {
				color: #222222;
		}
		.footer_contact_btn:hover span::before {
				background-color: #222222;
		}
}

#global_nav {
		position: fixed;
		top: 0px;
		z-index: 9999;
		right: 0;
		width: 100%;
		background-color: #FAF8F4;
		translate: 100% 0;
		-webkit-transition: translate 0.3s;
		transition: translate 0.3s;
		height: 100vh;
}
@media screen and (min-width: 768px) {
		#global_nav {
				max-width: 370px;
		}
}
#global_nav._open {
		translate: 0% 0;
}

.global_nav_bg {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background-color: rgba(0, 0, 0, 0.5);
		z-index: 9998;
		opacity: 0;
		visibility: hidden;
		-webkit-transition: opacity 0.3s, visibility 0.3s;
		transition: opacity 0.3s, visibility 0.3s;
}
.global_nav_bg._open {
		opacity: 1;
		visibility: visible;
}

.global_nav_inner {
		position: relative;
		width: 100%;
		padding: 125px 30px 30px;
		max-height: 100svh;
		overflow-y: auto;
		-ms-scroll-chaining: none;
		    overscroll-behavior: contain;
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-orient: vertical;
		-webkit-box-direction: normal;
		    -ms-flex-direction: column;
		        flex-direction: column;
		-webkit-box-pack: justify;
		    -ms-flex-pack: justify;
		        justify-content: space-between;
		height: 100%;
		gap: 25px;
}
@media screen and (min-width: 768px) {
		.global_nav_inner {
				padding: 125px 40px 40px;
				gap: 100px;
		}
}

.global_nav_list {
		display: -ms-grid;
		display: grid;
		gap: 15px;
}

.global_nav_item a {
		position: relative;
		display: block;
		font-size: 1.6rem;
		line-height: 1.8;
		color: #222222;
		-webkit-transition: color 0.3s;
		transition: color 0.3s;
		border-bottom: solid 1px #222222;
		-webkit-padding-after: 20px;
		        padding-block-end: 20px;
		transition: color 0.3s;
}
.global_nav_item a::before {
		content: "";
		position: absolute;
		top: 0.8em;
		right: 10px;
		width: 6px;
		height: 6px;
		border-top: solid 1px #222222;
		border-right: solid 1px #222222;
		rotate: 45deg;
		-webkit-transition: color 0.3s, translate 0.3s;
		transition: color 0.3s, translate 0.3s;
}
@media (hover: hover) and (pointer: fine) {
		.global_nav_item a:hover {
				color: #008C64;
		}
		.global_nav_item a:hover::before {
				border-color: #008C64;
				translate: 3px 0;
		}
}

.header_contact_button {
		display: block;
		-webkit-margin-before: 20px;
		        margin-block-start: 20px;
		border-radius: 6px;
		background-color: #222222;
		padding-block: 27px;
		width: 100%;
		text-align: center;
		border: solid 1px #222222;
		-webkit-transition: background-color 0.3s;
		transition: background-color 0.3s;
		max-width: 350px;
		margin-inline: auto;
}
.header_contact_button span {
		position: relative;
		color: #fff;
		font-size: 1.8rem;
		font-weight: 400;
		line-height: 1.5;
		-webkit-padding-start: 24px;
		        padding-inline-start: 24px;
		-webkit-transition: color 0.3s;
		transition: color 0.3s;
		letter-spacing: 0.02em;
}
.header_contact_button span::before {
		content: "";
		position: absolute;
		top: 50%;
		left: 0;
		width: 18px;
		height: 20px;
		-webkit-mask-image: url(../img/common/contact_icon.svg);
		        mask-image: url(../img/common/contact_icon.svg);
		-webkit-mask-size: cover;
		        mask-size: cover;
		background-color: #DBD9CD;
		translate: 0 -50%;
		-webkit-transition: background-color 0.3s;
		transition: background-color 0.3s;
}
@media (hover: hover) and (pointer: fine) {
		.header_contact_button:hover {
				background-color: #FAF8F4;
		}
		.header_contact_button:hover span {
				color: #222222;
		}
		.header_contact_button:hover span::before {
				background-color: #222222;
		}
}

.global_nav_title {
		font-size: 2.4rem;
		font-weight: 500;
		color: #9D9B94;
		text-align: center;
}
@media screen and (min-width: 992px) {
		.global_nav_title {
				font-size: 3.8rem;
		}
}

.global_nav_text {
		font-size: 1.2rem;
		font-weight: 600;
		text-align: center;
		color: #9D9B94;
}
@media screen and (min-width: 992px) {
		.global_nav_text {
				font-size: 1.2rem;
		}
}

header {
		position: fixed;
		top: 0;
		right: 0;
		width: 100%;
		z-index: 10000;
		padding-block: 25px;
		padding-inline: 25px;
}
@media screen and (min-width: 768px) {
		header {
				padding-inline: 30px;
		}
}
@media screen and (min-width: 992px) {
		header {
				width: 50%;
		}
}

.header_logo {
		width: 148px;
		margin-inline: auto;
		display: block;
}
@media screen and (min-width: 768px) {
		.header_logo {
				-webkit-margin-end: 106px;
				        margin-inline-end: 106px;
		}
}

.hamberger {
		position: absolute;
		top: 30px;
		right: 20px;
		width: 30px;
		height: 22px;
}
.hamberger span {
		position: absolute;
		background-color: #222222;
		width: 30px;
		height: 2px;
		display: block;
		left: 50%;
		translate: -50% 0;
		-webkit-transition: top 0.3s, rotate 0.3s, background-color 0.3s;
		transition: top 0.3s, rotate 0.3s, background-color 0.3s;
}
.hamberger span:nth-of-type(1) {
		top: 0;
}
.hamberger span:nth-of-type(2) {
		top: 50%;
}
.hamberger span:nth-of-type(3) {
		top: 100%;
}
.hamberger._open span:nth-of-type(1) {
		top: 50%;
		rotate: 45deg;
}
.hamberger._open span:nth-of-type(2) {
		opacity: 0;
}
.hamberger._open span:nth-of-type(3) {
		top: 50%;
		rotate: -45deg;
}
@media (hover: hover) and (pointer: fine) {
		.hamberger:hover {
				cursor: pointer;
		}
		.hamberger:hover span {
				background-color: #008C64;
		}
}

/* =====================================================
							TOPのFV専用
 =====================================================*/
#loading {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100dvh;
		opacity: 0;
		visibility: hidden;
		z-index: 11000;
		background-color: #FAF8F4;
		-webkit-transition: opacity 1s, visibility 1s;
		transition: opacity 1s, visibility 1s;
		padding-block: 100px 40px;
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-orient: vertical;
		-webkit-box-direction: normal;
		    -ms-flex-direction: column;
		        flex-direction: column;
		-webkit-box-pack: center;
		    -ms-flex-pack: center;
		        justify-content: center;
		-webkit-box-align: center;
		    -ms-flex-align: center;
		        align-items: center;
		gap: 60px;
		overscroll-behavior-y: contain;
		overflow-y: auto;
		opacity: 0;
		visibility: hidden;
}
@media screen and (min-width: 768px) {
		#loading {
				padding: 0;
		}
}
#loading._show {
		opacity: 1;
		visibility: visible;
}

@-webkit-keyframes box-animation {
		0% {
				width: 345px;
		}
		100% {
				width: 100%;
		}
}

@keyframes box-animation {
		0% {
				width: 345px;
		}
		100% {
				width: 100%;
		}
}
:root {
		interpolate-size: arrow-keywords;
}

.loading_box {
		position: relative;
		margin-inline: auto;
		border: solid 1px #DBD9CD;
		border-radius: 6px;
		max-width: 320px;
		width: 90%;
		padding: 45px 20px;
		-webkit-transition: width 1s;
		transition: width 1s;
}
@media screen and (min-width: 768px) {
		.loading_box {
				width: 345px;
				max-width: 576px;
				padding: 50px 30px;
		}
}
@media screen and (min-width: 992px) {
		.loading_box._show {
				-webkit-animation: box-animation 1s ease-in-out forwards;
				        animation: box-animation 1s ease-in-out forwards;
		}
}
.loading_box::before {
		content: "";
		position: absolute;
		bottom: 0;
		left: 50%;
		width: 17px;
		height: 20px;
		background-image: url("../img/top/tail.svg");
		background-size: cover;
		background-repeat: no-repeat;
		background-position: center;
		translate: -50% 100%;
}
.loading_box._loading .loading_thinkbar {
		opacity: 1;
}
@media screen and (max-width: 767px) {
		.loading_box._show .loading_small_text span {
				-webkit-animation-name: text-shape;
				        animation-name: text-shape;
				-webkit-animation-duration: 0.8s;
				        animation-duration: 0.8s;
				-webkit-animation-timing-function: ease-out;
				        animation-timing-function: ease-out;
				-webkit-animation-fill-mode: forwards;
				        animation-fill-mode: forwards;
		}
}
@media screen and (min-width: 768px) {
		.loading_box._show .loading_small_text {
				-webkit-animation-name: text-shape;
				        animation-name: text-shape;
				-webkit-animation-duration: 0.8s;
				        animation-duration: 0.8s;
				-webkit-animation-fill-mode: forwards;
				        animation-fill-mode: forwards;
				-webkit-animation-timing-function: ease-out;
				        animation-timing-function: ease-out;
		}
}
@media screen and (max-width: 767px) {
		.loading_box._show .loading_large_text span {
				-webkit-animation-name: text-shape;
				        animation-name: text-shape;
				-webkit-animation-duration: 0.8s;
				        animation-duration: 0.8s;
				-webkit-animation-timing-function: ease-out;
				        animation-timing-function: ease-out;
				-webkit-animation-fill-mode: forwards;
				        animation-fill-mode: forwards;
		}
}
@media screen and (min-width: 768px) {
		.loading_box._show .loading_large_text {
				-webkit-animation-name: text-shape;
				        animation-name: text-shape;
				-webkit-animation-duration: 0.8s;
				        animation-duration: 0.8s;
				-webkit-animation-fill-mode: forwards;
				        animation-fill-mode: forwards;
				-webkit-animation-timing-function: ease-out;
				        animation-timing-function: ease-out;
		}
}

.loading_thinkbar {
		position: absolute;
		opacity: 0;
		left: 50%;
		translate: -50% 0%;
		display: block;
		width: 285px;
		height: 34px;
		border-radius: 100vmax;
		background: -webkit-gradient(linear, left top, right top, from(#FAF8F4), color-stop(50%, #98D4C3), to(#FAF8F4));
		background: linear-gradient(90deg, #FAF8F4 0%, #98D4C3 50%, #FAF8F4 100%);
		background-size: 300% 300%;
		-webkit-animation: think_bar 2s linear infinite;
		        animation: think_bar 2s linear infinite;
		-webkit-transition: opacity 0.5s;
		transition: opacity 0.5s;
}
.loading_thinkbar:nth-child(1) {
		top: 67px;
}
@media screen and (min-width: 768px) {
		.loading_thinkbar:nth-child(1) {
				top: 50px;
		}
}
.loading_thinkbar:nth-child(2) {
		top: 110px;
}
@media screen and (min-width: 768px) {
		.loading_thinkbar:nth-child(2) {
				top: 90px;
		}
}
.loading_thinkbar:nth-child(3) {
		top: 153px;
}
@media screen and (min-width: 768px) {
		.loading_thinkbar:nth-child(3) {
				top: 130px;
		}
}

@-webkit-keyframes text-shape {
		from {
				clip-path: inset(0 100% 0 100%);
		}
		to {
				clip-path: inset(0);
		}
}

@keyframes text-shape {
		from {
				clip-path: inset(0 100% 0 100%);
		}
		to {
				clip-path: inset(0);
		}
}
.loading_small_text {
		text-align: center;
		font-size: 1.6rem;
		line-height: 1.2;
		display: -ms-grid;
		display: grid;
		gap: 15px;
}
@media screen and (min-width: 768px) {
		.loading_small_text {
				font-size: 2rem;
				display: block;
				white-space: nowrap;
				clip-path: inset(0 100% 0 100%);
		}
}
.loading_small_text + .loading_small_text {
		-webkit-margin-before: 15px;
		        margin-block-start: 15px;
}
.loading_small_text span {
		clip-path: inset(0 100% 0 100%);
}
@media screen and (min-width: 768px) {
		.loading_small_text span {
				clip-path: inset(0);
		}
}
.loading_small_text span[data-timing="1"] {
		-webkit-animation-delay: 0.5s;
		        animation-delay: 0.5s;
}
.loading_small_text span[data-timing="2"] {
		-webkit-animation-delay: 1.3s;
		        animation-delay: 1.3s;
}
.loading_small_text span[data-timing="3"] {
		-webkit-animation-delay: 2.1s;
		        animation-delay: 2.1s;
}
.loading_small_text[data-timing="1"] {
		-webkit-animation-delay: 1s;
		        animation-delay: 1s;
}
.loading_small_text[data-timing="2"] {
		-webkit-animation-delay: 1.8s;
		        animation-delay: 1.8s;
}

.loading_large_text {
		-webkit-margin-before: 15px;
		        margin-block-start: 15px;
		font-size: 1.9rem;
		line-height: 1.6;
		text-align: center;
		display: -ms-grid;
		display: grid;
		gap: 5px;
}
@media screen and (min-width: 768px) {
		.loading_large_text {
				display: block;
				white-space: nowrap;
				font-size: 2.3rem;
				clip-path: inset(0 100% 0 100%);
		}
}
.loading_large_text span {
		clip-path: inset(0 100% 0 100%);
}
@media screen and (min-width: 768px) {
		.loading_large_text span {
				clip-path: inset(0);
		}
}
.loading_large_text span[data-timing="4"] {
		-webkit-animation-delay: 2.9s;
		        animation-delay: 2.9s;
}
.loading_large_text span[data-timing="5"] {
		-webkit-animation-delay: 3.7s;
		        animation-delay: 3.7s;
}
.loading_large_text[data-timing="3"] {
		-webkit-animation-delay: 2.5s;
		        animation-delay: 2.5s;
}

.loading_icon {
		width: 78px;
		height: 78px;
		position: relative;
}
.loading_icon:has(video) {
		background-color: #ffffff;
		overflow: hidden;
		border-radius: 50%;
		text-align: center;
}
.loading_icon:has(video)::before {
		content: "";
		position: absolute;
		top: 50%;
		left: 50%;
		translate: -50% -50%;
		width: 34px;
		height: 26px;
		background-image: url(../img/top/ba_logo.svg);
		background-repeat: no-repeat;
		background-position: center center;
		background-size: cover;
		z-index: 3;
}
.loading_icon video {
		width: 166px;
		height: 93px;
		translate: -27% -8%;
		-webkit-transition: opacity 0.2s;
		transition: opacity 0.2s;
}
.loading_icon._hide video {
		opacity: 0;
}

@-webkit-keyframes fadein {
		from {
				opacity: 0;
				translate: 0 20px;
		}
		to {
				opacity: 1;
				translate: 0 0;
		}
}

@keyframes fadein {
		from {
				opacity: 0;
				translate: 0 20px;
		}
		to {
				opacity: 1;
				translate: 0 0;
		}
}
.loading_img {
		margin-inline: auto;
		width: 200px;
		height: 61px;
		translate: 0 20px;
		opacity: 0;
}
@media screen and (min-width: 768px) {
		.loading_img {
				-webkit-margin-before: 50px;
				        margin-block-start: 50px;
		}
}
.loading_img._show {
		-webkit-animation: fadein forwards 0.5s ease-out;
		        animation: fadein forwards 0.5s ease-out;
}

/* =====================================================
						共通パーツ
=====================================================*/
.breadcrumb {
		width: 100%;
		max-width: 100vw;
		position: absolute;
		top: 95px;
		left: 0;
		overflow: hidden;
		padding-inline: 20px;
}
@media screen and (min-width: 425px) {
		.breadcrumb {
				padding-inline: 30px;
		}
}
@media screen and (min-width: 768px) {
		.breadcrumb {
				padding-inline: 40px;
		}
}
@media screen and (min-width: 992px) {
		.breadcrumb {
				padding-inline: 60px;
		}
}
@media screen and (min-width: 992px) {
		.breadcrumb {
				top: 30px;
		}
}
.breadcrumb::before {
		content: "";
		position: absolute;
		top: 0;
		right: 0;
		width: 50px;
		height: 100%;
		background: -webkit-gradient(linear, right top, left top, from(#faf8f4), to(rgba(250, 248, 244, 0)));
		background: linear-gradient(270deg, #faf8f4 0%, rgba(250, 248, 244, 0) 100%);
}
@media screen and (min-width: 992px) {
		.breadcrumb::before {
				display: none;
		}
}

.breadcrumb_list {
		position: relative;
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		gap: 5px 15px;
		-ms-flex-wrap: nowrap;
		    flex-wrap: nowrap;
		-webkit-box-align: center;
		    -ms-flex-align: center;
		        align-items: center;
}

.breadcrumb_sparate {
		display: block;
		width: 4px;
		height: 4px;
		position: relative;
		place-items: center;
		place-content: center;
}
.breadcrumb_sparate::before {
		content: "";
		position: absolute;
		top: 0%;
		left: 0%;
		width: 4px;
		height: 4px;
		border-top: solid 1px #222222;
		border-right: solid 1px #222222;
		rotate: 45deg;
}

.breadcrumb_item {
		display: -webkit-box;
		display: -ms-flexbox;
		display: flex;
		width: -webkit-fit-content;
		width: -moz-fit-content;
		width: fit-content;
}
.breadcrumb_item:last-child {
		-webkit-box-flex: 1;
		    -ms-flex: 1;
		        flex: 1;
}

.breadcrumb_ttl {
		font-size: 1.2rem;
		text-wrap: nowrap;
}

.breadcrumb_link {
		color: #222222;
		-webkit-transition: color 0.3s;
		transition: color 0.3s;
}
@media (hover: hover) and (pointer: fine) {
		.breadcrumb_link:hover {
				color: #008C64;
		}
}

.keyword_button {
		color: #008C64;
		text-decoration: underline;
		-webkit-transition: opacity 0.3s;
		transition: opacity 0.3s;
}
@media (hover: hover) and (pointer: fine) {
		.keyword_button:hover {
				cursor: pointer;
				opacity: 0.7;
		}
}

.fixed_keyword_box {
		position: fixed;
		top: 100px;
		right: 10px;
		width: 200px;
		display: none;
		padding: 20px 15px;
		border: solid 1px #222222;
		opacity: 0;
		z-index: 11000;
		background-color: #FAF8F4;
}
@media screen and (min-width: 992px) {
		.fixed_keyword_box {
				display: block;
				right: 10px;
		}
}
@media screen and (min-width: 1150px) {
		.fixed_keyword_box {
				right: min(100vw - 435px, 250px);
				translate: 100% 0;
		}
}
@media screen and (min-width: 1300px) {
		.fixed_keyword_box {
				translate: 100% 0;
				right: calc((100vw - 800px) / 2 - 50px);
		}
}
.fixed_keyword_box._open {
		opacity: 1;
}

.close_button {
		position: absolute;
		top: 10px;
		right: 10px;
		width: 15px;
		height: 12px;
}
.close_button::before, .close_button::after {
		content: "";
		position: absolute;
		top: 50%;
		left: 50%;
		translate: -50% -50%;
		width: 15px;
		height: 1px;
		background-color: #DBD9CD;
		-webkit-transition: background-color 0.3s;
		transition: background-color 0.3s;
}
.close_button::before {
		rotate: 45deg;
}
.close_button::after {
		rotate: -45deg;
}
@media (hover: hover) and (pointer: fine) {
		.close_button:hover {
				cursor: pointer;
		}
		.close_button:hover::before, .close_button:hover::after {
				background-color: #222222;
		}
}

.keyword_title {
		font-size: 1.4rem;
		font-weight: 700;
}

.keyword_text {
		-webkit-margin-before: 10px;
		        margin-block-start: 10px;
		font-size: 1.4rem;
}

#keyword_modal {
		background-color: transparent;
		padding-inline: 20px;
		padding-block: 120px 60px;
		max-width: unset;
		inset: 0;
		width: 100%;
		height: 100vh;
}
@media screen and (min-width: 425px) {
		#keyword_modal {
				padding-inline: 30px;
		}
}
@media screen and (min-width: 768px) {
		#keyword_modal {
				padding-inline: 40px;
		}
}
@media screen and (min-width: 992px) {
		#keyword_modal {
				padding-inline: 60px;
		}
}
#keyword_modal::-ms-backdrop {
		background-color: rgba(0, 0, 0, 0.5);
}
#keyword_modal::backdrop {
		background-color: rgba(0, 0, 0, 0.5);
}

.keyword_modal_inner {
		position: relative;
		background-color: #ffffff;
		padding: 40px 25px;
		border: solid 1px #222222;
		max-width: 400px;
		width: 100%;
		margin-inline: auto;
}

.keyword_modal_title {
		font-size: 1.6rem;
		font-weight: 700;
		-webkit-padding-after: 10px;
		        padding-block-end: 10px;
		border-bottom: solid 1px #222222;
}

.keyword_modal_text {
		-webkit-margin-before: 15px;
		        margin-block-start: 15px;
		font-size: 1.6rem;
		line-height: 1.8;
}

.keyword_modal_close {
		position: absolute;
		top: 0px;
		right: 0px;
		width: 30px;
		height: 22px;
		translate: 0 calc(-100% - 15px);
}
.keyword_modal_close::before, .keyword_modal_close::after {
		content: "";
		position: absolute;
		top: 50%;
		left: 50%;
		translate: -50% -50%;
		width: 30px;
		height: 2px;
		background-color: #DBD9CD;
}
.keyword_modal_close::before {
		rotate: 45deg;
}
.keyword_modal_close::after {
		rotate: -45deg;
}

@-webkit-keyframes slide-in {
		from {
				scale: 0.5;
		}
		to {
				scale: 1;
		}
}

@keyframes slide-in {
		from {
				scale: 0.5;
		}
		to {
				scale: 1;
		}
}
@-webkit-keyframes slide-out {
		from {
				scale: 1;
		}
		to {
				scale: 0.5;
		}
}
@keyframes slide-out {
		from {
				scale: 1;
		}
		to {
				scale: 0.5;
		}
}
@view-transition {
		navigation: auto;
}
::view-transition-old(image01) {
		-webkit-animation: slide-out 0.3s ease-out;
		        animation: slide-out 0.3s ease-out;
}

::view-transition-new(image01) {
		-webkit-animation: slide-in 0.3s ease-out;
		        animation: slide-in 0.3s ease-out;
}

.contents_inner {
		margin-inline: auto;
		max-width: 800px;
}

#keyword_nav {
		position: fixed;
		top: 0;
		left: 0;
		z-index: 10100;
		width: 100%;
		translate: 0 var(--keyword-nav-height);
		-webkit-transition: translate 0.3s;
		transition: translate 0.3s;
}
@media screen and (min-width: 768px) {
		#keyword_nav {
				top: 80px;
				translate: -100% 0;
				width: -webkit-fit-content;
				width: -moz-fit-content;
				width: fit-content;
				height: -webkit-fit-content;
				height: -moz-fit-content;
				height: fit-content;
		}
}
@media screen and (min-width: 992px) {
		#keyword_nav {
				top: 110px;
		}
}
#keyword_nav::before {
		content: "";
		position: fixed;
		bottom: 0;
		left: 0;
		width: 100%;
		height: 40px;
		background: -webkit-gradient(linear, left bottom, left top, from(#FAF8F4), to(rgba(250, 248, 244, 0.3)));
		background: linear-gradient(to top, #FAF8F4, rgba(250, 248, 244, 0.3));
		z-index: 10101;
}
@media screen and (min-width: 992px) {
		#keyword_nav::before {
				display: none;
		}
}
#keyword_nav._open {
		translate: 0 0;
}
#keyword_nav._open .keyword_nav_head::before {
		rotate: 180deg;
}
.keyword_nav_head {
		position: relative;
		background-color: #222222;
		padding-block: 20px 15px;
		text-align: center;
		font-size: 1.8rem;
		line-height: 1.8;
		color: #ffffff;
		border-radius: 10px 10px 0 0;
		display: block;
		width: 100%;
		border: solid 1px #222222;
		-webkit-transition: background-color 0.3s, color 0.3s;
		transition: background-color 0.3s, color 0.3s;
}
@media screen and (min-width: 768px) {
		.keyword_nav_head {
				position: absolute;
				bottom: 0;
				right: 0;
				translate: 100% 0;
				padding: 20px 15px;
				-webkit-writing-mode: vertical-rl;
				    -ms-writing-mode: tb-rl;
				        writing-mode: vertical-rl;
				width: -webkit-fit-content;
				width: -moz-fit-content;
				width: fit-content;
				text-orientation: upright;
				border-radius: 0 10px 10px 0;
				letter-spacing: 0.1em;
		}
}
@media screen and (min-width: 992px) {
		.keyword_nav_head {
				bottom: unset;
				top: 0;
		}
}
.keyword_nav_head::before {
		content: "";
		position: absolute;
		width: 10px;
		height: 6px;
		-webkit-mask-image: url("../img/common/radial-arrow.svg");
		        mask-image: url("../img/common/radial-arrow.svg");
		-webkit-mask-size: cover;
		        mask-size: cover;
		background-color: #9D9B94;
		top: 15px;
		left: 50%;
		translate: -50% 0;
		-webkit-transition: rotate 0.3s;
		transition: rotate 0.3s;
}
@media screen and (min-width: 768px) {
		.keyword_nav_head::before {
				display: none;
		}
}
@media (hover: hover) and (pointer: fine) {
		.keyword_nav_head:hover {
				cursor: pointer;
				background-color: #FAF8F4;
				color: #222222;
		}
}

.keyword_nav_body {
		overflow: auto;
		padding: 15px 50px 35px;
		background-color: #FAF8F4;
		max-height: var(--keyword-nav-height);
		overflow-y: auto;
		-ms-scroll-chaining: none;
		    overscroll-behavior: contain;
		border: solid 1px #222222;
}
@media screen and (min-width: 768px) {
		.keyword_nav_body {
				padding-inline: 40px;
				max-height: 100vh;
				max-width: 328px;
		}
}

.keyword_nav_item a {
		position: relative;
		font-size: 2rem;
		font-weight: 400;
		line-height: 1.5;
		color: #222222;
		border-bottom: solid 1px #222222;
		display: block;
		padding-block: 15px;
		-webkit-transition: color 0.3s;
		transition: color 0.3s;
		-webkit-padding-end: 20px;
		        padding-inline-end: 20px;
}
@media screen and (min-width: 768px) {
		.keyword_nav_item a {
				font-size: 1.5rem;
		}
}
.keyword_nav_item a::before {
		content: "";
		position: absolute;
		top: 1.5em;
		right: 0;
		width: 6px;
		height: 6px;
		border-bottom: solid 1px #222222;
		border-right: solid 1px #222222;
		rotate: 45deg;
		translate: 0 -50%;
		-webkit-transition: translate 0.3s, border-color 0.3s;
		transition: translate 0.3s, border-color 0.3s;
}
@media (hover: hover) and (pointer: fine) {
		.keyword_nav_item a:hover {
				color: #008C64;
		}
		.keyword_nav_item a:hover::before {
				border-color: #008C64;
				translate: 0 calc(-50% + 3px);
		}
}