@charset "utf-8";

/*  ===============================
			ROOT
===============================*/

/* variable
===============================
*/

img {
	width: auto;
}

:root {
	--offsetTop: 0px;

	--sans-serif: "Noto Sans JP", sans-serif;
	--serif: "Shippori Mincho", "Noto Serif JP", "源ノ明朝", serif;
	--en: "Oswald", sans-serif;

	--fzBody: 16px;
	--letterBody: 1px;
	--lh: 1.8;

	--documentTextAlign: center;
	--primaryColor: #616148;
	--textColor: #000;
	--lightTextColor: #fff;
	--lightGrayColor: #f7f7f7;
	--paleGrayColor: #e5e5e5;
	--grayColor: #b9b9b9;
	--darkGrayColor: #a5a5a5;

	--bgColor: #fff;
}

body {
	font-family: var(--sans-serif);
	color: var(--textColor);
	background-color: var(--bgColor);
	font-size: var(--fzBody);
	line-height: var(--lh);
	letter-spacing: var(--letterBody);
	text-align: var(--documentTextAlign);
}

.inr {
	max-width: var(--cntInrMaxW);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--commonSidePadding);
	padding-right: var(--commonSidePadding);
}

@media screen and (min-width: 769px) {
	:root {
		--commonSidePadding: 40px;
		--cntInrMaxW: 960px;
	}
}

@media screen and (max-width: 768px) {
	:root {
		--commonSidePadding: 20px;
		--cntInrMaxW: 480px;
	}
	.inr {
		padding-left: var(--commonSidePadding);
		padding-right: var(--commonSidePadding);
	}
}

/* init */

body {
	position: relative;
	overflow-x: hidden;
	padding-top: 108px; /* ヘッダーの高さ分のパディングを追加 */
}

/*  ===============================
	animation & transition
===============================*/

/* clip-to-bottom
===============================
*/

/*  ===============================
			global
===============================  */

.Gcontainer {
	overflow: hidden;
}

/* Gheader
===============================
.Ghdr
*/
.Ghdr {
	--h: 110px;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: var(--h);
	background: #fff;
	z-index: 100;
	transition: top 0.5s, opacity 0.5s;
}

.Ghdr_inr {
	display: flex;
	justify-content: space-between;
	align-items: center;
	position: relative;
	height: 100%;
	padding: 0 3vw;
}

.Ghdr_img:hover {
	filter: brightness(1.75);
	transition: 0.4s;
}

/* navi
===============================
Gnavi
*/
.Gnavi {
	position: relative;
}

/* MENU-btn */
.Gnavi_btn {
	position: absolute;
	top: 50%;
	right: 15px;
	transform: translateY(-50%);
	width: 44px;
	height: 49px;
	cursor: pointer;
	pointer-events: none;
	opacity: 0;
}

/* PC-menu */
.Gnavi_list {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 2vw;
}

.Gnavi_list a {
	position: relative;
	display: inline-block;
	color: var(--primaryColor);
	font-family: var(--en);
	font-weight: 500;
	font-size: clamp(14px, 1.8vw, 16px);
	line-height: 16px;
	letter-spacing: 0.1rem;
	margin-right: -0.1rem;
}

.Gnavi_list a:after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -6px;
	width: 100%;
	height: 2px;
	background: var(--primaryColor);
	transform: scale(0, 1);
	transform-origin: left top;
	transition: transform 0.3s;
}

.Gnavi_list a.is-current:after,
.Gnavi_list a:hover:after {
	transform: scale(1, 1);
}

/* spMenu */
.spMenu {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	position: fixed;
	min-height: calc(100svh - var(--offsetTop));
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	overflow: hidden;
	width: 100%;
	background-color: var(--primaryColor);
	pointer-events: none;
	opacity: 0;
	z-index: 200;
	transition: 0.4s;
}

.spMenu_hdr {
	display: flex;
	justify-content: space-between;
	align-items: center;
	width: 100%;
	height: var(--hdrH);
	padding: 0 15px;
}

.spMenu_img {
	width: 180px;
	filter: brightness(0) invert(1);
}

.spNavi {
	position: relative;
}

.spNavi_list {
	display: flex;
	flex-direction: column;
	gap: 3.5svh;
	color: var(--lightTextColor);
	font-weight: 500;
	font-family: var(--en);
	font-size: 20px;
	letter-spacing: 0.2rem;
	margin-right: -0.2rem;
}

/* COLSE-btn */
.spNavi_btn {
	width: 44px;
	height: 49px;
	cursor: pointer;
}

/* spMenu-SNS */
.spMenuSNS {
	padding-bottom: 30px;
}

.spMenuSNS_list {
	display: flex;
	justify-content: center;
	gap: 25px;
}

.spMenuSNS_list img {
	vertical-align: middle;
}

/* footer
===============================
Gftr
*/
.Gftr {
	position: relative;
	padding: 130px 0 70px;
	color: var(--grayColor);
	text-align: center;
}

.Gftr_copy {
	padding-top: 15px;
	font-size: 12px;
	font-weight: 500;
	font-family: var(--en);
}

.ftrSNS {
	position: absolute;
	bottom: 40px;
	right: 40px;
}

.ftrSNS_list {
	display: flex;
	gap: 20px;
}

.ftrSNS_list img {
	vertical-align: middle;
}

.ftrSNS_list img:hover {
	filter: brightness(0.65);
	transition: 0.4s;
}

/* main
===============================
*/
.link_text:hover {
	opacity: 0.5;
	transition: 0.4s;
}
/* sec , subSec
===============================
*/
.sec--Fcontact {
	position: relative;
	margin: 11px auto;
	background-color: rgba(97, 97, 72, 0.12);
}

.sec--Fcontact::before,
.sec--Fcontact::after {
	content: "";
	position: absolute;
	left: 0;
	width: 100%;
	height: 11px;
	background: url(../images/contact_bg.png) no-repeat center / cover;
}

.sec--Fcontact::before {
	top: -11px;
}
.sec--Fcontact::after {
	bottom: -11px;
	transform: rotate(180deg);
}

/* sec_inr */
.sec_inr {
	--w: 100%;
	width: var(--w);
	padding: 0 var(--commonSidePadding) 50px;
}

.sec_inr--hero {
	max-width: none;
	padding: 0 0 50px;
}

.sec_inr--Fmessage,
.sec_inr--Fworks {
	position: relative;
	padding: 100px var(--commonSidePadding);
}
.sec_inr--Fmessage::after,
.sec_inr--Fworks::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 50%;
	transform: translateX(-50%);
	display: inline-block;
	width: 630px;
	height: 1px;
	background: var(--primaryColor);
}

.sec_inr--Fotherplan {
	max-width: 610px;
	padding: 100px var(--commonSidePadding);
	background: url(../images/otherplan_bg.png) no-repeat center 65% / 85%;
}

.sec_inr--Fcontact {
	padding: 70px 0;
}

.sec_inr--singleWorks {
	padding-left: 0;
	padding-right: 0;
}

.sec_inr--access {
	padding: 40px 0 50px;
}

/* width:100% */
.sec_inr--hero,
.sec_inr--singleWorks,
.sec_inr--access {
	max-width: none;
}

.sec_inr--works,
.sec_inr--contact {
	max-width: 1144px;
}

.sec_inr--Fworks {
	max-width: 1030px;
}

.sec_inr--message {
	max-width: 926px;
}

.sec_inr--otherplan {
	max-width: 840px;
}

.sec_inr--about {
	max-width: 552px;
}

.sec_inr--recruit {
	max-width: 520px;
}

@media screen and (max-width: 960px) {
	.sec_inr--contact {
		max-width: 560px;
	}
}

/* sec_ttl */
.sec_ttl {
	padding: 50px 0 70px;
	color: var(--primaryColor);
	font-family: var(--en);
	font-weight: 500;
	font-size: 50px;
	line-height: 3.5rem;
}

.sec_ttl--Fworks,
.sec_ttl--Fotherplan,
.sec_ttl--Fcontact {
	padding-top: 0;
}

/*  ===============================
		  component
===============================*/

/* btn
===============================
*/
.btn {
	display: inline-block;
	width: 165px;
	padding: 8px;
	border: 1px solid var(--primaryColor);
	border-radius: 100px;
	background-color: #fff;
	color: var(--primaryColor);
	font-family: var(--en);
	font-weight: 500;
	font-size: 16px;
	letter-spacing: 0.115rem;
	/* text-indent: -0.2rem; */
	cursor: pointer;
	transition: 0.4s;
	z-index: 0;
}

.btn--send,
.btn--colored {
	background-color: var(--primaryColor);
	color: #fff;
	border-color: var(--primaryColor);
}

.btn--form {
	letter-spacing: 0.2rem;
	/* text-indent: -0.1rem; */
}

.btn--filter {
	min-width: 5em;
	padding: 0.4em 1em;
	font-size: 12px;
	letter-spacing: 0.085rem;
	text-align: center;
}

.btn--more {
	margin-top: 50px;
}

.btn:focus {
	outline: none;
	box-shadow: 0 0 2px 2px var(--primaryColor);
}

.btn:hover {
	box-shadow: none;
	background-color: var(--primaryColor);
	color: #fff;
}
.btn:active {
	translate: 0 8px;
	box-shadow: 0 0 0 2px var(--primaryColor);
}

.btn:hover + .btn--send {
	opacity: 0.5;
}

.btn--delete {
	width: 4rem;
	padding: 3px 5px;
	font-size: 12px;
}

.btn--change {
	width: 4rem;
	padding: 3px 5px;
	font-size: 12px;
	background-color: var(--lightGrayColor);
}

/* bgmBtn
===============================
*/
.bgmBtn {
	position: fixed;
	bottom: 40px;
	left: 40px;
	width: 48px;
	height: 48px;
	cursor: pointer;
	z-index: 10;
	transition: opacity 0.3s ease;
}

.bgmBtn_img {
	position: absolute;
	left: 0;
	opacity: 0;
	transition: opacity 0.3s ease;
}

.bgmBtn.is-playing .bgmBtn_img--play {
	opacity: 1;
}

.bgmBtn:not(.is-playing) .bgmBtn_img--stop {
	opacity: 1;
}

/* Loading Screen
===============================
*/
.loading_screen {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100vh;
	background: #fff;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
}

body:not(.is-loading) .loading_screen {
	opacity: 0;
	pointer-events: none;
	transition: 0.5s ease;
}

/* Skip Button */
.skip_btn {
	position: absolute;
	bottom: 30px;
	right: 30px;
	z-index: 10;
	cursor: pointer;
	background: rgba(255, 255, 255, 0.8);
	backdrop-filter: blur(10px);
	border: 1px solid rgba(0, 0, 0, 0.1);
	border-radius: 20px;
	padding: 8px 16px;
	transition: all 0.3s ease;
	font-family: var(--en);
	font-size: 12px;
	font-weight: 500;
	color: #333;
	letter-spacing: 0.5px;
}

.skip_btn:hover {
	background: rgba(255, 255, 255, 0.95);
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.skip_btn.is-hidden {
	opacity: 0;
	pointer-events: none;
}

@media screen and (max-width: 768px) {
	.skip_btn {
		bottom: 20px;
		right: 20px;
		padding: 6px 14px;
		font-size: 11px;
	}
}

.loading_stage {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100svh;
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	transition: opacity 1s ease;
	z-index: 1;
}

.loading_stage.is-active {
	opacity: 1;
}

/* Stage 1: Logo */
.loading_stage--logo {
	background: #fff;
}

.loading_logo {
	opacity: 0;
	animation: fadeIn 1s ease-in 0s forwards;
}

.loading_logo img {
	max-width: 300px;
	height: auto;
}

/* Stage 2: BGM Selection */
.loading_stage--bgm {
	padding: 20px;
	background: #fff;
}

.loadingBgm_selection {
	text-align: center;
}

.loadingBgm_title {
	margin-bottom: 20px;
	font-family: var(--en);
	font-size: 24px;
	margin-bottom: 30px;
	color: #333;
	font-weight: 450;
}

.loadingBgm_buttons {
	display: flex;
	gap: 20px;
	justify-content: center;
	align-items: center;
	margin-top: 20px;
	line-height: 1;
}

.loadingBgm_btn {
	position: relative;
}

.loadingBgm_btn::before {
	content: "";
	position: absolute;
	background: var(--primaryColor);
	width: 100px;
	height: 100px;
	border-radius: 100px;
	opacity: 0;
	transition: opacity 0.3s ease;
}

.loadingBgm_btn:focus::before {
	animation: puff-out-center 1s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

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

.loading_timer {
	margin-top: 20px;
	font-size: 10px;
	color: #666;
}

#timerCount {
	font-weight: bold;
	color: var(--primaryColor);
}

@keyframes puff-out-center {
	0% {
		transform: scale(0);
		filter: blur(0px);
		opacity: 1;
	}
	100% {
		transform: scale(2);
		filter: blur(4px);
		opacity: 0;
	}
}

/* slick
===============================
*/
.slick-list {
	margin: 0 -6px;
}

.slick-slide {
	margin: 0 6px;
}

.hero_list,
.singleWorks_list {
	position: relative;
	opacity: 0; /* ロード時対策 */
	transition: opacity 0.3s linear; /* ロード時対策 */
}

.hero_list.slick-initialized,
.singleWorks_list.slick-initialized {
	opacity: 1;
}

.slick-prev,
.slick-next {
	width: 40px;
	height: 40px;
	z-index: 5;
}

.slick-prev {
	left: 50px;
}

.slick-next {
	right: 50px;
}

.slick-prev:before,
.slick-next:before {
	content: "";
	display: block;
	width: 40px;
	height: 40px;
	background: url(../images/slider-arrow.png) no-repeat center / cover;
	opacity: 1;
}

.slick-next:before {
	transform: rotate(180deg);
}

.slick-dots {
	bottom: -40px;
}

.slick-dots li {
	margin: 0;
}

/* scroll
===============================
*/
.scroll {
	display: flex;
	position: absolute;
	bottom: 40px;
	right: 40px;
}

.scroll_text {
	color: var(--lightTextColor);
	font-weight: 500;
	text-align: left;
	line-height: 1.3;
	letter-spacing: 0;
	writing-mode: vertical-rl;
	text-orientation: upright;
	filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.5));
}

.scroll_arrows {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	align-items: center;
	width: 16px;
	height: 130px;
}

.scroll_arrows span {
	margin-top: -5px;
	line-height: 1;
	filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.5));
	animation: 4s infinite ease-in;
}

.scroll_arrows span:nth-child(1) {
	animation-name: scrollOpacity1;
}
.scroll_arrows span:nth-child(2) {
	animation-name: scrollOpacity2;
}
.scroll_arrows span:nth-child(3) {
	animation-name: scrollOpacity3;
}
.scroll_arrows span:nth-child(4) {
	animation-name: scrollOpacity4;
}
.scroll_arrows span:nth-child(5) {
	animation-name: scrollOpacity5;
}
.scroll_arrows span:nth-child(6) {
	animation-name: scrollOpacity6;
}
.scroll_arrows span:nth-child(7) {
	animation-name: scrollOpacity7;
}
.scroll_arrows span:nth-child(8) {
	animation-name: scrollOpacity8;
}
.scroll_arrows span:nth-child(9) {
	animation-name: scrollOpacity9;
}
.scroll_arrows span:nth-child(10) {
	animation-name: scrollOpacity10;
}

@keyframes scrollOpacity1 {
	0%,
	5% {
		opacity: 0.5;
	}
	6% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity2 {
	0%,
	11% {
		opacity: 0.5;
	}
	12% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity3 {
	0%,
	17% {
		opacity: 0.5;
	}
	18% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity4 {
	0%,
	23% {
		opacity: 0.5;
	}
	24% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity5 {
	0%,
	29% {
		opacity: 0.5;
	}
	30% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity6 {
	0%,
	35% {
		opacity: 0.5;
	}
	36% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity7 {
	0%,
	41% {
		opacity: 0.5;
	}
	42% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity8 {
	0%,
	47% {
		opacity: 0.5;
	}
	48% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity9 {
	0%,
	53% {
		opacity: 0.5;
	}
	54% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}
@keyframes scrollOpacity10 {
	0%,
	59% {
		opacity: 0.5;
	}
	60% {
		opacity: 1;
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0.5;
	}
}

/*  ===============================
		  project
===============================*/

/* hero
===============================
*/
.hero_body {
	position: relative;
}

.hero_list {
	overflow: visible;
}

.hero_item {
	width: 100%;
	height: 87.1vh;
}

.hero_item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Fmessage
===============================
*/
.Fmessage_texts {
	font-family: var(--serif);
	font-weight: 500;
	font-size: 24px;
	line-height: 3rem;
}

.Fmessage_ttl {
	padding-bottom: 40px;
	font-weight: 600;
	font-size: 32px;
}

/* Fworks
===============================
*/
.Fworks_list {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	justify-content: space-between;
	column-gap: 60px;
}

.Fworks_item {
	display: grid;
	grid-template-rows: subgrid;
	grid-row: span 5;
}

.Fworks_pic {
	overflow: hidden;
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 100%;
	box-shadow: 0 0 0 1px var(--primaryColor);
}

.Fworks_pic::before {
	content: "";
	position: absolute;
	inset: 0;
	border: 10px solid #fff;
	transition: opacity 0.3s ease;
	z-index: 1;
}

.Fworks_pic img {
	/* position: absolute; */
	/* inset: 0; */
	width: 100%;
	height: 100%;
	object-fit: cover;
	overflow: hidden;
	transition: 0.3s;
}

.Fworks_pic:hover img {
	scale: 1.03;
	filter: brightness(0.7);
}

/* Fotherplan
===============================
*/
.Fotherplan_texts {
	font-weight: 500;
	font-size: 24px;
}

/* Fcontact
===============================
*/
.Fcontact_texts {
	padding-bottom: 25px;
	font-weight: 500;
	font-size: 18px;
}

.Fcontact_tels {
	display: grid;
	grid-template-columns: 100px 1fr;
	grid-template-rows: repeat(3, 1fr);
	align-items: center;
	max-width: 310px;
	margin: 0 auto;
	font-weight: 450;
	font-family: var(--en);
	text-align: left;
	letter-spacing: 0.1rem;
}

.Fcontact_tel {
	font-size: 20px;
}
.Fcontact_number {
	font-size: 28px;
}

/* message
===============================
*/
.message_texts {
	padding: 50px 0;
	border-top: 1px solid var(--primaryColor);
	border-bottom: 1px solid var(--primaryColor);
	font-family: var(--serif);
	font-weight: 500;
	font-size: clamp(18px, 2.5vw, 24px);
	line-height: 3rem;
}

.message_texts p {
	margin-bottom: 1em;
}

.message_texts p:last-child {
	margin-bottom: 0;
}

/* works (archive)
===============================
*/

.works_filter {
	overflow-x: auto;
	margin: 0 calc(-1 * var(--commonSidePadding)) 20px;
	text-align: left;
}

.works_filterBtns {
	padding: 10px var(--commonSidePadding);
	overflow-x: auto;
	white-space: nowrap;
	max-width: none;
	width: auto;
}

.works_filterBtn {
	display: inline-block;
	width: auto;
}

.works_filterBtn:not(:first-child) {
	margin-left: 10px;
}

.works_filterBtn.active {
	background-color: var(--primaryColor);
	color: var(--lightTextColor);
}

.works_noResults {
	margin-top: 50px;
}

.works_list {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
}

.works_item {
	display: grid;
	grid-template-rows: subgrid;
	grid-row: span 5;
	padding: 0 7px 20px;
}

.works_item:nth-child(n + 5) {
	margin-top: 20px;
	padding-top: 20px;
	border-top: 1px solid var(--darkGrayColor);
}

.works_pic {
	overflow: hidden;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 100%;
	aspect-ratio: 105 / 131;
}

.works_pic img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	overflow: hidden;
	transition: 0.3s;
}

.works_pic:hover img {
	filter: brightness(0.7);
	scale: 1.03;
}

.works_text--name {
	padding-top: 20px;
	font-size: 18px;
	font-weight: 600;
}

.works_text--place {
	font-size: 14px;
	font-weight: 600;
}

.works_text--date,
.works_text--category {
	color: var(--grayColor);
	font-weight: 450;
	font-family: var(--en);
	font-size: 14px;
}

.works_btn {
	display: flex;
	justify-content: center;
	padding-top: 30px;
	cursor: pointer;
	transition: opacity 0.3s ease;
}

.works_btn img:hover {
	filter: brightness(1.75);
	transition: 0.4s;
}

.works_btn img {
	cursor: pointer;
}

.works_btn_text {
	margin-left: 10px;
	font-size: 14px;
	color: #333;
	letter-spacing: 0.1em;
}

.works_btn:hover .works_btn_text {
	color: #666;
	transition: 0.4s;
}

/* 読み込み中のスタイル */
.works_btn[style*="opacity: 0.5"] {
	cursor: not-allowed;
}

.works_btn[style*="opacity: 0.5"] .works_btn_text::after {
	content: "...";
	animation: dots 1.5s infinite;
}

@keyframes dots {
	0% {
		content: "";
	}
	25% {
		content: ".";
	}
	50% {
		content: "..";
	}
	75% {
		content: "...";
	}
	100% {
		content: "";
	}
}

/* singleWorks
===============================
*/
.singleWorks_list img {
	width: auto;
	height: 53vw;
	max-height: 700px;
	min-height: 686px;
}

.singleWorks_texts {
	padding: 20px 20px 0;
}

/* singleWorks_btns */
.singleWorks_btns {
	display: flex;
	justify-content: center;
	align-items: center;
	padding-top: 60px;
}

.singleWorks_btn {
	color: var(--primaryColor);
	font-family: var(--en);
	font-weight: 500;
	cursor: pointer;
	transition: 0.4s;
}

.singleWorks_btn:has(.singleWorks_anchor--disable) {
	cursor: default;
}

.singleWorks_anchor {
	--pd: 5px 35px;
	display: flex;
	align-items: center;
	line-height: 1;

	padding: var(--pd);
	letter-spacing: 0.125rem;
	transition: 0.3s;
}

.singleWorks_anchor span {
	transition: 0.3s;
}

.singleWorks_btn:hover .singleWorks_anchor:not(.singleWorks_anchor--disable) span {
	color: #000;
	scale: 1.15;
}

.singleWorks_btn--all {
	border-right: 1px solid var(--primaryColor);
	border-left: 1px solid var(--primaryColor);
}

.singleWorks_anchor--prev,
.singleWorks_anchor--next {
	--mgOffset: 10px;
	--offset: 30;
	transition: 0.4s;
}

.singleWorks_anchor--prev {
	--x: -30;
}

.singleWorks_anchor--next {
	--x: 30;
	flex-direction: row-reverse;
}

.singleWorks_anchor--prev::before,
.singleWorks_anchor--next::before {
	content: "";
	width: 28px;
	height: 28px;
	border-bottom: 1px solid var(--primaryColor);
	transition: 0.3s ease-in-out;
}

.singleWorks_anchor--prev::before {
	margin-right: var(--mgOffset);
	border-left: 1px solid var(--primaryColor);
	rotate: 45deg;
}

.singleWorks_anchor--next::before {
	margin-left: var(--mgOffset);
	border-right: 1px solid var(--primaryColor);
	rotate: -45deg;
}

.singleWorks_anchor--disable {
	color: var(--paleGrayColor);
	cursor: default;
	pointer-events: none;
}

.singleWorks_anchor--disable::before {
	border-color: var(--paleGrayColor);
}

.singleWorks_anchor--prev:not(.singleWorks_anchor--disable):hover::before,
.singleWorks_anchor--next:not(.singleWorks_anchor--disable):hover::before {
	/* translate: calc(1% * var(--x)); */
	/* transition-delay: 0.01s; */
	border-color: #000;
	animation: 1.5s singleWorksBtn ease infinite;
}

@keyframes singleWorksBtn {
	0% {
		transform: translateX(0);
	}
	80% {
		translate: calc(1% * var(--x));
	}
	100% {
		transform: translateX(0);
	}
}

/* otherplan
===============================
*/
.otherplan {
	text-align: left;
}

/* plan */
.plan,
.planNote {
	padding-bottom: 40px;
}

.plan_ttl {
	padding-bottom: 10px;
}

.plan_ttl,
.plan_text--strong {
	font-weight: 600;
	font-size: 22px;
}

.plan_ttl--small {
	font-size: 16px;
}

.plan_text {
	font-weight: 500;
}

.plan_text--note {
	font-size: 14px;
}

.plan_text--price {
	padding-left: 0.5rem;
}

/* planNote */
.planNote--paddingTop {
	padding-top: 60px;
}

.planNote--small {
	font-size: 12px;
}

.planNote_list {
	list-style-type: disc;
	padding-left: 30px;
}

/* material */
.material {
	padding-bottom: 50px;
}

.material_ttl {
	display: flex;
	align-items: center;
	padding-bottom: 25px;
	font-weight: 600;
}

.material_ttl::after {
	content: "";
	height: 1px;
	margin-left: 10px;
	background-color: var(--darkGrayColor);
	flex-grow: 1;
}

.material_list {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 30px;
}

.material_item {
	display: grid;
	grid-template-rows: subgrid;
	grid-row: span 3;
	row-gap: 20px;
}

.material_img {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 100%;
	aspect-ratio: 1 / 1;
}

.material_img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	overflow: hidden;
}

.material_name {
	font-weight: 600;
}

.material_text {
	font-size: 14px;
}

/* about
===============================
*/
/* profile */
.profile {
	display: flex;
	flex-direction: column;
	padding-top: 20px;
	font-weight: 500;
	text-align: left;
}

.profile img {
	width: 100%;
}

.profile_name {
	margin-top: 45px;
	font-size: 20px;
}

.profile_name--jp {
	font-weight: 550;
}

.profile_name--en {
	color: var(--primaryColor);
	font-family: var(--en);
	font-weight: 450;
	font-size: 12px;
	letter-spacing: 0.2rem;
}

.profile_texts {
	margin-top: 35px;
}

.profile_text--year {
	color: var(--primaryColor);
	font-family: var(--en);
	font-weight: 450;
	letter-spacing: 0.15rem;
}

/* company */
.company {
	display: grid;
	grid-template-columns: 75px 1fr;
	row-gap: 30px;
	margin-top: 30px;
	padding: 30px 0 0;
	border-top: 1px solid var(--darkGrayColor);
}

.company_term,
.company_desc {
	padding-bottom: 30px;
	border-bottom: 1px solid var(--darkGrayColor);
}

.company_desc {
	padding-left: 40px;
}

/* access
===============================
*/
.access_map {
	position: relative;
	width: 100%;
	height: 550px;
	padding-top: 10px;
}

.access_map iframe {
	position: absolute;
	top: 0;
	left: 0;
}

.access_address {
	padding-top: 45px;
	font-weight: 500;
}

/* recruit
===============================
*/
.recruit {
	font-size: 16px;
	text-align: left;
}

.recruit_ttl {
	padding-bottom: 40px;
}

.recruit_list {
	display: flex;
	flex-direction: column;
	gap: 40px;
}

.recruit_note {
	font-weight: 500;
}

/* contact
===============================
*/
.contact {
	padding-bottom: 335px;
	font-weight: 500;
}

.contact_text {
	font-size: 16px;
}

.contact_text--left {
	text-align: left;
}

.contact_note {
	font-size: 12px;
	padding-left: 0.5rem;
}

.contact_flex {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0 25px;
	padding: 40px 0;
}

.contact_form {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	margin: 0 auto;
	text-align: left;
}

.contact_form > * {
	width: 480px;
	max-width: 480px;
	min-width: 480px;
}

.contact_form > *:not(:first-child) {
	margin-top: 20px;
}

.contact_inquiry {
	padding-bottom: 80px;
}

/* 画像の添付 */
.imgAttach {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 50px 15px;
	padding: 30px 0 50px;
}

.imgAttach_item {
	width: calc(50% - 15px);
	display: grid;
	grid-template-columns: 25px 165px 1fr;
	grid-auto-flow: column;
	align-items: flex-start;
	gap: 8px;
}

.imgAttach_item.uploaded {
	display: block;
}

.imgAttach_info {
	display: grid;
	grid-template-columns: 25px 1fr auto;
	align-items: center;
	gap: 8px;
	margin-bottom: 10px;
}

.imgAttach_buttons {
	display: flex;
	gap: 8px;
}

.imgAttach_preview {
	text-align: left;
	max-width: 100%;
}

.imgAttach_image {
	width: auto;
	max-width: 100%;
	height: auto;
	border-radius: 4px;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.imgAttach_num {
	text-align: left;
}

.imgAttach_url {
	font-size: 12px;
	text-align: left;
	overflow-wrap: anywhere;
	color: #666;
}

/* .calendar */
.calendar {
	overflow: hidden;

	position: relative;
	width: 100%;
	padding: 15px 30px;
	background-color: var(--lightGrayColor);
	border-radius: 6px;
}

/* .calendarTime */
.calendarTime {
	/* お打ち合わせ時間 */
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: auto;
	margin-left: auto;
	width: 100%;
	padding: 15px 0;
	border-radius: 6px;
	background-color: rgba(97, 97, 72, 0.9);
	color: var(--lightTextColor);
	font-size: 16px;
	line-height: 16px;
	box-shadow: 0 4px 2px rgba(0, 0, 0, 0.25);
	pointer-events: none;
	z-index: 1;
	transition: 0.4s;
	opacity: 0;
}

.calendarTime_arrow {
	position: absolute;
	width: 20px;
	height: 20px;
	display: flex;
	justify-content: center;
	align-items: center;
	font-size: 12px;
	font-weight: 900;
	bottom: 10px;
	right: 10px;
	border-radius: 10rem;
	cursor: pointer;
	transition: 0.3s;
}

.calendarTime_arrow:hover {
	background: #fff;
	color: var(--primaryColor);
}

.calendarTime.is-open {
	/* お打ち合わせ時間-表示 */
	pointer-events: auto;
	opacity: 1;
}

.calendarTime.is-hidden {
	top: auto;
	left: auto;
	width: 40px;
	bottom: calc(100% - 40px);
	/* translate: 0 calc(-70% - 20px); */
	/* width: 50px; */
}

.calendarTime.is-hidden .calendarTime_arrow {
	rotate: 180deg;
}
.calendarTime.is-hidden .calendarTime_text,
.calendarTime.is-hidden .calendarTime_options {
	opacity: 0;
	max-height: 0;
	transition: opacity 0s;
}

.calendarTime_text,
.calendarTime_options {
	max-height: 800px;
	transition: opacity 1s ease 0.5s, max-height 2s ease 0.3s;
}

.calendarTime_options {
	text-align: left;
}

.calendarTime_text,
.calendarTime_options > label > span {
	padding: 10px 10px 10px 40px;
}

.calendarTime_options > label > span {
	display: block;
	position: relative;
	cursor: pointer;
	transition: 0.4s;
}

.calendarTime_options > label > span::after {
	content: "";
	display: block;
	position: absolute;
	top: 10px;
	left: 18px;
	width: 8px;
	height: 15px;
	border-right: 3px solid var(--lightTextColor);
	border-bottom: 3px solid var(--lightTextColor);
	transform: rotate(45deg);
	opacity: 0;
}

input[type="radio"]:checked + span::after {
	opacity: 1;
}

/* .calendar-month */
.calendar-month {
	display: grid;
	grid-template-columns: 25px 1fr 25px;
	padding: 25px;
}

.calendar-month > p {
	font-weight: 600;
	font-size: 20px;
}

.calendar-month > .arrow {
	position: relative;
	transition: 0.25s;
}

.calendar-month > .arrow:not(.disabled) {
	cursor: pointer;
}

.calendar-month > .arrow:not(.disabled):hover {
	filter: brightness(1.75);
}

.calendar-month > .arrow--prev:before,
.calendar-month > .arrow--next:before {
	content: "";
	position: absolute;
	top: 50%;
	margin-top: -12px;
	width: 25px;
	height: 25px;
	border-bottom: 2px solid var(--primaryColor);
}

.calendar-month > .arrow--prev.disabled:before,
.calendar-month > .arrow--next.disabled:before {
	cursor: default;
	pointer-events: none;
	border-color: var(--paleGrayColor);
}

.calendar-month > .arrow--prev:before {
	left: 8px;
	border-left: 2px solid var(--primaryColor);
	transform: rotate(45deg);
}

.calendar-month > .arrow--next:before {
	right: 6px;
	border-right: 2px solid var(--primaryColor);
	transform: rotate(-45deg);
}

/* .calendar-week */
.calendar-week {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	padding-bottom: 15px;
	font-size: 14px;
}

.calendar-week > .sun {
	color: #f00;
}

/* .calendar-days */
.calendar-days {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	grid-template-rows: repeat(6, 1fr);
	align-items: center;
	font-size: 18px;
	letter-spacing: 0;
	line-height: 18px;
}

.calendar-days > div {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 100%;
	aspect-ratio: 1 / 1.2;
	border-top: 1px solid var(--darkGrayColor);
}

.calendar-day.is-mute {
	color: var(--darkGrayColor);
}

.calendar-day:has(.slot_count) {
	/* 営業日 */
	display: flex;
	justify-content: center;
	align-items: center;
	position: relative;
	width: 48px;
	height: 48px;
	border-radius: 100%;
	background-color: var(--primaryColor);
	color: var(--lightTextColor);
	cursor: pointer;
	transition: 0.4s;
}

.calendar-day:has(.slot_count).is-active {
	/* 営業日選択後 */
	background-color: #f00;
}

.slot_count {
	display: flex;
	justify-content: center;
	align-items: center;
	position: absolute;
	top: -5px;
	right: -5px;
	width: 22px;
	height: 22px;
	border: 1px solid var(--primaryColor);
	border-radius: 100%;
	background-color: #fff;
	color: var(--primaryColor);
	font-weight: 600;
	font-size: 14px;
	line-height: 14px;
}

.calendar-days > .calendar-day_count:hover {
	filter: brightness(0.65);
	transition: 0.4s;
}

/* input */
input[type="text"],
input[type="email"],
input[type="tel"] {
	padding-block: 16px;
	padding-inline: 20px;
	border-radius: 6px;
	background-color: var(--lightGrayColor);
	font-size: 16px;
	line-height: 16px;
	box-shadow: none;
	transition: 0.7s;
}

input:focus,
input:hover {
	outline: none;
	box-shadow: 0 0 1px 1px var(--primaryColor);
}

input::placeholder,
textarea::placeholder {
	color: #a4a4a4;
}

/* input[type="radio"],input[type="checkbox"] */
.visually-hidden {
	/* ボタン消去 */
	position: absolute;
	white-space: nowrap;
	width: 1px;
	height: 1px;
	overflow: hidden;
	margin: -1px;
	padding: 0;
	border: 0;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
}

/* textarea */
.form_textarea {
	padding: 20px;
	border-radius: 6px;
	background-color: var(--lightGrayColor);
	font-size: 16px;
	text-align: left;
	box-shadow: none;
}

.form_textarea--long {
	height: 350px;
}

/* select */
.customSelect {
	position: relative;
	width: 100%;
	padding: 20px;
	border-radius: 6px;
	background-color: var(--lightGrayColor);
	font-size: 16px;
	line-height: 16px;
	cursor: pointer;
	transition: 0.7s;
}

.customSelect:hover {
	box-shadow: inset 0 0 1px 1px var(--primaryColor);
}

.customSelect_item {
	display: flex;
	flex-direction: column;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	padding: 15px 0;
	border-radius: 6px;
	border: 1px solid var(--primaryColor);
	background-color: var(--lightGrayColor);
	box-shadow: 0 4px 2px rgba(0, 0, 0, 0.25);
	pointer-events: none;
	z-index: 2;
	transition: 0.3s 0.4s;
	opacity: 0;
}

.customSelect_item.is-open {
	pointer-events: auto;
	opacity: 1;
	transition: 0.3s ease 0s;
}

.customSelect_item > .placeholder {
	padding: 10px 10px 10px 30px;
	cursor: default;
}

.customSelect_item > label > span {
	display: block;
	position: relative;
	padding: 10px 10px 10px 2.2em;
	cursor: pointer;
	transition: 0.4s;
}

.customSelect_item > label > span:hover {
	background-color: #e0e0e0;
}

.customSelect_item > label > span::after {
	content: "";
	display: block;
	position: absolute;
	top: 8px;
	left: 12px;
	width: 10px;
	height: 15px;
	border-right: 3px solid var(--primaryColor);
	border-bottom: 3px solid var(--primaryColor);
	transform: rotate(45deg);
	opacity: 0;
}

input[type="checkbox"]:checked + span::after {
	opacity: 1;
}

input[type="checkbox"]:checked + span {
	background-color: var(--paleGrayColor);
}

/* js */
#selectRequest:not(.is-open),
#selectBudget:not(.is-open),
#selectPlace:not(.is-open),
#calendar:not(.is-open) {
	width: 100%;
	height: 0;
	max-height: 0;
	margin: 0;
	padding: 0;
	opacity: 0;
	pointer-events: none;
}

#selectRequest.is-open,
#selectBudget.is-open,
#selectPlace.is-open,
#calendar.is-open {
}

#calendar {
	transition: opacity 1s 1s, max-height 0s;
}

#calendar.is-open {
	transition: opacity 1s 0s, max-height 0s;
}

.contact_flex.is-active {
	flex-direction: row;
}

@media screen and (min-width: 961px) {
	.contact_form {
		width: 50%;
		transition: 1s;
	}
}

.contact_form.is-active {
	width: 100%;
	gap: 0;
}

/* contact 768px以下
===============================
*/

@media screen and (max-width: 768px) {
	.contact {
		padding-bottom: 80px;
	}
	.contact_text .sp {
		display: block;
	}

	.contact_inquiry {
		padding-bottom: 25px;
	}
	/* 画像の添付 */
	.imgAttach {
		flex-direction: column;
		gap: 25px;
		padding: 30px 0 40px;
	}
	.imgAttach_item {
		width: 100%;
		grid-template-columns: 2dvh 1fr;
		grid-template-rows: repeat(2, 1fr);
	}

	.imgAttach_item.uploaded {
		display: block;
	}

	.imgAttach_info {
		grid-template-columns: 25px 1fr;
		grid-template-rows: auto auto;
		gap: 5px;
		margin-bottom: 10px;
	}

	.imgAttach_buttons {
		grid-column: 1 / -1;
		justify-content: flex-start;
		margin-top: 5px;
	}

	.imgAttach_num {
		grid-area: 1 / 1 / 2 / 2;
	}
	.imgAttach_btn {
		grid-area: 1 / 2 / 2 / 3;
		margin-left: 10px;
	}
	.imgAttach_url {
		grid-area: 2 / 1 / 3 / 3;
		padding-left: 0;
	}
	/* calendar */
	.calendar {
		padding: 20px;
	}
	/* .calendarTime */
	.calendarTime {
		padding: 10px 0;
	}
	.calendarTime_text,
	.calendarTime_options > label > span {
		padding: 8px 8px 8px 40px;
	}
	.calendarTime_options > label > span::after {
		top: 5px;
	}
	/* .calendar-month */
	.calendar-month {
		grid-template-columns: 20px 1fr 20px;
		padding: 25px 15px;
	}
	.calendar-month > .arrow--prev:before,
	.calendar-month > .arrow--next:before {
		margin-top: -9px;
		width: 20px;
		height: 20px;
	}
	.calendar-month > .arrow--prev:before {
		left: 6px;
	}
	.calendar-month > .arrow--next:before {
		right: 5px;
	}
	/* .calendar-week */
	.calendar-week {
		padding-bottom: 10px;
	}
	/* .calendar-days */
	.calendar-days > div {
		aspect-ratio: 22 / 25;
	}
	.calendar-day:has(.slot_count) {
		/* 営業日 */
		width: 76.8%;
		height: 69%;
		max-width: 45px;
		max-height: 45px;
	}
	.slot_count {
		width: 47%;
		height: 47%;
		max-width: 20px;
		max-height: 20px;
	}
	/* textarea */
	.textarea {
		height: 5em;
		padding: 15px;
	}

	.textarea--long {
		height: 160px;
	}
}

/* contact 960px以下
===============================
*/
@media screen and (max-width: 960px) {
	/* js */
	.contact_flex.is-active {
		flex-direction: column;
	}
	.contact_form {
		width: 100%;
	}

	.calendar {
		margin-top: 20px;
	}
}

/* error
===============================
*/

.error_message {
	color: red;
	margin: 10px 0;
	padding: 10px;
	border: 1px solid red;
	background: #ffe6e6;
	white-space: pre-line;
	border-radius: 6px;
}

.error_message--min {
	font-size: 12px;
}

.calendar.error_field,
.customSelect:has(.error_field),
#calendar.error_field,
.error_field {
	background: #f5e2e2 !important;
	box-shadow: 0 0 0 1px red !important;
}

/* confirm
===============================
*/

.confirm {
	padding: 50px 0;
	font-size: 16px;
	font-weight: 500;
}

.confirm_body {
}

.confirm_message {
}

.confirm_list {
	margin-top: 20px;
	text-align: left;
}

.confirm_item {
	--labelW: 300px;

	display: flex;
	align-items: center;

	padding: 25px 0;
	border-bottom: 1px solid var(--darkGrayColor);
}

.confirm_item--images {
	align-items: flex-start;
}

.confirm_item:first-child {
	border-top: 1px solid var(--darkGrayColor);
}

.confirm_label {
	width: var(--labelW);
}

.confirm_value {
	width: calc(100% - var(--labelW));
	overflow-wrap: break-word;
	word-break: break-all;
}

.confirm_images {
	--gap: 10px;
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap);
}

.confirm_image {
	--w: calc(50% - (var(--gap) / 2));
	flex: 0 0 auto;
	width: var(--w);
	height: auto;
	overflow: hidden;
	border-radius: 4px;
}

.confirm_btns {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 25px;
	margin-top: 80px;
}

.confirm_back {
}

.confirm_send {
}

/* thanks
===============================
*/

/* loading
===============================
*/

body.home.is-loading .main,
body.home.is-loading .Ghdr,
body.home.is-loading .Ghdr_inr,
body.home.is-loading .Gftr {
	opacity: 0 !important;
	pointer-events: none !important;
}

body.home:not(.is-loading) .main {
	opacity: 0;
	transition: 1s;
	animation: blurFadeIn 2s forwards;
}

body.home:not(.is-loading) .Ghdr,
body.home:not(.is-loading) .Gftr {
	opacity: 0;
	transition: 1s;
	animation: blurFadeIn 2s forwards 0.5s;
}

body.home:not(.is-loading) .Ghdr_inr {
	opacity: 0;
	transition: 1s;
	animation: blurFadeIn 2s forwards 1s;
}

@keyframes blurFadeIn {
	0% {
		opacity: 0;
		filter: blur(10px);
	}
	100% {
		opacity: 1;
		filter: blur(0);
	}
}
