/* Shared Gutenberg design contract. Page-specific composition lives in ubc.css
 * and club.css; their type and spacing declarations consume the same tokens.
 * No page IDs, generated class names, hidden content or runtime content rewrites.
 */
.editor-styles-wrapper { font-size: var(--wp--preset--font-size--medium); }

:where(main, .editor-styles-wrapper) :is(h1, h2, h3, h4) {
	letter-spacing: 0;
	text-wrap: pretty;
	overflow-wrap: anywhere;
}

/* These constrained legacy title widths were tuned for the earlier poster scale. */
:is(.ubc-teams-masthead-copy, .ubc-trial-masthead-copy, .ubc-team-profile-heading,
	.ubc-nachwuchs-masthead-copy, .ubc-nachwuchs-subpage-hero-copy,
	.ubc-protection-hero-copy, .ubc-club-subhero-copy) h1 { max-width: 24ch; }
.ubc-female-hero h1 { font-size: var(--ubc-type-display) !important; line-height: 1.08; }
.ubc-hero h1 { font-size: var(--ubc-type-display) !important; line-height: 1.08; }
.ubc-hero { min-height: min(620px, calc(100dvh - 128px)) !important; }
.ubc-female-hero { min-height: 34rem; }

.ubc-teams-masthead-inner,
.ubc-trial-masthead-inner { align-items: center; }
.ubc-team-profile-back { margin-bottom: 1.5rem; }
.ubc-team-photo { min-height: 18rem !important; aspect-ratio: 16 / 10; }
.ubc-team-profile-hero-inner { align-items: center; }
.ubc-team-profile-hero-inner .ubc-team-photo { width: 100%; }
.ubc-support-page-hero-image img { height: clamp(20rem, 32vw, 28rem); min-height: 0; }
.ubc-team-directory-coach,
.ubc-team-pathway-row p,
.ubc-nachwuchs-stage p { font-size: 1rem; line-height: 1.6; }
.ubc-team-directory-heading h2,
.ubc-youth-directory-heading h2 { font-size: var(--ubc-type-section) !important; }

/* New native blocks receive useful defaults, including future pages. */
.ubc-editorial-page-content { font-size: var(--ubc-type-reading); line-height: 1.72; }
.ubc-editorial-page-content > :is(h2, h3, h4) { margin-top: 2.5rem; margin-bottom: 1rem; }
.ubc-editorial-page-content h2 { font-size: var(--ubc-type-section); }
.ubc-editorial-page-content h3 { font-size: var(--ubc-type-subheading); }
.ubc-editorial-page-header { padding-block: var(--ubc-masthead-space) 1.5rem; }
.ubc-editorial-page-body { padding-block: 0 var(--ubc-section-space); }
.ubc-editorial-page-content > .ubc-editorial-lead:first-child { margin-top: 0; }

.is-style-ubc-reading-section { max-width: 68ch; }
.is-style-ubc-reading-section :is(p, li) { font-size: var(--ubc-type-reading); line-height: 1.72; }
.is-style-ubc-reading-section > :is(h2, h3) { margin-block: 2rem 1rem; }
.is-style-ubc-reading-section > :first-child { margin-top: 0; }
.is-style-ubc-context {
	background: var(--ubc-surface);
	border: 1px solid var(--ubc-line);
	border-radius: var(--ubc-radius);
	color: var(--ubc-ink);
	padding: clamp(1.25rem, 2.5vw, 2rem);
}
.is-style-ubc-context :is(h2, h3) { font-size: var(--ubc-type-subheading); line-height: 1.15; }
.is-style-ubc-context p { font-size: 1rem; line-height: 1.6; }
.is-style-ubc-context > :first-child { margin-top: 0; }
.is-style-ubc-context > :last-child { margin-bottom: 0; }
.ubc-reading-context { gap: var(--ubc-layout-gap); align-items: start !important; }
.ubc-reading-context > .wp-block-column { min-width: 0; }

/* Quotations are reading content, not another competing display headline. */
.ubc-club-statement p,
.ubc-support-page-youth-quote p,
.ubc-female-voice p,
.wp-block-quote:is(.is-style-ubc-voice, .is-style-ubc-voice-feature, .is-style-ubc-editorial-quote) p {
	font-family: var(--ubc-body);
	font-size: var(--ubc-type-quote);
	font-weight: 400;
	line-height: 1.55;
	text-wrap: pretty;
}
.ubc-quote-grid > .wp-block-quote { min-height: 0; }
.wp-block-quote:is(.is-style-ubc-voice, .is-style-ubc-voice-feature) cite { margin-top: auto; }
.wp-block-quote.is-style-ubc-voice-feature { color: var(--ubc-black); }
/* Colored choices are interactive routes; editorial voices have their own rhythm. */
:is(.is-style-ubc-trio, .ubc-female-route-grid) {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	gap: 0 !important;
	align-items: stretch;
}
:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote) {
	--ubc-trio-surface: var(--ubc-purple);
	background: var(--ubc-trio-surface);
	border: 0;
	color: var(--ubc-black);
	display: flex;
	flex-direction: column;
	grid-column: auto;
	min-width: 0;
	min-height: 18rem;
	margin: 0;
	padding: clamp(1.75rem, 2.4vw, 1.95rem);
	position: relative;
	filter: none;
	transform: none;
	transition: background-color 160ms ease;
}
:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote):nth-child(3n + 2) {
	/* This sequence stays violet / white / blue in dark OS mode as well. */
	--ubc-trio-surface: #ffffff;
}
:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote):nth-child(3n) {
	--ubc-trio-surface: var(--ubc-blue);
}
/* A quote can replace a route's copy, without becoming a nested visual card. */
.is-style-ubc-trio > .wp-block-group > .wp-block-quote {
	background: none;
	border: 0;
	display: flex;
	flex: 1;
	flex-direction: column;
	margin: 0;
	min-height: 0;
	padding: 0;
}
.is-style-ubc-trio .wp-block-quote p {
	font-family: var(--ubc-body);
	font-size: var(--ubc-type-quote);
	line-height: 1.55;
	margin: 0 0 3rem;
}
.is-style-ubc-trio .wp-block-quote cite {
	font-family: var(--ubc-body);
	font-size: 1rem;
	font-style: normal;
	line-height: 1.5;
	margin-top: auto;
}
/* Core's editor flow spacing must not displace the route's explicit rhythm. */
:is(.is-style-ubc-trio, .ubc-female-route-grid) > .wp-block-group > .ubc-female-route-number { margin: 0 0 var(--wp--preset--spacing--60) !important; }
:is(.is-style-ubc-trio, .ubc-female-route-grid) > .wp-block-group > .ubc-female-route-label { margin: 0 0 0.75rem !important; }
:is(.is-style-ubc-trio, .ubc-female-route-grid) > .wp-block-group > .ubc-female-route-link { margin: auto 0 0 !important; }
:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote) :is(h3, p, cite, a) {
	/* The fixed light card palette also works inside UBC Dunkel sections. */
	color: var(--ubc-black) !important;
}
:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote):has(a):focus-within {
	background-color: color-mix(in srgb, var(--ubc-trio-surface) 90%, var(--ubc-black));
	outline: 3px solid var(--ubc-black);
	outline-offset: -6px;
}
@media (hover: hover) {
	:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote):hover {
		background-color: color-mix(in srgb, var(--ubc-trio-surface) 90%, var(--ubc-black));
	}
	:is(.is-style-ubc-trio, .ubc-female-route-grid) > .wp-block-group:hover a {
		text-decoration-thickness: 2px;
	}
}
/* The front-end stretched link must not cover editable blocks in Gutenberg. */
.editor-styles-wrapper .ubc-female-route-link a::after { content: none; }
@media (max-width: 960px) {
	:is(.is-style-ubc-trio, .ubc-female-route-grid) { grid-template-columns: minmax(0, 1fr) !important; }
	:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote) {
		grid-column: auto;
		min-height: 0;
	}
}

/* Native quote group: one longer voice on the left, two supporting voices on
 * the right. The DOM order remains the reading order on every screen. */
.ubc-quote-grid {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
	gap: 0 var(--ubc-layout-gap) !important;
	align-items: stretch;
	background: var(--wp--preset--color--ubc-paper, #f7f7f5);
	border-top: 1px solid var(--wp--preset--color--ubc-line, #deded8);
	color: var(--ubc-black);
}
.ubc-quote-grid > .wp-block-quote {
	background: transparent;
	border: 0;
	color: var(--ubc-black);
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	grid-column: 2;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 1.75rem 0;
	filter: none;
	transform: none;
	transition: none;
}
.ubc-quote-grid > .wp-block-quote:first-child {
	grid-column: 1;
	grid-row: span 2;
}
.ubc-quote-grid > .wp-block-quote + .wp-block-quote {
	border-left: 1px solid var(--wp--preset--color--ubc-line, #deded8);
	padding-left: var(--ubc-layout-gap);
}
.ubc-quote-grid > .wp-block-quote:nth-child(n + 3) {
	border-top: 1px solid var(--wp--preset--color--ubc-line, #deded8);
}
.ubc-quote-grid > .wp-block-quote > p {
	font-family: var(--ubc-body);
	font-size: var(--ubc-type-quote);
	font-weight: 400;
	line-height: 1.55;
	margin: 0 0 1.5rem;
	color: var(--ubc-black) !important;
}
.ubc-quote-grid > .wp-block-quote > cite {
	font-family: var(--ubc-body);
	font-size: 1rem;
	font-style: normal;
	line-height: 1.5;
	margin: 0;
	color: var(--ubc-black) !important;
}
@media (max-width: 960px) {
	.ubc-quote-grid { grid-template-columns: minmax(0, 1fr) !important; }
	.ubc-quote-grid > .wp-block-quote,
	.ubc-quote-grid > .wp-block-quote:first-child { grid-column: 1; grid-row: auto; }
	.ubc-quote-grid > .wp-block-quote + .wp-block-quote {
		border-left: 0;
		border-top: 1px solid var(--wp--preset--color--ubc-line, #deded8);
		padding-left: 0;
	}
}

/* Primary navigation CTA must not inherit the light navigation link color. */
.ubc-primary-navigation .wp-block-navigation-item.ubc-nav-cta > .wp-block-navigation-item__content {
	color: var(--ubc-black);
}

/* Input readability on mobile, without changing field configuration/validation. */
:where(main, .editor-styles-wrapper) :is(input:not([type=checkbox]):not([type=radio]), textarea, select) {
	font-size: max(1rem, 1em);
	caret-color: var(--ubc-purple-ink);
}
:where(main, .editor-styles-wrapper) :is(input, textarea, select):focus-visible {
	outline: 2px solid var(--ubc-purple-ink) !important;
	outline-offset: 3px !important;
}

/* Direct main shells (search, archives and article media) use the same axis. */
main > .alignwide {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--ubc-shell-size) !important;
	margin-inline: auto !important;
	padding-inline: var(--ubc-shell-gutter) !important;
}
.ubc-editorial.ubc-team-news,
.ubc-editorial.ubc-nachwuchs-news { padding-block: var(--ubc-section-space); }
.ubc-editorial.ubc-team-news > h2,
.ubc-editorial.ubc-nachwuchs-news > h2 { margin-bottom: 1.75rem; }
.ubc-editorial .ubc-editorial-grid .ubc-editorial-card-copy { max-width: none; }
.ubc-editorial.ubc-team-news .ubc-editorial-grid:has(> li:only-child) { grid-template-columns: minmax(0, 1fr); }
.ubc-team-news .ubc-editorial-grid > li:only-child .ubc-editorial-card {
	display: grid;
	grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr);
}
.ubc-team-news .ubc-editorial-grid > li:only-child .ubc-editorial-image { align-self: stretch; }
.ubc-team-news .ubc-editorial-grid > li:only-child .ubc-editorial-excerpt { max-width: 62ch; }
.ubc-team-games-route h2 + p,
.ubc-game-route h2 + p { margin-top: 1rem; }

/* Some informational surfaces intentionally remain light in both OS schemes. */
body:has(main.ubc-club-surface) .ubc-editorial,
body:has(main .ubc-nachwuchs-masthead) .ubc-editorial,
body:has(main .ubc-nachwuchs-subpage-hero) .ubc-editorial,
body:has(main .ubc-protection-hero) .ubc-editorial { --ubc-editorial-link: var(--ubc-purple-ink); }

@media (max-width: 782px) {
	.ubc-reading-context { gap: 2rem; }
	.ubc-team-photo {
		min-height: 0 !important;
		/* Core adds aspect-ratio: unset inline when no Cover ratio is selected. */
		aspect-ratio: 16 / 10 !important;
	}
}
@media (max-width: 560px) {
	.ubc-female-hero { min-height: 0; }
	.ubc-team-profile-hero-inner { padding-block: var(--ubc-masthead-space); }
}
@media (max-width: 640px) {
	.ubc-team-news .ubc-editorial-grid > li:only-child .ubc-editorial-card { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
	:is(.is-style-ubc-trio, .ubc-female-route-grid) > :is(.wp-block-group, .wp-block-quote) { transition: none; }
}
