/*
 * The membership application (forms/membership.php) - loaded by smartWpForms only where the form renders.
 * The generic states (the submit lock, the runtime error entrance, reduced motion, the hidden auxiliary field) are
 * smartWpForms' own forms.css; this file is the application's look. The form stands in the page's Content
 * Environment, which gives it the content gutters; here it takes its own measure and vertical rhythm.
 *
 * Every grid track is minmax(0, 1fr) and every control min-width: 0, so a long option cannot hold the form wider
 * than a 320-390 px screen.
 */

.smwp-form[data-form-id="membership"] {
	max-width: 50rem;
	margin: 0 auto;
	padding: 5rem 0;
	color: #000;
}

.membership__head {
	max-width: 42rem;
	margin: 0 auto 4rem;
	text-align: center;
	scroll-margin-top: 2rem;
}

.membership__suptitle,
.membership__heading[data-label]::before {
	display: block;
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
	text-transform: uppercase;
	letter-spacing: 0.1em;
}

.membership__suptitle {
	margin-bottom: 0.75rem;
	font-size: 0.75rem;
	font-weight: 700;
	color: #a3a3a3;
}

.membership__title {
	font-size: 1.875rem;
	font-weight: 300;
	line-height: 1.2;
}

/* the short rule between the title and the introduction */
.membership__title::after {
	content: '';
	display: block;
	width: 4rem;
	height: 1px;
	margin: 1rem auto 1.5rem;
	background: #000;
}

.membership__intro {
	font-size: 0.875rem;
	font-weight: 300;
	line-height: 1.5;
	color: #525252;
}

.membership__card {
	padding: 1.5rem;
	background: #fff;
	border: 1px solid #e5e5e5;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.membership__fields {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 3rem;
}

/* accepted: the fields give way to the confirmation */
.smwp-form.is-sent .membership__fields {
	display: none;
}

/* --- sections ------------------------------------------------------------------------- */

.membership__section,
.membership__field {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

/* a section's heading is its <legend>, closed by a hairline; a remark under it carries the hairline instead */
.membership__heading,
.membership__remark {
	margin-bottom: 1.5rem;
	padding: 0 0 0.75rem;
	border-bottom: 1px solid #e5e5e5;
}

.membership__heading {
	display: block;
	width: 100%;
	font-family: 'Playfair Display', serif;
	font-size: 1.25rem;
	font-weight: 300;
	line-height: 1.4;
}

.membership__heading:has(+ .membership__remark) {
	margin-bottom: 0.25rem;
	padding-bottom: 0;
	border-bottom: 0;
}

/* a section's small label ("Payment"): drawn, so the legend's text stays the group's name */
.membership__heading[data-label]::before {
	content: attr(data-label);
	margin-bottom: 0.25rem;
	font-size: 0.6875rem;
	font-weight: 400;
	line-height: 1.5;
	color: #a3a3a3;
}

.membership__heading small,
.membership__remark,
.membership__count,
.membership__choice-remark,
.membership__secure {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
}

.membership__heading small {
	font-size: 0.75rem;
	color: #a3a3a3;
}

.membership__remark {
	font-size: 0.75rem;
	color: #737373;
}

/* --- choice cards (membership types, payment methods) ---------------------------------- */

.membership__tiers,
.membership__methods {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1.25rem;
}

.membership__methods {
	gap: 0.75rem;
}

.membership__choice {
	position: relative;
	display: flex;
	min-width: 0;
	scroll-margin-top: 6rem;
}

.membership__choice input,
.membership__consent input {
	flex: none;
	width: 1rem;
	height: 1rem;
	accent-color: #000;
}

.membership__choice input {
	position: absolute;
	top: 1.125rem;
	left: 1rem;
	z-index: 1;
}

.membership__choice--tier input {
	top: 1.75rem;
	left: auto;
	right: 1.5rem;
}

.membership__choice-box {
	flex: 1;
	min-width: 0;
	padding: 1rem 1rem 1rem 2.75rem;
	background: #fff;
	border: 1px solid #e5e5e5;
	transition: border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
}

.membership__choice--tier .membership__choice-box {
	display: flex;
	flex-direction: column;
	padding: 1.5rem;
}

.membership__choice:hover .membership__choice-box {
	border-color: #a3a3a3;
}

.membership__choice input:checked + .membership__choice-box {
	background: #fafafa;
	border-color: #000;
	box-shadow: 0 0 0 1px #000;
}

.membership__choice input:focus-visible + .membership__choice-box {
	outline: 2px solid #000;
	outline-offset: 2px;
}

/* the option's label is its title; stretched over the card, it makes the whole card the control */
.membership__choice-title::after,
.membership__choice-name::after {
	content: '';
	position: absolute;
	inset: 0;
	cursor: pointer;
}

.membership__choice-title {
	display: block;
	padding-right: 2.5rem;
	font-family: 'Playfair Display', serif;
	font-size: 1.125rem;
	font-weight: 500;
	line-height: 1.55;
}

.membership__choice-text {
	flex: 1;
	margin: 1rem 0;
	font-size: 0.75rem;
	font-weight: 300;
	line-height: 1.625;
	color: #525252;
}

.membership__choice-fee {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-top: 0.75rem;
	border-top: 1px solid #e5e5e5;
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
	font-size: 0.75rem;
	text-transform: uppercase;
	color: #737373;
}

.membership__choice-fee strong {
	font-weight: 600;
	color: #000;
}

.membership__choice-badge {
	position: absolute;
	top: 0;
	right: 0;
	padding: 0.125rem 0.625rem;
	background: #000;
	color: #fff;
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
	font-size: 0.5625rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.membership__choice-name,
.membership__label,
.membership__age span,
.membership__consent strong,
.membership__status,
.membership__again {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
	font-size: 0.75rem;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

.membership__choice-name {
	display: block;
	font-weight: 500;
	line-height: 1.35;
}

.membership__choice-remark {
	margin-top: 0.125rem;
	font-size: 0.625rem;
	color: #737373;
}

/* --- fields ---------------------------------------------------------------------------- */

.membership__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1.5rem;
}

.membership__label {
	display: block;
	margin-bottom: 0.5rem;
	color: #404040;
}

legend.membership__label {
	padding: 0;
}

/* the remark beside a label is not part of the field's name: a required mark, a hint */
.membership__label [aria-hidden],
.membership__label[data-note]::after {
	color: #a3a3a3;
}

.membership__label[data-note]::after {
	content: ' ' attr(data-note);
}

.membership__input {
	display: block;
	width: 100%;
	min-width: 0;
	padding: 0.875rem;
	background: #fff;
	border: 1px solid #d4d4d4;
	border-radius: 0;
	color: #000;
	font-size: 0.875rem;
	font-weight: 300;
	transition: border-color 0.15s ease;
}

.membership__input::placeholder {
	color: #a3a3a3;
}

.membership__input:focus {
	border-color: #000;
	outline: none;
}

.membership__input[aria-invalid="true"] {
	border-color: #ef4444;
}

.membership__input--area {
	padding: 1rem;
	line-height: 1.625;
	resize: vertical;
}

.membership__count {
	margin-top: 0.25rem;
	font-size: 0.625rem;
	color: #a3a3a3;
	text-align: right;
}

.membership__ages {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0.5rem;
}

.membership__age {
	position: relative;
	display: block;
}

/* the radio stays in the tab order and the accessibility tree; the chip beside it is what is seen */
.membership__age input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.membership__age span {
	display: block;
	padding: 0.625rem 0.75rem;
	background: #fafafa;
	border: 1px solid #e5e5e5;
	color: #525252;
	text-align: center;
	transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}

.membership__age:hover span {
	border-color: #000;
}

.membership__age input:checked + span {
	background: #000;
	border-color: #000;
	color: #fff;
	font-weight: 500;
}

.membership__age input:focus-visible + span {
	outline: 2px solid #000;
	outline-offset: 2px;
}

/* --- consent, assurance, submit --------------------------------------------------------- */

.membership__close {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1rem;
	padding-top: 1rem;
	border-top: 1px solid #e5e5e5;
}

.membership__consent {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	padding: 1rem;
	background: #fafafa;
	border: 1px solid #e5e5e5;
	cursor: pointer;
}

.membership__consent input {
	margin-top: 0.125rem;
}

.membership__consent-copy {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
	font-size: 0.6875rem;
	font-weight: 300;
	line-height: 1.625;
	color: #525252;
}

.membership__consent strong {
	display: block;
	margin-bottom: 0.25rem;
	font-weight: 600;
	color: #000;
}

/* the consent is required: its mark is drawn here so the label's text stays the statement alone */
.membership__consent strong::before {
	content: '* ';
}

.membership__secure {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.625rem;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #737373;
}

/* the shield of the assurance (lucide shield-check), drawn as a mask so it takes the colour below */
.membership__secure::before {
	content: '';
	flex: none;
	width: 0.75rem;
	height: 0.75rem;
	background: #404040;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E") center / contain no-repeat;
}

.membership__submit {
	width: 100%;
	margin-top: 1rem;
	padding: 1.25rem 2rem;
	background: #000;
	border-color: #000;
	letter-spacing: 0.25em;
	cursor: pointer;
}

/* --- messages --------------------------------------------------------------------------- */

/* the form's one live region: always in the document (so it is announced), collapsed while empty */
.membership__status {
	margin-bottom: 3rem;
	padding: 1rem;
	background: #171717;
	border-left: 4px solid #ef4444;
	color: #fff;
	line-height: 1.5;
	outline: none;
	opacity: 0;
	transform: translateY(-4px);
	transition: opacity 0.2s ease, transform 0.2s ease;
}

.membership__status:empty {
	margin: 0;
	padding: 0;
	border: 0;
}

.membership__status.is-shown {
	opacity: 1;
	transform: none;
}

/* accepted: the confirmation panel is what is seen; the server's sentence is still announced */
.membership__status.is-success {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	clip-path: inset(50%);
}

.smwp-form[data-form-id="membership"] .form-error {
	clear: both;
	margin-top: 0.5rem;
	font-size: 0.6875rem;
	line-height: 1.5;
	color: #dc2626;
}

/* --- confirmation ----------------------------------------------------------------------- */

.membership__done {
	text-align: center;
}

.membership__done-mark {
	width: 4rem;
	height: 4rem;
	margin: 0 auto 1.5rem;
	padding: 1rem;
	border: 1px solid #000;
}

.membership__done-title {
	margin-bottom: 1rem;
	font-size: 1.875rem;
	font-weight: 300;
	overflow-wrap: anywhere;
}

.membership__done-lead,
.membership__done-text {
	max-width: 36rem;
	margin: 0 auto 2rem;
	font-size: 0.875rem;
	font-weight: 300;
	line-height: 1.625;
	color: #525252;
}

.membership__done-lead strong {
	font-weight: 600;
	color: #000;
}

.membership__done-text {
	max-width: 32rem;
	font-size: 0.75rem;
	color: #737373;
}

.membership__summary {
	max-width: 32rem;
	margin: 0 auto 2rem;
	padding: 1.5rem;
	background: #fff;
	border: 1px solid #e5e5e5;
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
	font-size: 0.75rem;
	text-align: left;
}

.membership__summary div {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.5rem 0;
	border-bottom: 1px solid #f5f5f5;
}

.membership__summary div:last-child {
	border-bottom: 0;
}

.membership__summary dt {
	flex: none;
	text-transform: uppercase;
	color: #a3a3a3;
}

.membership__summary dd {
	margin: 0;
	min-width: 0;
	overflow-wrap: anywhere;
	text-align: right;
}

.membership__again {
	padding: 0.75rem 2rem;
	background: none;
	border: 1px solid #000;
	color: #000;
	letter-spacing: 0.1em;
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease;
}

.membership__again:hover,
.membership__again:focus-visible {
	background: #000;
	color: #fff;
}

@media (min-width: 640px) {
	.membership__card {
		padding: 2.5rem;
	}

	.membership__methods {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.membership__ages {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}
}

@media (min-width: 768px) {
	.smwp-form[data-form-id="membership"] {
		padding: 8rem 0;
	}

	.membership__card {
		padding: 3.5rem;
	}

	.membership__title {
		font-size: 3rem;
	}

	.membership__intro {
		font-size: 1rem;
	}

	.membership__heading {
		font-size: 1.5rem;
	}

	.membership__tiers,
	.membership__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.membership__field--wide {
		grid-column: 1 / -1;
	}

	.membership__done {
		padding: 1.5rem 0;
	}

	.membership__done-title {
		font-size: 2.25rem;
	}

	.membership__done-lead {
		font-size: 1rem;
	}
}

@media (prefers-reduced-motion: reduce) {
	.membership__input,
	.membership__choice-box,
	.membership__age span,
	.membership__status,
	.membership__again {
		transition: none;
		transform: none;
	}
}
