/**
 * Public admission form.
 *
 * Scoped under .lcsa-wrap so it never leaks into the host theme.
 *
 * Host themes (Astra, and most page builders) style form controls with
 * heavier selectors than a single class, so the block at the end of this
 * file re-asserts the handful of properties they commonly override. Keep
 * new rules in the normal sections above; only add to that block when a
 * specific theme is demonstrably winning.
 */

.lcsa-wrap {
	--lcsa-ink: #16202c;
	--lcsa-muted: #5c6b7a;
	--lcsa-line: #d7dee6;
	--lcsa-bg: #ffffff;
	--lcsa-soft: #f4f7fa;
	--lcsa-brand: #1c5d99;
	--lcsa-brand-dark: #16496f;
	--lcsa-error: #c0392b;
	--lcsa-ok: #1e8449;
	--lcsa-radius: 8px;

	max-width: 1140px;
	margin: 0 auto;
	color: var(--lcsa-ink);
	/* Deliberately large. Parents fill this in once, often on a phone and
	   often not in their first language, so every label and hint has to be
	   readable without effort. The rem scale below hangs off this number. */
	font-size: 16px;
	line-height: 1.6;
}

.lcsa-wrap *,
.lcsa-wrap *::before,
.lcsa-wrap *::after {
	box-sizing: border-box;
}

.lcsa-title {
	margin: 0 0 1.25rem;
	font-size: 1.6rem;
}

/* Notices ---------------------------------------------------------------- */

.lcsa-notice {
	margin: 0 0 1.25rem;
	padding: 0.85rem 1rem;
	border-radius: var(--lcsa-radius);
	border-left: 4px solid var(--lcsa-error);
	background: #fdf0ee;
	color: #7d2418;
}

/* Step indicator --------------------------------------------------------- */

.lcsa-steps {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
	counter-reset: none;
}

.lcsa-step {
	display: flex;
	align-items: center;
	gap: 0.45rem;
	flex: 1 1 auto;
	min-width: 0;
	padding: 0.6rem 0.8rem;
	border-radius: var(--lcsa-radius);
	background: var(--lcsa-soft);
	color: var(--lcsa-muted);
	font-weight: 600;
	white-space: nowrap;
	overflow: hidden;
}

.lcsa-step.is-active {
	background: var(--lcsa-brand);
	color: #fff;
}

.lcsa-step.is-done {
	background: #e3edf6;
	color: var(--lcsa-brand-dark);
}

.lcsa-step__num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	flex: 0 0 auto;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.12);
	font-weight: 700;
	font-size: 1.3rem;
}
.lcsa-wrap.lcsa-wrap input[type="checkbox"], .lcsa-wrap.lcsa-wrap input[type="radio"] {
    position: inherit;
    opacity: 1;
	height: auto;
}
.lcsa-step.is-active .lcsa-step__num {
	background: rgba(255, 255, 255, 0.25);
}

.lcsa-step__label {
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Panels and sections ---------------------------------------------------- */

.lcsa-panel {
	display: none;
}

.lcsa-panel.is-active {
	display: block;
}

.lcsa-section {
	margin: 0 0 1.75rem;
	padding: 1.6rem 1.5rem;
	border: 1px solid var(--lcsa-line);
	border-radius: var(--lcsa-radius);
	background: var(--lcsa-bg);
}

.lcsa-section__title {
	margin: 0 0 1rem 0;
	padding: 0 ;
	font-size: 1.8rem;
	font-weight: 700;
	color: var(--lcsa-brand-dark);
}

.lcsa-grid {
	display: grid;
	/* 320px at the larger type size still gives three columns on a wide
	   card, but each one is wide enough for a full name or an address line
	   without the text running to the very edge. */
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 1.35rem 1.5rem;
	margin-top: 1.15rem;
}

/* Fields ----------------------------------------------------------------- */

.lcsa-field {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

/* Long prose needs the full row. Photographs do not: four full-width
   file inputs made the step a stack of near-empty bars, so they sit in
   the normal column flow instead. */
.lcsa-field--textarea {
	grid-column: 1 / -1;
}

.lcsa-label {
	margin-bottom: 0.45rem;
	font-size: 1.5rem;
	font-weight: 600;
	/* Ink rather than muted: a grey label over a white card is hard work for
	   an older parent on a phone in daylight. */
	color: var(--lcsa-ink);
	line-height: 1.35;
}

.lcsa-req {
	margin-left: 0.15rem;
	color: var(--lcsa-error);
}

.lcsa-input {
	width: 100%;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--lcsa-line);
	border-radius: 6px;
	background: #fff;
	color: var(--lcsa-ink);
	font: inherit;
	/* Never below 16px: iOS Safari zooms the whole page when a smaller field
	   takes focus, which throws the parent out of position mid-form. */
	min-height: 3rem;
}

.lcsa-input:focus {
	outline: 2px solid transparent;
	border-color: var(--lcsa-brand);
	box-shadow: 0 0 0 3px rgba(28, 93, 153, 0.15);
}

.lcsa-input[readonly] {
	background: var(--lcsa-soft);
	color: var(--lcsa-muted);
}

.lcsa-uppercase {
	text-transform: uppercase;
}

/* Themes often force uppercase on inputs. Computed fields are spelled out in
   words, so state their casing explicitly rather than inheriting it. */
.lcsa-input.lcsa-computed {
	text-transform: none;
}

.lcsa-date {
	text-transform: none;
}

/* Errors are announced with colour, weight and a marker, never colour alone. */
.lcsa-field--error .lcsa-input,
.lcsa-field--error select,
.lcsa-field--error textarea {
	border-color: var(--lcsa-error);
	background: #fffafa;
	box-shadow: 0 0 0 3px rgba(192, 57, 43, 0.1);
}

.lcsa-field--error .lcsa-label {
	color: var(--lcsa-error);
}

.lcsa-field--error .lcsa-radio-group,
.lcsa-field--error .lcsa-checkbox {
	padding: 0.4rem 0.6rem;
	border: 1px solid var(--lcsa-error);
	border-radius: 6px;
	background: #fffafa;
}

.lcsa-help {
	margin: 0.3rem 0 0;
	font-size: 14px;
	line-height: 1.45;
	color: var(--lcsa-muted);
}

.lcsa-error {
	display: flex;
	align-items: flex-start;
	gap: 0.3rem;
	margin: 0.35rem 0 0;
	font-size: 1.2rem;
	font-weight: 600;
	line-height: 1.4;
	color: var(--lcsa-error);
}

.lcsa-error::before {
	content: "!";
	flex: 0 0 auto;
	width: 1rem;
	height: 1rem;
	border-radius: 50%;
	background: var(--lcsa-error);
	color: #fff;
	font-size: 0.68rem;
	font-weight: 700;
	line-height: 1rem;
	text-align: center;
}

/* [hidden] must win over the flex display above. */
.lcsa-error[hidden] {
	display: none;
}

.lcsa-radio-group {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	padding-top: 0.25rem;
}

.lcsa-radio,
.lcsa-checkbox {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	cursor: pointer;
}

.lcsa-file {
	width: 100%;
	padding: 0.6rem 0.75rem;
	border: 1px solid var(--lcsa-line);
	border-radius: 6px;
	background: #fff;
	line-height: 1.4;
}

.lcsa-file::file-selector-button {
	margin-right: 0.75rem;
	padding: 0.4rem 0.9rem;
	border: 1px solid var(--lcsa-line);
	border-radius: 4px;
	background: var(--lcsa-soft);
	color: var(--lcsa-ink);
	font: inherit;
	font-size: 1.3rem;
	font-weight: 600;
	cursor: pointer;
}

/* Remove button on a photo, both for a fresh pick and a held upload. */
.lcsa-remove {
	display: inline-block;
	margin-top: 0.5rem;
	padding: 0.3rem 0.8rem;
	border: 1px solid var(--lcsa-line);
	border-radius: 4px;
	background: #fff;
	color: var(--lcsa-error);
	font: inherit;
	font-size: 1.2rem;
	font-weight: 600;
	line-height: 1.4;
	cursor: pointer;
}

.lcsa-remove:hover,
.lcsa-remove:focus {
	border-color: var(--lcsa-error);
	background: #fffafa;
}

.lcsa-held .lcsa-remove {
	margin-top: 0;
	margin-left: 0.5rem;
}

.lcsa-preview {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

.lcsa-preview img {
	max-width: 120px;
	max-height: 140px;
	margin-top: 0.5rem;
	border: 1px solid var(--lcsa-line);
	border-radius: 4px;
}

/* Honeypot: off-screen, never display:none — bots skip hidden fields. */
.lcsa-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Repeater --------------------------------------------------------------- */

.lcsa-repeater {
	margin-top: 1rem;
	overflow-x: auto;
}

.lcsa-repeater__table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.92rem;
}

.lcsa-repeater__table th,
.lcsa-repeater__table td {
	padding: 5px 7px;
	text-align: left;
	border: 1px solid #ddd;
}

.lcsa-repeater__table th {
	font-size: 14px;
	color: var(--lcsa-muted);
}

.lcsa-repeater__remove {
	border: 0;
	background: none;
	color: var(--lcsa-error);
	font-size: 2rem;
	line-height: 1;
	cursor: pointer;
	padding:10px;
}

/* Review ----------------------------------------------------------------- */

.lcsa-review {
	margin-top: 1rem;
}

.lcsa-review__group {
	margin-bottom: 1rem;
	padding-bottom: 0.6rem;
	border-bottom: 1px solid var(--lcsa-line);
}

.lcsa-review__group h4 {
	margin: 0 0 1rem 0;
	font-size: 2.5rem;
	color: var(--lcsa-brand-dark);
}

.lcsa-review__row {
	display: flex;
	gap: 0.75rem;
	padding: 0.15rem 0;
}

.lcsa-review__row dt {
	flex: 0 0 46%;
	margin: 0;
	color: var(--lcsa-muted);
}

.lcsa-review__row dd {
	flex: 1;
	margin: 0;
	font-weight: 500;
	word-break: break-word;
}

/* Photographs in the review step are shown, not named. */
.lcsa-review__photos {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
	gap: 0.75rem;
	margin-top: 0.5rem;
}

.lcsa-review__photo {
	margin: 0;
	text-align: center;
}

.lcsa-review__photo img {
	display: block;
	width: 100%;
	height: 120px;
	object-fit: cover;
	border: 1px solid var(--lcsa-line);
	border-radius: 6px;
	background: var(--lcsa-soft);
}

.lcsa-review__photo figcaption {
	margin-top: 0.3rem;
	font-size: 1.3rem;
	line-height: 1.4;
	color: var(--lcsa-muted);
}

/* A photo carried over from a failed attempt. The stored file is not
   web-readable, so its name stands in for a thumbnail. */
.lcsa-review__held {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 120px;
	padding: 0.4rem;
	border: 1px dashed var(--lcsa-line);
	border-radius: 6px;
	background: var(--lcsa-soft);
	font-size: 0.72rem;
	line-height: 1.3;
	color: var(--lcsa-muted);
	word-break: break-word;
}

.lcsa-held {
	margin: 0.4rem 0 0;
	padding: 0.45rem 0.6rem;
	border: 1px solid #cfe3cf;
	border-radius: 6px;
	background: #f0f7f0;
	font-size: 0.8rem;
	line-height: 1.4;
	color: #2d5a2d;
}

.lcsa-held__name {
	font-weight: 600;
	word-break: break-all;
}

.lcsa-held__hint {
	color: var(--lcsa-muted);
}

.lcsa-declaration {
	margin-top: 1.25rem;
	padding: 1rem;
	border-radius: var(--lcsa-radius);
	background: var(--lcsa-soft);
	font-size: 0.9rem;
}

.lcsa-declaration p {
	margin: 0 0 0.65rem;
}

/* Actions ---------------------------------------------------------------- */

.lcsa-summary {
	display: flex;
	align-items: center;
	gap: 0.45rem;
	margin: 1rem 0 0;
	padding: 0.7rem 0.9rem;
	border: 1px solid var(--lcsa-error);
	border-left-width: 4px;
	border-radius: var(--lcsa-radius);
	background: #fdf0ee;
	color: #7d2418;
	font-size: 1.2rem;
	font-weight: 600;
}

.lcsa-summary::before {
	content: "!";
	flex: 0 0 auto;
	width: 1.15rem;
	height: 1.15rem;
	border-radius: 50%;
	background: var(--lcsa-error);
	color: #fff;
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1.15rem;
	text-align: center;
}

.lcsa-summary[hidden] {
	display: none;
}

.lcsa-actions {
	display: flex;
	justify-content: space-between;
	gap: 0.75rem;
	margin-top: 1.25rem;
}

.lcsa-btn {
	padding: 0.75rem 1.6rem;
	border: 1px solid transparent;
	border-radius: 6px;
	font: inherit;
	font-weight: 600;
	font-size: 1rem;
	min-height: 2.9rem;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.lcsa-btn--primary {
	margin-left: auto;
	background: var(--lcsa-brand);
	color: #fff;
}

.lcsa-btn--primary:hover,
.lcsa-btn--primary:focus {
	background: var(--lcsa-brand-dark);
	color: #fff;
}

.lcsa-btn--ghost {
	background: #fff;
	border-color: var(--lcsa-line);
	color: var(--lcsa-muted);
}

.lcsa-btn--lg {
	padding: 0.85rem 1.8rem;
	font-size: 1rem;
}

.lcsa-btn[disabled] {
	opacity: 0.6;
	cursor: not-allowed;
}

/* Success ---------------------------------------------------------------- */

.lcsa-success {
	max-width: 560px;
	margin: 0 auto;
	padding: 2.25rem 1.75rem;
	border: 1px solid var(--lcsa-line);
	border-radius: 12px;
	background: #fff;
	text-align: center;
}

.lcsa-success__icon {
	color: var(--lcsa-ok);
	    margin-bottom: 5px;
}

.lcsa-success__title {
	margin: 0.75rem 0 0.5rem;
	font-size: 2rem;
}

.lcsa-success__msg {
	margin: 0 0 1.5rem;
	color: var(--lcsa-muted);
}

.lcsa-success__meta {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.4rem 1rem;
	margin: 0 0 1.5rem;
	padding: 1rem;
	border-radius: var(--lcsa-radius);
	background: var(--lcsa-soft);
	text-align: left;
}

.lcsa-success__meta dt {
	color: var(--lcsa-muted);
}

.lcsa-success__meta dd {
	margin: 0;
	font-weight: 600;
}

.lcsa-appno {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	color: var(--lcsa-brand-dark);
}

.lcsa-success__note {
	margin: 1.25rem 0 0;
	color: var(--lcsa-muted);
}

/* These blocks hold editor-authored HTML, so the wrapper owns the outer
   spacing and the paragraphs inside only space themselves from each other. */
.lcsa-help > p:first-child,
.lcsa-success__note > p:first-child {
	margin-top: 0;
}

.lcsa-help > p:last-child,
.lcsa-success__note > p:last-child {
	margin-bottom: 0;
}

/* Returning to an already-submitted application -------------------------- */

.lcsa-success__icon--muted {
	color: var(--lcsa-muted);
}

.lcsa-success__contact {
	margin: 0.75rem 0 0;
	font-size: 0.95rem;
	font-weight: 600;
}

.lcsa-success__note--quiet {
	margin-top: 1.75rem;
	padding-top: 1.25rem;
	border-top: 1px solid var(--lcsa-line);
}

.lcsa-success__actions--secondary {
	margin-top: 1.5rem;
}

.lcsa-btn--secondary {
	border: 1px solid var(--lcsa-line);
	background: #fff;
	color: var(--lcsa-ink);
}

.lcsa-btn--secondary:hover,
.lcsa-btn--secondary:focus {
	background: var(--lcsa-soft);
}

/* Small screens ---------------------------------------------------------- */

/* Tablets and small laptops: two columns rather than jumping straight from
   three to one, so a 768–900px screen does not waste half its width. */
@media (max-width: 1024px) {
	.lcsa-grid {
		grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
		gap: 1.15rem;
	}
}

@media (max-width: 600px) {
	.lcsa-grid {
		grid-template-columns: 1fr;
		gap: 1rem;
	}

	/* Only the current step keeps its label. Hiding every label left six
	   numbered circles with nothing to say which one you were on; hiding
	   none of them wrapped the row into an unreadable stack. */
	.lcsa-step__label {
		display: none;
	}

	.lcsa-step.is-active .lcsa-step__label {
		display: inline;
	}

	.lcsa-step {
		flex: 0 0 auto;
		justify-content: center;
	}

	.lcsa-step.is-active {
		flex: 1 1 auto;
	}

	.lcsa-section {
		padding: 1rem 0.85rem;
	}

	/* Keep controls at 16px+ so iOS Safari does not zoom the page when a
	   field takes focus, which throws the parent out of position mid-form. */
	.lcsa-wrap.lcsa-wrap input[type="text"],
	.lcsa-wrap.lcsa-wrap input[type="email"],
	.lcsa-wrap.lcsa-wrap input[type="tel"],
	.lcsa-wrap.lcsa-wrap input[type="number"],
	.lcsa-wrap.lcsa-wrap input[type="date"],
	.lcsa-wrap.lcsa-wrap select,
	.lcsa-wrap.lcsa-wrap textarea {
		font-size: 1rem;
	}

	.lcsa-actions {
		flex-direction: column-reverse;
	}

	.lcsa-btn {
		width: 100%;
	}

	.lcsa-btn--primary {
		margin-left: 0;
	}

	.lcsa-review__row {
		flex-direction: column;
		gap: 0;
	}

	.lcsa-review__row dt {
		flex-basis: auto;
	}
}

/* Theme-resistant layer --------------------------------------------------
   Astra and most page builders style inputs, buttons and headings with
   selectors heavier than a single class, which breaks this form's layout on
   a live site. Repeating the wrapper class raises specificity to 0-2-0 plus
   the element, which beats them without !important — so a site owner can
   still override deliberately from Additional CSS. */

.lcsa-wrap.lcsa-wrap {
	box-sizing: border-box;
	text-align: left;
}

.lcsa-wrap.lcsa-wrap *,
.lcsa-wrap.lcsa-wrap *::before,
.lcsa-wrap.lcsa-wrap *::after {
	box-sizing: border-box;
}

/* Controls: themes set their own padding, border, radius, height and font. */
.lcsa-wrap.lcsa-wrap input[type="text"],
.lcsa-wrap.lcsa-wrap input[type="email"],
.lcsa-wrap.lcsa-wrap input[type="tel"],
.lcsa-wrap.lcsa-wrap input[type="number"],
.lcsa-wrap.lcsa-wrap input[type="date"],
.lcsa-wrap.lcsa-wrap select,
.lcsa-wrap.lcsa-wrap textarea {
	width: 100%;
	max-width: 100%;
	/* Matches .lcsa-input above. Both declarations must agree: this layer
	   wins on a real theme, so a change made only to .lcsa-input would never
	   appear on the live site. */
	min-height: 3rem;
	margin: 0;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--lcsa-line);
	border-radius: 6px;
	background-color: #fff;
	background-image: none;
	color: var(--lcsa-ink);
	font-family: inherit;
	line-height: 1.5;
	letter-spacing: normal;
	text-transform: none;
	box-shadow: none;
}

.lcsa-wrap.lcsa-wrap textarea {
	height: auto;
}

/* Dropdowns carry short values (Female, O+, Jr. K.G) that the native
   control renders tightly, so they take a larger size than the text
   inputs. Declared after the shared block above so it wins. */

.lcsa-wrap.lcsa-wrap input.lcsa-uppercase,
.lcsa-wrap.lcsa-wrap textarea.lcsa-uppercase,
.lcsa-wrap.lcsa-wrap .lcsa-review__row dd.lcsa-uppercase {
	text-transform: uppercase;
}

.lcsa-wrap.lcsa-wrap input[readonly],
.lcsa-wrap.lcsa-wrap textarea[readonly] {
	background-color: var(--lcsa-soft);
	color: var(--lcsa-muted);
}

.lcsa-wrap.lcsa-wrap input:focus,
.lcsa-wrap.lcsa-wrap select:focus,
.lcsa-wrap.lcsa-wrap textarea:focus {
	border-color: var(--lcsa-brand);
	box-shadow: 0 0 0 3px rgba(28, 93, 153, 0.15);
	outline: 2px solid transparent;
}

.lcsa-wrap.lcsa-wrap .lcsa-field--error .lcsa-input,
.lcsa-wrap.lcsa-wrap .lcsa-field--error select,
.lcsa-wrap.lcsa-wrap .lcsa-field--error textarea {
	border-color: var(--lcsa-error);
	background-color: #fffafa;
}

/* Checkboxes and radios: themes often stretch these to full width. */
.lcsa-wrap.lcsa-wrap input[type="checkbox"],
.lcsa-wrap.lcsa-wrap input[type="radio"] {
	width: auto;
	min-height: 0;
	margin: 0;
	padding: 0;
	box-shadow: none;
}

/* Buttons: themes restyle these hardest of all. */
.lcsa-wrap.lcsa-wrap .lcsa-btn {
	display: inline-block;
	width: auto;
	min-height: 2.9rem;
	padding: 0.75rem 1.6rem;
	border: 1px solid transparent;
	border-radius: 6px;
	font-family: inherit;
	font-size: 1.5rem;
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: normal;
	text-transform: none;
	text-decoration: none;
	box-shadow: none;
}

.lcsa-wrap.lcsa-wrap .lcsa-btn--primary {
	background-color: var(--lcsa-brand);
	color: #fff;
}

.lcsa-wrap.lcsa-wrap .lcsa-btn--secondary {
	border-color: var(--lcsa-line);
	background-color: #fff;
	color: var(--lcsa-ink);
}

/* Headings and lists inside the form. */
.lcsa-wrap.lcsa-wrap .lcsa-section__title,
.lcsa-wrap.lcsa-wrap .lcsa-title,
.lcsa-wrap.lcsa-wrap .lcsa-success__title {
	clear: none;
	margin-top: 0;
	text-transform: none;
	letter-spacing: normal;
}

.lcsa-wrap.lcsa-wrap .lcsa-steps,
.lcsa-wrap.lcsa-wrap .lcsa-review__photos {
	margin-left: 0;
	padding-left: 0;
	list-style: none;
}

.lcsa-wrap.lcsa-wrap .lcsa-steps li::before,
.lcsa-wrap.lcsa-wrap .lcsa-steps li::marker {
	content: none;
}

/* The panel/step machinery must not be overridden into visibility. */
.lcsa-wrap.lcsa-wrap .lcsa-panel {
	display: none;
}

.lcsa-wrap.lcsa-wrap .lcsa-panel.is-active {
	display: block;
}

.lcsa-wrap.lcsa-wrap [hidden] {
	display: none;
}

/* Full-page template ------------------------------------------------------
   Applied only when the page uses the plugin's own page template. Themes
   vary wildly, so this stays modest: breathing room, a light backdrop and a
   card, all of which a theme can still override from Additional CSS. */

.lcsa-page {
	padding: 48px 20px 72px;
	background: #f7f9fb;
}

/* The banner already clears the header, so less space is needed above. */
.lcsa-banner + .lcsa-page {
	padding-top: 40px;
}

.lcsa-page__inner {
	/* Wide enough for three comfortable columns at the larger type size.
	   Must not be narrower than .lcsa-wrap, or it clamps the form back down. */
	max-width: 1200px;
	margin: 0 auto;
}

.lcsa-page__intro {
	max-width: 820px;
	margin: 0 auto 32px;
	text-align: center;
	color: #5c6b7a;
}

.lcsa-page__intro > :last-child {
	margin-bottom: 0;
}

/* The form centres itself at 900px; on this template let it use the wider
   column so multi-column field rows stay side by side. */
.lcsa-page .lcsa-wrap {
	max-width: 100%;
	padding: 32px;
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 2px 14px rgba(22, 32, 44, 0.06);
}

@media (max-width: 767px) {
	.lcsa-page {
		padding: 24px 12px 48px;
	}

	.lcsa-page .lcsa-wrap {
		padding: 16px;
		border-radius: 8px;
	}
}

/* Page banner ------------------------------------------------------------
   Many themes position the site header absolutely over the page and expect
   every template to open with a full-bleed banner that reserves the space.
   Without one the form slides underneath the logo and menu. This banner is
   the template's own, so the page works on any theme; a theme can replace it
   by hooking lcsa_before_admission_page. */

.lcsa-banner {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 260px;
	padding: 140px 20px 48px;
	background: #16496f;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	text-align: center;
}

.lcsa-banner--image::before {
	position: absolute;
	inset: 0;
	content: "";
	background: rgba(0, 0, 0, 0.5);
}

.lcsa-banner__inner {
	position: relative;
	z-index: 1;
	max-width: 1040px;
}

.lcsa-banner__title {
	margin: 0;
	color: #fff;
	line-height: 1.2;
}

.lcsa-banner__crumbs {
	margin-bottom: 0.5rem;
	color: rgba(255, 255, 255, 0.85);
}

.lcsa-banner__crumbs a {
	color: rgba(255, 255, 255, 0.85);
	text-decoration: none;
}

.lcsa-banner__crumbs a:hover,
.lcsa-banner__crumbs a:focus {
	color: #fff;
	text-decoration: underline;
}

.lcsa-banner__crumbs span {
	margin: 0 0.35rem;
}

@media (max-width: 767px) {
	.lcsa-banner {
		min-height: 180px;
		padding: 110px 16px 32px;
	}
}
