/* ── Contact Us ──────────────────────────────────────────────────────────────
   Ported from vale-child (vale-clothing.com). Eyebrow 11px/.3em, oversized
   uppercase title. Loaded at priority 30, after the plugin's own CSS, so these
   win on equal specificity. */

/* Token bridge — vale-child's palette, spelled in vale-block's.
   This file is written against the child's tokens (--vale-accent, --vale-black,
   --vale-line…); the plugin defines a different set (--vale-blk, --vale-red…).
   Mapping them once here keeps the rules below identical to the child's instead
   of rewriting forty declarations.
   Two things this fixes rather than styles:
   - `background: var(--vale-accent)` on the submit is the one var() in the file
     with no fallback. Undefined, it made the whole declaration invalid, so the
     button lost its background and rendered white-on-white — invisible.
   - --vale-accent-solid fell back to #1a2942, vale-clothing's navy, on ~15 rules
     (eyebrow, field focus, checkboxes). That's another brand's colour; here the
     accent is the site's black, as on every other vale-forever button. */
.vale-contact {
	--vale-accent: var(--vale-blk, #0e0e0e);
	--vale-accent-solid: var(--vale-blk, #0e0e0e);
	--vale-black: var(--vale-blk, #0e0e0e);
	--vale-line: rgba(10, 10, 10, 0.1);
	--vale-line-strong: rgba(10, 10, 10, 0.18);
	--vale-muted: rgba(10, 10, 10, 0.55);
	--vale-muted-2: rgba(10, 10, 10, 0.4);
	/* Literal, not the plugin's fluid --vale-px: these are the child's own
	   gutters and the layout below is tuned to them. */
	--vale-pad-x: 40px;
	--vale-pad-x-mob: 14px;
}

.vale-contact {
	background: var(--vale-white, #fff);
	padding: 80px var(--vale-pad-x, 40px);
}
.vale-contact__inner {
	max-width: 1300px;
	margin: 0 auto;
}

/* ── head ─────────────────────────────────────────────────────────────────── */

.vale-contact__head {
	margin-bottom: 48px;
	padding-bottom: 20px;
	border-bottom: 1px solid var(--vale-black, #0a0a0a);
}
.vale-contact__eyebrow {
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	/* Flat colour, not var(--vale-accent): upstream that token is a gradient, and
	   a gradient is dropped as an invalid `color` value. Keep the two apart even
	   though the bridge above happens to make both solid here. */
	color: var(--vale-accent-solid, #1a2942);
	margin-bottom: 12px;
}
.vale-contact__title {
	font-size: clamp(36px, 5vw, 56px);
	font-weight: 600;
	line-height: 1.05;
	letter-spacing: -0.02em;
	text-transform: uppercase;
	color: var(--vale-black, #0a0a0a);
	margin: 0;
}
.vale-contact__intro {
	margin-top: 16px;
	max-width: 640px;
}
.vale-contact__intro p {
	margin: 0 0 6px;
	font-size: 14px;
	line-height: 1.6;
	color: var(--vale-muted, rgba(10, 10, 10, 0.55));
}

/* ── layout ───────────────────────────────────────────────────────────────── */

.vale-contact__body {
	display: grid;
	grid-template-columns: 320px 1fr;
	gap: 60px;
	align-items: start;
}

/* ── aside ────────────────────────────────────────────────────────────────── */

.vale-contact__block + .vale-contact__block {
	margin-top: 32px;
	padding-top: 32px;
	border-top: 1px solid var(--vale-line, rgba(10, 10, 10, 0.1));
}
.vale-contact__block-title {
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--vale-muted, rgba(10, 10, 10, 0.55));
	margin: 0 0 10px;
}
.vale-contact__link {
	font-size: 16px;
	font-weight: 600;
	line-height: 1.3;
	color: var(--vale-black, #0a0a0a);
	text-decoration: none;
	border-bottom: 1px solid var(--vale-line-strong, rgba(10, 10, 10, 0.18));
	transition: color 0.2s, border-color 0.2s;
	word-break: break-word;
}
.vale-contact__link:hover {
	color: var(--vale-accent-solid, #1a2942);
	border-color: var(--vale-accent-solid, #1a2942);
}
.vale-contact__note {
	margin: 8px 0 0;
	font-size: 12px;
	line-height: 1.5;
	color: var(--vale-muted, rgba(10, 10, 10, 0.55));
}
.vale-contact__address {
	font-style: normal;
	font-size: 14px;
	line-height: 1.6;
	color: var(--vale-black, #0a0a0a);
}

.vale-contact__hours {
	margin: 0;
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 6px 16px;
	font-size: 13px;
	line-height: 1.4;
}
.vale-contact__hours dt {
	font-weight: 600;
	color: var(--vale-black, #0a0a0a);
}
.vale-contact__hours dd {
	margin: 0;
	color: var(--vale-muted, rgba(10, 10, 10, 0.55));
	text-align: right;
}

/* ── form ─────────────────────────────────────────────────────────────────── */

.vale-contact__form-title {
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--vale-muted, rgba(10, 10, 10, 0.55));
	margin: 0 0 20px;
}

.vale-cf__row + .vale-cf__row,
.vale-cf__group + .vale-cf__row,
.vale-cf__row + .vale-cf__group,
.vale-cf__group + .vale-cf__group {
	margin-top: 18px;
}
.vale-cf__group[hidden] {
	display: none;
}
.vale-cf__group .vale-cf__row + .vale-cf__row {
	margin-top: 18px;
}

.vale-cf__label {
	display: block;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--vale-black, #0a0a0a);
	margin-bottom: 8px;
}
.vale-cf__req {
	color: var(--vale-accent-solid, #1a2942);
}
.vale-cf__hint {
	display: block;
	margin-top: 6px;
	font-size: 12px;
	line-height: 1.5;
	color: var(--vale-muted, rgba(10, 10, 10, 0.55));
}

/* CF7 wraps every control in a <span class="wpcf7-form-control-wrap">; without
   this the input can't reach the row's full width. */
.vale-cf .wpcf7-form-control-wrap {
	display: block;
}

/* Belt and braces for autop: inc/contact-form.php turns it off for this
   template, but if it ever comes back the rows already carry their own spacing
   and CF7's paragraphs would just double it. */
.vale-cf__row > p,
.vale-cf__row > p:last-child {
	margin: 0;
}
.vale-cf__row br {
	display: none;
}

.vale-cf__input,
.vale-cf__select,
.vale-cf__textarea {
	width: 100%;
	box-sizing: border-box;
	padding: 13px 14px;
	background: var(--vale-white, #fff);
	border: 1px solid var(--vale-line-strong, rgba(10, 10, 10, 0.18));
	border-radius: 0;
	font-family: inherit;
	font-size: 14px;
	line-height: 1.4;
	color: var(--vale-black, #0a0a0a);
	transition: border-color 0.2s;
}
.vale-cf__input::placeholder,
.vale-cf__textarea::placeholder {
	color: var(--vale-muted-2, rgba(10, 10, 10, 0.4));
}
.vale-cf__input:focus,
.vale-cf__select:focus,
.vale-cf__textarea:focus {
	outline: none;
	border-color: var(--vale-accent-solid, #1a2942);
}
.vale-cf__textarea {
	resize: vertical;
	min-height: 140px;
}

/* Native arrow varies wildly across platforms; draw our own so the control reads
   as part of the set. */
.vale-cf__select {
	appearance: none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%230a0a0a' stroke-width='1.5'%3E%3Cpath d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	background-size: 12px 8px;
	padding-right: 38px;
	cursor: pointer;
}

/* Yes / No — the switch the whole form turns on, so it reads as two buttons.

   The box has to be the <label>, not .wpcf7-list-item-label: CF7 nests
   <label><input><span class="wpcf7-list-item-label">Yes</span></label>, so that
   span holds only the text and bordering it leaves the radio stranded outside
   the box. */
.vale-cf__radios {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.vale-cf__radios .wpcf7-list-item {
	margin: 0;
}
.vale-cf__radios .wpcf7-list-item label {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	min-width: 96px;
	padding: 12px 18px;
	border: 1px solid var(--vale-line-strong, rgba(10, 10, 10, 0.18));
	font-size: 14px;
	color: var(--vale-black, #0a0a0a);
	cursor: pointer;
	transition: border-color 0.2s, box-shadow 0.2s;
}
.vale-cf__radios .wpcf7-list-item label:hover {
	border-color: var(--vale-accent-solid, #1a2942);
}
/* :has, because CF7 marks the checked option with no class of its own and the
   alternative was JS purely to paint a border. */
.vale-cf__radios .wpcf7-list-item label:has(input:checked) {
	border-color: var(--vale-accent-solid, #1a2942);
	box-shadow: inset 0 0 0 1px var(--vale-accent-solid, #1a2942);
}
.vale-cf__radios input[type="radio"] {
	accent-color: var(--vale-accent-solid, #1a2942);
	width: 15px;
	height: 15px;
	margin: 0;
	flex-shrink: 0;
	cursor: pointer;
}

.vale-cf__checks .wpcf7-list-item {
	margin: 0;
}
.vale-cf__checks .wpcf7-list-item label {
	display: inline-flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 14px;
	line-height: 1.45;
	color: var(--vale-black, #0a0a0a);
	cursor: pointer;
}
.vale-cf__checks input[type="checkbox"] {
	accent-color: var(--vale-accent-solid, #1a2942);
	width: 16px;
	height: 16px;
	margin: 1px 0 0;
	flex-shrink: 0;
	cursor: pointer;
}

.vale-cf__actions {
	margin-top: 28px;
}
.vale-cf__submit {
	/* `background`, never `background-color` — the token is a gradient upstream. */
	background: var(--vale-accent);
	border: 1px solid var(--vale-accent-solid, #1a2942);
	color: var(--vale-white, #fff);
	font-family: inherit;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	padding: 16px 48px;
	border-radius: 0;
	cursor: pointer;
	line-height: 1;
	transition: opacity 0.15s;
}
.vale-cf__submit:hover:not(:disabled) {
	opacity: 0.85;
}
.vale-cf__submit:disabled {
	opacity: 0.5;
	cursor: default;
}

/* ── CF7 feedback ─────────────────────────────────────────────────────────── */

.vale-cf .wpcf7-not-valid {
	border-color: #b3261e;
}
.vale-cf .wpcf7-not-valid-tip {
	margin-top: 6px;
	font-size: 12px;
	line-height: 1.4;
	color: #b3261e;
}
.vale-cf .wpcf7-response-output {
	margin: 24px 0 0 !important;
	padding: 14px 16px !important;
	border: 1px solid var(--vale-line-strong, rgba(10, 10, 10, 0.18)) !important;
	border-radius: 0;
	font-size: 13px;
	line-height: 1.5;
}
.vale-cf .wpcf7-form.invalid .wpcf7-response-output,
.vale-cf .wpcf7-form.failed .wpcf7-response-output {
	border-color: #b3261e !important;
	color: #b3261e;
}
.vale-cf .wpcf7-form.sent .wpcf7-response-output {
	border-color: var(--vale-accent-solid, #1a2942) !important;
	color: var(--vale-accent-solid, #1a2942);
}
.vale-cf .wpcf7-spinner {
	margin: 0 0 0 12px;
}

/* ── Mobile: the theme's compact scale (see .vale-said → 28px title, 36px pad) ── */
@media (max-width: 1100px) {
	.vale-contact { padding: 36px var(--vale-pad-x-mob, 14px); }
	.vale-contact__head { margin-bottom: 28px; padding-bottom: 14px; }
	.vale-contact__eyebrow { font-size: 10px; letter-spacing: 0.24em; margin-bottom: 8px; }
	.vale-contact__title { font-size: 28px; }
	.vale-contact__intro p { font-size: 13px; }

	/* Form first: someone who opened this page came to write, not to read an
	   address. The aside keeps the source order for screen readers. */
	.vale-contact__body {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	.vale-contact__form { order: -1; }

	.vale-contact__link { font-size: 15px; }
	.vale-cf__input,
	.vale-cf__select,
	.vale-cf__textarea { font-size: 16px; } /* under 16px iOS zooms the page on focus */
	.vale-cf__submit { width: 100%; padding: 15px 20px; }
}
