/* Cancellation flow: isolated from generic PMS form controls. */
/* The account page is a useful dashboard, but it is unnecessary chrome during this focused flow. */
.nc-pms-page .nc-membership-account-page:has(.nc-cancellation) {
	min-height: 0;
	padding-block: clamp(var(--nc-space-3, 0.75rem), 2vw, var(--nc-space-6, 1.5rem));
}

.nc-pms-page .nc-membership-account-shell:has(.nc-cancellation) {
	width: min(calc(100% - (2 * var(--nc-space-4, 1rem))), 46rem);
}

.nc-pms-page .nc-membership-account-page:has(.nc-cancellation) .nc-account-heading {
	display: none;
}

.nc-pms-page .nc-account-panel:has(.nc-cancellation) {
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.nc-pms-page .nc-cancellation {
	max-width: 46rem;
	margin: clamp(var(--nc-space-4, 1rem), 3vw, var(--nc-space-8, 2rem)) auto;
	padding: clamp(var(--nc-space-4, 1rem), 3vw, var(--nc-space-6, 1.5rem));
	border: 1px solid var(--nc-color-border, #c7d2e0);
	border-radius: calc(var(--nc-radius-surface, 0.75rem) + 0.25rem);
	background: var(--nc-color-surface, #fff);
	box-shadow: var(--nc-shadow-surface, 0 8px 24px rgb(41 63 92 / 0.08));
}

.nc-cancellation > h2 {
	max-width: 22ch;
	margin: 0 0 var(--nc-space-2, 0.5rem);
	font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem);
	letter-spacing: -0.025em;
}

.nc-cancellation > h2 + p {
	margin: 0;
	color: var(--nc-color-text-muted, #526079);
	font-size: var(--nc-font-size-sm, 0.875rem);
}

.nc-cancellation__eyebrow {
	display: inline-flex;
	align-items: center;
	min-height: 1.5rem;
	margin: 0 0 var(--nc-space-2, 0.5rem);
	padding: 0 var(--nc-space-2, 0.5rem);
	color: var(--nc-color-accent-active, #15358f);
	border-radius: 0.25rem;
	background: var(--nc-color-accent-soft, #e8efff);
	font-size: var(--nc-font-size-sm, 0.875rem);
	font-weight: var(--nc-font-weight-bold, 700);
	line-height: 1;
}

.nc-cancellation > .nc-hint {
	max-width: 60ch;
	margin: var(--nc-space-3, 0.75rem) 0 0;
	padding: var(--nc-space-2, 0.5rem) var(--nc-space-3, 0.75rem);
	border-inline-start: 0.2rem solid var(--nc-color-info, #175cd3);
	border-radius: 0 var(--nc-radius-control, 0.5rem) var(--nc-radius-control, 0.5rem) 0;
	background: var(--nc-color-info-soft, #edf4ff);
	color: var(--nc-color-text, #172033);
}

.nc-cancellation__form,
.nc-cancellation__fieldset {
	display: grid;
	gap: var(--nc-space-2, 0.5rem);
}

.nc-cancellation__fieldset {
	margin: var(--nc-space-5, 1.25rem) 0 var(--nc-space-3, 0.75rem);
	padding: 0;
	border: 0;
}

.nc-cancellation__fieldset legend {
	max-width: 42ch;
	margin-bottom: var(--nc-space-1, 0.25rem);
	font-size: var(--nc-font-size-md, 1rem);
	font-weight: var(--nc-font-weight-bold, 700);
	line-height: 1.35;
}

.nc-cancellation__choice {
	display: flex;
	align-items: center;
	gap: var(--nc-space-3, 0.75rem);
	min-height: var(--nc-size-control, 2.75rem);
	padding: var(--nc-space-2, 0.5rem) var(--nc-space-3, 0.75rem);
	color: var(--nc-color-text, #172033);
	border: 1px solid var(--nc-color-border, #c7d2e0);
	border-radius: var(--nc-radius-control, 0.5rem);
	background: var(--nc-color-surface, #fff);
	cursor: pointer;
	transition: border-color var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease), background-color var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease), box-shadow var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease), transform var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease);
}

.nc-cancellation__choice:hover {
	border-color: var(--nc-color-accent, #1d4ed8);
	background: var(--nc-color-accent-soft, #e8efff);
	box-shadow: 0 0.35rem 0.9rem rgb(29 78 216 / 0.08);
	transform: translateY(-1px);
}

.nc-cancellation__choice:has(input:checked) {
	border-color: var(--nc-color-accent, #1d4ed8);
	background: var(--nc-color-accent-soft, #e8efff);
	box-shadow: inset 0 0 0 1px var(--nc-color-accent, #1d4ed8);
	font-weight: var(--nc-font-weight-medium, 600);
}

.nc-cancellation__choice:active { transform: translateY(0); }

.nc-cancellation__choice input {
	flex: 0 0 auto;
	width: 1.25rem;
	height: 1.25rem;
	margin: 0;
	accent-color: var(--nc-color-accent, #1d4ed8);
}

.nc-cancellation__choice:focus-within {
	outline: var(--nc-focus-width, 3px) solid var(--nc-color-focus, #0b63ce);
	outline-offset: var(--nc-focus-offset, 2px);
}

.nc-cancellation .nc-label { margin-top: var(--nc-space-2, 0.5rem); }

.nc-cancellation .nc-cancellation__textarea {
	width: 100%;
	min-height: 6.5rem;
	padding: var(--nc-space-2, 0.5rem) var(--nc-space-3, 0.75rem);
	resize: vertical;
}

.nc-cancellation__review {
	margin-top: var(--nc-space-5, 1.25rem);
	padding: var(--nc-space-4, 1rem);
	border: 1px solid var(--nc-color-border, #c7d2e0);
	border-radius: var(--nc-radius-control, 0.5rem);
	background: var(--nc-color-surface-subtle, #eef3f9);
}

.nc-cancellation__review h3 { margin: 0 0 var(--nc-space-3, 0.75rem); font-size: var(--nc-font-size-md, 1rem); }

.nc-cancellation__review dl {
	display: grid;
	grid-template-columns: minmax(7.5rem, 0.38fr) 1fr;
	gap: var(--nc-space-2, 0.5rem) var(--nc-space-5, 1.25rem);
	margin: 0;
}

.nc-cancellation__review dt { color: var(--nc-color-text-muted, #526079); font-size: var(--nc-font-size-sm, 0.875rem); font-weight: var(--nc-font-weight-bold, 700); }
.nc-cancellation__review dd { margin: 0; overflow-wrap: anywhere; }

.nc-cancellation__review > p {
	margin: var(--nc-space-3, 0.75rem) 0 0;
	padding-top: var(--nc-space-3, 0.75rem);
	border-top: 1px solid var(--nc-color-border, #c7d2e0);
}

.nc-cancellation__confirmation { margin-top: var(--nc-space-3, 0.75rem); border-color: var(--nc-color-danger, #b42318); background: var(--nc-color-danger-soft, #fff0ee); }
.nc-cancellation__confirmation:hover,
.nc-cancellation__confirmation:has(input:checked) { border-color: var(--nc-color-danger, #b42318); background: var(--nc-color-danger-soft, #fff0ee); box-shadow: inset 0 0 0 1px var(--nc-color-danger, #b42318); }

.nc-cancellation__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--nc-space-2, 0.5rem);
	margin-top: var(--nc-space-4, 1rem);
	padding-top: var(--nc-space-3, 0.75rem);
	border-top: 1px solid var(--nc-color-border, #c7d2e0);
}

/* This specificity deliberately wins over the generic PMS submit-button rule. */
.nc-pms-page .nc-cancellation .nc-button {
	min-height: 3rem;
	padding: var(--nc-space-3, 0.75rem) var(--nc-space-5, 1.25rem);
	border: 1px solid var(--nc-color-accent, #1d4ed8);
	border-radius: var(--nc-radius-control, 0.5rem);
	background: var(--nc-color-accent, #1d4ed8);
	color: var(--nc-color-text-inverse, #f8fafc);
	box-shadow: none;
	font-weight: var(--nc-font-weight-bold, 700);
	transition: background-color var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease), border-color var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease), box-shadow var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease), transform var(--nc-duration-fast, 120ms) var(--nc-ease-standard, ease);
}

.nc-pms-page .nc-cancellation .nc-button:hover {
	border-color: var(--nc-color-accent-hover, #173eae);
	background: var(--nc-color-accent-hover, #173eae);
	color: var(--nc-color-text-inverse, #f8fafc);
	box-shadow: 0 0.4rem 1rem rgb(29 78 216 / 0.18);
	transform: translateY(-1px);
}

.nc-pms-page .nc-cancellation .nc-button:active { border-color: var(--nc-color-accent-active, #15358f); background: var(--nc-color-accent-active, #15358f); box-shadow: none; transform: translateY(0); }

.nc-pms-page .nc-cancellation .nc-button--secondary { border-color: var(--nc-color-border-strong, #8fa0b6); background: var(--nc-color-surface, #fff); color: var(--nc-color-accent, #1d4ed8); box-shadow: none; }
.nc-pms-page .nc-cancellation .nc-button--secondary:hover { border-color: var(--nc-color-accent, #1d4ed8); background: var(--nc-color-accent-soft, #e8efff); color: var(--nc-color-accent-hover, #173eae); box-shadow: none; }

.nc-pms-page .nc-cancellation .nc-button--danger { margin-left: auto; border-color: var(--nc-color-danger, #b42318); background: var(--nc-color-danger, #b42318); color: #fff; }
.nc-pms-page .nc-cancellation .nc-button--danger:hover { border-color: #8f1d14; background: #8f1d14; color: #fff; box-shadow: 0 0.4rem 1rem rgb(180 35 24 / 0.18); }
.nc-cancellation__actions .nc-button:last-child:not(.nc-button--danger) { margin-left: auto; }

.nc-cancellation__access-end { margin: var(--nc-space-4, 1rem) 0 0; font-weight: var(--nc-font-weight-bold, 700); }

@media (max-width: 47.99rem) {
	.nc-pms-page .nc-membership-account-page:has(.nc-cancellation) { padding-block: var(--nc-space-3, 0.75rem); }
	.nc-pms-page .nc-cancellation { margin-block: 0; }
	.nc-cancellation__fieldset { margin-top: var(--nc-space-4, 1rem); }
	.nc-cancellation__choice { min-height: var(--nc-size-control, 2.75rem); }
	.nc-cancellation__review dl { grid-template-columns: 1fr; gap: var(--nc-space-1, 0.25rem); }
	.nc-cancellation__review dd { margin-bottom: var(--nc-space-2, 0.5rem); }
	.nc-cancellation__actions { display: flex; flex-direction: column; align-items: flex-start; gap: var(--nc-space-1, 0.25rem); }
	.nc-pms-page .nc-cancellation .nc-button,
	.nc-pms-page .nc-cancellation .nc-button--danger,
	.nc-cancellation__actions .nc-button:last-child:not(.nc-button--danger) { margin-left: 0; }
	.nc-pms-page .nc-cancellation .nc-button--secondary {
		min-height: 2.25rem;
		padding: var(--nc-space-1, 0.25rem) 0;
		border-color: transparent;
		background: transparent;
		box-shadow: none;
		text-decoration: underline;
		text-decoration-thickness: 0.08em;
		text-underline-offset: 0.18em;
	}
	.nc-pms-page .nc-cancellation .nc-button--secondary:hover { border-color: transparent; background: transparent; }
	.nc-pms-page .nc-cancellation .nc-cancellation__keep {
		align-self: stretch;
		width: 100%;
		min-height: var(--nc-size-control, 2.75rem);
		padding: var(--nc-space-2, 0.5rem) var(--nc-space-3, 0.75rem);
		border-color: var(--nc-color-border-strong, #8fa0b6);
		background: var(--nc-color-surface, #fff);
		color: var(--nc-color-accent, #1d4ed8);
		text-decoration: none;
	}
	.nc-pms-page .nc-cancellation .nc-cancellation__keep:hover {
		border-color: var(--nc-color-accent, #1d4ed8);
		background: var(--nc-color-accent-soft, #e8efff);
		color: var(--nc-color-accent-hover, #173eae);
	}
	.nc-pms-page .nc-cancellation .nc-button:last-child { width: 100%; }
}
