/**
 * NetWise Email Subscribers - front-end styles.
 *
 * Deliberately small and unopinionated: colours are set with custom
 * properties so a theme can restyle the form without overriding rules.
 * Contrast ratios of the defaults meet WCAG 2.2 AA against white.
 */

.nwes-form-wrapper {
	--nwes-accent: #1d4d7a;
	--nwes-accent-hover: #143352;
	--nwes-text: #1a1a1a;
	--nwes-muted: #4a4a4a;
	--nwes-border: #6b7280;
	--nwes-error: #a4161a;
	--nwes-error-bg: #fdf2f2;
	--nwes-success: #1b5e20;
	--nwes-success-bg: #f1f8f2;
	--nwes-radius: 4px;

	max-width: 34rem;
}

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

.nwes-message {
	border-left: 4px solid;
	border-radius: var( --nwes-radius );
	margin: 0 0 1.25rem;
	padding: 0.875rem 1rem;
}

.nwes-message p {
	margin: 0;
}

/*
 * Focus is moved here by JavaScript after submission so screen reader users
 * hear the result immediately (see assets/js/form.js). The outline colour
 * matches the message itself rather than a generic accent colour, so a
 * success message gets a green indicator and an error message a red one,
 * instead of an unrelated blue box. The outline is still required for
 * WCAG 2.2 SC 2.4.7 (Focus Visible) - do not remove it outright.
 */
.nwes-message:focus {
	outline-offset: 2px;
}

.nwes-message--success {
	background: var( --nwes-success-bg );
	border-color: var( --nwes-success );
	color: var( --nwes-success );
}

.nwes-message--success:focus {
	outline: 3px solid var( --nwes-success );
}

.nwes-message--error {
	background: var( --nwes-error-bg );
	border-color: var( --nwes-error );
	color: var( --nwes-error );
}

.nwes-message--error:focus {
	outline: 3px solid var( --nwes-error );
}

/* Form -------------------------------------------------------------- */

.nwes-form__title {
	font-size: 1.25rem;
	margin: 0 0 0.5rem;
}

.nwes-form__description {
	color: var( --nwes-muted );
	margin: 0 0 1rem;
}

.nwes-field {
	margin: 0 0 1rem;
}

.nwes-field__label {
	display: block;
	font-weight: 600;
	margin: 0 0 0.25rem;
}

.nwes-field__hint {
	color: var( --nwes-muted );
	font-weight: 400;
	margin-left: 0.25rem;
}

.nwes-field__input {
	background: #fff;
	border: 1px solid var( --nwes-border );
	border-radius: var( --nwes-radius );
	color: var( --nwes-text );
	font-size: 1rem;
	line-height: 1.5;
	min-height: 2.75rem;
	padding: 0.5rem 0.75rem;
	width: 100%;
}

.nwes-field__input:focus,
.nwes-field__checkbox:focus,
.nwes-form__submit:focus {
	outline: 3px solid var( --nwes-accent );
	outline-offset: 2px;
}

.nwes-field__input--error {
	border-color: var( --nwes-error );
	border-width: 2px;
}

/* Checkbox row: 24px minimum target, per WCAG 2.2 success criterion 2.5.8. */

.nwes-field--checkbox {
	align-items: flex-start;
	display: flex;
	gap: 0.625rem;
}

.nwes-field__checkbox {
	flex: 0 0 auto;
	height: 1.5rem;
	margin: 0.125rem 0 0;
	width: 1.5rem;
}

.nwes-field__label--checkbox {
	font-weight: 400;
	margin: 0;
}

.nwes-privacy-link {
	display: inline-block;
	margin-left: 0.25rem;
}

.nwes-form__submit {
	background: var( --nwes-accent );
	border: 2px solid var( --nwes-accent );
	border-radius: var( --nwes-radius );
	color: #fff;
	cursor: pointer;
	font-size: 1rem;
	font-weight: 600;
	min-height: 2.75rem;
	padding: 0.625rem 1.5rem;
}

.nwes-form__submit:hover {
	background: var( --nwes-accent-hover );
	border-color: var( --nwes-accent-hover );
}

/* Honeypot: hidden from sight, from screen readers and from the tab order. */

.nwes-hp {
	height: 0;
	left: -9999px;
	overflow: hidden;
	position: absolute;
	width: 0;
}

.nwes-visually-hidden {
	clip: rect( 1px, 1px, 1px, 1px );
	clip-path: inset( 50% );
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

/* Confirmation / unsubscribe screen --------------------------------- */

.nwes-endpoint {
	margin: 0 auto;
	max-width: 40rem;
	padding: 3rem 1.25rem;
}

.nwes-endpoint__panel {
	border: 1px solid #d8dce1;
	border-left-width: 5px;
	border-radius: 6px;
	padding: 1.75rem;
}

.nwes-endpoint__panel--success {
	border-left-color: #1b5e20;
}

.nwes-endpoint__panel--error {
	border-left-color: #a4161a;
}

.nwes-endpoint__heading {
	margin: 0 0 0.75rem;
}

.nwes-endpoint__heading:focus {
	outline: 3px solid #1d4d7a;
	outline-offset: 2px;
}

.nwes-endpoint__meta {
	color: #4a4a4a;
}

.nwes-endpoint__actions {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin-top: 1.5rem;
}

.nwes-endpoint__button {
	background: #1d4d7a;
	border-radius: 4px;
	color: #fff;
	display: inline-block;
	font-weight: 600;
	min-height: 2.75rem;
	padding: 0.625rem 1.25rem;
	text-decoration: none;
}

.nwes-endpoint__button:hover,
.nwes-endpoint__button:focus {
	background: #143352;
	color: #fff;
}

/* Editor preview ----------------------------------------------------- */

.nwes-block-preview {
	background: #f6f7f7;
	border: 1px dashed #8c8f94;
	border-radius: 4px;
	padding: 1rem 1.25rem;
}

.nwes-block-preview__title {
	font-size: 1.125rem;
	font-weight: 700;
	margin: 0 0 0.25rem;
}

.nwes-block-preview__field {
	background: #fff;
	border: 1px solid #c3c4c7;
	border-radius: 3px;
	color: #50575e;
	margin: 0 0 0.5rem;
	padding: 0.5rem 0.75rem;
}

.nwes-block-preview__button {
	background: #1d4d7a;
	border-radius: 3px;
	color: #fff;
	display: inline-block;
	font-weight: 600;
	margin: 0.25rem 0 0.75rem;
	padding: 0.5rem 1rem;
}

.nwes-block-preview__note {
	color: #50575e;
	font-size: 0.8125rem;
	font-style: italic;
	margin: 0;
}

@media ( prefers-reduced-motion: reduce ) {
	.nwes-form-wrapper * {
		transition: none !important;
	}
}
