/* NGC type system (from the new site): Archivo headings, Geist text, NGC Mono labels and tables (Iosevka built to Mono45 Headline proportions).
   Loaded after style.css and only overrides type and spacing (colours stay as style.css sets them) – remove the <link> in header.php to undo. */

@font-face { font-family: "Archivo"; font-style: normal; font-weight: 100 900; font-stretch: 62% 125%; font-display: swap; src: url("type/archivo-variable-latin.woff2") format("woff2"); }
/* NGC Mono – Iosevka (OFL) built to Mono45 Headline's proportions, with lower case; subset web files */
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 100; font-display: swap; src: url("type/ngc-mono-100.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 200; font-display: swap; src: url("type/ngc-mono-200.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 300; font-display: swap; src: url("type/ngc-mono-300.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 400; font-display: swap; src: url("type/ngc-mono-400.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("type/ngc-mono-500.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 600; font-display: swap; src: url("type/ngc-mono-600.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 700; font-display: swap; src: url("type/ngc-mono-700.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 800; font-display: swap; src: url("type/ngc-mono-800.woff2") format("woff2"); }
@font-face { font-family: "NGC Mono"; font-style: normal; font-weight: 900; font-display: swap; src: url("type/ngc-mono-900.woff2") format("woff2"); }
@font-face { font-family: "Geist"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("type/geist-variable-latin.woff2") format("woff2"); }

:root {
	--ngc-display: "Archivo", "Helvetica Neue", Arial, sans-serif;
	--ngc-body: "Geist", "Helvetica Neue", Arial, sans-serif;
	--ngc-mono: "NGC Mono", ui-monospace, Menlo, monospace; /* replaces Mono45 Headline (Oct 2026) */
	--mono-track: 0.06em; /* one letter-spacing for all NGC Mono text: labels, values, tags, headings */
	/* values: table cells, part numbers in specs, figures (same family as --ngc-mono) */
	--ngc-table: "NGC Mono", ui-monospace, Menlo, monospace;
	--ngc-rule: #dedcd6;
}

body { font-family: var(--ngc-body); font-synthesis: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; }

/* ---------- Headings: bold, expanded for h1/h2, normal width below ---------- */
h1, h2, h3, h4, h5,
.side-title, h2.product-link-title {
	font-family: var(--ngc-display);
	font-variation-settings: normal;
	font-weight: 700;
	word-break: normal;
	text-wrap: balance;
}
/* Slightly expanded (not fully wide) so long titles still fit on a line. */
h1, h2 { font-stretch: 110%; }
h3, h4, h5, .side-title { font-stretch: 100%; }

h1 { font-size: clamp(2rem, 1.4rem + 2.4vw, 3rem); line-height: 0.98; letter-spacing: -0.02em; margin: 0 0 0.6em; }
h2 { font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem); line-height: 1; letter-spacing: -0.015em; margin: 1.6em 0 0.6em; }
h3 { font-size: clamp(1.2rem, 1.1rem + 0.4vw, 1.4rem); line-height: 1.02; letter-spacing: 0; margin: 1.8em 0 0.5em; }
h4, h5 { font-size: 1.125rem; line-height: 1.05; letter-spacing: 0; margin: 1.6em 0 0.4em; }
h3 strong, h2 strong { font-weight: inherit; }
/* No extra space above a heading that starts its column. */
:is(h1, h2, h3, h4, h5):first-child { margin-top: 0; }
:is(h2, h3, h4) + :is(h2, h3, h4) { margin-top: 0.4em; }

/* Small titles in lists, cards, sidebars and menus. */
.link-title, #slideshow h1, nav h1, .post-preview .link-title { font-stretch: 100%; letter-spacing: 0; line-height: 1.02; }
.link-title, #slideshow h1 { font-size: 1.2rem; margin: 0 0 0.4em; }
nav h1 { font-size: 1.35rem; margin-bottom: 0.75em; }
.post-preview .link-title { font-size: 1.4rem; }
.side-title { font-size: 1.25rem; line-height: 1.02; }
h2.product-link-title { font-family: var(--ngc-mono); font-weight: 500; font-size: 0.8rem; line-height: 1.35; letter-spacing: var(--mono-track); margin: 0; text-transform: uppercase; }

/* ---------- Body text: Geist, comfortable leading, sensible measure ---------- */
p, li {
	font-family: var(--ngc-body);
	font-weight: 450;
	font-size: 1.125rem;
	line-height: 1.45;
	letter-spacing: 0;
}
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
li { margin-bottom: 0.35em; }
.entry-content :is(ul, ol) { margin: 0 0 1.25em; padding-left: 1.25em; }
.entry-content :is(p, li) { max-width: 72ch; }
.entry-content p + :is(ul, ol) { margin-top: -0.25em; }
/* Bold in body copy is 600 (style.css sets p strong to 500, which is too close to the 450 text). */
b, strong, p strong, p b, li strong, li b { font-weight: 600; }

.big-paragraph { font-family: var(--ngc-body); font-variation-settings: normal; font-size: clamp(1.35rem, 1.1rem + 1vw, 1.75rem); line-height: 1.3; font-weight: 350; letter-spacing: -0.01em; }

/* ---------- Labels: NGC Mono, spaced capitals ---------- */
#breadcrumbs, .condensed, .condensed.meta, .product-terms-meta a, .message, .call {
	font-family: var(--ngc-mono);
	font-weight: 500;
	letter-spacing: var(--mono-track);	text-transform: uppercase; }
#breadcrumbs, .condensed.meta, .message { text-transform: uppercase; font-size: 0.75rem; letter-spacing: var(--mono-track); }
.message { font-size: 0.7rem; padding: 8px 0; }
p.condensed, .sidebar-title p.condensed { font-size: 0.8rem; line-height: 1.45; text-transform: uppercase; }
.product-terms-meta a { font-size: 0.8rem; line-height: 1.6; }
/* Captions in the text face, so captioned images and linked paragraphs side by side (e.g. literature) match. */
figcaption, p.wp-caption-text, .wp-block-gallery figcaption { font-family: var(--ngc-body); font-weight: 400; letter-spacing: 0; text-transform: none; font-size: 0.9rem; line-height: 1.4; margin-top: 0.5em; }
.call { letter-spacing: var(--mono-track); }
.call .phonenumber { font-family: var(--ngc-display); font-stretch: 110%; font-weight: 700; letter-spacing: 0; }

/* ---------- Navigation ---------- */
ul#menu-top-nav li { font-family: var(--ngc-body); font-size: 1rem; font-weight: 500; margin-right: 1.1rem; }
ul#menu-top-nav li a { font-family: inherit; font-weight: inherit; }
nav#master li, nav#master p, nav#master a { font-family: var(--ngc-body); font-size: 0.95rem; line-height: 1.5; }
nav.mobile-menu ul li { font-family: var(--ngc-display); font-stretch: 100%; font-weight: 700; font-size: 1.4rem; }

/* ---------- Tables: NGC Mono, ruled, roomy ---------- */
table:not(.grid) { border-collapse: collapse; }
table:not(.grid) :is(td, th),
table:not(.grid) :is(td, th) :is(p, a, li) {
	font-family: var(--ngc-mono);
	font-size: 0.8rem;
	font-weight: 500;
	line-height: 1.45;
	letter-spacing: var(--mono-track);
	text-transform: uppercase;
}
table:not(.grid) :is(td, th) { padding: 0.6rem 1rem 0.6rem 0; border-bottom: 1px solid var(--ngc-rule); vertical-align: top; text-align: left; }
table:not(.grid) th, table:not(.grid) thead td, table:not(.grid) th a { font-weight: 500; }
table:not(.grid) thead :is(th, td) { border-bottom: 2px solid currentColor; font-size: 0.75rem; opacity: 0.75; }
/* Body cells in NGC Mono capitals (units after a number keep their case – see js/ngc-units.js) */
table:not(.grid) tbody td, table:not(.grid) tbody td :is(p, a, li), table:not(.grid) > tr > td, table:not(.grid) > tr > td :is(p, a, li) {
	font-family: var(--ngc-table); font-weight: 400; font-size: 0.86rem; letter-spacing: var(--mono-track); text-transform: uppercase;
}
/* Two-column spec tables without a header row: the left column is labels – keep those as spaced capitals */
table:not(.grid):not(:has(thead)) tbody td:first-child:not(:only-child),
table:not(.grid):not(:has(thead)) tbody td:first-child:not(:only-child) :is(p, a, li) {
	font-family: var(--ngc-mono); font-weight: 500; font-size: 0.8rem; letter-spacing: var(--mono-track); text-transform: uppercase;
}
table:not(.grid) tbody tr { transition: background-color 0.12s ease; }
table:not(.grid) tbody tr:hover { background: rgba(0, 97, 255, 0.06); }
@media (hover: none) { table:not(.grid) tbody tr:hover { background: inherit; } }
table.grid td, table.grid p { font-family: var(--ngc-body); }

/* ---------- Footer ---------- */
footer#footer p { font-family: var(--ngc-body); font-size: 0.85rem; line-height: 1.55; }
footer#footer p b { font-weight: 600; }
address p { font-family: var(--ngc-body); }

/* ---------- Larger screens keep the old sizes' proportions ---------- */
@media screen and (min-width: 35.5em) {
	p, li { font-size: 1.1875rem; letter-spacing: 0; }
}
@media screen and (min-width: 48em) {
	h1 { font-size: clamp(2.5rem, 1.6rem + 2vw, 3.25rem); letter-spacing: -0.02em; }
	h3 { font-size: 1.4rem; }
}

@media (prefers-reduced-motion: reduce) { table:not(.grid) tbody tr { transition: none; } }

/* Sidebar headings sit in a narrow column: normal width, smaller. */
aside#sidebar :is(h1, h2, h3):not(.link-title) { font-stretch: 100%; font-size: 1.35rem; line-height: 1.02; letter-spacing: 0; margin: 2rem 0 0.75rem; }
aside#sidebar :is(h1, h2, h3):not(.link-title):first-child { margin-top: 0; }
aside#sidebar p { font-size: 1rem; }

/* Editor tables: horizontal rules only, and columns sized to their content so part numbers don't break. */
.wp-block-table :is(td, th) { border: 0 !important; border-bottom: 1px solid var(--ngc-rule) !important; }
.wp-block-table thead :is(td, th) { border-bottom: 2px solid currentColor !important; }
.wp-block-table table.has-fixed-layout { table-layout: auto; }
.wp-block-table { overflow-x: auto; margin: 0 0 1.5em; }
.wp-block-table tbody :is(td, th):has(> a:only-child) { white-space: nowrap; } /* linked model numbers */

/* Literature / catalogue titles under an image – the tagged paragraphs (.ngc-lit-title), linked image captions,
   and any untagged image + short paragraph in a column all share one style: Geist, 10% under body size, tight. */
p.ngc-lit-title,
.wp-block-column > .wp-block-image + p:last-child,
.wp-block-image figcaption:has(a) {
	font-family: var(--ngc-body);
	font-size: 1rem;
	font-weight: 450;
	line-height: 1.15;
	letter-spacing: 0;
	margin-top: 0.5em;
}
.wp-block-image:has(+ p.ngc-lit-title), .wp-block-column > .wp-block-image:has(+ p:last-child) { margin-bottom: 0; }
@media screen and (min-width: 35.5em) {
	p.ngc-lit-title, .wp-block-column > .wp-block-image + p:last-child, .wp-block-image figcaption:has(a) { font-size: 1.07rem; }
}

/* Menu group labels (were <h1>s – not headings, so they don't compete with the page title). */
nav#master p.nav-heading { font-family: var(--ngc-display); font-stretch: 100%; font-weight: 700; font-size: 1.35rem; line-height: 1.2; margin: 0 0 0.75em; }
nav#master p.nav-heading a { font: inherit; }
/* Home and listing section titles (were <h1>s): keep their large size as H2s. */
h2.section-title { font-size: clamp(2rem, 1.4rem + 2.4vw, 3rem); font-stretch: 110%; line-height: 0.98; letter-spacing: -0.02em; margin: 0 0 0.6em; }
/* Card titles and sidebar labels never get the section-heading top margin. */
.link-title, .side-title { margin-top: 0; }

/* ---------- Phones ---------- */
/* Small labels never below 12px. */
.condensed.meta, .condensed.meta a, .meta a { font-size: 0.75rem !important; line-height: 1.6; }
/* The floating call button hides when it has nothing to say. */
.call:has(.open-status:empty) { display: none; }
@media (max-width: 47.99em) {
	/* Keep the call button clear of the page edge and the text it floats over. */
	.call { bottom: 12px; right: 12px; left: auto; max-width: calc(100vw - 24px); }
	/* Footer links are easier to tap with a little more room. */
	footer#footer p { line-height: 1.75; }
	footer#footer p a { padding: 2px 0; }
	/* Wide tables scroll inside their box; a faint edge shows there is more. */
	.wp-block-table { background: linear-gradient(to left, rgba(0,0,0,0.06), transparent 18px) right / 18px 100% no-repeat local, linear-gradient(to left, rgba(0,0,0,0.08), transparent 12px) right / 12px 100% no-repeat scroll; }
}

/* A title straight after an image (product cards, home grids) sits close to it. */
img + :is(h2, h3, h4), a > img.pb10 + :is(h2, h3, h4) { margin-top: 0.5rem; }
a > img.pb10 { padding-bottom: 0; }

@media (max-width: 47.99em) {
	/* Compact call button on phones: one line of label, then the number. */
	.call { padding: 6px 12px; font-size: 0.62rem; border-radius: 12px; }
	.call .phonenumber { font-size: 1.05rem; }
	/* Seven menu items need tighter rows to fit above the contact list. */
	nav.mobile-menu ul li { font-size: 1.25rem; padding: 7px 0 7px 20px; }
}

/* Titles: tight leading everywhere (card titles, footer and menu labels included). */
:is(h1, h2, h3, h4, h5) a { line-height: inherit; }
nav#master p.nav-heading { line-height: 1.02; }

/* Tablet / narrow desktop (768–1100px): keep the menu on one line and the search + menu icons visible. */
@media screen and (min-width: 48em) and (max-width: 68.75em) {
	ul#menu-top-nav { white-space: nowrap; }
	ul#menu-top-nav li { font-size: 0.875rem; margin-right: 0.65rem; }
	nav.social { display: inline-block; }
}
@media screen and (min-width: 48em) and (max-width: 63.99em) {
	#header-desktop #branding { width: 30%; }
	#header-desktop nav#menu { width: 70%; }
	ul#menu-top-nav li { font-size: 0.8rem; margin-right: 0.4rem; }
	nav.social ul li { padding-left: 6px; }
}
@media screen and (min-width: 48em) and (max-width: 52em) {
	ul#menu-top-nav li { font-size: 0.76rem; margin-right: 0.3rem; }
	nav.social ul li { padding-left: 2px; }
}

/* ---------- Literature grids (literature page, Nexen/IBD literature blocks) ---------- */
.ngc-lit-heading { margin: 3rem 0 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--ngc-rule); }
.entry-content > .ngc-lit-heading:first-of-type, h1 + .ngc-lit-heading { border-top: 0; padding-top: 0; margin-top: 1rem; }
.wp-block-group.ngc-lit-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 2rem 1.5rem; align-items: start; margin: 0 0 1rem; }
.ngc-lit-item { margin: 0 !important; padding: 0 !important; }
/* Every cover sits in the same portrait frame, so titles line up across a row whatever the cover's shape. */
.ngc-lit-item .wp-block-image { margin: 0; aspect-ratio: 3 / 4; background: #f3f3f1; display: flex; align-items: center; justify-content: center; padding: 10px; box-sizing: border-box; transition: background-color 0.15s ease; }
.ngc-lit-item .wp-block-image a { display: contents; }
.ngc-lit-item .wp-block-image img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; box-shadow: 0 1px 2px rgba(0,0,0,0.08), 0 6px 16px -10px rgba(0,0,0,0.35); }
.ngc-lit-item:hover .wp-block-image { background: #e9eef8; }
.ngc-lit-item p.ngc-lit-title { margin: 0.6rem 0 0; }
.ngc-lit-item p.ngc-lit-title a { text-decoration: none; }
.ngc-lit-item:hover p.ngc-lit-title a { text-decoration: underline; }
@media (max-width: 35.5em) {
	.wp-block-group.ngc-lit-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 1rem; }
}
@media (prefers-reduced-motion: reduce) { .ngc-lit-item .wp-block-image { transition: none; } }
/* A divider already above the literature heading: don't draw a second rule. */
.wp-block-separator + .ngc-lit-heading, .wp-block-separator + * > .ngc-lit-heading:first-child { border-top: 0; padding-top: 0; margin-top: 1.5rem; }
/* Empty columns (used as width fillers on desktop) take no space once columns stack on phones. */
@media (max-width: 781px) { .wp-block-column:not(:has(*)) { display: none; } }
.wp-block-separator + .wp-block-group .ngc-lit-heading:first-child,
.wp-block-separator + .wp-block-group > .wp-block-group__inner-container > .ngc-lit-heading:first-child { border-top: 0; padding-top: 0; margin-top: 1.5rem; }

/* Section breaks: one even gap around a divider, and the heading after it doesn't add its own. */
hr.wp-block-separator { margin-top: 3rem; margin-bottom: 2.5rem; }
.wp-block-separator + :is(h2, h3, h4), .wp-block-separator + .wp-block-group :is(h2, h3, h4):first-child { margin-top: 0; }
.wp-block-separator + .wp-block-separator { display: none; }

/* ---------- DataTables (fan drive cross-reference / master listing) ---------- */
/* Column titles wrap instead of setting the column width; filter dropdowns fit the column instead of their longest option. */
.dataTables_wrapper table.dataTable thead th { white-space: normal !important; vertical-align: bottom; line-height: 1.25; padding: 0.5rem 1.3rem 0.5rem 0 !important; min-width: 3rem; }
.dataTables_wrapper table.dataTable thead th:first-child { min-width: 6rem; }
.dataTables_wrapper table.dataTable thead select { width: 100%; min-width: 0; max-width: 100%; box-sizing: border-box; font-family: var(--ngc-mono); font-size: 0.7rem; padding: 2px 4px; border: 1px solid var(--ngc-rule); border-radius: 2px; background: #fff; text-transform: uppercase; letter-spacing: var(--mono-track); }
.dataTables_wrapper table.dataTable tbody td { padding: 0.45rem 1rem 0.45rem 0; }
.dataTables_wrapper :is(.dataTables_length, .dataTables_filter, .dataTables_info, .dataTables_paginate) { font-family: var(--ngc-body); font-size: 0.9rem; }

/* ---------- Footer sits at the bottom of the window on short pages ---------- */
/* Most templates put the footer inside #wrapper; page.php closes #wrapper first, so the footer is a body child.
   The body is the column either way; #wrapper grows, and the footer takes any spare space above it. */
body { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; }
.admin-bar { min-height: calc(100vh - var(--wp-admin--admin-bar--height, 32px)); min-height: calc(100dvh - var(--wp-admin--admin-bar--height, 32px)); }
body > #wrapper { flex: 1 0 auto; display: flex; flex-direction: column; }
#wrapper > *, body > footer#footer { flex-shrink: 0; }
#wrapper > .w1200 { width: 100%; box-sizing: border-box; }
#wrapper > footer#footer, body > footer#footer { margin-top: auto; }

/* ---------- Home: Fan Drive Finder panel ---------- */
.ngc-finder-band { background: #fff; }
.ngc-finder { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 3rem; align-items: center; padding: 60px 20px; box-sizing: border-box; }
.ngc-finder__logo { display: block; width: 132px; height: auto; margin: 0 0 1.25rem; }
.ngc-finder__eyebrow { font-family: var(--ngc-mono); font-weight: 500; font-size: 0.75rem; letter-spacing: var(--mono-track); text-transform: uppercase; margin: 0 0 0.5rem; }
.ngc-finder h2.section-title { margin: 0 0 0.6rem; }
.ngc-finder h2.section-title a { color: inherit; text-decoration: none; }
.ngc-finder h2.section-title a:hover { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 0.12em; }
p.ngc-finder__lede { margin: 0 0 1.5rem; max-width: 34em; }
.ngc-finder__form { margin: 0 0 1rem; }
.ngc-finder__form label { display: block; font-family: var(--ngc-mono); font-weight: 500; font-size: 0.72rem; letter-spacing: var(--mono-track); text-transform: uppercase; margin-bottom: 0.4rem; }
.ngc-finder__row { display: flex; gap: 0.5rem; max-width: 34rem; }
.ngc-finder__row :is(input, select) { flex: 1; min-width: 0; box-sizing: border-box !important; -webkit-appearance: none; appearance: none; height: 3rem; padding: 0 0.85rem; border: 1px solid #c9c7c1; border-radius: 2px; background-color: #fff; font-family: var(--ngc-body); font-size: 1rem; font-weight: 450; letter-spacing: 0; color: #17181c; line-height: normal; margin: 0; }
/* Both fields read the same: same font, and the empty dropdown shows its prompt in the placeholder grey. */
.ngc-finder__row input::placeholder { color: #8a8c93; opacity: 1; }
.ngc-finder__row select:invalid { color: #8a8c93; }
.ngc-finder__row select option { color: #17181c; }
.ngc-finder__row select { background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2317181c' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 0.85rem center; padding-right: 2.2rem; }
.ngc-finder__row :is(input, select):focus { outline: 2px solid #0061ff; outline-offset: 1px; border-color: #0061ff; }
/* Same-width buttons so both fields line up. */
.ngc-finder__row button { width: 7rem; height: 3rem; padding: 0; border: 0; border-radius: 2px; background: #0061ff; color: #fff; font-family: var(--ngc-body); font-weight: 600; font-size: 1rem; cursor: pointer; flex-shrink: 0; }
.ngc-finder__try { margin: 0.6rem 0 0; font-size: 0.9rem; color: #5d5f68; display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; }
.ngc-finder__try :is(a, button) { cursor: pointer; font-family: var(--ngc-mono); font-weight: 500; font-size: 0.75rem; letter-spacing: var(--mono-track); color: #0061ff; text-decoration: none; background: #fff; border: 1px solid #dedcd6; border-radius: 2px; padding: 3px 7px; text-transform: uppercase; }
.ngc-finder__try :is(a, button):hover { border-color: #0061ff; }
.ngc-finder__form + .ngc-finder__form { margin-top: 1.25rem; }
.ngc-finder__row button:hover { background: rgb(13, 61, 138); }
/* Rotating fan drive image: eight uniform slides (theme img/fan-drives/, made by tools/make_fan_drive_slides.py), every 1.5 seconds. */
.ngc-finder__art { position: relative; display: block; aspect-ratio: 5 / 4; background: #fff; color: inherit; text-decoration: none; }
.ngc-finder__slide { position: absolute; inset: 0; margin: 0; opacity: 0; transition: opacity 0.25s ease; }
.ngc-finder__slide.is-on { opacity: 1; }
.ngc-finder__slide img { display: block; width: 100%; height: 100%; object-fit: contain; }
.ngc-finder__slide figcaption { position: absolute; left: 0; right: 0; bottom: 0.25rem; text-align: center; font-family: var(--ngc-mono); font-weight: 500; font-size: 0.72rem; letter-spacing: var(--mono-track); text-transform: uppercase; color: #5d5f68; }
@media (max-width: 47.99em) {
	.ngc-finder { grid-template-columns: minmax(0, 1fr); gap: 2rem; padding: 40px 20px; }
	.ngc-finder__art { order: -1; max-width: 26rem; width: 100%; margin: 0 auto; }
}
@media (prefers-reduced-motion: reduce) { .ngc-finder__slide { transition: none; } }

/* Find My Fan Drive page: the same widget as the home page, plus Model and Engine under the Make row. */
.ngc-finder--page { padding: 0 0 2.5rem; border-bottom: 1px solid var(--ngc-rule); margin-bottom: 0.5rem; }
.ngc-finder--page h1.section-title { margin: 0 0 0.6rem; }
.ngc-finder__row--pair { margin-top: 0.5rem; padding-right: calc(7rem + 0.5rem); }
.ngc-finder__row select:disabled { background-color: #f3f3f1; cursor: not-allowed; }
@media (max-width: 47.99em) {
	.ngc-finder--page { padding-top: 0; }
	.ngc-finder__row--pair { padding-right: 0; }
}
@media (max-width: 35.5em) {
	.ngc-finder__row button { width: 5.25rem; }
	.ngc-finder__row :is(input, select) { padding-left: 0.7rem; }
}

/* Find My Fan Drive widget placed inside page content ([ngc_fan_drive_finder], e.g. the Horton page). */
.ngc-finder--inline { padding: 1rem 0 0.5rem; }
.ngc-finder--inline .ngc-finder__lede { font-size: 1.1rem; }

/* PDF blocks: tall enough to show a whole portrait page instead of a 600px crop. */
.wp-block-file .wp-block-file__embed { height: min(85vh, 1100px) !important; min-height: 420px; border: 1px solid var(--ngc-rule); background: #525659; }
.wp-block-file { margin-bottom: 1.5rem; }

/* ---------- Find My Rotating Union (Deublin): widget, page form and results ---------- */
/* Rotator: 3:2 series photos (img/rotary-unions/), every 2 s with a slower fade; the caption switches without fading. */
.ngc-finder__art--unions { aspect-ratio: 3 / 2; }
.ngc-finder__art--unions .ngc-finder__slide { transition-duration: 0.47s; }
.ngc-finder__art p.ngc-finder__cap { position: absolute; left: 0; right: 0; bottom: 0.25rem; margin: 0; max-width: none; width: auto; text-align: center; font-family: var(--ngc-mono); font-weight: 500; font-size: 0.72rem; letter-spacing: var(--mono-track); text-transform: uppercase; color: #5d5f68; }
/* Page form: three choices per row under Media, and the operating-condition fields with their units. */
.ngc-finder__row--3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 0.5rem; }
.ngc-finder__row--3 :is(input, select) { width: 100%; }
.ngc-finder__sub { display: block; font-family: var(--ngc-mono); font-weight: 500; font-size: 0.72rem; letter-spacing: var(--mono-track); text-transform: uppercase; margin: 1.1rem 0 0; }
.ngc-finder__unit { position: relative; min-width: 0; }
.ngc-finder__unit input { padding-right: 3rem !important; }
.ngc-finder__unit span { position: absolute; right: 0.8rem; top: 50%; transform: translateY(-50%); font-family: var(--ngc-table); font-size: 0.75rem; color: #5d5f68; pointer-events: none; text-transform: none; letter-spacing: var(--mono-track); }
.ngc-finder__unit input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
p.ngc-finder__hint { margin: 0.5rem 0 0; font-size: 0.85rem; color: #5d5f68; }
.ngc-finder__reset { font: inherit; color: #0061ff; background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline; }
@media (max-width: 35.5em) { .ngc-finder__row--3 { grid-template-columns: minmax(0, 1fr); } }

/* Results (js/ngc-union-finder.js) */
.ngc-uf { --x-rule: #dedcd6; --x-soft: #f3f3f1; --x-blue: #0061ff; --x-ink: #17181c; --x-muted: #5d5f68; margin: 0 0 2rem; scroll-margin-top: 1rem; }
.ngc-uf__bar { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.5rem 1rem; margin: 1.25rem 0 0.75rem; }
p.ngc-uf__status { margin: 0; font-size: 0.95rem; color: var(--x-muted); min-height: 1.4em; }
.ngc-uf__status b { color: var(--x-ink); font-weight: 600; }
.ngc-uf__views { display: inline-flex; border: 1px solid var(--x-ink); border-radius: 2px; overflow: hidden; }
.ngc-uf__views button { font-family: var(--ngc-mono); font-weight: 500; font-size: 0.72rem; letter-spacing: var(--mono-track); text-transform: uppercase; background: #fff; color: var(--x-ink); border: 0; padding: 0.45rem 0.8rem; cursor: pointer; }
.ngc-uf__views button[aria-pressed="true"] { background: var(--x-ink); color: #fff; }
.ngc-uf-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 1rem; }
.ngc-uf-card { display: grid; grid-row: span 4; grid-template-rows: subgrid; row-gap: 0; align-content: start; border: 1px solid var(--x-rule); border-top: 3px solid var(--x-ink); background: #fff; padding: 1rem 1.1rem 1.1rem; min-width: 0; }
@supports not (grid-template-rows: subgrid) { .ngc-uf-card { display: flex; flex-direction: column; } .ngc-uf-card__more { margin-top: auto; } }
.ngc-uf-card--water { border-top-color: #004e91; }
.ngc-uf-card--air { border-top-color: #64b32b; }
.ngc-uf-card--hot { border-top-color: #e3000b; }
/* Colour key above the cards (added by the script; hidden in table view). */
p.ngc-uf-key { display: flex; flex-wrap: wrap; gap: 0.4rem 1.25rem; margin: -0.25rem 0 0.9rem; font-size: 0.85rem; line-height: 1.3; color: var(--x-muted); max-width: none; }
.ngc-uf-key__item { display: inline-flex; align-items: center; gap: 0.45rem; }
.ngc-uf-key__item::before { content: ""; width: 1.4rem; height: 3px; background: var(--x-ink); }
.ngc-uf-key__item--water::before { background: #004e91; }
.ngc-uf-key__item--air::before { background: #64b32b; }
.ngc-uf-key__item--hot::before { background: #e3000b; }
.ngc-uf-card__head { display: grid; grid-template-columns: minmax(0, 1fr) 112px; gap: 0.9rem; align-items: start; min-height: 6.4rem; }
.ngc-uf-card img.ngc-uf-card__photo { width: 112px; height: 75px; object-fit: contain; background: #fff; margin: 0; float: none; }
.ngc-uf-card h2.ngc-uf-card__part { font-family: var(--ngc-mono); font-weight: 500; font-size: 1.45rem; letter-spacing: var(--mono-track); line-height: 1.1; margin: 0 0 0.3rem; padding: 0; color: var(--x-ink); text-transform: uppercase; font-stretch: 100%; overflow-wrap: anywhere; }
.ngc-uf-card p.ngc-uf-card__series { margin: 0 0 0.5rem; font-size: 0.92rem; font-weight: 600; line-height: 1.3; color: var(--x-ink); max-width: none; }
.ngc-uf-tags { display: flex; flex-wrap: wrap; gap: 0.3rem; margin: 0; }
.ngc-uf-tag { font-family: var(--ngc-mono); font-weight: 500; font-size: 0.68rem; letter-spacing: var(--mono-track); text-transform: uppercase; background: var(--x-soft); padding: 2px 6px; border-radius: 2px; }
.ngc-uf-tag--blue { background: #e6efff; }
.ngc-uf-card h3.ngc-uf-card__label { margin: 0 0 0.35rem; padding: 0; font-family: var(--ngc-mono); font-weight: 500; font-size: 0.68rem; letter-spacing: var(--mono-track); text-transform: uppercase; color: var(--x-muted); font-stretch: 100%; }
.ngc-uf-card__specs { margin: 0.85rem 0 0; padding-top: 0.75rem; border-top: 1px solid #eeede9; }
.ngc-uf-specs { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: 0.35rem 0.9rem; margin: 0; font-size: 0.88rem; line-height: 1.35; }
.ngc-uf-specs dt { color: var(--x-muted); margin: 0; font-weight: 400; overflow-wrap: anywhere; }
.ngc-uf-specs dd { margin: 0; overflow-wrap: anywhere; }
.ngc-uf-specs dd.m { font-family: var(--ngc-table); font-size: 0.84rem; letter-spacing: var(--mono-track); text-transform: uppercase; }
.ngc-uf-card p.ngc-uf-card__notes { margin: 0.85rem 0 0; padding-top: 0.75rem; border-top: 1px solid #eeede9; font-size: 0.82rem; line-height: 1.4; color: var(--x-muted); max-width: none; }
.ngc-uf-card p.ngc-uf-card__notes--none { margin: 0; padding: 0; border: 0; }
.ngc-uf-card__more { padding-top: 0.85rem; font-size: 0.88rem; }
.ngc-uf-card__more > p { margin: 0.75rem 0 0; max-width: none; font-size: 0.88rem; line-height: 1.4; }
.ngc-uf-card__more button.similar { font: inherit; color: var(--x-blue); background: none; border: 0; padding: 0; cursor: pointer; text-align: left; }
.ngc-uf-card__more button.similar:hover { text-decoration: underline; }
.ngc-uf details.row { margin: 0; font-size: 0.85rem; border-top: 1px solid #eeede9; }
.ngc-uf details.row summary { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 0.6rem 0; color: var(--x-blue); cursor: pointer; list-style: none; }
.ngc-uf details.row summary::-webkit-details-marker { display: none; }
.ngc-uf details.row summary::after { content: ""; flex: none; width: 0.45rem; height: 0.45rem; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translate(-2px, -2px); transition: transform 0.2s ease; }
.ngc-uf details.row[open] summary::after { transform: rotate(-135deg) translate(-2px, -2px); }
.ngc-uf details.row summary:hover { text-decoration: underline; }
.ngc-uf details.row[open] { padding-bottom: 0.85rem; }
.ngc-uf img.dims__drawing { display: block; width: 100%; max-width: none; height: auto; margin: 0.15rem 0 0; background: #fff; border: 1px solid var(--x-rule); cursor: zoom-in; }
.ngc-uf .dims__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); column-gap: 1.5rem; margin: 0.6rem 0 0; border-top: 1px solid var(--x-rule); }
.ngc-uf .dims__cell { display: flex; justify-content: space-between; align-items: baseline; gap: 0.75rem; padding: 0.4rem 0; border-bottom: 1px solid var(--x-rule); font-family: var(--ngc-table); font-size: 0.84rem; letter-spacing: var(--mono-track); text-transform: uppercase; }
.ngc-uf .dims__cell b { font-weight: 500; font-size: 0.74rem; color: var(--x-muted); white-space: nowrap; }
.ngc-uf .dims__cell span { text-align: right; white-space: nowrap; }
.ngc-uf p.dims__src { margin: 0.6rem 0 0; font-size: 0.82rem; max-width: none; }
dialog.zoom { position: fixed; inset: 0; z-index: 1000; margin: 0; padding: 0; width: 100vw; height: 100vh; max-width: none; max-height: none; border: 0; background: rgba(23, 24, 28, 0.82); display: none; }
dialog.zoom[open] { display: grid; place-items: center; }
.zoom__frame { position: relative; background: #fff; padding: 1rem; max-width: min(96vw, 1500px); max-height: 92vh; overflow: auto; }
.zoom__frame img { display: block; width: auto; max-width: 100%; height: auto; max-height: calc(92vh - 4.5rem); margin: 0 auto; cursor: zoom-in; }
.zoom__frame img.is-full { max-width: none; max-height: none; cursor: zoom-out; }
.zoom__bar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin: 0 0 0.6rem; font-family: var(--ngc-mono); font-size: 0.74rem; letter-spacing: var(--mono-track); text-transform: uppercase; }
.zoom__bar button { font: inherit; background: #17181c; color: #fff; border: 0; border-radius: 2px; padding: 0.4rem 0.7rem; cursor: pointer; }
.ngc-uf mark { background: #e6efff; color: inherit; padding: 0 2px; }
.ngc-uf-tablewrap { overflow-x: auto; border: 1px solid var(--x-rule); }
table.ngc-uf-table { border-collapse: collapse; width: 100%; font-size: 0.86rem; margin: 0; }
table.ngc-uf-table :is(th, td) { text-align: left; padding: 0.5rem 0.6rem; border-bottom: 1px solid var(--x-rule); white-space: nowrap; vertical-align: top; }
table.ngc-uf-table th { font-family: var(--ngc-mono); font-weight: 500; font-size: 0.68rem; letter-spacing: var(--mono-track); text-transform: uppercase; color: var(--x-muted); background: var(--x-soft); white-space: normal; vertical-align: bottom; line-height: 1.25; }
table.ngc-uf-table :is(th, td).n { text-align: right; font-variant-numeric: tabular-nums; }
/* Site table style (NGC Mono), a touch tighter; part numbers and threads keep their case. */
table.ngc-uf-table td { font-size: 0.76rem; letter-spacing: var(--mono-track); }
table.ngc-uf-table td:is(.p, .c) { text-transform: none; letter-spacing: var(--mono-track); font-size: 0.8rem; }
table.ngc-uf-table thead th { opacity: 1; border-bottom: 1px solid var(--x-rule); }
table.ngc-uf-table td.w { white-space: normal; min-width: 6.5rem; max-width: 11rem; line-height: 1.3; }
table.ngc-uf-table td.md { line-height: 1.35; }
table.ngc-uf-table td.md .u { font-variant-numeric: tabular-nums; color: var(--x-ink); font-weight: 600; }
/* Part number stays in view when the table scrolls sideways (phones). */
table.ngc-uf-table :is(th:first-child, td.p) { position: sticky; left: 0; z-index: 1; background: #fff; box-shadow: inset -1px 0 0 var(--x-rule); }
table.ngc-uf-table th:first-child { background: var(--x-soft); }
table.ngc-uf-table tbody tr:hover :is(td, td.p) { background: #fafaf8; }
p.ngc-uf__more-wrap { margin: 1.25rem 0 0; }
.ngc-uf__more { font: inherit; font-size: 0.95rem; background: #fff; border: 1px solid var(--x-ink); border-radius: 2px; padding: 0.55rem 1rem; cursor: pointer; }
.ngc-uf__more:hover { background: var(--x-ink); color: #fff; }
p.ngc-uf__note { margin: 1.5rem 0 0; font-size: 0.85rem; line-height: 1.5; color: var(--x-muted); max-width: 60em; }
@media (max-width: 47.99em) { .ngc-uf-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 35.5em) { .ngc-uf-card img.ngc-uf-card__photo { width: 96px; height: 64px; } .ngc-uf-card__head { grid-template-columns: minmax(0, 1fr) 96px; } .ngc-uf-specs { grid-template-columns: 7rem minmax(0, 1fr); } }
p.ngc-uf__note + p.ngc-uf__note { margin-top: 0.4rem; }

/* Find My Fan Drive cards (styles in the page content): service-part numbers, OEM numbers and the matched number in NGC Mono */
.ngc-finder ~ * .ngc-xref-card .ngc-xref-parts dd, .ngc-xref-card .ngc-xref-parts dd, .ngc-xref-card p.ngc-xref-oem, .ngc-xref-card .ngc-xref-card__match mark { font-family: var(--ngc-table); letter-spacing: var(--mono-track); text-transform: uppercase; }
table.ngc-uf-table td { font-family: var(--ngc-table); text-transform: uppercase; letter-spacing: var(--mono-track); }

/* NGC Mono is set in capitals; a unit after a number keeps its own case (mm, kg, in, N·m) – wrapped by js/ngc-units.js */
.u { text-transform: none; }

/* Product finder headings: the brand logo in place of the brand name, sized to the heading's cap height */
.ngc-finder h1 img.h1-logo { display: inline-block; height: 0.74em; width: auto; max-width: none; vertical-align: baseline; margin: 0 0.18em 0 0; }
/* Deublin's logo has a full-height symbol and a tagline under the wordmark (wordmark = 45% of its height):
   size it as large as fits beside "Product Finder" (wordmark ≈ lower-case height), with the wordmark's baseline on the text baseline */
.ngc-finder h1 img.h1-logo.h1-logo--deublin { height: 0.74em; vertical-align: -0.08em; }
