/*
Theme Name: Fairchild Automotive Solutions
Theme URI: https://fairchildautomotivesolutions.com
Author: Fairchild Automotive Solutions
Description: Block theme for Fairchild Automotive Solutions. Design system lives in theme.json — edit colors, type and spacing there, never here.
Version: 0.8.0
Requires at least: 6.6
Tested up to: 6.8
Requires PHP: 8.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: fairchild
Tags: block-theme, full-site-editing, one-column, custom-colors, custom-menu
*/

/* ---------------------------------------------------------------------------
   Keep this file thin.

   In a block theme the design system is theme.json — colors, type scale,
   spacing and button styles all live there so the Site Editor can expose them
   to a non-developer. Every rule below exists because it genuinely cannot be
   expressed in theme.json, and each one says why.
   --------------------------------------------------------------------------- */

/* Tracked-out small-caps label. theme.json has no per-utility text style. */
.fc-label {
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink-muted);
}

/* Eyebrow. Cyan rather than red: #E91B22 is 4.45:1 on the ground and fails AA
   at this size, while cyan is 8.83:1. Red is display-and-fills only. */
.fc-eyebrow {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent);
}

/* Hero ambient light. Two radial glows over a vertical base — not expressible
   as a theme.json background. Origins sit hard in the corners so only the
   falloff shows; pulled in from the centre they read as colour fields. */
.fc-hero {
	background:
		radial-gradient(780px 420px at 100% 2%, rgba(233, 27, 34, 0.30), transparent 60%),
		radial-gradient(720px 520px at 0% 100%, rgba(0, 184, 248, 0.16), transparent 58%),
		linear-gradient(180deg, #070709, #04060A);
}

/* Hand-drawn underline beneath the headline. Sized to the display line, so it
   scales with the fluid h1 rather than sitting at a fixed width. */
.fc-underline {
	display: block;
	width: min(700px, 100%);
	height: 18px;
	margin-top: -4px;
}

/* Short rule preceding the trust line. A bare <hr> in a flex row stretches. */
.fc-tick {
	width: 40px;
	height: 1px;
	flex: 0 0 40px;
	border: 0;
	margin: 0;
}

/* Secondary CTA: reads as a text link but keeps button semantics and hit area.
   theme.json styles the button element globally, so this is the opt-out. */
.fc-btn-quiet .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--ink);
	padding-left: 4px;
	padding-right: 4px;
}
.fc-btn-quiet .wp-block-button__link:hover {
	background: transparent;
	color: var(--wp--preset--color--accent);
}

/* Portrait with a caption scrim. Needs object-fit and a stacking context,
   neither of which theme.json can express. */
.fc-portrait {
	position: relative;
	margin: 0;
	border-radius: 18px;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.10);
	box-shadow: 0 26px 64px rgba(0, 0, 0, 0.55);
	line-height: 0;
}
.fc-portrait img {
	display: block;
	width: 100%;
	height: 520px;
	object-fit: cover;
	object-position: center;
}
.fc-portrait figcaption {
	position: absolute;
	inset: auto 0 0 0;
	padding: 22px;
	font-size: 13px;
	line-height: 1.4;
	color: var(--wp--preset--color--ink-muted);
	background: linear-gradient(180deg, rgba(7, 7, 9, 0), rgba(7, 7, 9, 0.85));
}

/* Square portrait variant — the NADA shot is 580x580 and a portrait crop would
   slice the backdrop off, which is the whole reason for using that photo. */
.fc-portrait--square img { height: auto; aspect-ratio: 1 / 1; }

/* Story: the hero glow mirrored. Red left, cyan right, so the two sections
   read as a pair rather than a repeat. */
.fc-story {
	background:
		radial-gradient(780px 420px at 0% 2%, rgba(233, 27, 34, 0.30), transparent 60%),
		radial-gradient(720px 520px at 100% 100%, rgba(0, 184, 248, 0.16), transparent 58%),
		linear-gradient(180deg, #070709, #04060A);
}

/* Pull quote. A left border plus display face — not a theme.json construct. */
.fc-pull {
	font-family: var(--wp--preset--font-family--display);
	line-height: 1.35;
	color: var(--wp--preset--color--ink);
	border-left: 4px solid var(--wp--preset--color--signal);
	padding-left: 22px;
}

/* Inline text link that is not a button. */
.fc-textlink a { color: var(--wp--preset--color--ink); font-weight: 700; text-decoration: none; }
.fc-textlink a:hover { color: var(--wp--preset--color--accent); }

/* Method: numbered chip. Red as a FILL with white numerals, which is a use red
   is allowed at this size — red as 15px type would fail contrast. */
.fc-steps .wp-block-column { border-top: 1px solid var(--wp--preset--color--hairline); padding-top: 24px; }
.fc-step-num {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 6px;
	background: var(--wp--preset--color--signal);
	color: var(--wp--preset--color--on-signal);
	font-family: var(--wp--preset--font-family--display);
	font-size: 15px;
}
/* Fixed title slot so all four descriptions start on the same line even when a
   title wraps to two. Without this the columns lose their horizontal lane. */
.fc-step-title { margin: 20px 0 12px; min-height: 52px; }

/* Coaching chain. A vertical red spine with three rungs, deliberately NOT the
   Method's horizontal columns — the two sections sit near each other and must
   not read as a repeat. The spine is drawn on the <ol>, and each numeral chip
   is pulled onto it so the rungs visibly hang off one line. */
.fc-chain {
	list-style: none;
	margin: 0;
	padding: 0 0 0 34px;
	border-left: 2px solid var(--wp--preset--color--hairline);
}
.fc-chain-rung { display: flex; gap: 18px; align-items: flex-start; }
.fc-chain-rung + .fc-chain-rung { margin-top: 34px; }
/* Half the chip (34px) plus the padding (34px) plus the border, so the chip
   centres on the spine at any font size. */
.fc-chain-rung .fc-step-num { flex: 0 0 34px; margin-left: -52px; }
.fc-chain-body { flex: 1 1 auto; min-width: 0; }
.fc-chain-title { margin: 4px 0 8px; font-family: var(--wp--preset--font-family--display); line-height: 1.25; }
.fc-chain-body p { margin: 0; line-height: 1.7; }

/* Below the columns breakpoint the spine would sit alone above the copy, so
   close the gap the stacked column leaves behind.
   The chip cannot both sit on the page gutter AND straddle a spine drawn at that
   same gutter, and on a phone the straddle pushes it 16px outside the gutter that
   every other line of the section starts on. So on mobile the spine moves to the
   chip's own centre line and the chip aligns with the copy. */
@media (max-width: 781px) {
	.fc-coaching-cols > .wp-block-column + .wp-block-column { margin-top: var(--wp--preset--spacing--50); }
	.fc-chain { position: relative; padding-left: 0; border-left: 0; }
	.fc-chain::before {
		content: "";
		position: absolute;
		left: 16px;
		top: 17px;
		bottom: 17px;
		width: 2px;
		background: var(--wp--preset--color--hairline);
	}
	.fc-chain-rung .fc-step-num { margin-left: 0; }
}

/* Proof: dealer logo grid. Placeholder slots until display permission is
   confirmed per dealer — see the note in patterns/proof.php. */
.fc-logos { display: flex; flex-wrap: wrap; justify-content: center; gap: 24px; list-style: none; margin: 0; padding: 0; }
.fc-logo-slot {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 180px;
	height: 76px;
	border-radius: 6px;
	background: var(--wp--preset--color--ink);
}
.fc-logo-slot img { width: 150px; height: 55px; object-fit: contain; display: block; }

/* Testimonials. flex:1 on the quote bottom-aligns every attribution even though
   the quotes differ in length. */
.fc-quotes { display: flex; gap: 40px; align-items: stretch; }
.fc-quote {
	display: flex;
	flex-direction: column;
	flex: 1;
	margin: 0;
	padding-top: 28px;
	border-top: 1px solid var(--wp--preset--color--hairline);
}
.fc-quote-mark { font-family: var(--wp--preset--font-family--display); font-size: 40px; line-height: 1; color: var(--wp--preset--color--signal); }
.fc-quote blockquote { flex: 1; margin: 16px 0 0; font-size: 17px; line-height: 1.7; color: var(--wp--preset--color--ink); }
.fc-quote figcaption { padding-top: 28px; }
.fc-quote-name { display: block; font-size: 16px; font-weight: 700; color: var(--wp--preset--color--ink); }
.fc-quote-role { display: block; padding-top: 4px; font-size: 14px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wp--preset--color--ink-muted); }

/* Newsletter card. */
.fc-news {
	display: flex;
	align-items: center;
	gap: 48px;
	padding: 56px;
	border-radius: 24px;
	border: 1px solid rgba(255, 255, 255, 0.10);
	background: linear-gradient(120deg, #001A28, #06090C);
}
.fc-news-copy { flex: 1.1; }
.fc-news-title { font-family: var(--wp--preset--font-family--display); font-size: 36px; line-height: 1.16; text-transform: uppercase; color: var(--wp--preset--color--ink); margin: 14px 0 0; }
.fc-news-sub { margin-top: 14px; font-size: 16px; line-height: 1.7; color: var(--wp--preset--color--ink-muted); }
.fc-news-form { flex: 0.9; padding: 30px; border-radius: 16px; background: #161D24; border: 1px solid rgba(255, 255, 255, 0.10); }
.fc-news-form label { font-size: 13px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--wp--preset--color--ink-muted); }
/* beehiiv subscribe embed. The loader injects the form into a SHADOW ROOT, so
   none of this theme's CSS can reach the input or the button — style those in
   beehiiv itself (Subscribe forms → "Website - fairchildautomotivesolutions.com").
   All that belongs here is a reserved height so the async script cannot shift
   the section when it lands. */
/* The frame's own page is 250px tall and carries ~80px of dead padding ABOVE the
   field, so the frame is pulled up by 64px and the wrapper is shortened to match.
   🔴 Crop the TOP ONLY. Everything below the button has to stay visible: beehiiv
   renders its success message there after a submit, and cropping the bottom means
   a visitor subscribes and sees no confirmation at all.
   ⚠️ If beehiiv changes that padding the crop needs re-measuring: load the iframe
   src on its own and read the form's offsetTop and the body's scrollHeight. */
.fc-beehiiv { position: relative; height: 186px; margin-top: 8px; overflow: hidden; }
.fc-beehiiv iframe { position: absolute; top: -64px; left: 0; width: 100%; height: 250px; border: 0; }
.fc-beehiiv .fc-form-fallback { padding-top: 8px; }

.fc-fine { margin-top: 12px; font-size: 12px; text-align: center; color: var(--wp--preset--color--ink-muted); }

/* Blog cards. Wraps the live wp:query output, so headlines can never drift
   from what is actually published. */
.fc-blog-sub { font-weight: 700; color: var(--wp--preset--color--accent); }
.fc-posts { gap: 26px !important; }
.fc-posts > li {
	border-radius: 16px;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.10);
	background: #10151A;
}
.fc-post-img img { width: 100%; height: 230px; object-fit: cover; display: block; }
.fc-posts > li > :not(.fc-post-img) { padding-left: 24px; padding-right: 24px; }
.fc-post-cat { margin: 24px 0 8px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--wp--preset--color--accent); }
.fc-post-cat a { color: inherit; text-decoration: none; }
.fc-post-title { margin: 0 0 6px; font-family: var(--wp--preset--font-family--body); font-weight: 700; line-height: 1.3; letter-spacing: 0; }
.fc-post-title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.fc-post-meta { margin: 0 0 24px; color: var(--wp--preset--color--ink-muted); }

/* Final CTA panel. Third and last outing for the glow, centred this time. */
.fc-final {
	padding: 78px 40px;
	border-radius: 26px;
	border: 1px solid rgba(255, 255, 255, 0.10);
	background:
		radial-gradient(700px 420px at 50% 0%, rgba(233, 27, 34, 0.5), transparent 60%),
		linear-gradient(160deg, #1A1012, #06080A);
}
.fc-final-sub { font-weight: 300; color: #C2CACF; }
.fc-btn-pill .wp-block-button__link { border-radius: 40px; padding: 17px 36px; box-shadow: 0 10px 30px rgba(233, 27, 34, 0.38); }

@media (max-width: 781px) {
	.fc-portrait img { height: 380px; }
	.fc-underline { height: 12px; }
	.fc-news { flex-direction: column; padding: 32px; }
	.fc-quotes { flex-direction: column; gap: 32px; }
	.fc-logo-slot { flex: 1 1 40%; }
	.fc-final { padding: 48px 24px; }
}

/* ===========================================================================
   v0.3.0 — design sync (Paper "B — Instrument", Sept 3 2026) + inner pages
   =========================================================================== */

/* Tier badge next to a ladder heading. Red fill takes white; the quiet variant
   is an outline so "Soon" does not shout. */
.fc-tier-head { gap: 12px; }
.fc-badge {
	display: inline-block;
	padding: 5px 10px;
	border-radius: 2px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	line-height: 1.2;
	white-space: nowrap;
}
.fc-badge--signal { background: var(--wp--preset--color--signal); color: var(--wp--preset--color--on-signal); }
.fc-badge--quiet { border: 1px solid #3A3D42; color: var(--wp--preset--color--ink-muted); }

/* Ladder list links read as plain items until hovered. */
.fc-tier-list a { color: inherit; text-decoration: none; }
.fc-tier-list a:hover { color: var(--wp--preset--color--accent); }

/* Cyan variant of the tracked label, used on the DMS panel. */
.fc-label--accent { color: var(--wp--preset--color--accent); }

/* "Works with your DMS" panel. Sits on a band section, so it needs an
   explicitly LIGHTER surface than --band or it vanishes (Paper trap, Sept 1).
   Border sides are set individually: a border-left shorthand after a border
   shorthand drops the other three. */
.fc-dms {
	padding: 28px 32px;
	border-radius: 16px;
	background: #1F2329;
	border-top: 1px solid #2F343B;
	border-right: 1px solid #2F343B;
	border-bottom: 1px solid #2F343B;
	border-left: 4px solid var(--wp--preset--color--accent);
}
.fc-dms > * + * { margin-top: 10px; }
.fc-dms p:last-child { max-width: 1040px; }
.fc-dms-logos { display: flex; flex-wrap: wrap; gap: 12px; list-style: none; margin: 4px 0 0; padding: 0; }
.fc-dms-logos .fc-logo-slot { flex: 0 0 170px; }

/* Featured testimonial: band panel with a red left rule, display-face name. */
.fc-featured-quote {
	margin: 0 0 56px;
	padding: 40px;
	border-radius: 16px;
	background: var(--wp--preset--color--band);
	border-left: 4px solid var(--wp--preset--color--signal);
}
.fc-featured-quote blockquote { margin: 0; max-width: 1000px; font-size: 24px; line-height: 1.65; color: var(--wp--preset--color--ink); }
.fc-featured-quote figcaption { padding-top: 20px; }
.fc-featured-name { display: block; font-family: var(--wp--preset--font-family--display); font-size: 20px; letter-spacing: 0.01em; color: var(--wp--preset--color--ink); }

/* Footer. Brand block on the left, three link columns on the right. */
.fc-footer-brand { max-width: 360px; }
.fc-footer-brand .wp-block-site-logo img { width: 104px; height: auto; }
.fc-footer-cols { gap: 64px; }
.fc-footer-list { list-style: none; padding: 0; margin: 0; }
.fc-footer-list li + li { margin-top: 12px; }
.fc-footer-list a { color: var(--wp--preset--color--ink); text-decoration: none; }
.fc-footer-list a:hover { color: var(--wp--preset--color--accent); }
.fc-social .wp-block-social-link {
	width: 40px; height: 40px;
	display: flex; align-items: center; justify-content: center;
	border: 1px solid var(--wp--preset--color--hairline);
	border-radius: 6px;
}
.fc-social .wp-block-social-link a { padding: 0; }
.fc-social .wp-block-social-link svg { width: 18px; height: 18px; }

/* Header emblem sizing (wp:site-logo width attr is honoured only when a logo
   is set in the Site Editor; the fallback image needs the same rule). */
.wp-block-site-logo .custom-logo { width: 104px; height: auto; display: block; }

/* Inner-page hero: same ambient light as the homepage hero, shorter. */
.fc-page-hero h1 { max-width: 14ch; }
.fc-page-hero .wp-block-columns h1 { max-width: none; }
.fc-page-hero .fc-eyebrow a { color: inherit; text-decoration: none; }

/* Definition list used for "why" blocks: display term, muted definition. */
.fc-deflist { margin: 0; }
.fc-deflist dt {
	font-family: var(--wp--preset--font-family--display);
	font-size: 19px;
	color: var(--wp--preset--color--ink);
	padding-top: 24px;
	border-top: 1px solid var(--wp--preset--color--hairline);
}
.fc-deflist dt:first-child { padding-top: 0; border-top: 0; }
.fc-deflist dd { margin: 10px 0 24px; font-size: 17px; line-height: 1.65; color: var(--wp--preset--color--ink-muted); }
.fc-deflist dd:last-child { margin-bottom: 0; }
.fc-deflist--tight dt { font-size: 17px; padding-top: 18px; }
.fc-deflist--tight dd { margin: 6px 0 18px; font-size: 15px; }

/* Agenda: time in the display face on the left, description on the right. */
.fc-agenda { margin: 20px 0 0; display: grid; grid-template-columns: 110px 1fr; column-gap: 20px; row-gap: 22px; }
.fc-agenda dt { font-family: var(--wp--preset--font-family--display); font-size: 17px; color: var(--wp--preset--color--accent); padding-top: 2px; }
.fc-agenda dd { margin: 0; font-size: 17px; line-height: 1.65; color: var(--wp--preset--color--ink-muted); }
.fc-agenda dd strong { color: var(--wp--preset--color--ink); }

/* Checklist: red tick, no bullet. */
.fc-checklist { list-style: none; padding: 0; margin: 16px 0 0; }
.fc-checklist li { position: relative; padding-left: 28px; margin-bottom: 12px; line-height: 1.6; }
.fc-checklist li::before {
	content: "";
	position: absolute; left: 0; top: 0.55em;
	width: 14px; height: 8px;
	border-left: 2.5px solid var(--wp--preset--color--signal);
	border-bottom: 2.5px solid var(--wp--preset--color--signal);
	transform: rotate(-45deg);
}

/* Services hub: numbered rows on hairlines. */
.fc-way { border-top: 1px solid var(--wp--preset--color--hairline); gap: 48px; }
.fc-way:last-of-type { border-bottom: 1px solid var(--wp--preset--color--hairline); }
.fc-way-head { flex: 0 0 360px; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.fc-way-body { flex: 1 1 480px; }
.fc-way-num { font-family: var(--wp--preset--font-family--display); font-size: 15px; letter-spacing: 0.1em; color: var(--wp--preset--color--accent); margin: 0 0 4px; }
.fc-way--quiet .fc-way-num { color: var(--wp--preset--color--ink-muted); }
.fc-way-links { list-style: none; padding: 0; margin: 20px 0 0; }
.fc-way-links li + li { margin-top: 10px; }
.fc-way-links a { color: var(--wp--preset--color--ink); font-weight: 700; text-decoration: none; }
.fc-way-links a:hover { color: var(--wp--preset--color--accent); }

/* Software modules: 3-up grid of surfaces without heavy card chrome. */
.fc-modules { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 40px; }
.fc-module { padding-top: 24px; border-top: 1px solid var(--wp--preset--color--hairline); }
.fc-module h3 { font-size: 20px; margin: 8px 0 12px; }
.fc-module p { margin: 0; font-size: 16px; line-height: 1.65; color: var(--wp--preset--color--ink-muted); }
.fc-module p a { color: var(--wp--preset--color--ink); font-weight: 700; text-decoration: none; }
.fc-module p a:hover { color: var(--wp--preset--color--accent); }
.fc-module--quiet h3 { color: var(--wp--preset--color--ink-muted); }

/* About: news strip. */
.fc-news-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 26px; }
.fc-news-item { margin: 0; }
.fc-news-item img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 12px; border: 1px solid rgba(255,255,255,0.10); }
.fc-news-item figcaption { padding-top: 14px; font-size: 15px; line-height: 1.5; color: var(--wp--preset--color--ink-muted); }

/* Contact card + forms (Jetpack contact form and WPForms share the look). */
.fc-contact-card { padding: 32px; border-radius: 16px; background: #1F2329; border: 1px solid #2F343B; }
.fc-contact-card .fc-textlink a { color: var(--wp--preset--color--ink); }
.fc-contact-form label,
.fc-contact-form .wpforms-field-label { display: block; font-size: 13px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--wp--preset--color--ink-muted); margin-bottom: 8px; }
.fc-contact-form input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.fc-contact-form select,
.fc-contact-form textarea {
	width: 100%;
	padding: 14px 16px;
	border-radius: 8px;
	border: 1.5px solid rgba(255,255,255,0.18);
	background: #06090C;
	color: var(--wp--preset--color--ink);
	font-size: 16px;
	font-family: inherit;
}
.fc-contact-form textarea { min-height: 160px; }
.fc-contact-form .grunion-field-wrap,
.fc-contact-form .wpforms-field { margin-bottom: 20px; }
.fc-contact-form button[type="submit"],
.fc-contact-form input[type="submit"],
.fc-contact-form .wp-block-jetpack-button .wp-block-button__link {
	border: 0;
	border-radius: 2px;
	padding: 19px 38px;
	background: var(--wp--preset--color--signal);
	color: var(--wp--preset--color--on-signal);
	font-family: inherit;
	font-size: 17px;
	font-weight: 700;
	cursor: pointer;
}
.fc-contact-form button[type="submit"]:hover,
.fc-contact-form input[type="submit"]:hover { background: var(--wp--preset--color--signal-deep); }
.fc-contact-form .wpforms-field-description,
.fc-contact-form .wpforms-field-sublabel { color: var(--wp--preset--color--ink-muted); font-size: 13px; }
.fc-contact-form .wpforms-field-checkbox label,
.fc-contact-form .wpforms-field-radio label { text-transform: none; letter-spacing: 0; font-weight: 400; font-size: 15px; color: var(--wp--preset--color--ink); display: inline; }

/* Blog landing, archives, single. */
.fc-filters { gap: 10px; }
.fc-chip a {
	display: inline-block;
	padding: 9px 16px;
	border-radius: 999px;
	border: 1px solid var(--wp--preset--color--hairline);
	color: var(--wp--preset--color--ink);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
}
.fc-chip a:hover { border-color: var(--wp--preset--color--accent); color: var(--wp--preset--color--accent); }
.fc-pagination { gap: 12px; font-size: 15px; }
.fc-pagination a, .fc-pagination .page-numbers { color: var(--wp--preset--color--ink); text-decoration: none; }
.fc-pagination .page-numbers.current { color: var(--wp--preset--color--accent); }
.fc-post-kicker { align-items: center; }
.fc-post-cat--inline { margin: 0 !important; }
.fc-article-img img { border-radius: 16px; }
.fc-article .wp-block-post-content { font-size: 19px; line-height: 1.75; }
.fc-article .wp-block-post-content > * + * { margin-top: 1.2em; }
.fc-article .wp-block-post-content h2 { font-size: 32px; margin-top: 1.6em; }
.fc-article .wp-block-post-content h3 { font-size: 24px; margin-top: 1.4em; }
.fc-article .wp-block-post-content img { border-radius: 12px; }
.fc-article .wp-block-post-content a { color: var(--wp--preset--color--accent); }
.fc-article .wp-block-post-content blockquote { border-left: 4px solid var(--wp--preset--color--signal); padding-left: 22px; margin-left: 0; color: var(--wp--preset--color--ink); font-family: var(--wp--preset--font-family--display); font-size: 22px; line-height: 1.4; }
.fc-article .wp-block-post-content ul, .fc-article .wp-block-post-content ol { padding-left: 1.4em; }
.fc-article .wp-block-post-content li + li { margin-top: 0.5em; }

@media (max-width: 1024px) {
	.fc-modules, .fc-news-grid { grid-template-columns: repeat(2, 1fr); }
	.fc-way-head { flex-basis: 100%; }
}
@media (max-width: 781px) {
	.fc-modules, .fc-news-grid { grid-template-columns: 1fr; }
	.fc-featured-quote { padding: 28px; }
	.fc-featured-quote blockquote { font-size: 20px; }
	.fc-agenda { grid-template-columns: 90px 1fr; }
	.fc-footer-cols { gap: 32px; }
	.fc-page-hero h1 { max-width: none; }
	.fc-dms { padding: 22px 22px 22px 24px; }
}

/* Ladder and footer lists carry no bullets; the coloured rule above the column
   is the only ornament (matches the Paper canvas). */
.fc-tier-list, .fc-checklist, .fc-way-links { list-style: none; padding-left: 0; }
.fc-tier-list li + li { margin-top: 9px; }
.fc-news > * { margin: 0; }
.fc-news-form > * + * { margin-top: 0; }
.fc-news-label { font-size: 13px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--wp--preset--color--ink-muted); }
.fc-news .fc-fine { margin-top: 12px; }
.fc-form-fallback { font-size: 15px; line-height: 1.6; color: var(--wp--preset--color--ink-muted); }
.fc-form-fallback a, .fc-contact-card p a { color: var(--wp--preset--color--ink); font-weight: 700; text-decoration: none; }
/* Jetpack contact form shortcode output. */
.fc-contact-form .contact-form label { display: block; }
.fc-contact-form .contact-form .grunion-field-wrap, .fc-contact-form .contact-form > div { margin-bottom: 20px; }
.fc-contact-form .contact-form .contact-form-submission { color: var(--wp--preset--color--ink); }

/* WPForms (masterclass registration) inherits the dark card through its own CSS variables. */
.fc-contact-form .wpforms-container {
	--wpforms-label-color: #9A9DA2;
	--wpforms-label-sublabel-color: #9A9DA2;
	--wpforms-label-error-color: #FF6E67;
	--wpforms-field-text-color: #F2F0ED;
	--wpforms-field-background-color: #06090C;
	--wpforms-field-border-color: rgba(255,255,255,0.18);
	--wpforms-field-border-radius: 8px;
	--wpforms-button-background-color: #E91B22;
	--wpforms-button-text-color: #FFFFFF;
	--wpforms-button-border-radius: 2px;
	--wpforms-field-size-input-height: 50px;
	--wpforms-page-break-color: #00B8F8;
}
.fc-contact-form .wpforms-container .wpforms-field-label { color: #9A9DA2; }
.fc-contact-form .wpforms-container .wpforms-field-description,
.fc-contact-form .wpforms-container .wpforms-field-sublabel,
.fc-contact-form .wpforms-container .wpforms-field-checkbox li label,
.fc-contact-form .wpforms-container .wpforms-payment-total,
.fc-contact-form .wpforms-container .wpforms-field-payment-single .wpforms-single-item-price { color: #F2F0ED; text-transform: none; letter-spacing: 0; }

/* Mobile. theme.json sets 96px root padding for the 1440 frame; on a phone that
   leaves ~200px for content and the display headline overflows the viewport. */
@media (max-width: 781px) {
	body { --wp--style--root--padding-left: 24px; --wp--style--root--padding-right: 24px; }
	.fc-page-hero h1 { font-size: clamp(34px, 9.5vw, 44px); }
	.fc-hero h1.has-3xl-font-size { font-size: clamp(34px, 9.5vw, 44px); }
	.fc-underline { width: 100%; }
	.fc-featured-quote blockquote { font-size: 19px; }
	.fc-way { gap: 20px; }
	.fc-agenda { grid-template-columns: 80px 1fr; }
	html { overflow-x: hidden; }
}
@media (max-width: 600px) {
	/* WP's layout CSS (.wp-block-buttons-is-layout-flex) is printed after this sheet, so match its specificity. */
	.fc-header-cta.wp-block-buttons { display: none !important; }
	.fc-footer-cols { gap: 24px 40px; }
}

/* Homepage hero as a Cover block: the old site's team photo full-bleed, darkened
   left-to-right so the copy sits on near-black and the team reads on the right.
   The block's flat dim is replaced by this gradient (plus the red glow motif). */
.fc-hero--cover.wp-block-cover { background: none; }
/* The preset colour class on the overlay span sets an OPAQUE background-color
   with !important, which hid the photo entirely. Force it transparent. */
.fc-hero--cover .wp-block-cover__background.has-background-dim {
	opacity: 1 !important;
	background-color: transparent !important;
	background-image:
		radial-gradient(780px 420px at 100% 2%, rgba(233, 27, 34, 0.26), transparent 60%),
		linear-gradient(90deg, rgba(7, 7, 9, 0.96) 0%, rgba(7, 7, 9, 0.88) 40%, rgba(7, 7, 9, 0.45) 72%, rgba(7, 7, 9, 0.22) 100%),
		linear-gradient(180deg, rgba(7, 7, 9, 0.30), rgba(7, 7, 9, 0.30));
}
.fc-hero--cover .wp-block-cover__image-background { filter: saturate(0.85); }
.fc-hero--cover .wp-block-cover__inner-container { width: 100%; }
@media (max-width: 781px) {
	.fc-hero--cover.wp-block-cover { min-height: 0 !important; }
	.fc-hero--cover .wp-block-cover__background.has-background-dim {
		background-image:
			linear-gradient(180deg, rgba(7, 7, 9, 0.92) 0%, rgba(7, 7, 9, 0.85) 60%, rgba(7, 7, 9, 0.7) 100%);
	}
}

/* Cover inner container: WP zeroes nested global padding, which pushed the hero
   copy to the viewport edge. Re-apply it and cap the container so the copy lines
   up with the 1200px frame every other section uses. */
.fc-hero--cover > .wp-block-cover__inner-container {
	max-width: calc(1200px + var(--wp--style--root--padding-left) + var(--wp--style--root--padding-right));
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--wp--style--root--padding-left) !important;
	padding-right: var(--wp--style--root--padding-right) !important;
}

/* Top bar above the nav: red social squares left, email + phone right (the
   one element of the old site Samantha asked to keep). */
.fc-topbar { border-bottom: 1px solid var(--wp--preset--color--hairline); }
.fc-topbar-social .wp-block-social-link { border-radius: 4px; }
.fc-topbar-social .wp-block-social-link a { padding: 6px; }
.fc-topbar-contact { display: flex; flex-wrap: wrap; gap: 8px 28px; align-items: center; }
.fc-topbar-contact a { display: inline-flex; align-items: center; gap: 9px; color: var(--wp--preset--color--ink); font-size: 15px; text-decoration: none; }
.fc-topbar-contact a:hover { color: var(--wp--preset--color--accent); }
.fc-topbar-contact svg { color: var(--wp--preset--color--ink-muted); flex: 0 0 18px; }
@media (max-width: 600px) { .fc-topbar-contact a span { font-size: 14px; } }

/* Four-up ladder: tighter gap so four columns fit the 1200 frame. */
.fc-ladder-cols .wp-block-column h3 { font-size: 20px; }
@media (max-width: 1024px) and (min-width: 782px) {
	.fc-ladder-cols { flex-wrap: wrap !important; }
	.fc-ladder-cols .wp-block-column { flex-basis: calc(50% - 12px) !important; }
}

/* Calendly booking panel on the Contact page. The widget renders in an iframe we
   cannot style, so the colour params in the data-url do the work when the Calendly
   plan allows them. The panel below is a deliberate surface either way, so a
   default-white widget still reads as a card rather than a bare slab. */
.fc-booking h2 { max-width: 20ch; }
.fc-calendly {
	/* Calendly stacks into a very tall single column below ~900px of container
	   width and only uses its side-by-side layout above that. Keep this wide. */
	max-width: 1040px;
	border-radius: 16px;
	overflow: hidden;
	border: 1px solid #2F343B;
	box-shadow: 0 26px 64px rgba(0, 0, 0, 0.55);
	min-height: 700px;
	background: var(--wp--preset--color--ink);
}
.fc-calendly .calendly-inline-widget { width: 100%; }
@media (max-width: 781px) {
	.fc-calendly, .fc-calendly .calendly-inline-widget { min-height: 820px; height: 820px !important; }
}

/* Post footer: the author card under every post. The Fixed Ops HQ links inside
   it are the only external links this site makes on purpose — see
   patterns/post-footer.php for why they are deep links rather than homepage ones. */
.fc-postfoot-card {
	padding: 32px;
	border-radius: 16px;
	border: 1px solid var(--wp--preset--color--hairline);
	background: #12161B;
}
.fc-postfoot-name {
	margin: 10px 0 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: 26px;
	line-height: 1.2;
	color: var(--wp--preset--color--ink);
}
.fc-postfoot-bio { margin: 14px 0 0; font-size: 16px; line-height: 1.7; color: var(--wp--preset--color--ink-muted); }
.fc-postfoot-bio a { color: var(--wp--preset--color--ink); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.fc-postfoot-bio a:hover { color: var(--wp--preset--color--accent); }
.fc-postfoot-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 22px; margin: 24px 0 0; }
.fc-postfoot-btn {
	display: inline-block;
	padding: 13px 26px;
	border-radius: 40px;
	background: var(--wp--preset--color--signal);
	color: var(--wp--preset--color--on-signal);
	font-size: 15px;
	font-weight: 700;
	text-decoration: none;
}
.fc-textlink-inline { font-size: 15px; font-weight: 700; color: var(--wp--preset--color--ink); text-decoration: none; }
.fc-textlink-inline:hover { color: var(--wp--preset--color--accent); }
