/* Baltic Agro Koduaed – Kontakt (design H + M): form card (Gravity Forms legacy markup, GF's own CSS not loaded),
   company card, store card, consent-aware Google map. page-kontakt.php; handle ba-contact (depends on ba-core). */

.ba-page-title.ba-contact__title { margin-bottom: 10px; }
.ba-contact__intro { font-size: 17px; line-height: 1.6; color: var(--ba-text-2); margin: 0 0 40px; max-width: 640px; }
.ba-contact__layout { display: flex; flex-wrap: wrap; gap: 40px 56px; align-items: flex-start; }
.ba-contact__form { flex: 1.4 1 420px; min-width: 0; border: 1px solid var(--ba-border); border-radius: var(--ba-r-lg); padding: 32px; }
.ba-contact__form-title { font-size: 24px; line-height: 1.25; font-weight: 800; color: var(--ba-text-strong); margin: 0 0 22px; }
.ba-contact__form:has(.gform_confirmation_message) .ba-contact__form-title,
.ba-contact__form:has(.gform_confirmation_message) .ba-contact__required { display: none; }
.ba-contact__required { margin: -12px 0 20px; font-size: 14px; line-height: 1.5; color: var(--ba-text-muted); } /* P-71 */
.ba-contact__aside { flex: 1 1 300px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }

/* ---------- Gravity Forms (legacy markup: ul.gform_fields > li.gfield) ---------- */
.ba-contact .gform_wrapper { margin: 0; max-width: none; }
.ba-contact .gform_wrapper form { margin: 0; }
.ba-contact .gform_heading { display: none; }
.ba-contact .gform_fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; list-style: none; margin: 0; padding: 0; }
.ba-contact .gfield { margin: 0; padding: 0; min-width: 0; grid-column: 1 / -1; display: flex; flex-direction: column; gap: 6px; }
.ba-contact .gfield--type-text, .ba-contact .gfield--type-email, .ba-contact .gfield--type-phone { grid-column: auto; }
/* No CSS `order`: the message field is printed before the file upload (ba_editorial_gf_contact_form(), balticagro-site
   api-editorial.php), so the Tab order is the visual order (WCAG 2.4.3). */
.ba-contact .gform_validation_container, .ba-contact .gfield_visibility_hidden, .ba-contact .gform_hidden,
.ba-contact .gform_validation_container * { display: none !important; }
.ba-contact .gfield--type-captcha:not(:has(.validation_message)) { margin: 0; height: 0; overflow: visible; }

.ba-contact .gfield_label { font-size: 14px; font-weight: 700; line-height: 1.4; color: var(--ba-text-strong); margin: 0; padding: 0; display: block; }
.ba-contact .gfield_required { color: var(--ba-text-strong); font-weight: 700; margin-left: 3px; }
.ba-contact .gfield_required .gfield_required { margin: 0; }
.ba-contact .ginput_container { margin: 0; }
.ba-contact .ginput_container input[type="text"], .ba-contact .ginput_container input[type="email"],
.ba-contact .ginput_container input[type="tel"], .ba-contact .ginput_container textarea {
	width: 100%; max-width: none; font-family: var(--ba-font); font-size: 16px; line-height: 1.4; color: var(--ba-text-strong);
	background: #fff; border: 1.5px solid var(--ba-control); border-radius: var(--ba-r-sm); padding: 12px 14px; margin: 0;
	transition: border-color var(--ba-ease), box-shadow var(--ba-ease); box-shadow: none; outline: none;
}
.ba-contact .ginput_container textarea { height: 150px; min-height: 120px; resize: vertical; }
.ba-contact .ginput_container input:focus, .ba-contact .ginput_container textarea:focus { border-color: var(--ba-green); box-shadow: 0 0 0 3px var(--ba-green-ring); }
.ba-contact .gfield_description { font-size: 13px; line-height: 1.5; color: var(--ba-text-muted); margin: 0; padding: 0; }

/* File field: dashed box, label + rules on the left, "Vali arvutist" on the right */
.ba-contact .gfield--type-fileupload {
	display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "label drop" "rules drop" "list list";
	align-items: center; gap: 3px 16px;
	border: 1.5px dashed var(--ba-border-green-3); border-radius: var(--ba-r-md); background: var(--ba-surface-soft); padding: 18px 20px;
}
.ba-contact .gfield--type-fileupload > .gfield_label { grid-area: label; font-size: 14.5px; }
.ba-contact .gfield--type-fileupload .ginput_container_fileupload { display: contents; }
.ba-contact .gform_fileupload_multifile, .ba-contact .gfield--type-fileupload input[type="file"] { grid-area: drop; }
.ba-contact .gform_fileupload_rules { grid-area: rules; }
.ba-contact .gfield--type-fileupload .validation_message, .ba-contact .ginput_preview_list, .ba-contact [id^="gform_multifile_messages"] { grid-area: list; }
.ba-contact .gform_drop_area { display: flex; align-items: center; padding: 0; border: 0; background: none; margin: 0; }
.ba-contact .gform_drop_instructions { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ba-contact .gform_button_select_files, .ba-contact .gfield--type-fileupload input[type="file"] {
	font-family: var(--ba-font); font-size: 14.5px; font-weight: 700; line-height: 1.3; color: var(--ba-green-deep);
	background: #fff; border: 1px solid var(--ba-border-green-3); border-radius: var(--ba-r-xs); padding: 10px 18px; cursor: pointer;
	transition: border-color var(--ba-ease);
}
.ba-contact .gform_button_select_files:hover { border-color: var(--ba-green); }
.ba-contact .gform_drop_area.hover { outline: 2px dashed var(--ba-green); outline-offset: 6px; border-radius: var(--ba-r-xs); }
.ba-contact [id^="gform_multifile_messages"] { list-style: none; margin: 0; padding: 0; font-size: 13px; color: var(--ba-error); }
.ba-contact [id^="gform_multifile_messages"]:empty { display: none; }
.ba-contact .ginput_preview_list:empty { display: none; }
.ba-contact .ginput_preview { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 14px; padding: 8px 0 0; }
.ba-contact .gfield_fileupload_filesize, .ba-contact .gfield_fileupload_progress { font-size: 13px; color: var(--ba-text-muted); }
.ba-contact .gfield_fileupload_progressbar { display: inline-block; width: 80px; height: 4px; background: var(--ba-divider); border-radius: 2px; overflow: hidden; vertical-align: middle; }
.ba-contact .gfield_fileupload_progressbar_progress { display: block; height: 100%; background: var(--ba-green); }
.ba-contact .gform_delete_file { font-family: var(--ba-font); font-size: 13px; font-weight: 700; color: var(--ba-error); background: none; border: 0; cursor: pointer; padding: 2px 4px; }
.ba-contact .gform_delete_file .dashicons, .ba-contact .gform-icon { display: none; }
.ba-contact .gform_delete_file::after { content: "×"; font-size: 18px; line-height: 1; }

/* Consent: checkbox + "Nõustun privaatsustingimustega *", explanation below */
.ba-contact .gfield--type-consent { margin-top: 2px; }
.ba-contact .gfield--type-consent > .gfield_label { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ba-contact .ginput_container_consent { display: flex; gap: 12px; align-items: flex-start; }
.ba-contact .ginput_container_consent input[type="checkbox"] { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--ba-green); flex-shrink: 0; cursor: pointer; }
.ba-contact .gfield_consent_label { font-size: 15px; line-height: 1.5; color: var(--ba-text); cursor: pointer; }
.ba-contact .gfield_consent_label::after { content: " *"; font-weight: 700; color: var(--ba-text-strong); }
.ba-contact .gfield_consent_description { margin-left: 32px; font-size: 13px; max-height: none; overflow: visible; border: 0; padding: 0; }
.ba-contact .gfield_consent_description a { font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }

/* Submit */
.ba-contact .gform_footer { margin: 24px 0 0; padding: 0; display: flex; align-items: center; gap: 12px; }
.ba-contact .gform_button {
	display: inline-flex; align-items: center; gap: 8px; font-family: var(--ba-font); font-size: 16px; font-weight: 700; line-height: 1.25;
	color: #fff; background: var(--ba-green); border: 1px solid var(--ba-green); border-radius: var(--ba-r-xs); padding: 15px 30px; cursor: pointer;
	transition: background-color var(--ba-ease), border-color var(--ba-ease); width: auto;
}
.ba-contact .gform_button::after { content: "→" / ""; }
.ba-contact .gform_button:hover { background: var(--ba-green-hover); border-color: var(--ba-green-hover); }
.ba-contact .gform_ajax_spinner { width: 20px; height: 20px; }

/* Inline validation */
.ba-contact .gform_validation_errors, .ba-contact .validation_error {
	order: -1; margin: 0 0 20px; padding: 14px 18px; border: 1px solid #e7c4b8; border-radius: var(--ba-r-md); background: #fbefea; color: var(--ba-error);
	font-size: 15px; font-weight: 700; line-height: 1.5;
}
.ba-contact .gform_validation_errors > h2, .ba-contact .gform_submission_error { font-size: 15px; font-weight: 700; line-height: 1.5; color: var(--ba-error); margin: 0; }
/* Linked error summary (form setting validationSummary, P-71): one link per invalid field, to its input. */
.ba-contact .gform_validation_errors > ol { margin: 8px 0 0; padding: 0 0 0 20px; font-size: 14.5px; font-weight: 600; line-height: 1.5; }
.ba-contact .gform_validation_errors > ol li { margin: 2px 0; }
.ba-design-new .ba-contact .gform_validation_error_link { color: var(--ba-error); text-decoration: underline; text-underline-offset: 2px; }
.ba-contact .gform_validation_error_link:hover { text-decoration-thickness: 2px; }
.ba-contact .gform_validation_errors .gform-icon, .ba-contact .gform_validation_errors .screen-reader-text:empty { display: none; }
.ba-contact .gfield_error .gfield_label { color: var(--ba-text-strong); }
.ba-contact .gfield_error input[type="text"], .ba-contact .gfield_error input[type="email"], .ba-contact .gfield_error input[type="tel"],
.ba-contact .gfield_error textarea, .ba-contact [aria-invalid="true"] { border-color: var(--ba-error) !important; }
.ba-contact .gfield_error.gfield--type-fileupload { border-color: var(--ba-error); }
.ba-contact .validation_message, .ba-contact .gfield_validation_message {
	font-size: 13px; font-weight: 600; line-height: 1.45; color: var(--ba-error); margin: 0; padding: 0; background: none; border: 0;
}
.ba-contact .gfield--type-consent .validation_message { margin-left: 32px; }

/* Success (GF confirmation replaces the form) */
.ba-contact .gform_confirmation_wrapper { text-align: center; padding: 40px 12px; }
.ba-contact .gform_confirmation_message { font-size: 15.5px; line-height: 1.65; color: var(--ba-text-2); }
.ba-contact .gform_confirmation_message::before {
	content: "✓" / ""; display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin: 0 auto 18px;
	border-radius: 50%; background: var(--ba-green); color: #fff; font-size: 28px; font-weight: 800; line-height: 1;
}
.ba-contact .gform_confirmation_message::first-line { font-size: 24px; font-weight: 800; line-height: 1.6; color: var(--ba-green-deep); }

/* ---------- Map (Complianz blocks the iframe and shows its placeholder until marketing consent) ---------- */
.ba-contact__map { border: 1px solid var(--ba-border); border-radius: var(--ba-r-lg); overflow: hidden; background: #eef0e4; }
.ba-contact__map-frame { position: relative; z-index: 0; height: 260px; background: #eef0e4; } /* own stacking context: Complianz' notice stays under overlays */
.ba-contact__map-frame iframe { display: block; width: 100%; height: 260px; border: 0; }
.ba-contact__map-frame .cmplz-blocked-content-container, .ba-contact__map-frame .cmplz-placeholder-element { width: 100% !important; height: 260px !important; max-width: none; border-radius: 0; background-size: cover; background-position: center; }
.ba-contact__map-frame .cmplz-blocked-content-notice {
	font-family: var(--ba-font); font-size: 14px; font-weight: 700; line-height: 1.4; max-width: 280px; text-align: center;
	background: #fff; color: var(--ba-green-deep); border: 1px solid var(--ba-border-green-3); border-radius: var(--ba-r-xs); padding: 10px 16px;
}
.ba-design-new .ba-contact__map-link {
	display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; background: #fff; border-top: 1px solid var(--ba-border);
	font-size: 14.5px; font-weight: 700; color: var(--ba-green);
}
.ba-design-new .ba-contact__map-link:hover { color: var(--ba-green-hover); }
.ba-contact__map-link:focus-visible { outline-offset: -3px; }

/* ---------- Cards ---------- */
.ba-contact__card { border: 1px solid var(--ba-border); border-radius: var(--ba-r-lg); padding: 28px; }
.ba-contact__card--company { background: var(--ba-surface); border-color: var(--ba-divider); }
.ba-contact__company { font-size: 20px; line-height: 1.3; font-weight: 800; color: var(--ba-green-deep); margin: 0 0 16px; }
.ba-contact__dl { display: flex; flex-direction: column; gap: 16px; font-size: 15px; line-height: 1.55; margin: 0; }
.ba-contact__dl dt { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ba-text-muted); margin: 0 0 3px; }
.ba-contact__dl dd { margin: 0; color: var(--ba-text); }
.ba-contact__mail { font-weight: 700; }
.ba-contact__mail span { display: inline-block; }
.ba-contact__card-title { font-size: 18px; line-height: 1.3; font-weight: 800; color: var(--ba-text-strong); margin: 0 0 6px; }
.ba-contact__card--stores p { font-size: 15px; line-height: 1.55; color: var(--ba-text-2); margin: 0 0 16px; }
.ba-contact__card--stores .ba-btn { padding: 12px 22px; }

/* ---------- Mobile ---------- */
@media (max-width: 760px) {
	.ba-contact__intro { font-size: 16px; margin-bottom: 28px; }
	.ba-contact__form { padding: 22px 18px; flex-basis: 100%; }
	.ba-contact__card { padding: 22px 18px; }
}
@media (max-width: 560px) {
	.ba-contact .gform_fields { grid-template-columns: minmax(0, 1fr); }
	.ba-contact .gfield--type-fileupload { grid-template-columns: minmax(0, 1fr); grid-template-areas: "label" "rules" "drop" "list"; gap: 6px; }
	.ba-contact .gform_drop_area { margin-top: 8px; }
}

/* .ba-view keeps transform: matrix(…) with fill-mode "both", which makes <main> the containing block of fixed
   descendants (e.g. the reCAPTCHA badge → horizontal overflow). Only the start state is needed. (Reported to A.) */
.ba-main.ba-view { animation-fill-mode: backwards; }
