/*
 * WBS editorial system — approved written brief, 2 September 2026.
 * Shared public/editor treatment. Existing blocks, imagery and records are retained.
 * Native explicit block colour choices remain editable and take precedence.
 */
body,
.editor-styles-wrapper {
	background: var(--wbs-page-background);
	color: var(--wbs-text-primary);
	font-family: var(--wbs-font-body);
	font-size: var(--wbs-font-size-body);
	font-weight: var(--wbs-font-weight-body);
	line-height: var(--wbs-line-height-body);
}

.wbs-page-main :is(h1, h2, h3, h4, h5, h6),
.wbs-site-footer :is(h2, h3),
.editor-styles-wrapper :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--wbs-font-heading);
	font-weight: var(--wbs-font-weight-heading);
	letter-spacing: var(--wbs-letter-spacing-heading);
	line-height: var(--wbs-line-height-heading);
}

.wbs-page-main :is(h1, h2, h3, h4, h5, h6):not(.has-text-color),
.editor-styles-wrapper :is(h1, h2, h3, h4, h5, h6):not(.has-text-color) {
	color: var(--wbs-heading-color);
}

.wbs-page-main h1, .editor-styles-wrapper h1 { font-size: var(--wbs-font-size-h1); }
.wbs-page-main h2, .editor-styles-wrapper h2 { font-size: var(--wbs-font-size-h2); }
.wbs-page-main h3, .editor-styles-wrapper h3 { font-size: var(--wbs-font-size-h3); }

.wbs-page-main :is(p, li),
.editor-styles-wrapper :is(p, li) { line-height: var(--wbs-line-height-body); }
.wbs-page-main :is(p, li):not(.has-text-color) { color: inherit; }

.wbs-lead, .is-style-wbs-lead { font-size: var(--wbs-font-size-lead); line-height: 1.7; }

body :is(.wbs-eyebrow, .wbs-label, .is-style-wbs-eyebrow, .wbs-badge,
.wbs-primary-menu a, .wbs-nav-link, .wbs-text-link, .wbs-site-name,
.wbs-profile-card__role, .wbs-profile-card__details summary,
.wbs-course-filters legend, .wbs-progression__step, .wbs-skip-link,
.wbs-preview-label, label, .wbs-field-label, summary, th),
.editor-styles-wrapper :is(label, summary) {
	font-family: var(--wbs-font-label);
	font-weight: var(--wbs-font-weight-heading);
}

body :is(.wbs-eyebrow, .wbs-label, .is-style-wbs-eyebrow) {
	font-size: var(--wbs-font-size-label);
	letter-spacing: var(--wbs-letter-spacing-label);
	line-height: 1.4;
}

.wbs-page-main :is(strong, b) {
	font-family: var(--wbs-font-label);
	font-weight: 500;
}

.wbs-site-header, .home .wbs-site-header {
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
	box-shadow: none;
}
.wbs-site-header { background: var(--wbs-surface-background); }
.home .wbs-site-header__inner {
	background: var(--wbs-surface-background);
	border-radius: var(--wbs-radius-large);
	box-shadow: var(--wbs-shadow-soft);
}
.wbs-primary-menu a { font-size: var(--wbs-font-size-small); }
.wbs-primary-menu a:hover, .wbs-primary-menu .current-menu-item > a {
	color: var(--wbs-action-secondary);
}

body :is(.wbs-button, .wp-block-button__link, button, input[type="submit"], input[type="button"]) {
	border-radius: var(--wbs-radius-small);
	font-family: var(--wbs-font-label);
	font-size: var(--wbs-font-size-button);
	font-weight: var(--wbs-font-weight-heading);
	letter-spacing: 0.01em;
	line-height: 1.35;
	min-height: 3rem;
	padding: 0.875rem 1.5rem;
}

.wbs-page-content .wp-block-button .wp-block-button__link,
.editor-styles-wrapper .wp-block-button .wp-block-button__link {
	font-family: var(--wbs-font-label);
	font-weight: var(--wbs-font-weight-heading);
}

.wbs-page-content .wp-block-button:not(.is-style-outline) .wp-block-button__link:not(.has-background),
.home .wbs-hero-copy .wp-block-button:not(.is-style-outline) .wp-block-button__link:not(.has-background),
body .wbs-button--primary, .wbs-site-header .wbs-menu-toggle,
.wbs-primary-menu > li:last-child > a, .home .wbs-primary-menu > li:last-child > a,
body button[type="submit"] {
	background: var(--wbs-action-primary);
	border-color: var(--wbs-action-primary);
	color: var(--wbs-action-text);
	border-radius: var(--wbs-radius-small);
	box-shadow: none;
}

.wbs-page-content .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.home .wbs-hero-copy .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
body .wbs-button--primary:hover, .wbs-site-header .wbs-menu-toggle:hover,
.wbs-primary-menu > li:last-child > a:hover, .home .wbs-primary-menu > li:last-child > a:hover,
body button[type="submit"]:hover {
	background: var(--wbs-action-hover);
	border-color: var(--wbs-action-hover);
	color: var(--wbs-action-hover-text);
	transform: none;
}

body .wbs-button--secondary,
.wbs-page-content .wp-block-button.is-style-outline .wp-block-button__link {
	background: var(--wbs-surface-background);
	border-color: var(--wbs-action-primary);
	color: var(--wbs-action-secondary);
}
body .wbs-button--secondary:hover,
.wbs-page-content .wp-block-button.is-style-outline .wp-block-button__link:hover {
	background: var(--wbs-soft-background);
	color: var(--wbs-action-secondary);
}

.wbs-page-main a:not(.wp-block-button__link):not(.wbs-button) { color: var(--wbs-action-secondary); }
.wbs-page-main a:not(.wp-block-button__link):not(.wbs-button):hover,
.wbs-profile-card__details summary:hover { color: var(--wbs-text-secondary); }

body :is(a, button, input, select, textarea, summary):focus-visible {
	outline: var(--wbs-focus-width) solid var(--wbs-focus);
	outline-offset: var(--wbs-focus-width);
	box-shadow: 0 0 0 2px var(--wbs-surface-background);
}

/* Explicit form focus overrides inherited Astra field-reset declarations. */
.wbs-page-main :is(.wbs-enquiry-form, .wbs-course-filters) :is(input, select, textarea):focus {
	border-color: var(--wbs-focus) !important;
	outline: var(--wbs-focus-width) solid var(--wbs-focus) !important;
	outline-offset: var(--wbs-focus-width);
}

.wbs-page-header { background: var(--wbs-page-background); }
.wbs-page-header::after, .wbs-team-listing.alignfull::before { display: none; }
.wbs-page-section--tinted:not(.has-background),
.wbs-page-content > .wbs-page-section--tinted.alignfull:not(.has-background) {
	background: var(--wbs-soft-background);
}
.wbs-page-section--dark:not(.has-background),
.wbs-page-content > .wbs-page-section--dark.alignfull:not(.has-background) {
	background: var(--wbs-soft-background);
	color: var(--wbs-text-primary);
}

/* Keep the approved cinematic composition, with the new written type scale. */
.home .wbs-cinematic-hero .wp-block-cover__background {
	background: var(--wbs-color-text) !important;
	/* AA white-copy contrast even when a supplied image is white underneath. */
	opacity: 0.74 !important;
}
.home .wbs-hero-copy { backdrop-filter: none; -webkit-backdrop-filter: none; max-width: 50rem; }
.home .wbs-hero-copy :is(h1, h3) {
	font-size: var(--wbs-font-size-hero);
	font-weight: 500;
	letter-spacing: -0.025em;
	line-height: 1.08;
	max-width: 16ch;
}
.home .wbs-hero-copy :is(h1, h3, p):not(.has-text-color) { color: var(--wbs-on-dark); }
.home .wbs-hero-copy .is-style-wbs-lead {
	font-size: var(--wbs-font-size-lead);
	line-height: var(--wbs-line-height-body);
	max-width: 68ch;
}
.home .wbs-hero-copy .is-style-wbs-eyebrow { color: var(--wbs-on-dark); }

/* Refine existing homepage sections rather than changing their order or copy. */
.home .wbs-page-content > .wbs-page-section { padding-block: var(--wbs-section-space); }
.home .wbs-page-content > .wbs-page-section:nth-child(2):not(.has-background),
.home .wbs-page-content > .wbs-page-section:nth-child(7):not(.has-background) {
	background: var(--wbs-surface-background);
}
.home .wbs-page-content > .wbs-page-section:nth-child(3):not(.has-background) {
	background: var(--wbs-page-background);
}
.home .wbs-page-content > .wbs-page-section:nth-child(4):not(.has-background) {
	background: var(--wbs-soft-background);
}
.home .wbs-page-content > .wbs-page-section:nth-child(5):not(.has-background) {
	background: var(--wbs-surface-background);
}
.home .wbs-page-content > .wbs-page-section:nth-child(6):not(.has-background) {
	background: var(--wbs-color-teal-deep);
	color: var(--wbs-on-dark);
}
.home .wbs-page-content > .wbs-page-section:nth-child(6) :is(h2, .wbs-dynamic-block__heading) {
	color: var(--wbs-on-dark);
}
.home .wbs-page-content > .wbs-page-section:nth-child(6) > .is-style-wbs-eyebrow { color: var(--wbs-on-dark); }
.home .wbs-page-content > .wbs-page-section:nth-child(6) .wbs-awards__year > summary {
	color: var(--wbs-gold-accent);
	font-size: max(1.5rem, var(--wbs-font-size-h3));
}
.home .wbs-page-content > .wbs-page-section:nth-child(8):not(.has-background) {
	background: var(--wbs-color-teal-primary);
	color: var(--wbs-on-dark);
}
.home .wbs-page-content > .wbs-page-section:nth-child(8) :is(h2, h3, h4, p, a) {
	color: var(--wbs-on-dark);
}
.home .wbs-page-content > .wbs-page-section:nth-child(8) .wp-block-button__link {
	background: var(--wbs-surface-background) !important;
	border-color: var(--wbs-surface-background) !important;
	color: var(--wbs-action-secondary) !important;
}
.home .wbs-page-content > .wbs-page-section:nth-child(8) .wp-block-button__link:hover {
	background: var(--wbs-soft-background) !important;
}
.home .wbs-page-content > .wbs-page-section:is(:nth-child(3), :nth-child(4), :nth-child(7), :nth-child(8)) {
	border-radius: var(--wbs-radius-large);
}

.home .wbs-pathway-grid > .wp-block-column:nth-child(n) .is-style-wbs-card:not(.has-background),
.wbs-card:not(.has-background), .is-style-wbs-card:not(.has-background),
.wbs-team-listing .wbs-profile-card, .wbs-course-card,
.wbs-award-card, .wbs-logo-card {
	background: var(--wbs-surface-background);
	border-radius: var(--wbs-radius-large);
	box-shadow: var(--wbs-shadow-soft);
	color: var(--wbs-text-primary);
}
.home .wbs-pathway-grid > .wp-block-column:nth-child(n) .is-style-wbs-card {
	padding: var(--wbs-card-padding);
	transform: none;
}
.wbs-team-listing.alignfull { background: var(--wbs-page-background); }
.wbs-team-listing .wbs-profile-card__media { background: var(--wbs-soft-background); }
.wbs-team-listing .wbs-profile-card__role { text-transform: none; letter-spacing: 0.02em; }
.home .wbs-gallery > .wp-block-image,
.home .wbs-page-content > .wbs-page-section:nth-child(4) :is(img, .wp-block-image) {
	border-radius: var(--wbs-radius-large);
}
.wbs-course-card__media img { border-radius: var(--wbs-radius-medium); }
.wbs-course-filters { background: var(--wbs-soft-background); }
.wbs-page-main .wbs-course-detail h4 { font-size: 1rem; }

.wbs-enquiry-form {
	background: var(--wbs-surface-background);
	border-radius: var(--wbs-radius-large);
	max-width: var(--wbs-reading-width);
	padding: clamp(1.5rem, 4vw, 3rem);
}

body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]), select, textarea) {
	background: var(--wbs-surface-background);
	border-color: var(--wbs-field-border);
	color: var(--wbs-text-primary);
	font-family: var(--wbs-font-body);
	font-weight: 400;
}
body :is(button, input[type="submit"]):disabled {
	background: var(--wbs-soft-background);
	border-color: var(--wbs-border);
	color: var(--wbs-text-primary);
	opacity: 1;
}

.wbs-site-footer { background: var(--wbs-dark-background); color: var(--wbs-on-dark-secondary); }
.wbs-site-footer__cta { background: var(--wbs-soft-background); color: var(--wbs-text-primary); }
.wbs-site-footer__cta :is(h3, .wbs-eyebrow) { color: var(--wbs-heading-color); }
.wbs-site-footer__cta .wbs-button--primary { background: var(--wbs-action-primary); color: var(--wbs-action-text); }
.wbs-site-footer__cta .wbs-button--primary:hover { background: var(--wbs-action-hover); color: var(--wbs-on-dark); }
.wbs-site-footer__grid h3 { font-size: 1rem; letter-spacing: 0; }
.wbs-site-footer__grid :is(h3, a) { color: var(--wbs-on-dark); }
.wbs-site-footer__grid a:hover { color: var(--wbs-on-dark-secondary); }
.wbs-site-footer__legal { color: var(--wbs-on-dark-secondary); }

/* Palette utility classes continue to honour individual WordPress colour choices. */
.has-canvas-background-color { background-color: var(--wbs-page-background) !important; }
.has-aqua-accent-background-color { background-color: var(--wbs-action-primary) !important; }
.has-aqua-accent-color { color: var(--wbs-action-secondary) !important; }

@media (max-width: 68rem) {
	.wbs-primary-menu a { font-size: 1rem; }
	.home .wbs-primary-navigation { border-radius: var(--wbs-radius-large); }
}

@media (max-width: 48rem) {
	.home .wbs-site-header__inner { border-radius: var(--wbs-radius-large); }
	.home .wbs-page-content > .wbs-page-section { padding-block: var(--wbs-section-space-compact); }
	.home .wbs-hero-copy :is(h1, h3) { font-size: var(--wbs-font-size-hero); letter-spacing: -0.025em; line-height: 1.08; }
	.home .wbs-hero-copy .is-style-wbs-lead { font-size: var(--wbs-font-size-lead); line-height: 1.7; }
	.home .wbs-cinematic-hero__copy-layer { padding: 7rem var(--wbs-space-5) 3rem; }
}

/* Homepage-only colour placement approved from WBS CP Idea 1, 2 September 2026.
 * The reference supplies colour roles only: no copied content, media or type.
 * Existing palette tokens and independently editable page blocks are unchanged.
 */
.home .wbs-site-header { position: absolute; }
.home .wbs-site-header__inner {
	background: transparent;
	box-shadow: none;
}
.home .wbs-site-branding .custom-logo { filter: brightness(0) invert(1); }
.home .wbs-primary-menu > li:not(:last-child) > a { color: var(--wbs-on-dark); }
.home .wbs-primary-menu > li:not(:last-child) > a:hover { color: var(--wbs-on-dark-secondary); }
.home .wbs-site-header :is(a, button):focus-visible {
	outline-color: var(--wbs-on-dark);
	box-shadow: 0 0 0 2px var(--wbs-color-text);
}

/* Dark credibility band followed by the reference's clean, light logo strip. */
.home .wbs-page-content > .wbs-page-section:nth-child(6) {
	padding-inline: var(--wbs-gutter);
	padding-block-end: 0;
}
.home .wbs-awards .wbs-award-card {
	background: transparent;
	box-shadow: none;
	color: var(--wbs-on-dark-secondary);
}
.home .wbs-awards .wbs-award-card :is(h3, h4):not(.has-text-color) { color: var(--wbs-on-dark); }
.home .wbs-awards summary:focus-visible {
	outline-color: var(--wbs-on-dark);
	box-shadow: none;
}
.home .wbs-page-content > .wbs-page-section:nth-child(6) > .wbs-recognition {
	background: var(--wbs-surface-background);
	color: var(--wbs-text-primary);
	max-width: none;
	width: calc(100% + 2 * var(--wbs-gutter));
	margin-inline: calc(-1 * var(--wbs-gutter)) !important;
	padding: var(--wbs-section-space-compact) var(--wbs-gutter);
}
.home .wbs-page-content > .wbs-page-section:nth-child(6) .wbs-recognition h2 {
	color: var(--wbs-heading-color);
}
.home .wbs-recognition > :is(h2, .wbs-logo-grid) {
	max-width: var(--wbs-content-width);
	margin-inline: auto;
}
.home .wbs-recognition .wbs-logo-card { box-shadow: none; }

/* A continuous primary-teal enquiry band and deep-teal footer. White text on
 * primary teal passes AA at this large-text size; smaller button text stays
 * deep teal on white. This avoids inventing an unapproved darker shade.
 */
.home .wbs-page-content > .wbs-page-section:nth-child(8) {
	border-radius: 0;
	margin-block: 0;
	width: 100%;
}
.home .wbs-page-content > .wbs-page-section:nth-child(8) p:not(.has-text-color),
.home .wbs-site-footer__cta .wbs-eyebrow {
	color: var(--wbs-on-dark);
	font-size: 1.5rem;
	letter-spacing: normal;
	text-transform: none;
}
.home .wbs-site-footer { background: var(--wbs-color-teal-deep); }
.home .wbs-site-footer__cta {
	background: var(--wbs-color-teal-primary);
	color: var(--wbs-on-dark);
}
.home .wbs-site-footer__cta h3,
.home .wbs-page-content > .wbs-page-section:nth-child(8) h3 {
	color: var(--wbs-on-dark);
	font-size: max(1.5rem, var(--wbs-font-size-h3));
}
.home .wbs-site-footer__cta .wbs-button--primary {
	background: var(--wbs-surface-background);
	color: var(--wbs-action-secondary);
}
.home .wbs-site-footer__cta .wbs-button--primary:hover {
	background: var(--wbs-soft-background);
	color: var(--wbs-action-secondary);
}

@media (max-width: 68rem) {
	/* The opened phone menu remains opaque and readable over any photograph. */
	.home .wbs-site-header__inner { width: calc(100% - 2 * var(--wbs-space-4)); }
	.home .wbs-primary-navigation { background: var(--wbs-surface-background); }
	.home .wbs-primary-menu > li:not(:last-child) > a { color: var(--wbs-heading-color); }
	.home .wbs-primary-menu > li:not(:last-child) > a:hover { color: var(--wbs-action-secondary); }
	.home .wbs-primary-navigation a:focus-visible {
		outline-color: var(--wbs-focus);
		box-shadow: none;
	}
}

@media (max-width: 48rem) {
	.home .wbs-site-header__inner { width: calc(100% - 2 * var(--wbs-space-2)); }
}
