/*
 * Ferndale Community School: content styles.
 *
 * Loaded on the website AND inside the block editor (via the
 * enqueue_block_assets hook), so pages look the same while editing.
 * Element rules are scoped to page content: `.entry-content` on the
 * website, `.is-root-container` in the editor.
 */

/* ------------------------------------------------------------------
 * Fonts: Plus Jakarta Sans (SIL Open Font License), self-hosted.
 * latin-ext covers Welsh letters such as ŵ and ŷ.
 * ------------------------------------------------------------------ */
@font-face {
	font-family: "Plus Jakarta Sans";
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	src: url("../fonts/plus-jakarta-sans-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Plus Jakarta Sans";
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	src: url("../fonts/plus-jakarta-sans-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Plus Jakarta Sans";
	font-style: italic;
	font-weight: 200 800;
	font-display: swap;
	src: url("../fonts/plus-jakarta-sans-italic-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Plus Jakarta Sans";
	font-style: italic;
	font-weight: 200 800;
	font-display: swap;
	src: url("../fonts/plus-jakarta-sans-italic-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ------------------------------------------------------------------
 * Design tokens. Brand colours come from the school's Avada palette
 * and logo. Text/background pairs meet WCAG 2.2 AA contrast.
 * ------------------------------------------------------------------ */
:root {
	--fcs-navy: #0f2385;          /* Brand navy. White text: 13:1. */
	--fcs-navy-deep: #0a1866;
	--fcs-navy-ink: #081452;
	--fcs-ink: #040922;           /* Headings. */
	--fcs-text: #1c2236;          /* Body text: 15:1 on white. */
	--fcs-muted: #4f566e;         /* Secondary text: 7:1 on white. */
	--fcs-link: #1f4fd6;          /* Links: 6.7:1 on white. */
	--fcs-blue: #3269ff;          /* Brand bright blue (accents, focus). */
	--fcs-steel: #425a9e;
	--fcs-gold: #ffe9b3;          /* Brand gold. Navy text: 11:1. */
	--fcs-gold-strong: #f2b632;   /* Decorative accents only. */
	--fcs-gold-tint: #fff6df;
	--fcs-lavender: #b8a9d8;
	--fcs-lavender-tint: #f1edf9;
	--fcs-fern: #2e6b34;          /* Fern green from the logo: 6.4:1. */
	--fcs-fern-tint: #e8f2e9;
	--fcs-blue-tint: #e9efff;
	--fcs-surface: #f4f6fb;
	--fcs-surface-2: #eaeef8;
	--fcs-border: #dfe3ee;
	--fcs-grey: #d1d1d1;
	--fcs-white: #ffffff;
	--fcs-focus: #3269ff;

	--fcs-font: "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;

	--fcs-radius-sm: 8px;
	--fcs-radius: 12px;
	--fcs-radius-lg: 18px;
	--fcs-radius-xl: 24px;

	--fcs-shadow-sm: 0 1px 2px rgba(4, 9, 34, 0.06), 0 1px 3px rgba(4, 9, 34, 0.08);
	--fcs-shadow: 0 12px 28px -14px rgba(4, 9, 34, 0.28);
	--fcs-shadow-lg: 0 28px 60px -24px rgba(4, 9, 34, 0.4);

	--fcs-content: 47.5rem;   /* 760px reading width. */
	--fcs-wide: 75rem;        /* 1200px container. */

	--fcs-icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
	--fcs-icon-file: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z'/%3E%3Cpath d='M14 2v4a2 2 0 0 0 2 2h4'/%3E%3Cpath d='M10 9H8'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3C/svg%3E");
	--fcs-icon-download: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='7 10 12 15 17 10'/%3E%3Cline x1='12' x2='12' y1='15' y2='3'/%3E%3C/svg%3E");
	--fcs-icon-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E");
	--fcs-icon-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10'/%3E%3Cpath d='M7 17 17 7'/%3E%3C/svg%3E");
}

/* ------------------------------------------------------------------
 * Typography and flow.
 * ------------------------------------------------------------------ */
:is(.entry-content, .is-root-container) {
	font-family: var(--fcs-font);
	font-size: 1.0625rem;
	line-height: 1.75;
	color: var(--fcs-text);
	overflow-wrap: break-word;
}

.entry-content > * {
	margin-block: 0;
}

.entry-content > * + * {
	margin-block-start: 1.25rem;
}

:is(.entry-content, .is-root-container) :is(h1, h2, h3, h4, h5, h6) {
	font-family: var(--fcs-font);
	color: var(--fcs-ink);
	font-weight: 750;
	line-height: 1.25;
	letter-spacing: -0.012em;
	text-wrap: balance;
}

:is(.entry-content, .is-root-container) h2 {
	font-size: clamp(1.5rem, 1.3rem + 0.9vw, 2rem);
	color: var(--fcs-navy);
}

:is(.entry-content, .is-root-container) h3 {
	font-size: clamp(1.25rem, 1.15rem + 0.45vw, 1.5rem);
}

:is(.entry-content, .is-root-container) h4 {
	font-size: 1.1875rem;
}

:is(.entry-content, .is-root-container) :is(h5, h6) {
	font-size: 1.0625rem;
}

.entry-content > :is(h2, h3, h4, h5, h6) {
	margin-block-start: 2.25rem;
}

.entry-content > :is(h2, h3, h4, h5, h6) + * {
	margin-block-start: 0.75rem;
}

.entry-content > :first-child {
	margin-block-start: 0;
}

:is(.entry-content, .is-root-container) p {
	text-wrap: pretty;
}

:is(.entry-content, .is-root-container) strong,
:is(.entry-content, .is-root-container) b {
	font-weight: 700;
	color: var(--fcs-ink);
}

:is(.entry-content, .is-root-container) a:where(:not(.wp-element-button, .wp-block-button__link, .btn)) {
	color: var(--fcs-link);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
	transition: color 0.15s ease, text-decoration-thickness 0.15s ease;
}

:is(.entry-content, .is-root-container) a:where(:not(.wp-element-button, .wp-block-button__link, .btn)):hover {
	color: var(--fcs-navy);
	text-decoration-thickness: 2px;
}

/* Document links show their file type. */
:is(.entry-content, .is-root-container) a:is([href$=".pdf" i], [href$=".doc" i], [href$=".docx" i], [href$=".xls" i], [href$=".xlsx" i], [href$=".ppt" i], [href$=".pptx" i])::after {
	display: inline-block;
	margin-inline-start: 0.4em;
	padding: 0.1em 0.45em;
	border-radius: 4px;
	background: var(--fcs-surface-2);
	color: var(--fcs-navy);
	font-size: 0.7em;
	font-weight: 800;
	letter-spacing: 0.04em;
	line-height: 1.4;
	text-decoration: none;
	vertical-align: 0.15em;
}

:is(.entry-content, .is-root-container) a[href$=".pdf" i]::after {
	content: "PDF";
}

:is(.entry-content, .is-root-container) a:is([href$=".doc" i], [href$=".docx" i])::after {
	content: "DOC";
}

:is(.entry-content, .is-root-container) a:is([href$=".xls" i], [href$=".xlsx" i])::after {
	content: "XLS";
}

:is(.entry-content, .is-root-container) a:is([href$=".ppt" i], [href$=".pptx" i])::after {
	content: "PPT";
}

/* Lists. */
:is(.entry-content, .is-root-container) :is(ul, ol):where(:not([class*="is-style-"])) {
	padding-inline-start: 1.35em;
}

:is(.entry-content, .is-root-container) li + li {
	margin-block-start: 0.4em;
}

:is(.entry-content, .is-root-container) li > :is(ul, ol) {
	margin-block-start: 0.4em;
}

:is(.entry-content, .is-root-container) ul:where(:not([class*="is-style-"])) > li::marker {
	color: var(--fcs-navy);
}

:is(.entry-content, .is-root-container) ol > li::marker {
	color: var(--fcs-navy);
	font-weight: 700;
}

/* Images and media. */
:is(.entry-content, .is-root-container) img {
	max-width: 100%;
	height: auto;
}

:is(.entry-content, .is-root-container) .wp-block-image img {
	border-radius: var(--fcs-radius);
}

:is(.entry-content, .is-root-container) figcaption,
:is(.entry-content, .is-root-container) .wp-element-caption {
	margin-block-start: 0.6rem;
	font-size: 0.875rem;
	color: var(--fcs-muted);
	text-align: center;
}

.entry-content .alignleft {
	float: left;
	margin: 0.35rem 1.75rem 1rem 0;
	max-width: 45%;
}

.entry-content .alignright {
	float: right;
	margin: 0.35rem 0 1rem 1.75rem;
	max-width: 45%;
}

.entry-content .aligncenter {
	margin-inline: auto;
	text-align: center;
}

.entry-content::after {
	content: "";
	display: table;
	clear: both;
}

/* Quotes and separators. */
:is(.entry-content, .is-root-container) blockquote,
:is(.entry-content, .is-root-container) .wp-block-quote {
	margin-inline: 0;
	padding: 0.25rem 0 0.25rem 1.5rem;
	border-inline-start: 4px solid var(--fcs-gold-strong);
	font-size: 1.125rem;
	color: var(--fcs-ink);
}

:is(.entry-content, .is-root-container) blockquote cite {
	display: block;
	margin-block-start: 0.5rem;
	font-size: 0.875rem;
	font-style: normal;
	font-weight: 700;
	color: var(--fcs-muted);
}

:is(.entry-content, .is-root-container) hr,
:is(.entry-content, .is-root-container) .wp-block-separator {
	border: 0;
	height: 1px;
	background: var(--fcs-border);
	margin-block: 2.5rem;
	opacity: 1;
}

/* Tables: navy header row, zebra stripes, horizontal scroll on phones. */
:is(.entry-content, .is-root-container) .wp-block-table {
	overflow-x: auto;
	border: 1px solid var(--fcs-border);
	border-radius: var(--fcs-radius);
	-webkit-overflow-scrolling: touch;
}

.table-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

:is(.entry-content, .is-root-container) table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.9375rem;
	line-height: 1.55;
}

:is(.entry-content, .is-root-container) :not(.wp-block-table) > table {
	border: 1px solid var(--fcs-border);
}

:is(.entry-content, .is-root-container) :is(th, td) {
	padding: 0.75rem 1rem;
	border: 0;
	border-top: 1px solid var(--fcs-border);
	text-align: start;
	vertical-align: top;
}

:is(.entry-content, .is-root-container) thead :is(th, td),
:is(.entry-content, .is-root-container) table > tr:first-child > th {
	background: var(--fcs-navy);
	color: var(--fcs-white);
	font-weight: 700;
	border-top: 0;
}

:is(.entry-content, .is-root-container) tbody tr:nth-child(even) > :is(td, th) {
	background: #f8f9fd;
}

:is(.entry-content, .is-root-container) tbody th {
	color: var(--fcs-ink);
	font-weight: 700;
}

:is(.entry-content, .is-root-container) td :is(ul, ol) {
	margin: 0;
	padding-inline-start: 1.1em;
}

:is(.entry-content, .is-root-container) .wp-block-table figcaption {
	margin: 0;
	padding: 0.6rem 1rem;
	border-top: 1px solid var(--fcs-border);
	text-align: start;
}

/* Embeds: videos, Google Slides, maps. */
:is(.entry-content, .is-root-container) iframe {
	max-width: 100%;
	border: 0;
}

.responsive-frame {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: var(--fcs-radius);
	overflow: hidden;
	background: var(--fcs-surface);
}

.responsive-frame--slides {
	aspect-ratio: 960 / 569;
}

.responsive-frame iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

.map-embed {
	margin: 0;
	border-radius: var(--fcs-radius);
	overflow: hidden;
	border: 1px solid var(--fcs-border);
}

.map-embed iframe {
	display: block;
	width: 100%;
	height: clamp(18rem, 40vw, 26rem);
}

:is(.entry-content, .is-root-container) .wp-block-embed iframe {
	border-radius: var(--fcs-radius);
}

/* ------------------------------------------------------------------
 * Buttons (block buttons and theme buttons share one look).
 * ------------------------------------------------------------------ */
.btn,
.wp-block-button__link,
.wp-element-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: 2.75rem;
	padding: 0.75rem 1.35rem;
	border: 2px solid transparent;
	border-radius: 10px;
	background: var(--fcs-navy);
	color: var(--fcs-white);
	font-family: var(--fcs-font);
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.btn:hover,
.wp-block-button__link:hover,
.wp-element-button:hover {
	background: var(--fcs-navy-deep);
	color: var(--fcs-white);
	text-decoration: none;
}

.btn:active,
.wp-block-button__link:active {
	transform: translateY(1px);
}

.is-style-outline > .wp-block-button__link,
.wp-block-button__link.is-style-outline,
.btn--outline {
	background: transparent;
	border-color: var(--fcs-navy);
	color: var(--fcs-navy);
}

.is-style-outline > .wp-block-button__link:hover,
.btn--outline:hover {
	background: var(--fcs-navy);
	color: var(--fcs-white);
}

.btn--gold {
	background: var(--fcs-gold);
	color: var(--fcs-navy);
}

.btn--gold:hover {
	background: #ffdb85;
	color: var(--fcs-navy-ink);
}

.btn--ghost-light {
	background: transparent;
	border-color: rgba(255, 255, 255, 0.75);
	color: var(--fcs-white);
}

.btn--ghost-light:hover {
	background: var(--fcs-white);
	border-color: var(--fcs-white);
	color: var(--fcs-navy);
}

.btn--lg {
	min-height: 3.25rem;
	padding: 0.9rem 1.6rem;
	font-size: 1.0625rem;
}

.btn .icon {
	flex: none;
}

/* ------------------------------------------------------------------
 * Block style variations (registered in inc/block-styles.php).
 * ------------------------------------------------------------------ */

/* Paragraph: Lead. */
:is(.entry-content, .is-root-container) .is-style-lead {
	font-size: clamp(1.1875rem, 1.1rem + 0.4vw, 1.375rem);
	line-height: 1.6;
	font-weight: 500;
	color: var(--fcs-ink);
}

/* Heading: Eyebrow. */
:is(.entry-content, .is-root-container) .is-style-eyebrow {
	font-size: 0.8125rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--fcs-fern);
}

.entry-content > .is-style-eyebrow + :is(h2, h3) {
	margin-block-start: 0.35rem;
}

/* Group: Card / Callout / Soft panel. */
.wp-block-group.is-style-card {
	padding: clamp(1.25rem, 1rem + 1vw, 2rem);
	border: 1px solid var(--fcs-border);
	border-radius: var(--fcs-radius-lg);
	background: var(--fcs-white);
	box-shadow: var(--fcs-shadow-sm);
}

.wp-block-group.is-style-callout {
	padding: 1.25rem 1.5rem;
	border-inline-start: 5px solid var(--fcs-gold-strong);
	border-radius: var(--fcs-radius);
	background: var(--fcs-gold-tint);
	color: var(--fcs-ink);
}

.wp-block-group.is-style-panel {
	padding: clamp(1.25rem, 1rem + 1.5vw, 2.25rem);
	border-radius: var(--fcs-radius-lg);
	background: var(--fcs-surface);
}

:is(.is-style-card, .is-style-callout, .is-style-panel) > :first-child {
	margin-block-start: 0;
}

:is(.is-style-card, .is-style-callout, .is-style-panel) > :last-child {
	margin-block-end: 0;
}

:is(.is-style-card, .is-style-callout, .is-style-panel) > * + * {
	margin-block-start: 0.85rem;
}

:is(.is-style-callout) :is(h2, h3, h4) {
	color: var(--fcs-navy);
	font-size: 1.1875rem;
}

/* Columns: Cards. */
.wp-block-columns.is-style-cards > .wp-block-column {
	padding: clamp(1.25rem, 1rem + 1vw, 1.75rem);
	border: 1px solid var(--fcs-border);
	border-radius: var(--fcs-radius-lg);
	background: var(--fcs-white);
	box-shadow: var(--fcs-shadow-sm);
}

.wp-block-columns.is-style-cards > .wp-block-column > :first-child {
	margin-block-start: 0;
}

.wp-block-columns.is-style-cards > .wp-block-column > * + * {
	margin-block-start: 0.75rem;
}

.wp-block-columns.is-style-cards :is(h2, h3, h4) {
	font-size: 1.1875rem;
	color: var(--fcs-navy);
}

/* List: Checklist. */
:is(.entry-content, .is-root-container) ul.is-style-checklist {
	list-style: none;
	padding-inline-start: 0;
}

:is(.entry-content, .is-root-container) ul.is-style-checklist > li {
	position: relative;
	padding-inline-start: 2rem;
}

:is(.entry-content, .is-root-container) ul.is-style-checklist > li::before {
	content: "";
	position: absolute;
	inset-inline-start: 0;
	top: 0.3em;
	width: 1.3rem;
	height: 1.3rem;
	border-radius: 50%;
	background-color: var(--fcs-fern-tint);
	background-image: none;
}

:is(.entry-content, .is-root-container) ul.is-style-checklist > li::after {
	content: "";
	position: absolute;
	inset-inline-start: 0.28rem;
	top: calc(0.3em + 0.28rem);
	width: 0.74rem;
	height: 0.74rem;
	background-color: var(--fcs-fern);
	-webkit-mask: var(--fcs-icon-check) center / contain no-repeat;
	mask: var(--fcs-icon-check) center / contain no-repeat;
}

/* List: Documents (links to PDFs and other files).
 * A tinted chip with a file icon sits before the link text; file links
 * keep their automatic PDF/DOC badge, pushed to the right-hand edge. */
:is(.entry-content, .is-root-container) ul.is-style-documents {
	list-style: none;
	padding-inline-start: 0;
	display: grid;
	gap: 0.625rem;
}

:is(.entry-content, .is-root-container) ul.is-style-documents > li {
	position: relative;
	margin: 0;
}

:is(.entry-content, .is-root-container) ul.is-style-documents > li > a {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	min-height: 3.5rem;
	padding: 0.7rem 1rem 0.7rem 0.75rem;
	border: 1px solid var(--fcs-border);
	border-radius: var(--fcs-radius);
	background: var(--fcs-white);
	color: var(--fcs-ink);
	font-weight: 650;
	line-height: 1.4;
	text-decoration: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
}

/* The chip. */
:is(.entry-content, .is-root-container) ul.is-style-documents > li > a::before {
	content: "";
	flex: none;
	width: 2.25rem;
	height: 2.25rem;
	border-radius: 9px;
	background: var(--fcs-blue-tint);
}

/* The file icon, centred on the chip. */
:is(.entry-content, .is-root-container) ul.is-style-documents > li::before {
	content: "";
	position: absolute;
	z-index: 1;
	inset-inline-start: calc(0.75rem + 1px + 0.5rem);
	top: 50%;
	width: 1.25rem;
	height: 1.25rem;
	margin-top: -0.625rem;
	background: var(--fcs-navy);
	-webkit-mask: var(--fcs-icon-file) center / contain no-repeat;
	mask: var(--fcs-icon-file) center / contain no-repeat;
	pointer-events: none;
}

:is(.entry-content, .is-root-container) ul.is-style-documents > li > a::after {
	margin-inline-start: auto;
}

:is(.entry-content, .is-root-container) ul.is-style-documents > li > a:hover {
	border-color: var(--fcs-navy);
	box-shadow: var(--fcs-shadow);
	color: var(--fcs-navy);
}

/* List: Link grid. */
:is(.entry-content, .is-root-container) ul.is-style-link-grid {
	list-style: none;
	padding-inline-start: 0;
	display: grid;
	gap: 0.625rem;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
}

:is(.entry-content, .is-root-container) ul.is-style-link-grid > li {
	margin: 0;
}

:is(.entry-content, .is-root-container) ul.is-style-link-grid > li > a {
	position: relative;
	display: flex;
	align-items: center;
	height: 100%;
	min-height: 3.25rem;
	padding: 0.75rem 2.75rem 0.75rem 1rem;
	border: 1px solid var(--fcs-border);
	border-radius: var(--fcs-radius);
	background: var(--fcs-white);
	color: var(--fcs-ink);
	font-weight: 650;
	line-height: 1.35;
	text-decoration: none;
	overflow-wrap: anywhere;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

:is(.entry-content, .is-root-container) ul.is-style-link-grid > li > a::after {
	content: "";
	position: absolute;
	inset-inline-end: 1rem;
	top: 50%;
	width: 1.1rem;
	height: 1.1rem;
	margin: -0.55rem 0 0;
	padding: 0;
	border-radius: 0;
	background: var(--fcs-navy);
	-webkit-mask: var(--fcs-icon-arrow) center / contain no-repeat;
	mask: var(--fcs-icon-arrow) center / contain no-repeat;
}

:is(.entry-content, .is-root-container) ul.is-style-link-grid > li > a:hover {
	border-color: var(--fcs-navy);
	box-shadow: var(--fcs-shadow);
	color: var(--fcs-navy);
}

/* List: Timeline. */
:is(.entry-content, .is-root-container) :is(ul, ol).is-style-timeline {
	list-style: none;
	padding-inline-start: 0;
	position: relative;
}

:is(.entry-content, .is-root-container) :is(ul, ol).is-style-timeline > li {
	position: relative;
	margin: 0;
	padding: 0 0 1.5rem 2.25rem;
}

:is(.entry-content, .is-root-container) :is(ul, ol).is-style-timeline > li::before {
	content: "";
	position: absolute;
	inset-inline-start: 0.42rem;
	top: 0.6em;
	bottom: -0.6em;
	width: 2px;
	background: var(--fcs-border);
}

:is(.entry-content, .is-root-container) :is(ul, ol).is-style-timeline > li:last-child::before {
	display: none;
}

:is(.entry-content, .is-root-container) :is(ul, ol).is-style-timeline > li::after {
	content: "";
	position: absolute;
	inset-inline-start: 0;
	top: 0.35em;
	width: 1rem;
	height: 1rem;
	border-radius: 50%;
	background: var(--fcs-gold);
	border: 3px solid var(--fcs-navy);
}

:is(.entry-content, .is-root-container) :is(ul, ol).is-style-timeline > li > strong:first-child {
	display: block;
	color: var(--fcs-navy);
	font-size: 0.875rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

/* Image: Framed (offset gold frame, used for portraits). */
.wp-block-image.is-style-framed {
	position: relative;
	padding: 0 14px 14px 0;
}

.wp-block-image.is-style-framed img {
	position: relative;
	z-index: 1;
	border-radius: var(--fcs-radius-lg);
}

.wp-block-image.is-style-framed::before {
	content: "";
	position: absolute;
	inset: 14px 0 0 14px;
	border-radius: var(--fcs-radius-lg);
	background: var(--fcs-gold);
}

.wp-block-image.is-style-framed figcaption {
	position: relative;
	z-index: 1;
}

/* ------------------------------------------------------------------
 * Plugin content.
 * ------------------------------------------------------------------ */

/* Integrate Google Drive (policy and letter browsers). */
.entry-content .igd {
	max-width: none;
	font-family: var(--fcs-font);
}

/* The plugin's light grey (#999, 2.8:1) file details fail WCAG contrast. */
.igd .file-item-size,
.igd .file-item-date,
.igd .file-item-footer {
	color: #4f566e !important;
}

/* Quick Timetable. */
.entry-content [class*="quick-timetable"],
.entry-content [class*="qtt"] {
	font-family: var(--fcs-font);
}

/* Elfsight Facebook Feed. */
[class*="eapps-facebook-feed"],
.elfsight-facebook-feed {
	font-family: var(--fcs-font);
}

/* The feed's grey (#7f8588, 3.7:1) dates, counts and "See more" fail WCAG contrast. */
.elfsight-widget-facebook-feed .eapps-facebook-feed-item-date,
.elfsight-widget-facebook-feed .eui-item-text-see-more,
.elfsight-widget-facebook-feed [class*="posts-item-footer"],
.elfsight-widget-facebook-feed [class*="posts-item-footer"] * {
	color: #4f566e !important;
}

.elfsight-widget-facebook-feed .eapps-facebook-feed-load-more-label {
	color: #2f3447 !important;
}
