/* 八田組 お問い合わせフォーム（CF7 置き換え・テーマのレイアウトクラスと併用） */

.hattagumi-contact-form .cf7-wrap {
	border: none;
}

.hattagumi-contact-form .cf7-grid {
	display: grid;
	grid-template-columns: 1fr;
	row-gap: 1.5rem;
	column-gap: 0;
}

@media (min-width: 768px) {
	.hattagumi-contact-form .cf7-grid {
		grid-template-columns: repeat(2, 1fr);
		column-gap: 2rem;
		row-gap: 1.5rem;
	}
}

.hattagumi-contact-form .cf7-field {
	border: none;
	padding: 0;
}

.hattagumi-contact-form .cf7-field--full {
	grid-column: 1 / -1;
}

.hattagumi-contact-form .cf7-label {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.625rem;
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	color: #111;
	margin-bottom: 0.5rem;
	font-family: "Noto Sans JP", sans-serif;
	line-height: 1.5;
}

.hattagumi-label-text {
	display: inline;
}

.hattagumi-label-badge {
	display: inline-block;
	font-size: 10px;
	font-weight: 800;
	padding: 3px 10px;
	border-radius: 4px;
	line-height: 1.2;
	vertical-align: middle;
	letter-spacing: 0.02em;
}

.hattagumi-label-badge--required {
	background: #b91c1c;
	color: #fff;
}

.hattagumi-label-badge--optional {
	background: #f1f5f9;
	color: #64748b;
	font-weight: 700;
}

.hattagumi-privacy-field .hattagumi-privacy-label {
	display: flex !important;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 0.5rem 0.625rem;
	margin-bottom: 0;
	font-size: 1rem;
	font-weight: bold;
	color: #000;
	cursor: pointer;
}

.hattagumi-privacy-field .hattagumi-privacy-label input[type="checkbox"] {
	width: 20px;
	height: 20px;
	margin-top: 3px;
	flex-shrink: 0;
	cursor: pointer;
}

.hattagumi-privacy-field .hattagumi-privacy-label .hattagumi-label-badge {
	margin-top: 1px;
}

.hattagumi-privacy-copy {
	display: inline;
	flex: 0 1 auto;
	line-height: 1.6;
	max-width: 100%;
}

.hattagumi-contact-form .form-actions {
	display: flex;
	gap: 1rem;
	justify-content: flex-start;
	align-items: center;
	width: 100%;
	margin-top: 0.25rem;
	padding-top: 1.75rem;
	padding-bottom: 0;
	border: none;
}

.hattagumi-contact-notice--error {
	margin-bottom: 1.5rem;
	padding: 1rem 1.25rem;
	border: 2px solid #b91c1c;
	background: #fef2f2;
	font-weight: 700;
}

.hattagumi-field-error {
	color: #b91c1c;
	font-size: 0.75rem;
	margin-top: 0.5rem;
	font-weight: 600;
}

.hattagumi-contact-form {
	padding: 0;
}

.hattagumi-hidden-message-field {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	border: 0 !important;
	opacity: 0 !important;
}

.hattagumi-contact-form .hattagumi-input {
	width: 100%;
	background: #fff;
	border: 1px solid #e5e7eb;
	padding: 0.875rem 1rem;
	min-height: 48px;
	font-size: 1rem;
	font-weight: 500;
	color: #111;
	outline: none;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
	border-radius: 4px;
	box-sizing: border-box;
}

.hattagumi-contact-form .hattagumi-input::placeholder {
	color: #9ca3af;
}

.hattagumi-contact-form .hattagumi-input:focus {
	border-color: #000;
	box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.06);
}

.hattagumi-contact-form .hattagumi-textarea {
	min-height: 11rem;
	padding: 1rem;
	resize: vertical;
}

/* カスタムセレクト（ネイティブ select は非表示・検証用） */
.hattagumi-custom-select {
	position: relative;
	width: 100%;
}

.hattagumi-select-native {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	border: 0 !important;
	white-space: nowrap !important;
}

.hattagumi-custom-select__trigger {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	width: 100%;
	min-height: 48px;
	padding: 0.875rem 1rem;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 4px;
	font-size: 1rem;
	font-weight: 500;
	font-family: "Noto Sans JP", sans-serif;
	color: #111;
	text-align: left;
	cursor: pointer;
	box-sizing: border-box;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
	-webkit-appearance: none;
	appearance: none;
}

.hattagumi-custom-select__value {
	flex: 1 1 auto;
	min-width: 0;
	line-height: 1.5;
}

.hattagumi-custom-select__caret {
	flex-shrink: 0;
	width: 12px;
	height: 8px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2364748b' d='M1.41 0L6 4.58 10.59 0 12 1.41l-6 6-6-6z'/%3E%3C/svg%3E")
		center / contain no-repeat;
}

.hattagumi-custom-select.is-open .hattagumi-custom-select__trigger,
.hattagumi-custom-select__trigger:hover {
	border-color: #000;
}

.hattagumi-custom-select__trigger:focus {
	outline: none;
}

.hattagumi-custom-select__trigger:focus-visible {
	outline: 2px solid #000;
	outline-offset: 2px;
}

.hattagumi-custom-select.is-open .hattagumi-custom-select__trigger {
	box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.06);
}

.hattagumi-custom-select__list {
	position: absolute;
	left: 0;
	right: 0;
	top: calc(100% + 4px);
	z-index: 100;
	margin: 0;
	padding: 0.35rem 0;
	list-style: none;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 4px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.12), 0 4px 12px rgba(0, 0, 0, 0.06);
	max-height: 280px;
	overflow-y: auto;
}

.hattagumi-custom-select__option {
	padding: 0.65rem 1rem;
	font-size: 1rem;
	font-weight: 500;
	font-family: "Noto Sans JP", sans-serif;
	color: #111;
	cursor: pointer;
	transition: background-color 0.15s ease;
	line-height: 1.5;
}

.hattagumi-custom-select__option:hover {
	background: #fafafa;
}

.hattagumi-custom-select__option.is-selected {
	background: #f3f4f6;
}

.hattagumi-custom-select__option--placeholder {
	color: #9ca3af;
}

.hattagumi-submit {
	background: #000;
	color: #fff;
	width: 100%;
	max-width: 360px;
	padding: 1rem 1.5rem;
	font-weight: 800;
	font-style: italic;
	letter-spacing: 0.15em;
	border: none;
	cursor: pointer;
	transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
	font-size: 1rem;
	text-transform: uppercase;
	border-radius: 4px;
}

.hattagumi-submit:hover {
	background: #b91c1c;
	transform: translateY(-1px);
	box-shadow: 0 6px 16px rgba(185, 28, 28, 0.25);
}

.hattagumi-confirm-summary .cf7-wrap {
	border: none;
}

.hattagumi-confirm-summary .cf7-grid {
	row-gap: 1.25rem;
	column-gap: 2rem;
}

.hattagumi-confirm-summary .cf7-field {
	border: none;
	padding: 0;
}

.hattagumi-confirm-actions {
	display: flex;
	gap: 1rem;
	flex-wrap: wrap;
	align-items: center;
	margin-top: 1.5rem;
	padding-top: 1.75rem;
	padding-bottom: 0;
	border: none;
}

.hattagumi-confirm-actions .hattagumi-back-form,
.hattagumi-confirm-actions .hattagumi-send-form {
	display: inline-block;
	margin: 0;
}

.is-confirm-step .hattagumi-confirm-value {
	font-size: 1.125rem;
	font-weight: 700;
	margin: 0.25rem 0 0;
}

.is-confirm-step .hattagumi-confirm-value--pre {
	white-space: pre-wrap;
}

.form-back-button {
	background: #f3f4f6;
	color: #000;
	width: 100%;
	max-width: 200px;
	padding: 1rem 1.5rem;
	font-weight: 900;
	font-style: italic;
	letter-spacing: 0.15em;
	border: none;
	cursor: pointer;
	transition: all 0.2s;
	font-size: 1rem;
	text-transform: uppercase;
	border-radius: 4px;
}

.form-back-button:hover {
	background: #e5e7eb;
}

.is-confirm-step .hattagumi-submit {
	max-width: 300px;
}

/* -------------------------------------------------------------------------
   Tailwind CDN Preflight 対策（header で wp_head の後に Tailwind が入るため、
   フッターで本 CSS を読み込んでも詳細度で負ける場合がある → main 配下で上書き）
   ------------------------------------------------------------------------- */

main.main .hattagumi-contact-form input.hattagumi-input[type="text"],
main.main .hattagumi-contact-form input.hattagumi-input[type="email"],
main.main .hattagumi-contact-form textarea.hattagumi-input {
	-webkit-appearance: none;
	appearance: none;
	width: 100%;
	max-width: 100%;
	background-color: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 4px;
	padding: 0.875rem 1rem;
	min-height: 48px;
	font-size: 1rem;
	font-weight: 500;
	font-family: inherit;
	line-height: 1.5;
	color: #111;
	box-sizing: border-box;
}

main.main .hattagumi-contact-form textarea.hattagumi-input {
	min-height: 11rem;
	padding: 1rem;
	resize: vertical;
}

main.main .hattagumi-contact-form .hattagumi-custom-select__trigger {
	-webkit-appearance: none;
	appearance: none;
	width: 100%;
	max-width: 100%;
	font-family: inherit;
}

main.main .hattagumi-contact-form .hattagumi-custom-select__list {
	font-family: inherit;
}

main.main .hattagumi-contact-form input.hattagumi-input:focus,
main.main .hattagumi-contact-form textarea.hattagumi-input:focus {
	outline: none;
	border-color: #000;
	box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.06);
}

main.main .hattagumi-contact-form button.hattagumi-submit {
	-webkit-appearance: none;
	appearance: none;
	display: inline-block;
	width: 100%;
	max-width: 360px;
	background-color: #000;
	color: #fff;
	border: none;
	border-radius: 4px;
	padding: 1rem 1.5rem;
	font-size: 1rem;
	font-weight: 800;
	font-style: italic;
	font-family: inherit;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	cursor: pointer;
	line-height: 1.25;
	box-sizing: border-box;
}

main.main .hattagumi-contact-form button.hattagumi-submit:hover {
	background-color: #b91c1c;
	transform: translateY(-1px);
	box-shadow: 0 6px 16px rgba(185, 28, 28, 0.25);
}

main.main .hattagumi-contact-form button.form-back-button,
main.main .hattagumi-contact-form .form-back-button {
	-webkit-appearance: none;
	appearance: none;
	display: inline-block;
	width: 100%;
	max-width: 200px;
	background-color: #f3f4f6;
	color: #000;
	border: none;
	border-radius: 4px;
	padding: 1rem 1.5rem;
	font-size: 1rem;
	font-weight: 900;
	font-style: italic;
	font-family: inherit;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	cursor: pointer;
	line-height: 1.25;
	box-sizing: border-box;
}

main.main .hattagumi-contact-form button.form-back-button:hover,
main.main .hattagumi-contact-form .form-back-button:hover {
	background-color: #e5e7eb;
}

main.main .hattagumi-contact-form .hattagumi-privacy-field input[type="checkbox"] {
	width: 20px;
	height: 20px;
	min-height: 20px;
	accent-color: #b91c1c;
	cursor: pointer;
}
