/* =========================================================
   CONTACT PAGE
   /contact/
   撮影のご相談・お見積もり
   ========================================================= */

/* =========================================================
   Common
   ========================================================= */

.yp-contact-page,
.yp-contact-page * {
	box-sizing: border-box;
}

.yp-contact-page {
	width: 100%;
	background: #ffffff;
	color: #333333;
	font-family: inherit;
}

.yp-contact-page a {
	color: inherit;
	text-decoration: none;
}

.yp-contact-page img {
	max-width: 100%;
	height: auto;
}

/* =========================================================
   Hero
   ========================================================= */

.yp-contact-hero {
	width: 100%;
	padding: 120px 24px 88px;
	background:
		linear-gradient(180deg, rgba(248, 247, 243, 1) 0%, rgba(255, 255, 255, 1) 100%);
}

.yp-contact-hero__inner {
	width: min(920px, 100%);
	margin: 0 auto;
	text-align: center;
}

.yp-contact-hero__label {
	margin: 0 0 18px !important;
	padding: 0 !important;
	font-size: 12px !important;
	line-height: 1.8 !important;
	letter-spacing: 0.24em !important;
	color: #9b927f !important;
	font-weight: 400 !important;
}

.yp-contact-hero__title {
	margin: 0 0 26px !important;
	padding: 0 !important;
	font-size: clamp(32px, 5vw, 58px) !important;
	line-height: 1.45 !important;
	letter-spacing: 0.08em !important;
	font-weight: 400 !important;
	color: #222222 !important;
	border: 0 !important;
	background: none !important;
	box-shadow: none !important;
	text-align: center !important;
}

.yp-contact-hero__title::before,
.yp-contact-hero__title::after {
	display: none !important;
	content: none !important;
}

.yp-contact-hero__lead {
	width: min(760px, 100%);
	margin: 0 auto !important;
	padding: 0 !important;
	font-size: 15px !important;
	line-height: 2.15 !important;
	letter-spacing: 0.06em !important;
	color: #555555 !important;
	text-align: center !important;
}

/* =========================================================
   Section Head
   ========================================================= */

.yp-contact-section-head {
	width: min(760px, 100%);
	margin: 0 auto 42px;
	text-align: center;
}

.yp-contact-section-head__label {
	margin: 0 0 14px !important;
	padding: 0 !important;
	font-size: 11px !important;
	line-height: 1.6 !important;
	letter-spacing: 0.24em !important;
	color: #9b927f !important;
	font-weight: 400 !important;
	text-align: center !important;
}

.yp-contact-section-head__title {
	margin: 0 0 18px !important;
	padding: 0 !important;
	font-size: clamp(26px, 4vw, 42px) !important;
	line-height: 1.5 !important;
	letter-spacing: 0.08em !important;
	font-weight: 400 !important;
	color: #222222 !important;
	border: 0 !important;
	background: none !important;
	box-shadow: none !important;
	text-align: center !important;
}

.yp-contact-section-head__title::before,
.yp-contact-section-head__title::after {
	display: none !important;
	content: none !important;
}

.yp-contact-section-head__lead {
	width: min(680px, 100%);
	margin: 0 auto !important;
	padding: 0 !important;
	font-size: 14px !important;
	line-height: 2.05 !important;
	letter-spacing: 0.05em !important;
	color: #555555 !important;
	text-align: center !important;
}

/* =========================================================
   Intro
   ========================================================= */

.yp-contact-intro {
	width: 100%;
	padding: 72px 24px 64px;
	background: #ffffff;
}

.yp-contact-intro__inner {
	width: min(800px, 100%);
	margin: 0 auto;
}

.yp-contact-intro__text {
	padding: 42px 44px;
	background: #f8f7f3;
}

.yp-contact-intro__text p {
	margin: 0 0 1.8em !important;
	padding: 0 !important;
	font-size: 15px !important;
	line-height: 2.2 !important;
	letter-spacing: 0.06em !important;
	color: #444444 !important;
	text-align: left !important;
}

.yp-contact-intro__text p:last-child {
	margin-bottom: 0 !important;
}

/* =========================================================
   Availability
   ========================================================= */

.yp-contact-availability {
	width: 100%;
	padding: 88px 24px;
	background: #ffffff;
}

.yp-contact-availability__inner {
	width: min(1040px, 100%);
	margin: 0 auto;
}

.yp-contact-availability__box {
	width: min(820px, 100%);
	margin: 0 auto 34px;
	padding: 34px 36px;
	background: #f8f7f3;
	border-left: 3px solid #babf95;
}

.yp-contact-availability__box p {
	margin: 0 0 1.6em !important;
	padding: 0 !important;
	font-size: 14px !important;
	line-height: 2.05 !important;
	letter-spacing: 0.05em !important;
	color: #444444 !important;
	text-align: left !important;
}

.yp-contact-availability__box p:last-child {
	margin-bottom: 0 !important;
}

.yp-contact-calendar {
	width: min(920px, 100%);
	margin: 0 auto;
}

.yp-contact-calendar__placeholder {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 360px;
	padding: 40px 24px;
	background: #ffffff;
	border: 1px dashed rgba(0, 0, 0, 0.22);
	text-align: center;
}

.yp-contact-calendar__label {
	margin: 0 0 10px !important;
	padding: 0 !important;
	font-size: 13px !important;
	line-height: 1.7 !important;
	letter-spacing: 0.16em !important;
	color: #8a8173 !important;
}

.yp-contact-calendar__text {
	margin: 0 !important;
	padding: 0 !important;
	font-size: 14px !important;
	line-height: 1.9 !important;
	letter-spacing: 0.05em !important;
	color: #555555 !important;
}

/* Google Calendar iframeを入れる場合 */
.yp-contact-calendar iframe {
	display: block;
	width: 100%;
	min-height: 520px;
	border: 0;
}

/* =========================================================
   Consultation Items
   ========================================================= */

.yp-contact-can {
	width: 100%;
	padding: 92px 24px;
	background: #f8f7f3;
}

.yp-contact-can__inner {
	width: min(1120px, 100%);
	margin: 0 auto;
}

.yp-contact-can__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
}

.yp-contact-can__card {
	position: relative;
	padding: 34px 30px 32px;
	background: #ffffff;
	border: 1px solid rgba(0, 0, 0, 0.06);
	box-shadow: 0 12px 36px rgba(0, 0, 0, 0.045);
}

.yp-contact-can__number {
	margin: 0 0 16px !important;
	padding: 0 !important;
	font-size: 12px !important;
	line-height: 1.4 !important;
	letter-spacing: 0.18em !important;
	color: #babf95 !important;
	font-weight: 400 !important;
}

.yp-contact-can__card h3 {
	margin: 0 0 14px !important;
	padding: 0 !important;
	font-size: 20px !important;
	line-height: 1.55 !important;
	letter-spacing: 0.06em !important;
	font-weight: 400 !important;
	color: #222222 !important;
	border: 0 !important;
	background: none !important;
	box-shadow: none !important;
}

.yp-contact-can__card h3::before,
.yp-contact-can__card h3::after {
	display: none !important;
	content: none !important;
}

.yp-contact-can__card p {
	margin: 0 !important;
	padding: 0 !important;
	font-size: 13px !important;
	line-height: 2 !important;
	letter-spacing: 0.04em !important;
	color: #555555 !important;
	text-align: left !important;
}

/* =========================================================
   Form Section
   ========================================================= */

.yp-contact-form-section {
	width: 100%;
	padding: 96px 24px;
	background: #ffffff;
}

.yp-contact-form-section__inner {
	width: min(900px, 100%);
	margin: 0 auto;
}

.yp-contact-notice {
	width: min(820px, 100%);
	margin: 0 auto 42px;
	padding: 30px 34px;
	background: #f8f7f3;
	border: 1px solid rgba(0, 0, 0, 0.08);
}

.yp-contact-notice p {
	margin: 0 0 1.5em !important;
	padding: 0 !important;
	font-size: 13px !important;
	line-height: 2 !important;
	letter-spacing: 0.04em !important;
	color: #555555 !important;
	text-align: left !important;
}

.yp-contact-notice p:last-child {
	margin-bottom: 0 !important;
}

.yp-contact-form-wrap {
	width: min(820px, 100%);
	margin: 0 auto;
	padding: 44px;
	background: #ffffff;
	border: 1px solid rgba(0, 0, 0, 0.08);
	box-shadow: 0 18px 54px rgba(0, 0, 0, 0.055);
}

/* =========================================================
   Contact Form 7
   ========================================================= */

.yp-contact-form {
	width: 100%;
}

.yp-contact-form__block {
	margin: 0 0 28px;
}

.yp-contact-form__block:last-child {
	margin-bottom: 0;
}

.yp-contact-form__label {
	display: block;
	margin: 0 0 10px;
	font-size: 14px;
	line-height: 1.7;
	letter-spacing: 0.06em;
	color: #333333;
	font-weight: 400;
}

.yp-contact-form__required,
.yp-contact-form__optional {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-left: 8px;
	padding: 2px 7px;
	border-radius: 999px;
	font-size: 10px;
	line-height: 1.4;
	letter-spacing: 0.06em;
	vertical-align: middle;
}

.yp-contact-form__required {
	background: #222222;
	color: #ffffff;
}

.yp-contact-form__optional {
	background: #f1efe8;
	color: #6f675d;
}

.yp-contact-form__input,
.yp-contact-form__select,
.yp-contact-form__textarea {
	width: 100%;
	margin: 0;
	padding: 14px 16px;
	border: 1px solid rgba(0, 0, 0, 0.16);
	border-radius: 0;
	background: #ffffff;
	color: #333333;
	font-size: 15px;
	line-height: 1.7;
	letter-spacing: 0.04em;
	box-shadow: none;
	appearance: none;
	transition:
		border-color 0.22s ease,
		background 0.22s ease,
		box-shadow 0.22s ease;
}

.yp-contact-form__select {
	padding-right: 42px;
	background-image:
		linear-gradient(45deg, transparent 50%, #777777 50%),
		linear-gradient(135deg, #777777 50%, transparent 50%);
	background-position:
		calc(100% - 22px) 50%,
		calc(100% - 16px) 50%;
	background-size:
		6px 6px,
		6px 6px;
	background-repeat: no-repeat;
}

.yp-contact-form__textarea {
	min-height: 190px;
	resize: vertical;
}

.yp-contact-form__input:focus,
.yp-contact-form__select:focus,
.yp-contact-form__textarea:focus {
	outline: none;
	border-color: #222222;
	background: #fffefa;
	box-shadow: 0 0 0 3px rgba(186, 191, 149, 0.22);
}

.yp-contact-form__input::placeholder,
.yp-contact-form__textarea::placeholder {
	color: #aaa49a;
}

/* Checkbox */

.yp-contact-form__checkbox .wpcf7-list-item,
.yp-contact-form .wpcf7-checkbox .wpcf7-list-item {
	display: inline-flex;
	align-items: center;
	margin: 0 16px 10px 0;
	font-size: 14px;
	line-height: 1.8;
	letter-spacing: 0.04em;
	color: #444444;
}

.yp-contact-form__checkbox input[type="checkbox"],
.yp-contact-form .wpcf7-checkbox input[type="checkbox"] {
	margin: 0 7px 0 0;
}

/* Acceptance */

.yp-contact-form__block--acceptance {
	padding: 22px 24px;
	background: #f8f7f3;
}

.yp-contact-form__block--acceptance .wpcf7-list-item {
	margin: 0;
}

.yp-contact-form__block--acceptance label {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	font-size: 13px;
	line-height: 1.9;
	letter-spacing: 0.04em;
	color: #444444;
}

.yp-contact-form__block--acceptance input[type="checkbox"] {
	margin-top: 0.45em;
	flex: 0 0 auto;
}

/* Submit */

.yp-contact-form__submit {
	margin-top: 36px;
	text-align: center;
}

.yp-contact-form__button,
.yp-contact-form input[type="submit"].yp-contact-form__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 220px;
	min-height: 52px;
	padding: 13px 34px;
	border: 1px solid #222222;
	background: #222222;
	color: #ffffff !important;
	font-size: 15px;
	line-height: 1.5;
	letter-spacing: 0.12em;
	border-radius: 0;
	cursor: pointer;
	box-shadow: none;
	transition:
		background 0.24s ease,
		color 0.24s ease,
		transform 0.24s ease,
		border-color 0.24s ease;
}

.yp-contact-form__button:hover,
.yp-contact-form__button:focus-visible,
.yp-contact-form input[type="submit"].yp-contact-form__button:hover,
.yp-contact-form input[type="submit"].yp-contact-form__button:focus-visible {
	background: #444444;
	border-color: #444444;
	transform: translateY(-2px);
}

/* CF7 Response */

.yp-contact-form .wpcf7-not-valid-tip {
	margin-top: 8px;
	font-size: 12px;
	line-height: 1.6;
	letter-spacing: 0.04em;
	color: #b00020;
}

.yp-contact-form .wpcf7-response-output {
	margin: 28px 0 0 !important;
	padding: 16px 18px !important;
	border: 1px solid rgba(0, 0, 0, 0.16) !important;
	font-size: 13px;
	line-height: 1.9;
	letter-spacing: 0.04em;
	color: #444444;
	background: #ffffff;
}

/* Spinner */

.yp-contact-form .wpcf7-spinner {
	margin: 14px auto 0;
	display: block;
}

/* =========================================================
   Reply
   ========================================================= */

.yp-contact-reply {
	width: 100%;
	padding: 88px 24px 108px;
	background: #f8f7f3;
}

.yp-contact-reply__inner {
	width: min(820px, 100%);
	margin: 0 auto;
}

.yp-contact-reply__content {
	padding: 36px 40px;
	background: #ffffff;
}

.yp-contact-reply__content p {
	margin: 0 0 1.7em !important;
	padding: 0 !important;
	font-size: 14px !important;
	line-height: 2.05 !important;
	letter-spacing: 0.05em !important;
	color: #444444 !important;
	text-align: left !important;
}

.yp-contact-reply__content p:last-child {
	margin-bottom: 0 !important;
}

/* =========================================================
   Tablet
   ========================================================= */

@media screen and (max-width: 1024px) {
	.yp-contact-can__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* =========================================================
   Mobile
   ========================================================= */

@media screen and (max-width: 767px) {
	.yp-contact-hero {
		padding: 84px 20px 60px;
	}

	.yp-contact-hero__label {
		font-size: 10px !important;
		margin-bottom: 14px !important;
	}

	.yp-contact-hero__title {
		font-size: clamp(28px, 8vw, 40px) !important;
		line-height: 1.55 !important;
		margin-bottom: 20px !important;
	}

	.yp-contact-hero__lead {
		font-size: 13px !important;
		line-height: 2 !important;
		text-align: left !important;
	}

	.yp-contact-section-head {
		margin-bottom: 32px;
	}

	.yp-contact-section-head__label {
		font-size: 10px !important;
	}

	.yp-contact-section-head__title {
		font-size: clamp(24px, 7vw, 34px) !important;
		line-height: 1.55 !important;
	}

	.yp-contact-section-head__lead {
		font-size: 13px !important;
		line-height: 2 !important;
		text-align: left !important;
	}

	.yp-contact-intro,
	.yp-contact-availability,
	.yp-contact-can,
	.yp-contact-form-section,
	.yp-contact-reply {
		padding-left: 20px;
		padding-right: 20px;
	}

	.yp-contact-intro {
		padding-top: 56px;
		padding-bottom: 52px;
	}

	.yp-contact-intro__text {
		padding: 30px 24px;
	}

	.yp-contact-intro__text p {
		font-size: 13px !important;
		line-height: 2.05 !important;
	}

	.yp-contact-availability {
		padding-top: 64px;
		padding-bottom: 64px;
	}

	.yp-contact-availability__box {
		padding: 26px 24px;
	}

	.yp-contact-availability__box p {
		font-size: 13px !important;
		line-height: 2 !important;
	}

	.yp-contact-calendar__placeholder {
		min-height: 280px;
		padding: 32px 20px;
	}

	.yp-contact-calendar iframe {
		min-height: 420px;
	}

	.yp-contact-can {
		padding-top: 68px;
		padding-bottom: 68px;
	}

	.yp-contact-can__grid {
		grid-template-columns: 1fr;
		gap: 18px;
	}

	.yp-contact-can__card {
		padding: 28px 24px;
	}

	.yp-contact-can__card h3 {
		font-size: 18px !important;
	}

	.yp-contact-form-section {
		padding-top: 72px;
		padding-bottom: 72px;
	}

	.yp-contact-notice {
		padding: 24px 22px;
		margin-bottom: 32px;
	}

	.yp-contact-notice p {
		font-size: 12px !important;
		line-height: 1.95 !important;
	}

	.yp-contact-form-wrap {
		padding: 28px 22px;
	}

	.yp-contact-form__block {
		margin-bottom: 24px;
	}

	.yp-contact-form__label {
		font-size: 13px;
	}

	.yp-contact-form__input,
	.yp-contact-form__select,
	.yp-contact-form__textarea {
		font-size: 14px;
		padding: 13px 14px;
	}

	.yp-contact-form__textarea {
		min-height: 170px;
	}

	.yp-contact-form__checkbox .wpcf7-list-item,
	.yp-contact-form .wpcf7-checkbox .wpcf7-list-item {
		display: flex;
		width: 100%;
		margin-right: 0;
	}

	.yp-contact-form__block--acceptance {
		padding: 20px 18px;
	}

	.yp-contact-form__submit {
		margin-top: 30px;
	}

	.yp-contact-form__button,
	.yp-contact-form input[type="submit"].yp-contact-form__button {
		width: 100%;
		min-width: 0;
	}

	.yp-contact-reply {
		padding-top: 68px;
		padding-bottom: 80px;
	}

	.yp-contact-reply__content {
		padding: 28px 24px;
	}

	.yp-contact-reply__content p {
		font-size: 13px !important;
		line-height: 2 !important;
	}
}

/* =========================================================
   Small Mobile
   ========================================================= */

@media screen and (max-width: 420px) {
	.yp-contact-hero,
	.yp-contact-intro,
	.yp-contact-availability,
	.yp-contact-can,
	.yp-contact-form-section,
	.yp-contact-reply {
		padding-left: 18px;
		padding-right: 18px;
	}

	.yp-contact-intro__text,
	.yp-contact-availability__box,
	.yp-contact-notice,
	.yp-contact-form-wrap,
	.yp-contact-reply__content {
		padding-left: 20px;
		padding-right: 20px;
	}
}