/**
 * Account form layout.
 *
 * Layout only. Labels and inputs are left to the theme and to Elementor's
 * form styling, and the submit button takes its look from the site's own
 * custom-btn-3 rules. Nothing here sets a font, a colour or a border on an
 * input; the one thing taken away from inputs is the browser's focus ring.
 */

.hw-form {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.hw-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}

/* First and last name side by side, stacking on phones. */
.hw-row {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
}

@media (max-width: 600px) {
	.hw-row {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Reset form: centred, with the intro line tight beneath the heading; the
   fields stay on the left. The intro is named rather than every p, so
   field errors keep their own gap. */
.hw-form-wrap--reset {
	text-align: center;
}

.hw-form-wrap--reset h3 {
	margin: 0px;
	text-align: center;
}

.hw-form-wrap--reset .hw-form-intro {
	margin: 0px;
}

.hw-form-wrap--reset .hw-field,
.hw-form-wrap--reset .hw-hint,
.hw-form-wrap--reset .hw-input > input {
	text-align: left;
}

/* Password reveal ------------------------------------------------------- */

.hw-input {
	position: relative;
}

/* Structural rules for inputs: the first two make a field fill its grid
   column, the third keeps typed text from running under the reveal icon.
   Delete them if Elementor already covers both. */
.hw-input > input,
.hw-input > textarea {
	width: 100%;
	box-sizing: border-box;
}

.hw-input > textarea {
	display: block;
}

.hw-form .hw-input--toggle > input,
.hw-input--toggle > input {
	padding-right: 48px;
}

/* No browser focus ring on these inputs. Plain inputs get one by default;
   these forms leave the focused look to the site's own form styles. */
.hw-form .hw-input > input:focus,
.hw-form .hw-input > input:focus-visible,
.hw-form .hw-input > textarea:focus,
.hw-form .hw-input > textarea:focus-visible,
.hw-form .hw-input > select:focus,
.hw-form .hw-input > select:focus-visible {
	outline: none;
}

/* Select */

.hw-form .hw-input--select > select {
	width: 100%;
	box-sizing: border-box;
	padding-right: 48px;
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
}

.hw-select-icon {
	position: absolute;
	top: 50%;
	right: 24px;
	transform: translateY(-50%);
	display: inline-flex;
	line-height: 0;
	pointer-events: none;
}

.hw-select-icon svg {
	display: block;
	fill: currentColor;
}

.hw-eye {
	position: absolute;
	top: 50%;
	right: 12px;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 4px;
	cursor: pointer;
	color: inherit;
	opacity: 0.55;
	line-height: 0;
	user-select: none;
	-webkit-tap-highlight-color: transparent;
}

.hw-eye:hover {
	opacity: 1;
}

/* The slash is shown while the password is hidden, and removed once it is
   revealed, so the icon always describes the current state. */
.hw-eye[aria-pressed="true"] .hw-eye-slash {
	display: none;
}

/* Button ---------------------------------------------------------------- */

.hw-form-actions .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: 100%;
	cursor: pointer;
}

.hw-btn-arrow {
	display: inline-flex;
	line-height: 0;
}

.hw-btn-arrow svg {
	width: 14px;
	height: 14px;
	display: block;
}

/* The arrow file is dark and this button is not, so it has to be recoloured.
   The shapes are targeted directly: an exported icon usually carries its own
   fill attribute, and that beats a fill inherited from the svg root. */
.hw-btn-arrow svg,
.hw-btn-arrow svg * {
	fill: currentColor;
}

.hw-btn-arrow img {
	width: 14px;
	height: 14px;
	display: block;
}

/* Log in button, while logging in */

.hw-form-wrap--login .hw-form-actions .elementor-button.is-busy {
	cursor: progress;
}

.hw-form-wrap--login .elementor-button.is-busy .hw-btn-arrow {
	display: none;
}

.hw-btn-spinner {
	display: inline-block;
	flex: none;
	width: 14px;
	height: 14px;
	box-sizing: border-box;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: hw-spin 0.7s linear infinite;
}

@keyframes hw-spin {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.hw-btn-spinner {
		animation-duration: 1.6s;
	}
}

/* Messages -------------------------------------------------------------- */

.hw-form-notice,
.hw-form-errors {
	margin: 0 0 20px;
	padding: 12px 16px;
	border-radius: 8px;
	border: 1px solid currentColor;
	font-size: 0.95em;
	line-height: 1.5;
}

.hw-form-notice {
	color: #14562a;
	background: #e9f6ed;
	border-color: #bfe3cb;
}

.hw-form-errors {
	color: #8a1f1f;
	background: #fdecec;
	border-color: #f3c9c9;
}

.hw-form-errors p {
	margin: 0 0 6px;
}

.hw-form-errors p:last-child {
	margin-bottom: 0;
}

/* Popup after an email is sent ------------------------------------------ */

.hw-popup {
	width: calc(100% - 32px);
	max-width: 400px;
	margin: auto;
	padding: 0;
	border: 0;
	border-radius: 24px;
	color: var(--e-global-color-text);
	background-color: var(--e-global-color-cd032c6, #FFFFFF);
}

.hw-popup::backdrop {
	background-color: rgba(0, 0, 0, 0.6);
}

.hw-popup-box {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 24px;
}

.hw-popup .hw-popup-title,
.hw-popup .hw-popup-text {
	margin: 0;
}

.hw-popup .hw-popup-text {
	overflow-wrap: anywhere;
}

.hw-hint {
	margin: -12px 0 0;
	font-size: 0.85em;
	opacity: 0.7;
}

.hw-form-foot {
	margin: 0;
}

.hw-form-foot--center {
	text-align: center;
}

/* The line under a form's button that links to the policies. */
.hw-form-note {
	margin: -8px 0 0;
	font-size: 0.85em;
	opacity: 0.7;
}

/* Honeypot: off-screen rather than display:none, which some bots skip. */
.hw-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}

/* Resend link, shown inside an error box. Left looking like the link it
   behaves as, rather than given a look of its own. */
.hw-resend {
	margin: 10px 0 0;
}

.hw-resend-button {
	padding: 0;
	background: none;
	border: 0;
	font: inherit;
	color: inherit;
	text-decoration: underline;
	cursor: pointer;
}

/* Field errors ---------------------------------------------------------- */

/* The message text only. The input itself is left to the theme: style
   [aria-invalid="true"] or .hw-field--invalid there to mark the field. */
.hw-field-error {
	margin: 4px 0 0;
	font-size: 0.85em;
	line-height: 1.45;
	color: #b3261e;
}

.hw-field-error[hidden] {
	display: none !important;
}

/* Captcha --------------------------------------------------------------- */

.hw-captcha {
	margin: 0;
}

.hw-captcha--invisible .hw-field-error {
	margin-top: 0;
}

/* Tick box -------------------------------------------------------------- */

.hw-check {
	display: flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
}

.hw-check input {
	flex: none;
	margin: 0;
}

/* Address box ----------------------------------------------------------- */

.hw-reveal {
	display: grid;
	grid-template-rows: 0fr;
	opacity: 0;
	visibility: hidden;
}

.hw-reveal.is-open {
	grid-template-rows: 1fr;
	opacity: 1;
	visibility: visible;
}

.hw-post-option:has(> .hw-check input:checked) > .hw-reveal {
	grid-template-rows: 1fr;
	opacity: 1;
	visibility: visible;
}

.hw-reveal.is-ready {
	transition: grid-template-rows 0.45s ease, opacity 0.3s ease, visibility 0s linear 0.45s;
}

.hw-reveal.is-ready.is-open {
	transition: grid-template-rows 0.45s ease, opacity 0.35s ease 0.1s, visibility 0s linear 0s;
}

.hw-reveal-inner {
	min-height: 0;
	overflow: hidden;
}

.hw-reveal.is-open:not(.is-moving) > .hw-reveal-inner {
	overflow: visible;
}

.hw-reveal-fields {
	display: flex;
	flex-direction: column;
	gap: 20px;
	padding-top: 20px;
}

@media (prefers-reduced-motion: reduce) {
	.hw-reveal.is-ready,
	.hw-reveal.is-ready.is-open {
		transition: none;
	}
}

/* Booking form */

.hw-form-wrap--booking .hw-form-actions {
	margin-top: 20px;
}

.hw-form-wrap--booking .hw-captcha--invisible {
	display: contents;
}

@media (max-width: 767px) {
	.hw-form-wrap--booking .hw-row {
		grid-template-columns: minmax(0, 1fr);
	}

	.hw-form-wrap--booking .hw-form-actions {
		margin-top: 4px;
	}
}

/* Certificate sent ------------------------------------------------------ */

.hw-cert-sent {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 24px;
	text-align: center;
}

.hw-cert-sent .hw-cert-sent-title {
	margin: 0px;
	color: var(--e-global-color-f11010d);
}

.hw-cert-sent .hw-cert-sent-text {
	margin: 0px;
	color: var(--e-global-color-text);
}

.hw-cert-sent .hw-cert-sent-button {
	margin-top: 8px;
}

.hw-cert-sent .elementor-button {
	display: inline-flex;
	align-items: center;
	gap: 10px;
}
