/**
 * Section — Account forms (shared customer form pieces)
 *
 * Pre-DNA customer pass, 2026-10-02. Loaded by the Basket, Log in /
 * Create Account and every account page, so the same few pieces look and
 * behave the same everywhere: outcome notices, the on/off switch (Basket
 * Points, Marketing Preferences), checkbox rows (confirmations and
 * marketing), labelled form fields with their hints and errors, and the
 * Create Account layout. Class names keep the prefixes of the page they
 * were first built for (ec-basket-notice, ec-pay__switch, ec-pay__check).
 */

/* Notices (shared with the account pages) */
.ec-basket-notice {
	display: flex;
	align-items: flex-start;
	gap: var(--ec-space-2);
	margin: var(--ec-space-4) 0 0;
	padding: var(--ec-space-3) var(--ec-space-4);
	border: 1px solid var(--ec-color-border);
	border-left-width: 3px;
	border-radius: var(--ec-radius-md);
	background-color: var(--ec-color-surface);
	color: var(--ec-color-text-primary);
	font-size: var(--ec-font-size-body-sm);
}

.ec-basket-notice p {
	margin: 0;
}

.ec-basket-notice .ec-icon {
	flex-shrink: 0;
	margin-top: 0.15em;
}

.ec-basket-notice--success {
	border-left-color: var(--ec-color-accent);
}

.ec-basket-notice--success .ec-icon {
	color: var(--ec-color-accent);
}

.ec-basket-notice--error {
	border-left-color: #e0645f;
	background-color: rgba(194, 59, 59, 0.1);
}

.ec-basket-notice--error .ec-icon {
	color: #f08a85;
}

.ec-basket-notice--info {
	border-left-color: var(--ec-color-border-strong);
}

.ec-basket__sr {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
}

/* Switch (also Marketing Preferences) */
.ec-pay__switch {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	min-height: 2.75rem;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.ec-pay__switch-track {
	position: relative;
	display: block;
	width: 2.75rem;
	height: 1.5rem;
	border: 1px solid var(--ec-color-border-strong);
	border-radius: var(--ec-radius-full);
	background-color: var(--ec-color-surface-sunken);
	transition: background-color var(--ec-duration-fast) var(--ec-ease-standard), border-color var(--ec-duration-fast) var(--ec-ease-standard);
}

.ec-pay__switch-thumb {
	position: absolute;
	top: 50%;
	left: 0.2rem;
	width: 1.05rem;
	height: 1.05rem;
	border-radius: 50%;
	background-color: var(--ec-color-text-secondary);
	transform: translateY(-50%);
	transition: transform var(--ec-duration-fast) var(--ec-ease-standard), background-color var(--ec-duration-fast) var(--ec-ease-standard);
}

.ec-pay__switch[aria-checked='true'] .ec-pay__switch-track {
	border-color: var(--ec-color-accent);
	background-color: rgba(44, 213, 227, 0.35);
}

.ec-pay__switch[aria-checked='true'] .ec-pay__switch-thumb {
	background-color: var(--ec-color-text-primary);
	transform: translate(1.2rem, -50%);
}

.ec-pay__switch:focus-visible {
	outline: none;
}

.ec-pay__switch:focus-visible .ec-pay__switch-track {
	box-shadow: var(--ec-focus-ring);
}

.ec-pay__switch[aria-busy='true'] {
	opacity: 0.6;
	cursor: progress;
}

/* Checkbox rows (also Create Account) */
.ec-pay__check {
	display: flex;
	align-items: flex-start;
	gap: var(--ec-space-3);
	min-height: 2.75rem;
	padding: var(--ec-space-1) 0;
	color: var(--ec-color-text-secondary);
	font-size: var(--ec-font-size-body-sm);
	line-height: var(--ec-line-height-base);
	cursor: pointer;
}

.ec-pay__check .ec-checkbox {
	margin-top: 0.1rem;
}

.ec-pay__check strong {
	color: var(--ec-color-text-primary);
}

.ec-pay__check em {
	color: var(--ec-color-text-tertiary);
	font-style: normal;
}

.ec-pay__check--required {
	padding: var(--ec-space-3);
	border: 1px solid var(--ec-color-border-strong);
	border-radius: var(--ec-radius-md);
	background-color: var(--ec-color-surface);
	color: var(--ec-color-text-primary);
}

/* Required confirmation: a clearly visible unchecked box (2026-10-02);
   the checked state is the primitive's own, unchanged. */
.ec-pay__check--required .ec-checkbox:not(:checked) {
	border-color: var(--ec-color-text-tertiary);
	background-color: var(--ec-color-surface-sunken);
}

.ec-pay__check--error {
	border-color: #e0645f;
}

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

.ec-form-field {
	display: grid;
	gap: var(--ec-space-1);
	min-width: 0;
}

.ec-form-field__label {
	color: var(--ec-color-text-primary);
	font-size: var(--ec-font-size-body-sm);
	font-weight: var(--ec-font-weight-medium);
}

.ec-form-field__optional {
	color: var(--ec-color-text-tertiary);
	font-weight: var(--ec-font-weight-regular);
}

.ec-form-field__hint {
	margin: 0;
	color: var(--ec-color-text-tertiary);
	font-size: var(--ec-font-size-caption);
}

.ec-form-field__error {
	margin: 0;
	color: #f3a29d;
	font-size: var(--ec-font-size-caption);
}

.ec-form-field .ec-input:disabled {
	opacity: 0.65;
}

/* Create Account ----------------------------------------------------- */

.ec-register-section {
	display: flex;
	justify-content: center;
}

.ec-register {
	box-sizing: border-box;
	width: 100%;
	max-width: 46rem;
	padding: var(--ec-space-6);
	border: 1px solid var(--ec-color-border);
	border-radius: var(--ec-radius-lg);
	background-color: var(--ec-color-surface-elevated);
	box-shadow: var(--ec-elevation-2);
}

.ec-register__head {
	margin-bottom: var(--ec-space-5);
}

.ec-register__title {
	margin: 0 0 var(--ec-space-2);
	font-size: var(--ec-font-size-h3);
	font-weight: var(--ec-font-weight-bold);
	letter-spacing: var(--ec-letter-spacing-tight);
	color: var(--ec-color-text-primary);
}

.ec-register__intro,
.ec-register__login {
	margin: 0;
	color: var(--ec-color-text-secondary);
}

.ec-register__login {
	margin-top: var(--ec-space-2);
	font-size: var(--ec-font-size-body-sm);
}

.ec-register__summary {
	margin-bottom: var(--ec-space-5);
	padding: var(--ec-space-4);
	border: 1px solid #e0645f;
	border-radius: var(--ec-radius-md);
	background-color: rgba(194, 59, 59, 0.1);
	color: var(--ec-color-text-primary);
}

.ec-register__summary:focus {
	outline: none;
	box-shadow: var(--ec-focus-ring);
}

.ec-register__summary-title {
	margin: 0 0 var(--ec-space-2);
	font-weight: var(--ec-font-weight-bold);
}

.ec-register__summary ul {
	margin: 0;
	padding-left: var(--ec-space-5);
	font-size: var(--ec-font-size-body-sm);
}

.ec-register__summary a {
	color: #f8c4c0;
}

.ec-register__form {
	display: grid;
	gap: var(--ec-space-5);
}

.ec-register__group {
	display: grid;
	gap: var(--ec-space-3);
	min-width: 0;
	margin: 0;
	padding: 0 0 var(--ec-space-5);
	border: 0;
	border-bottom: 1px solid var(--ec-color-border);
}

.ec-register__legend {
	padding: 0;
	margin-bottom: var(--ec-space-1);
	color: var(--ec-color-text-primary);
	font-size: var(--ec-font-size-body-lg);
	font-weight: var(--ec-font-weight-bold);
}

.ec-register__group-note {
	margin: 0;
	color: var(--ec-color-text-secondary);
	font-size: var(--ec-font-size-body-sm);
}

.ec-register__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--ec-space-3) var(--ec-space-4);
}

@media (min-width: 640px) {
	.ec-register__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ec-register__grid--three {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.ec-register__referral summary {
	min-height: 2.75rem;
	display: flex;
	align-items: center;
	color: var(--ec-color-accent-strong);
	font-size: var(--ec-font-size-body-sm);
	cursor: pointer;
}

.ec-register__referral summary:focus-visible {
	outline: none;
	box-shadow: var(--ec-focus-ring);
	border-radius: var(--ec-radius-sm);
}

.ec-register__submit {
	box-sizing: border-box;
	width: 100%;
	justify-content: center;
}

@media (max-width: 639px) {
	.ec-register {
		padding: var(--ec-space-5) var(--ec-space-4);
	}
}

/* Welcome Reward proposition on Create account (15 Oct 2026) */
.ec-register__welcome {
	margin: var(--ec-space-3) 0 0;
	padding: 0.75rem 0.9rem;
	border: 1px solid rgba(124, 236, 243, 0.3);
	border-radius: var(--ec-radius-md, 0.6rem);
	background: rgba(44, 213, 227, 0.07);
}

.ec-register__welcome-title {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	margin: 0;
	color: var(--ec-color-text-primary);
	font-weight: var(--ec-font-weight-bold);
}

.ec-register__welcome-title .ec-icon {
	color: var(--ec-color-accent);
}

.ec-register__welcome-terms {
	margin: 0.25rem 0 0;
	color: var(--ec-color-text-secondary);
	font-size: var(--ec-font-size-body-sm);
}
