/* START: Premier Contact and booking forms v2.0.8 */
/* Ninja Forms opinionated styles may remain off. Form configuration and actions remain in Ninja Forms. */

.pts-contact-intro {
	max-width: 1100px;
	margin: 0 auto 2rem;
	text-align: center;
}

.pts-contact-intro h1 {
	margin-bottom: 1rem;
}

.pts-contact-intro > p {
	max-width: 760px;
	margin: 0 auto 1.5rem;
}

.pts-contact-intro__details {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 0.75rem 2rem;
	margin: 0;
	padding: 0;
}

.pts-contact-intro__details > div {
	min-width: 0;
}

.pts-contact-intro__details dt {
	font-weight: 700;
	color: var(--pts-charcoal);
}

.pts-contact-intro__details dd {
	margin: 0;
	overflow-wrap: anywhere;
}

.pts-contact-intro__details a {
	color: var(--pts-purple);
	text-decoration: underline;
	text-underline-offset: 0.2em;
	text-decoration-thickness: 1px;
}

.pts-contact-intro__details a:hover {
	color: var(--pts-purple-dark);
	text-decoration-thickness: 2px;
}

.pts-contact-intro__details a:focus-visible {
	outline: 2px solid var(--pts-purple);
	outline-offset: 4px;
}

/* Both IDs are verified against the actual generated Ninja Forms DOM. */
body :is(#nf-form-2-cont, #nf-form-3-cont) {
	box-sizing: border-box;
	width: 100%;
	max-width: 1100px;
	margin: 2rem auto 0;
	padding: clamp(20px, 3vw, 36px);
	border: 1px solid var(--pts-line);
	border-top: 4px solid var(--pts-purple);
	border-radius: var(--pts-radius);
	background: var(--pts-surface);
	color: var(--pts-text);
	box-shadow: 0 12px 28px rgba(25, 25, 27, 0.1);
}

body :is(#nf-form-2-cont, #nf-form-3-cont) *,
body :is(#nf-form-2-cont, #nf-form-3-cont) *::before,
body :is(#nf-form-2-cont, #nf-form-3-cont) *::after {
	box-sizing: border-box;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-content {
	max-width: none;
	margin: 0;
	padding: 0;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-fields-required {
	margin: 0 0 1.5rem;
	color: var(--pts-text);
}

body :is(#nf-form-2-cont, #nf-form-3-cont) :is(nf-rows-wrap, nf-fields, nf-field) {
	display: block;
	min-width: 0;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-row {
	width: auto;
	margin: 0 -12px;
	padding: 0;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) nf-cells {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	width: 100%;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-cell {
	float: none;
	flex: 0 0 auto;
	min-width: 0;
	max-width: 100%;
	padding: 0 12px;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-container {
	width: 100%;
	margin: 0 0 1.5rem;
	padding: 0;
	background: transparent;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) :is(.nf-field, .nf-field-element, .field-wrap) {
	min-width: 0;
	max-width: 100%;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .label-above .nf-field-label {
	width: 100%;
	margin: 0 0 0.5rem;
	padding: 0;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-label label {
	margin: 0;
	color: var(--pts-charcoal);
	font-weight: 700;
	line-height: 1.5;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element :where(input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="hidden"]), select, textarea) {
	display: block;
	width: 100%;
	max-width: 100%;
	min-width: 0;
	min-height: 50px;
	margin: 0;
	padding: 11px 14px;
	border: 1px solid var(--pts-text);
	border-color: color-mix(in srgb, var(--pts-text) 70%, var(--pts-surface));
	border-radius: var(--pts-radius);
	background: var(--pts-surface);
	color: var(--pts-charcoal);
	-webkit-text-fill-color: var(--pts-charcoal);
	font: inherit;
	font-size: max(16px, 1em);
	line-height: 1.5;
	box-shadow: none;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element textarea {
	min-height: 180px;
	height: auto;
	resize: vertical;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element select {
	appearance: auto;
	padding-right: 2rem;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element :is(input, textarea)::placeholder {
	color: var(--pts-text);
	-webkit-text-fill-color: var(--pts-text);
	opacity: 1;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element :is(input, select, textarea):focus {
	border-color: var(--pts-purple);
	outline: 2px solid var(--pts-purple);
	outline-offset: 2px;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element :is(input[type="checkbox"], input[type="radio"]) {
	appearance: auto;
	width: 20px;
	height: 20px;
	min-height: 0;
	margin: 0 0.5rem 0 0;
	vertical-align: middle;
	accent-color: var(--pts-purple);
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element :is(input, select, textarea):disabled {
	background: var(--pts-soft);
	color: var(--pts-text);
	-webkit-text-fill-color: var(--pts-text);
	opacity: 0.7;
	cursor: not-allowed;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) :is(.nf-field-description, .nf-input-limit, .nf-help) {
	color: var(--pts-text);
	line-height: 1.5;
	overflow-wrap: anywhere;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-description:not(:empty) {
	margin-top: 0.5rem;
}

/* Preserve Ninja's configured labels, required symbols, and submission messages. */
body :is(#nf-form-2-cont, #nf-form-3-cont) .ninja-forms-req-symbol {
	color: var(--pts-purple);
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-errors {
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) :is(.nf-error-msg, .nf-error-field-errors):not(:empty) {
	margin: 0.5rem 0 0;
	padding: 0.6rem 0.8rem;
	border-left: 3px solid var(--pts-purple);
	background: var(--pts-soft);
	color: var(--pts-purple-dark);
	font-weight: 500;
	line-height: 1.5;
	overflow-wrap: anywhere;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) :is(.nf-error-msg, .nf-error-field-errors, .nf-response-msg):empty {
	display: none;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-field-element [aria-invalid="true"] {
	border-color: var(--pts-purple-dark);
	border-width: 2px;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-response-msg:not(:empty) {
	padding: 1rem 1.25rem;
	border-left: 4px solid var(--pts-purple);
	background: var(--pts-soft);
	color: var(--pts-charcoal);
	line-height: 1.6;
	overflow-wrap: anywhere;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-response-msg > :last-child {
	margin-bottom: 0;
}

/* The live layouts include a spacer cell in the submit row. Remove that space only. */
body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-row:has(.submit-container) > nf-cells > .nf-cell:not(:has(nf-field)) {
	display: none;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-row:has(.submit-container) > nf-cells > .nf-cell:has(.submit-container) {
	width: 100% !important;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .submit-container {
	margin-bottom: 0;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .submit-wrap .nf-field-element {
	width: 100%;
	text-align: right;
}

/* The ID-based rule intentionally beats the theme's !important Ninja button rules. */
body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-content .submit-wrap .nf-field-element :is(button, input[type="button"], input[type="submit"]) {
	appearance: none;
	display: inline-block;
	width: auto;
	min-width: 150px;
	max-width: 100%;
	min-height: 50px;
	margin: 0;
	padding: 15px 30px;
	border: 1px solid var(--pts-purple) !important;
	border-radius: var(--pts-radius);
	background: var(--pts-purple) !important;
	color: var(--pts-surface) !important;
	-webkit-text-fill-color: var(--pts-surface);
	font: inherit;
	font-weight: 700;
	line-height: 1.3;
	white-space: normal;
	text-align: center;
	box-shadow: none;
	cursor: pointer;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-content .submit-wrap .nf-field-element :is(button, input[type="button"], input[type="submit"]):is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) {
	border-color: var(--pts-purple-dark) !important;
	background: var(--pts-purple-dark) !important;
	color: var(--pts-surface) !important;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-content .submit-wrap .nf-field-element :is(button, input[type="button"], input[type="submit"]):focus-visible {
	outline: 2px solid var(--pts-purple);
	outline-offset: 4px;
}

body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-content .submit-wrap .nf-field-element :is(button, input[type="button"], input[type="submit"]):is(:disabled, [aria-disabled="true"]) {
	border-color: var(--pts-text) !important;
	background: var(--pts-text) !important;
	color: var(--pts-surface) !important;
	-webkit-text-fill-color: var(--pts-surface);
	opacity: 0.7;
	cursor: not-allowed;
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	body :is(#nf-form-2-cont, #nf-form-3-cont) .submit-wrap .nf-field-element :is(button, input[type="button"], input[type="submit"]) {
		transition: background-color 180ms ease, border-color 180ms ease;
	}
}

@media (max-width: 640px) {
	.pts-contact-intro__details {
		flex-direction: column;
		gap: 1rem;
	}

	body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-cell {
		width: 100% !important;
	}

	body :is(#nf-form-2-cont, #nf-form-3-cont) .nf-form-content .submit-wrap .nf-field-element :is(button, input[type="button"], input[type="submit"]) {
		width: 100%;
	}
}
/* END: Premier Contact and booking forms v2.0.8 */
