/* ==========================================================================
   Gates Albert — component styles (ported from approved V1 concept)
   Tokens also exposed via theme.json; CSS custom props kept for ported classes.
   Sections marked [JETENGINE] become JetEngine Listing Grids in a later phase.
   ========================================================================== */

:root {
  --navy:#002153; --navy-deep:#001233; --red:#B7121C; --red-hover:#D3161F;
  --graphite:#595A5C; --gray:#A5A7A9; --mist:#BBBCBE; --light:#F5F6F8; --white:#fff;
  --display:'Russo One',sans-serif; --text:'Poppins',sans-serif;
}

/* Base ------------------------------------------------------------------- */
body{font-family:var(--text);color:#2b2c2e;background:#fff;font-size:17px;line-height:1.7}
.ga h1,.ga h2,.ga h3,.ga h4{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.015em;color:var(--navy);font-synthesis:none;line-height:1.15}

/* Layout container ------------------------------------------------------- */
.wrap{max-width:1200px;margin:0 auto;padding:0 48px}

/* Shared bits ------------------------------------------------------------ */
.eyebrow{font-family:var(--text);font-weight:600;font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--red);margin-bottom:14px}
.eyebrow::before{content:"";display:inline-block;width:30px;height:2px;background:var(--red);vertical-align:middle;margin-right:12px}
.btn{font-family:var(--text);font-weight:600;font-size:15px;padding:15px 32px;border-radius:3px;text-decoration:none;display:inline-block;transition:all .15s ease}
.btn-red{background:var(--red);color:#fff}
.btn-red:hover{background:var(--red-hover);transform:translateY(-1px)}
.btn-ghost{color:#fff;border:1px solid rgba(255,255,255,.4)}
.btn-ghost:hover{border-color:#fff}
.btn-navy{color:var(--navy);border:1px solid var(--navy)}
.btn-navy:hover{background:var(--navy);color:#fff}

/* Utility bar + nav ------------------------------------------------------ */
.util{background:var(--navy-deep);color:var(--mist);font-size:13px;padding:8px 0}
.util .wrap{max-width:100%;width:100%;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:0 40px}
.util span b{color:#fff;font-weight:600}
.util a{color:#fff;text-decoration:none;font-weight:600}
/* Certifications strip (Option A — text-only, site-wide). "Certified to" is a
   small uppercase label; the standard names sit in brand white on the navy band. */
.ga-certstrip__label{text-transform:uppercase;letter-spacing:.16em;font-size:11px;font-weight:600;color:var(--gray);margin-right:8px}
.ga-certstrip__list{color:#fff;font-weight:600;letter-spacing:.01em}
.nav{background:#fff;position:sticky;top:0;z-index:100;border-bottom:3px solid var(--red);box-shadow:0 1px 8px rgba(0,18,51,.06)}
.nav .wrap{position:relative;max-width:100%;width:100%;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:14px 40px;flex-wrap:nowrap}
.nav img{height:50px;width:auto;flex:0 0 auto}
.nav ul{display:flex;gap:22px;list-style:none;align-items:center;white-space:nowrap}
.nav a{color:var(--navy);text-decoration:none;font-size:14px;font-weight:500}
.nav a:hover{color:var(--red)}
/* Header CTA reuses the site .btn .btn-red (matches the RFQ-band button:
   red fill, white legible text). The .nav a{color:navy} rule (0,1,1) would
   otherwise override .btn-red's white text, so set it here at higher
   specificity. Keep it from shrinking in the flex nav row. */
.nav .ga-nav-cta,.nav .ga-nav-cta:hover{color:#fff;font-size:15px;font-weight:600;flex:0 0 auto;white-space:nowrap}

/* Hero ------------------------------------------------------------------- */
.hero{position:relative;overflow:hidden;color:#fff;background-color:var(--navy-deep);background-image:linear-gradient(100deg,rgba(0,13,36,.94) 0%,rgba(0,18,51,.86) 38%,rgba(0,18,51,.60) 72%,rgba(0,18,51,.50) 100%),url('/wp-content/uploads/home-hero.webp');background-size:cover;background-position:center}
.rings{position:absolute;right:-220px;top:50%;transform:translateY(-50%);width:760px;height:760px;border-radius:50%;
  background:repeating-radial-gradient(circle at center, rgba(187,188,190,.09) 0 1px, transparent 1px 15px);
  -webkit-mask-image:radial-gradient(circle,#000 30%,transparent 70%);mask-image:radial-gradient(circle,#000 30%,transparent 70%);pointer-events:none}
.hero-inner{position:relative;z-index:2;padding:96px 0 80px;max-width:760px}
.hero .hero-inner{margin-left:0!important;margin-right:auto!important}
.hero h1{color:#fff;font-size:clamp(34px,4.8vw,58px);line-height:1.1;margin-bottom:22px}
.hero h1 .red{color:#ff5560}
.hero p.lede{color:var(--mist);font-size:18px;max-width:620px;margin-bottom:36px}
.cta-row{display:flex;gap:16px;flex-wrap:wrap}
.spec-strip{position:relative;z-index:2;border-top:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.28)}
.spec-strip .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding-top:26px;padding-bottom:26px}
.spec b{font-family:var(--display);font-weight:400;font-size:27px;color:#fff;letter-spacing:.02em;display:block}
.spec span{font-size:13px;color:var(--mist);font-weight:500}
/* Homepage hero certifications band — "Certified to" + three bordered pills
   with a shield-check icon, white on the hero gradient, wrapping on mobile. */
.hero-certs{position:relative;z-index:2;border-top:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.28)}
.hero-certs .wrap{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding-top:22px;padding-bottom:22px}
.hero-certs__label{color:var(--mist);font-size:13px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;margin-right:4px}
.cert-pill{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.45);border-radius:999px;padding:9px 18px;color:#fff;font-size:14px;font-weight:600;white-space:nowrap}
.cert-pill__icon{flex:0 0 auto;color:#fff}
@media(max-width:600px){.hero-certs .wrap{gap:10px}.hero-certs__label{width:100%;margin:0 0 2px}}

/* Identity --------------------------------------------------------------- */
.identity{padding:88px 0;background:#fff}
.identity .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center}
.identity h2{font-size:33px;line-height:1.2;margin-bottom:20px}
.identity p{color:#3c3d3f;margin-bottom:16px}
.big-mark{font-family:var(--display);color:var(--navy);background:var(--light);border-left:4px solid var(--red);padding:18px 22px;font-size:15px;letter-spacing:.05em;text-transform:uppercase;margin:22px 0;line-height:1.5}
.photo-ph{border-radius:4px;min-height:380px;position:relative;overflow:hidden;background:linear-gradient(135deg,#1a2940 0%,#2c3e5c 50%,#1a2940 100%)}
.photo-ph::after{content:attr(data-label);position:absolute;inset:auto 0 0 0;padding:14px 18px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mist);background:rgba(0,0,0,.45)}
.photo-ph::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent 0 18px,rgba(255,255,255,.03) 18px 19px)}

/* Capabilities [JETENGINE] ---------------------------------------------- */
.caps{padding:88px 0;background:var(--light)}
.caps h2{font-size:33px;margin-bottom:10px}
.caps .sub{color:var(--graphite);max-width:700px;margin-bottom:48px}
.cap-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.cap{background:#fff;border-radius:4px;padding:32px 28px;border-top:4px solid var(--navy);transition:transform .15s ease, box-shadow .15s ease}
.cap:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,18,51,.12)}
.cap h3{font-size:17px;letter-spacing:.04em;margin-bottom:12px;line-height:1.35}
.cap p{font-size:15px;color:var(--graphite);line-height:1.65;margin-bottom:16px}
.cap a{font-weight:600;font-size:14px;color:var(--red);text-decoration:none}
.cap a:hover{color:var(--red-hover)}

/* Materials [JETENGINE] ------------------------------------------------- */
.materials{padding:88px 0;background:var(--navy-deep);color:#fff;position:relative;overflow:hidden}
.materials .rings{left:-260px;right:auto;opacity:.7}
.materials h2{color:#fff;font-size:33px;margin-bottom:10px;position:relative;z-index:2}
.materials .sub{color:var(--mist);max-width:680px;margin-bottom:42px;position:relative;z-index:2}
.mat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;position:relative;z-index:2}
.mat{border:1px solid rgba(255,255,255,.16);border-radius:4px;padding:22px 20px;text-decoration:none;transition:all .15s ease;display:block}
.mat:hover{border-color:var(--red);background:rgba(183,18,28,.08)}
/* Material card featured-image banner (gates-albert/card-banner) — flush to the
   card's top edge. Mirror the .cap card pattern: drop the card padding, clip the
   corners, and re-pad the text children so the banner meets the border cleanly
   (no gap above it, no border line sitting over the image). */
.mat:has(.mat__banner){padding:0;overflow:hidden}
.mat__banner{margin:0;line-height:0;aspect-ratio:1980/600;background:#0f1826}
.mat__banner img{display:block;width:100%;height:100%;object-fit:cover}
.mat:has(.mat__banner) > *:not(.mat__banner){padding-left:20px;padding-right:20px}
.mat:has(.mat__banner) > *:not(.mat__banner):first-of-type{padding-top:18px}
.mat:has(.mat__banner) > *:not(.mat__banner):last-of-type{padding-bottom:20px}
.mat b{font-family:var(--display);font-weight:400;text-transform:uppercase;letter-spacing:.04em;font-size:15px;color:#fff;display:block;margin-bottom:6px}
.mat span{font-size:13px;color:var(--mist);line-height:1.5;display:block}
.mat.cta-tile{background:var(--red);border-color:var(--red);display:flex;align-items:center;justify-content:center}
.mat.cta-tile b{margin:0}
.mat.cta-tile:hover{background:var(--red-hover)}

/* Industries [JETENGINE] ------------------------------------------------ */
.industries{padding:88px 0;background:#fff}
.industries h2{font-size:33px;margin-bottom:10px}
.industries .sub{color:var(--graphite);max-width:700px;margin-bottom:42px}
.ind-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.ind{background:var(--light);border-left:3px solid var(--navy);padding:16px 18px;font-weight:500;font-size:15px;color:var(--navy);text-decoration:none;border-radius:0 3px 3px 0;transition:all .15s}
.ind:hover{border-left-color:var(--red);background:#eef0f4}

/* Case studies [JETENGINE] ---------------------------------------------- */
.cases{padding:88px 0;background:var(--light)}
.cases h2{font-size:33px;margin-bottom:10px}
.cases .sub{color:var(--graphite);max-width:700px;margin-bottom:48px}
.case-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.case{background:#fff;border-radius:4px;overflow:hidden;display:flex;flex-direction:column;transition:transform .15s ease, box-shadow .15s ease}
.case:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,18,51,.12)}
.case .stat{background:var(--navy);color:#fff;padding:26px 26px 22px}
.case .stat b{font-family:var(--display);font-weight:400;font-size:34px;display:block;letter-spacing:.02em}
.case .stat span{font-size:13px;color:var(--mist);font-weight:500}
.case .body{padding:24px 26px 28px;display:flex;flex-direction:column;flex:1}
.case h3{font-size:15px;letter-spacing:.04em;line-height:1.45;margin-bottom:10px}
.case p{font-size:14.5px;color:var(--graphite);line-height:1.65;flex:1;margin-bottom:16px}
.case a{font-weight:600;font-size:14px;color:var(--red);text-decoration:none}
.case blockquote{font-size:14px;font-style:italic;color:var(--navy);border-left:3px solid var(--red);padding-left:12px;margin-bottom:14px}

/* Quality / why ---------------------------------------------------------- */
.why{padding:88px 0;background:#fff}
.why .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:64px;align-items:center}
.why h2{font-size:33px;margin-bottom:24px}
.why-item{display:flex;gap:18px;margin-bottom:26px}
.why-item .tick{flex:0 0 44px;height:44px;border-radius:3px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:16px}
.why-item h4{font-size:15px;letter-spacing:.04em;margin-bottom:4px}
.why-item p{font-size:15px;color:var(--graphite);line-height:1.6}
.cert-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
.cert{font-family:var(--display);font-size:13px;letter-spacing:.06em;color:var(--navy);border:1.5px solid var(--navy);border-radius:3px;padding:8px 14px;text-transform:uppercase}

/* RFQ band --------------------------------------------------------------- */
.rfq-band{background:linear-gradient(115deg,var(--navy) 0%,var(--navy-deep) 100%);color:#fff;padding:72px 0;position:relative;overflow:hidden;border-top:6px solid var(--red)}
.rfq-band .wrap{display:flex;justify-content:space-between;align-items:center;gap:40px;flex-wrap:wrap;position:relative;z-index:2}
.rfq-band h2{color:#fff;font-size:30px;margin-bottom:8px}
.rfq-band p{color:var(--mist);max-width:540px}

/* Footer ----------------------------------------------------------------- */
.site-footer{background:#0a0d12;color:var(--gray);padding:64px 0 32px;font-size:14px}
.site-footer .wrap{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px}
.site-footer img{height:44px;margin-bottom:18px}
.site-footer h5{font-family:var(--text);font-weight:600;color:#fff;font-size:13px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}
.site-footer a{color:var(--gray);text-decoration:none;display:block;margin-bottom:8px}
.site-footer a:hover{color:#fff}
.site-footer .legal{grid-column:1/-1;border-top:1px solid #1d2026;margin-top:0;padding-top:24px;font-size:12px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}
/* Membership band (PMPA + AMT) — full-width row below the footer columns.
   Overrides the .site-footer .wrap grid + the blanket .site-footer img sizing. */
.footer-memberships{border-top:1px solid #1d2026;margin-top:40px;padding-top:28px}
.site-footer .footer-memberships .wrap{display:block;text-align:center}
.footer-memberships__hook{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--gray);margin:0 0 16px}
.footer-memberships__logos{display:flex;align-items:center;justify-content:center;gap:40px;flex-wrap:wrap}
.site-footer .footer-memberships__logos img{height:52px;width:auto;margin:0;opacity:.9}
/* Real top spacing separates the terms row from the membership logos above.
   No border here on purpose — the memberships band (top) and the .legal
   copyright row (below) already carry hairlines; a third would read as busy. */
.site-footer .footer-legal-wrap{display:block;padding-top:30px}
.site-footer .footer-legal-links{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 14px}
.footer-legal-links__label{color:var(--mist);font-weight:600;font-size:13px;letter-spacing:.02em}
.site-footer .footer-legal-links a{color:var(--gray);text-decoration:none;font-size:13px;margin:0;display:inline}
.site-footer .footer-legal-links a:hover{color:#fff}
/* Pipe separators between links only: a+a::before starts at the SECOND link
   (the first <a> is preceded by the "Terms:" label <span>), so there is no pipe
   after the label and none before the first link. */
.site-footer .footer-legal-links a + a::before{content:"|";color:var(--gray);opacity:.55;margin-right:14px;font-size:12px}
@media(max-width:600px){
  .site-footer .footer-legal-wrap{padding-top:24px}
  /* Stacked links read fine gap-separated; drop the pipes so a wrapped line
     never starts with a leading | (Cowork R7 QA). A CSS ::before separator
     can't detect line-start, so suppressing it on mobile is the clean fix. */
  .site-footer .footer-legal-links{gap:6px 16px}
  .site-footer .footer-legal-links a + a::before{content:none}
}

/* JetEngine Listing Grid equal-height bridge (Session 4) ----------------- */
/* Columns come from the listing-grid block's per-device `columns` settings
   (JetEngine flexes .jet-listing-grid__items). .ga-grid--N is on JE's inert
   outer wrapper — used here ONLY as a hook to stretch cards to equal height:
   JE equalizes the item wrappers per row, but the inner .cap kept content
   height → masonry without this. Targets > * so it covers all card shapes. */
.ga-grid--3 .jet-listing-grid__item,
.ga-grid--4 .jet-listing-grid__item{margin:0!important;width:auto!important;display:flex!important;align-items:stretch}
.ga-grid--3 .jet-listing-grid__item > *,
.ga-grid--4 .jet-listing-grid__item > *{flex:1 1 auto;width:100%}

/* Whole-card clickable link — uniform across all four card types.
   Each listing emits a JetEngine Dynamic Link (<a class=jet-listing-dynamic-link__link>).
   We stretch that anchor over the entire tile with a transparent ::after, positioned
   against the CARD ROOT (which has real content height).
   BUGFIX: the old .ga-cover wrappers were themselves position:absolute, so an
   auto-height abs box whose only child was also abs collapsed to 0 height — the
   anchor rendered 259x0 and caught no clicks. Neutralize those wrappers to static
   so the card root (.mat/.ind/.cap/.case) is the anchor's containing block. */
.mat,.ind,.cap,.case{position:relative}

/* keep the intermediate link wrappers in normal flow (no collapsing abs boxes) */
.ga-cover,.ga-cover .jet-listing-dynamic-link,.ga-cover .jet-listing-dynamic-link__link{position:static;inset:auto;margin:0}

/* the stretched cover: fills the card root, above content, transparent */
.mat .jet-listing-dynamic-link__link::after,
.ind .jet-listing-dynamic-link__link::after,
.cap .jet-listing-dynamic-link__link::after,
.case .jet-listing-dynamic-link__link::after{content:"";position:absolute;inset:0;height:100%;width:100%;z-index:1}

/* any genuine inner link (e.g. inside dynamic rich text) stays clickable above the cover */
.mat a:not(.jet-listing-dynamic-link__link),
.ind a:not(.jet-listing-dynamic-link__link),
.cap a:not(.jet-listing-dynamic-link__link),
.case a:not(.jet-listing-dynamic-link__link){position:relative;z-index:2}

/* mat/ind tiles have no visible label — keep the empty cover anchor from taking space */
.ga-cover,.ga-cover *{font-size:0;line-height:0;color:transparent}

/* Industry tile: title + one-line lede snippet */
.ind b{display:block;font-size:15px;font-weight:600;margin-bottom:4px}
.ind .ind-sum .jet-listing-dynamic-field__content{font-size:12.5px;font-weight:400;color:var(--graphite);line-height:1.45}
/* Case-study quote: JE can't emit <blockquote>, so style the field content as V1's .case blockquote. */
.case .ga-quote .jet-listing-dynamic-field__content{font-size:14px;font-style:italic;color:var(--navy);border-left:3px solid var(--red);padding-left:12px;margin-bottom:14px}

/* JetSearch inline field in header (Session 4 Group 6) ------------------ */
.ga-search{flex:0 0 auto;position:relative}
.ga-search .jet-ajax-search__form{display:flex;margin:0}
.ga-search .jet-ajax-search__field{width:210px;max-width:210px;height:40px;padding:8px 14px;font-size:14px;line-height:1.2;border:1px solid var(--mist);border-radius:3px 0 0 3px;background:#fff;color:var(--navy)}
.ga-search .jet-ajax-search__field:focus{outline:2px solid var(--navy);outline-offset:0;border-color:var(--navy)}
.ga-search .jet-ajax-search__submit{height:40px;min-width:44px;background:var(--navy);color:#fff;border:none;border-radius:0 3px 3px 0;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ga-search .jet-ajax-search__submit:hover{background:var(--red)}
.ga-search .jet-ajax-search__submit svg{width:18px;height:18px;fill:currentColor}
@media(max-width:980px){ .ga-search .jet-ajax-search__field{width:150px;max-width:150px} }

/* JetSmartFilters bar (Session 4 Group 6) ------------------------------- */
.ga-filter{margin-bottom:30px}
.ga-filter .jet-checkboxes-list{display:flex;flex-wrap:wrap;gap:10px 20px;list-style:none;margin:0;padding:0}
.ga-filter .jet-checkbox{font-size:14px;color:var(--graphite);cursor:pointer}
.ga-filter .jet-checkbox input{margin-right:7px;accent-color:var(--red)}

/* Single (detail) pages (Session 4 Group 5) ----------------------------- */
.single-hero{background:linear-gradient(115deg,var(--navy) 0%,var(--navy-deep) 100%);color:#fff;padding:64px 0;border-top:4px solid var(--red)}
/* cover-block hero: featured image where present, gradient fallback where not */
.single-hero.wp-block-cover{min-height:0;align-items:stretch;justify-content:flex-start}
.single-hero.wp-block-cover .wp-block-cover__inner-container{width:100%}
.single-hero h1,.single-hero .wp-block-post-title,.single-hero .eyebrow,.single-hero .eyebrow a{color:#fff!important}
.single-hero .eyebrow a{text-decoration:none}
.single-hero .eyebrow a:hover{color:var(--mist)!important}
.single-hero h1{color:#fff;font-size:clamp(30px,4vw,46px);line-height:1.12}
/* archive band heading is an <h1> (one per archive); match the band size */
.caps h1,.materials h1,.industries h1,.cases h1{font-size:33px;margin-bottom:10px;line-height:1.15}
.materials h1{color:#fff}
.single-hero .lede .jet-listing-dynamic-field__content,.single-hero p{color:var(--mist);font-size:18px;line-height:1.6;max-width:720px;margin-top:16px}
.single-body{padding:72px 0;background:#fff}
.single-body .wrap > h2{font-size:28px;margin-bottom:26px}
.single-body > .wrap > h2:not(:first-child),.single-section{margin-top:8px}
/* Grades render in a readable card grid (JetEngine repeater defaults to a
   cramped flex nowrap row — override to auto-fit cards). */
.grades-list .jet-listing-dynamic-repeater__items{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.grades-list .jet-listing-dynamic-repeater__item{padding:24px 26px;border:1px solid #e6e8ec;border-top:3px solid var(--navy);border-radius:4px;background:#fff;margin:0}
.grades-list h4{font-family:var(--display);color:var(--navy);font-size:16px;letter-spacing:.03em;text-transform:uppercase;margin-bottom:8px}
.grades-list .grade-desc{color:var(--graphite);font-size:15.5px;line-height:1.7}
.grades-list .grade-desc p{margin:0 0 10px}
/* single body prose + field section headings */
.single-body .wrap > h3,.field-h{font-family:var(--display);color:var(--navy);font-size:18px;text-transform:uppercase;letter-spacing:.03em;margin:30px 0 12px}
.single-body p{color:#3c3d3f;line-height:1.7;margin:0 0 14px}
.single-body .field-body p{margin:0 0 12px}
/* typical_parts chips (clean inline chips — no list bullets / separators) */
.parts-list .jet-listing-dynamic-repeater__items{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;list-style:none;padding:0}
.parts-list .jet-listing-dynamic-repeater__item{list-style:none;background:var(--light);border-left:3px solid var(--navy);padding:8px 14px;font-size:14px;color:var(--navy);border-radius:0 3px 3px 0}
/* certs badges: certs is a checkbox map rendered via the "Checked values list"
   (jet_engine_render_checklist) callback -> per-item .jet-check-list nodes,
   styled as V1 .cert badges. */
.cert-list .jet-check-list{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px}
.cert-list .jet-check-list__item{display:inline-flex}
.cert-list .jet-check-list__item-content,.cert-badge{font-family:var(--display);font-size:13px;letter-spacing:.06em;color:var(--navy);border:1.5px solid var(--navy);border-radius:3px;padding:8px 14px;text-transform:uppercase;line-height:1.2}
/* equipment list */
.equip-list .jet-listing-dynamic-repeater__item{padding:14px 0;border-top:1px solid #e6e8ec;font-size:15px;color:var(--graphite)}
.equip-list .jet-listing-dynamic-repeater__item b{color:var(--navy);font-family:var(--display);font-weight:400;letter-spacing:.02em}
/* case-study single hero: headline stat as the navy .stat centerpiece */
.cs-hero .cs-stat{background:var(--navy-deep);border-left:5px solid var(--red);border-radius:4px;padding:22px 28px;margin-bottom:22px;max-width:max-content}
.cs-hero .stat-big .jet-listing-dynamic-field__content{font-family:var(--display);font-size:clamp(40px,6vw,66px);color:#fff;line-height:1;letter-spacing:.02em}
.cs-hero .stat-label .jet-listing-dynamic-field__content{color:var(--mist);font-size:14px;letter-spacing:.06em;text-transform:uppercase;margin-top:6px}
/* Case-study subtitle — the long descriptive title as a subheading under the
   shortened H1 (Round 1 title/subtitle structure). */
.cs-hero .cs-subtitle .jet-listing-dynamic-field__content{color:var(--mist);font-size:clamp(16px,2vw,19px);font-weight:400;line-height:1.4;margin-top:12px;max-width:760px}
/* case-study single quote -> V1 .case blockquote (red border, italic) */
.cs-quote .jet-listing-dynamic-field__content{font-size:18px;font-style:italic;color:var(--navy);border-left:3px solid var(--red);padding-left:16px;margin:24px 0}
/* related-items section on singles */
.single-related{padding:16px 0 80px;background:#fff}
.single-related .wrap > h2{font-size:26px;margin-bottom:24px}
/* dark band for related-MATERIALS grids: .mat tiles are built white-on-dark,
   so they're illegible on the default white band (homepage/archive run them on
   the navy band). Put the materials grid on the same navy band here. */
.single-related--dark{background:var(--navy-deep);color:#fff;padding:56px 0 72px}
.single-related--dark .wrap > h2,.single-related--dark h2{color:#fff}
/* empty related grids: hide the grid AND its orphan heading (sparse relations).
   JE marks an empty grid's container .jet-listing-not-found only when 0 results. */
.single-related .jet-listing-not-found{display:none}
.single-related .jet-listing-grid--blocks:has(.jet-listing-not-found){display:none}
.single-related h2:has(+ .jet-listing-grid--blocks .jet-listing-not-found){display:none}
/* Hide the ENTIRE related section (padded band + heading) when its listing is
   empty — not just the grid — so empty "Related Case Studies" / "Materials We
   Machine" bands don't render as blank strips. */
.single-related:has(.jet-listing-not-found){display:none}

/* Primary mega-menu (Session 5) ---------------------------------------- */
/* Custom dynamic nav (gates-albert/primary-nav) replaces core wp:navigation.
   Scoped under .ga-nav so panel <ul>/<a> beat the broad `.nav ul` / `.nav a`
   rules above. */
.ga-nav{flex:1 1 auto;display:flex;align-items:center;min-width:0}
.ga-nav__list{display:flex;align-items:center;gap:2px;list-style:none;margin:0;padding:0;white-space:nowrap}
.ga-nav__item{position:relative;display:flex;align-items:center}
.ga-nav .ga-nav__link{display:inline-block;padding:8px 9px;color:var(--navy);font-size:14px;font-weight:500;text-decoration:none}
.ga-nav .ga-nav__link:hover{color:var(--red)}
.ga-nav__toggle{display:inline-flex;align-items:center;justify-content:center;background:none;border:0;color:var(--navy);cursor:pointer;padding:6px 4px 6px 0;line-height:0}
.ga-nav__toggle:hover,.ga-nav__item.is-open>.ga-nav__toggle{color:var(--red)}
.ga-nav__chev{transition:transform .15s ease}
.ga-nav__item.is-open .ga-nav__chev{transform:rotate(180deg)}

.ga-nav .ga-mega{position:absolute;top:calc(100% + 14px);left:0;z-index:200;background:#fff;border-top:3px solid var(--red);box-shadow:0 14px 30px rgba(0,18,51,.16);border-radius:0 0 4px 4px;padding:22px 26px;min-width:260px}
.ga-nav .ga-mega[hidden]{display:none}
.ga-nav .ga-mega__list{list-style:none;margin:0;padding:0;display:block}
.ga-nav .ga-mega--2{min-width:440px}
.ga-nav .ga-mega--2 .ga-mega__list{columns:2;column-gap:34px}
/* Wide (4-col) panel is too wide to anchor under its own narrow trigger li
   (anchored there it overflowed a viewport edge, clipping a column). Let it
   break out to the header row container (.nav .wrap is position:relative) and
   span the full content width edge-to-edge, so it can never clip. */
.ga-nav__item--mega:has(.ga-mega--4){position:static}
.ga-nav .ga-mega--4{min-width:0;width:auto;left:0;right:0}
.ga-nav .ga-mega--4 .ga-mega__list{columns:4;column-gap:30px}
.ga-nav .ga-mega__list li{margin:0;break-inside:avoid}
.ga-nav .ga-mega__list a{display:block;padding:7px 10px;color:var(--navy);font-size:14px;font-weight:500;text-decoration:none;border-radius:3px;white-space:nowrap}
.ga-nav .ga-mega__list a:hover{color:var(--red);background:var(--light)}

.ga-nav__burger{display:none;flex-direction:column;justify-content:center;gap:5px;width:42px;height:38px;padding:8px;background:none;border:0;cursor:pointer;flex:0 0 auto}
.ga-nav__burger-bar{display:block;width:100%;height:2px;background:var(--navy);border-radius:2px}

.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ga-nav a:focus-visible,.ga-nav button:focus-visible{outline:2px solid var(--red);outline-offset:2px;border-radius:2px}

@media(max-width:1024px){
  .nav .wrap{position:relative;flex-wrap:wrap}
  .ga-search{display:none}
  .ga-nav{order:5;flex:0 0 auto}
  .ga-nav__burger{display:flex}
  /* scope under .nav so these beat the broad `.nav ul{display:flex;...}` (0,1,1);
     otherwise the list stays visible/horizontal on mobile instead of hiding. */
  .nav .ga-nav__list{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:0;white-space:normal;background:#fff;border-top:3px solid var(--red);box-shadow:0 14px 30px rgba(0,18,51,.16);max-height:calc(100vh - 130px);overflow:auto}
  .ga-nav.is-nav-open .ga-nav__list{display:flex}
  .ga-nav__item{flex-direction:column;align-items:stretch;width:100%;border-top:1px solid #eef0f4}
  .ga-nav__item:first-child{border-top:0}
  .ga-nav .ga-nav__link{padding:15px 18px;font-size:16px}
  .ga-nav__toggle{position:absolute;top:0;right:0;height:52px;width:56px;padding:0}
  .ga-nav .ga-mega{position:static;box-shadow:none;border-top:0;border-radius:0;padding:0 0 12px;min-width:0!important;width:auto;background:var(--light)}
  .ga-nav .ga-mega--2 .ga-mega__list,.ga-nav .ga-mega--4 .ga-mega__list{columns:1}
  .ga-nav .ga-mega--4{right:auto}
  .ga-nav .ga-mega__list a{padding:11px 28px;font-size:15px;white-space:normal}
}

/* Responsive ------------------------------------------------------------- */
@media(max-width:980px){
  .wrap{padding:0 24px}
  .identity .wrap,.why .wrap{grid-template-columns:1fr;gap:40px}
  .cap-grid,.case-grid{grid-template-columns:1fr 1fr}
  .mat-grid,.ind-grid{grid-template-columns:1fr 1fr}
  .spec-strip .wrap{grid-template-columns:1fr 1fr;gap:18px}
  .site-footer .wrap{grid-template-columns:1fr 1fr}
  .rings{display:none}
}
@media(max-width:600px){ .cap-grid,.case-grid{grid-template-columns:1fr} }
@media(prefers-reduced-motion:reduce){ *{transition:none!important} }

/* Company Overview page (page-company-overview) ------------------------- */
.co-hero{padding:104px 0;background-color:var(--navy-deep);background-size:cover;background-position:center}
.co-hero .lede{color:#fff;opacity:.92}
.stats-band{background:linear-gradient(115deg,var(--navy) 0%,var(--navy-deep) 100%);border-bottom:4px solid var(--red)}
.stats-band .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;padding-top:38px;padding-bottom:38px}
.stats-band .spec b{font-size:29px}
.ga-photo{width:100%;height:100%;min-height:380px;object-fit:cover;border-radius:4px;display:block}
.ind-served{padding:84px 0;background:var(--light);text-align:center}
.ind-served h2{font-size:33px;margin:6px 0 16px}
.ind-served__lede{max-width:760px;margin:0 auto 28px;color:var(--graphite);font-size:17px;line-height:1.6}
.ind-served .eyebrow{display:inline-block}
.tag-cloud{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;max-width:920px;margin:0 auto}
.tag{font-family:var(--text);font-weight:600;font-size:14px;letter-spacing:.02em;color:var(--navy);background:#fff;border:1px solid #e3e6ec;border-radius:999px;padding:9px 18px;text-decoration:none;transition:background .15s,color .15s,border-color .15s}
.tag:hover,.tag:focus-visible{background:var(--navy);color:#fff;border-color:var(--navy)}
.ind-served__all{margin-top:28px}
.family{padding:88px 0;background:#fff}
.family .wrap{display:grid;grid-template-columns:.95fr 1.05fr;gap:60px;align-items:center}
.family__intro h2{font-size:31px;line-height:1.2;margin-bottom:16px}
.family__intro p{color:#3c3d3f;margin-bottom:24px}
.family__photo{min-height:240px}
.family__grid{display:grid;gap:18px}
.family-card{border-left:4px solid var(--red);background:var(--light);padding:22px 24px;border-radius:4px}
.family-card h4{font-size:16px;letter-spacing:.04em;margin-bottom:8px}
.family-card p{font-size:14.5px;color:var(--graphite);line-height:1.6}
.location{padding:84px 0;background:var(--light)}
.location .wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:56px;align-items:center}
.location__info h2{font-size:31px;margin:6px 0 18px}
.nap{color:#3c3d3f;font-size:16px;line-height:1.7;margin-bottom:14px}
.nap strong{color:var(--navy);font-size:17px}
.nap--contact a{color:var(--navy);font-weight:600;text-decoration:none}
.nap--contact a:hover{color:var(--red)}
.location__map{border-radius:4px;overflow:hidden;box-shadow:0 12px 30px rgba(0,18,51,.12);line-height:0}
.location__map iframe{display:block;width:100%;min-height:380px;border:0}
@media(max-width:980px){
  .stats-band .wrap{grid-template-columns:1fr 1fr;gap:20px}
  .family .wrap{grid-template-columns:1fr;gap:36px}
  .location .wrap{grid-template-columns:1fr;gap:32px}
  .co-hero{padding:72px 0}
}

/* --- Flush section stacking ---------------------------------------------
   WP applies --wp--style--block-gap (1.5rem/24px) as margin-block-start
   between the top-level site blocks (header/main/footer) and between the
   full-width sections inside <main>. That produced visible whitespace
   below the header, below the hero, between sections, and above the footer
   (white slivers between otherwise-flush dark/light bands). Every section,
   the hero, and the footer carry their own padding, so we drop these
   structural gaps and let the bands butt cleanly. Specificity (0,1,x)
   beats WP's :where()-scoped (0,0,0) global rule. */
.wp-site-blocks > *{margin-block-start:0;margin-block-end:0}
main.ga > *{margin-block-start:0;margin-block-end:0}

/* --- Capabilities archive (archive-capability) --------------------------- */
.cap-hero{position:relative;color:#fff;padding:92px 0;background-color:var(--navy-deep);background-image:linear-gradient(115deg,rgba(0,33,83,.80) 0%,rgba(0,18,51,.93) 100%),url('/wp-content/uploads/capabilities-hero.webp');background-size:cover;background-position:center;border-top:4px solid var(--red)}
/* Match the white archive-hero eyebrows (industries/materials use .single-hero
   which forces white); .cap-hero isn't .single-hero, so set it explicitly. */
.cap-hero .eyebrow{color:#fff;font-size:14px}
.cap-hero h1{color:#fff;font-size:clamp(30px,4vw,46px);line-height:1.12;margin-bottom:16px}
.cap-hero .lede{color:var(--mist);font-size:18px;line-height:1.6;max-width:760px}

.cap-archive{padding:64px 0 84px;background:var(--light)}
.cap-intro{max-width:840px;margin:0 0 44px}
.cap-intro h2{font-size:30px;color:var(--navy);line-height:1.2;margin:0 0 18px}
.cap-intro p{font-size:17px;line-height:1.75;color:var(--graphite);margin:0 0 18px}
.cap-intro p:last-child{margin-bottom:0}
.cap-filter-label{font-family:var(--text);font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--navy);margin:0 0 14px}

/* Filter → pills. The JSF block strips our custom className, so target JSF's
   stable checkbox structure, scoped to .cap-archive so other pages are safe. */
.cap-archive .jet-checkboxes-list-wrapper{display:flex;flex-wrap:wrap;gap:10px;border:0;margin:0 0 38px;padding:0}
.cap-archive .jet-checkboxes-list-wrapper legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.cap-archive .jet-checkboxes-list__row{margin:0}
.cap-archive .jet-checkboxes-list__item{display:inline-flex;align-items:center;margin:0;padding:9px 18px;background:#fff;border:1px solid #d8dde4;border-radius:999px;font-size:14px;font-weight:600;color:var(--navy);cursor:pointer;line-height:1;transition:background .15s ease,border-color .15s ease,color .15s ease}
.cap-archive .jet-checkboxes-list__item:hover{border-color:var(--navy)}
.cap-archive .jet-checkboxes-list__input{position:absolute;opacity:0;width:0;height:0}
.cap-archive .jet-checkboxes-list__button,.cap-archive .jet-checkboxes-list__decorator,.cap-archive .jet-checkboxes-list__checked-icon{display:none}
.cap-archive .jet-checkboxes-list__label{margin:0}
.cap-archive .jet-checkboxes-list__item:has(.jet-checkboxes-list__input:checked){background:var(--red);border-color:var(--red);color:#fff}

/* Card image — activates only once the JetEngine listing (1715) gets a
   Dynamic Image (class cap__img). :has() keeps current image-less cards intact. */
.cap:has(.cap__img){padding:0;overflow:hidden}
.cap__img{display:block;margin:0;line-height:0}
.cap__img img{display:block;width:100%;height:auto;aspect-ratio:1980/600;object-fit:cover}
.cap:has(.cap__img) > *:not(.cap__img){padding-left:28px;padding-right:28px}
.cap:has(.cap__img) > *:not(.cap__img):first-of-type{padding-top:26px}
.cap:has(.cap__img) > *:not(.cap__img):last-of-type{padding-bottom:28px}

/* --- Quality Management hub (page-quality-management) -------------------- */
.qm-systems{padding:84px 0;background:var(--light)}
.qm-systems h2{font-size:33px;color:var(--navy);margin:6px 0 40px;max-width:760px}
.qm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.qm-card{background:#fff;border-radius:4px;border-top:4px solid var(--navy);padding:28px 26px}
.qm-card .tick{width:44px;height:44px;border-radius:3px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:16px;margin-bottom:16px}
.qm-card h4{font-size:16px;letter-spacing:.03em;color:var(--navy);margin-bottom:8px}
.qm-card p{font-size:14.5px;color:var(--graphite);line-height:1.6}

.qm-certs{padding:84px 0;background:#fff;text-align:center}
.qm-certs .eyebrow{display:inline-block}
.qm-certs h2{font-size:31px;color:var(--navy);margin:6px 0 14px}
.qm-certs__lede{max-width:760px;margin:0 auto 40px;color:var(--graphite);font-size:17px;line-height:1.6}
.qm-cert-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;text-align:left}
.qm-cert-card{display:flex;flex-direction:column;background:var(--light);border-radius:4px;border-top:4px solid var(--red);padding:30px 28px;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}
.qm-cert-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,18,51,.12)}
.qm-cert-card__badge{font-family:var(--display);font-size:14px;letter-spacing:.06em;color:var(--navy);border:1.5px solid var(--navy);border-radius:3px;padding:7px 12px;text-transform:uppercase;align-self:flex-start;margin-bottom:18px}
.qm-cert-card h3{font-size:18px;color:var(--navy);margin-bottom:10px}
.qm-cert-card p{font-size:14.5px;color:var(--graphite);line-height:1.6;margin-bottom:18px}
.qm-cert-card__more{margin-top:auto;font-weight:600;font-size:14px;color:var(--red)}
.qm-cert-card:hover .qm-cert-card__more{color:var(--red-hover)}

/* Certification detail pages (page-iso-9001 / -as9100d / -iatf-16949) */
.cert-detail .single-body h2{font-size:24px;color:var(--navy);margin:36px 0 12px}
.cert-detail .single-body h2:first-child{margin-top:0}
.cert-detail .single-body p{font-size:16px;line-height:1.75;color:var(--graphite);margin-bottom:16px}
.cert-detail .single-body .wrap{max-width:860px}
.cert-cross{background:var(--light);padding:56px 0}
.cert-cross h2{font-size:22px;color:var(--navy);text-align:center;margin-bottom:28px}
.cert-cross__grid{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;max-width:760px;margin:0 auto}
.cert-cross__card{flex:1 1 220px;max-width:300px;background:#fff;border-radius:4px;border-top:3px solid var(--navy);padding:20px 22px;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}
.cert-cross__card:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,18,51,.1)}
.cert-cross__card b{font-family:var(--display);color:var(--navy);font-size:15px;letter-spacing:.04em;display:block;margin-bottom:4px}
.cert-cross__card span{font-size:13.5px;color:var(--graphite)}

@media(max-width:980px){
  .qm-grid,.qm-cert-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
  .qm-grid,.qm-cert-grid{grid-template-columns:1fr}
}

/* --- Single industry: two-column body + value band ---------------------- */
.ind-body .wrap{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:56px;align-items:start}
.ind-main > *:first-child{margin-top:0}
.ind-main .field-h{margin-top:32px}
.ind-aside{position:sticky;top:96px}
.ind-facts{background:var(--light);border-top:3px solid var(--red);border-radius:4px;padding:26px 26px 28px}
.ind-facts__title{font-family:var(--display);color:var(--navy);font-size:18px;letter-spacing:.03em;text-transform:uppercase;margin:0 0 18px}
.ind-facts__label{font-family:var(--text);font-weight:600;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--graphite);margin:20px 0 8px}
.ind-facts__title + .ind-facts__label{margin-top:0}
.ind-facts .cert-list{margin:0}
.ind-facts__list{list-style:none;margin:6px 0 22px;padding:0}
.ind-facts__list li{position:relative;padding-left:20px;font-size:14px;color:var(--navy);line-height:1.5;margin-bottom:8px}
.ind-facts__list li::before{content:"";position:absolute;left:0;top:7px;width:8px;height:8px;background:var(--red);border-radius:50%}
.ind-facts__cta{display:block;text-align:center;color:#fff;margin-top:4px}

.ind-value{background:var(--light);padding:64px 0}
.ind-value h2{font-size:30px;color:var(--navy);margin:0 0 36px;text-align:center}
.ind-value__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.ind-value__item{background:#fff;border-radius:4px;border-top:4px solid var(--navy);padding:28px 26px}
.ind-value__item .tick{width:44px;height:44px;border-radius:3px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:16px;margin-bottom:16px}
.ind-value__item h4{font-size:16px;letter-spacing:.03em;color:var(--navy);margin-bottom:8px}
.ind-value__item p{font-size:14.5px;color:var(--graphite);line-height:1.6}

@media(max-width:980px){
  .ind-body .wrap{grid-template-columns:1fr;gap:36px}
  .ind-aside{position:static}
  .ind-value__grid{grid-template-columns:1fr}
}

/* --- Certification detail pages: overview + point cards ----------------- */
.cert-overview{padding:64px 0;background:#fff}
.cert-overview .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.cert-overview__text h2{font-size:27px;color:var(--navy);line-height:1.2;margin:6px 0 16px}
.cert-overview__text p{font-size:16px;line-height:1.75;color:var(--graphite);margin:0}
.cert-overview__img{min-height:340px}
/* Real cert body photo (placeholder from existing media, pending client pick). */
img.cert-overview__photo{width:100%;height:100%;min-height:340px;object-fit:cover;border-radius:4px}
/* Downloadable certificate PDF (official EAGLE certs bundled in assets/docs). */
.cert-overview__text .cert-download{margin:24px 0 0}
.cert-download__btn{display:inline-flex;align-items:center;gap:10px}
.cert-download__icon{flex:0 0 auto}

.cert-points{padding:0 0 84px;background:#fff}
.cert-points > .wrap > h2{font-size:27px;color:var(--navy);margin:0 0 32px;text-align:center}
.cert-points__grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.cert-point{background:var(--light);border-radius:4px;border-top:4px solid var(--navy);padding:28px 28px}
.cert-point .tick{width:44px;height:44px;border-radius:3px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:16px;margin-bottom:16px}
.cert-point h3{font-size:17px;color:var(--navy);line-height:1.3;margin-bottom:10px}
.cert-point p{font-size:14.5px;color:var(--graphite);line-height:1.65}

@media(max-width:980px){
  .cert-overview .wrap{grid-template-columns:1fr;gap:32px}
  .cert-points__grid{grid-template-columns:1fr}
}

/* --- Case study single: "wow" layout ----------------------------------- */
.cs-intro{padding:56px 0 48px;background:#fff}
.cs-intro .wrap{max-width:1000px}
.cs-intro .entry-content{display:grid;grid-template-columns:1fr 1fr;gap:44px}
.cs-intro .entry-content p{font-size:18px;line-height:1.7;color:var(--navy);margin:0}
.cs-intro .entry-content p:only-child{grid-column:1/-1;max-width:760px}

.cs-metrics{padding:50px 0;background:var(--navy-deep);color:#fff}
/* Hide the whole band until at least one metric is populated (avoids an orphan title). */
.cs-metrics:not(:has(.cs-metric__value)){display:none}
.cs-metrics__title{font-family:var(--text);font-weight:600;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--mist);text-align:center;margin:0 0 28px}
.cs-metrics .jet-listing-dynamic-repeater__items{display:flex;flex-wrap:wrap;justify-content:center;gap:28px}
.cs-metrics .jet-listing-dynamic-repeater__item{flex:0 1 230px;text-align:center;border-top:3px solid var(--red);padding:22px 16px 0}
.cs-metric__value{font-family:var(--display);font-size:clamp(34px,5vw,50px);line-height:1;color:#fff}
.cs-metric__label{font-size:13px;letter-spacing:.04em;color:var(--mist);margin-top:10px;text-transform:uppercase}

.cs-story{padding:72px 0 8px;background:#fff}
.cs-step{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;margin-bottom:60px}
.cs-step--alt .cs-step__text{order:2}
.cs-step--alt .cs-step__img{order:1}
.cs-step__num{font-family:var(--display);font-size:19px;color:#fff;background:var(--navy);width:48px;height:48px;border-radius:4px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.cs-step__text h2{font-size:26px;color:var(--navy);margin:0 0 14px}
.cs-step__text .field-body,.cs-step__text .field-body p,.cs-step__text p{font-size:16px;line-height:1.75;color:var(--graphite);margin:0 0 12px}
.cs-step__img{min-height:320px;align-self:stretch}
/* Real in-body case-study photo (gates-albert/cs-photo block) — fills the same
   grid cell as the .photo-ph placeholder. */
.cs-photo{border-radius:4px;overflow:hidden;background:#0f1826}
.cs-photo .cs-photo__img{display:block;width:100%;height:100%;min-height:320px;object-fit:cover}

/* Small inline quote under the Solution */
.cs-quote-inline{border-left:3px solid var(--red);padding:2px 0 2px 18px;margin:20px 0 0;font-style:italic;color:var(--navy);font-size:16.5px;line-height:1.5;background:none;font-family:var(--text)}
/* hide_if_empty leaves an empty field-block wrapper; hide it so the red border doesn't show */
.cs-quote-inline:empty{display:none}
/* JetEngine puts the class on both the block wrapper and the inner field div — keep one border */
.cs-quote-inline .cs-quote-inline{border-left:0;padding-left:0}

/* Outcome: Results (left) + compact "Applied" sidebar (right) */
.cs-outcome{padding:8px 0 72px;background:#fff}
.cs-outcome .wrap{display:grid;grid-template-columns:1.7fr 1fr;gap:48px;align-items:start}
.cs-outcome__results{background:var(--light);border-left:5px solid var(--red);border-radius:0 4px 4px 0;padding:32px 36px}
.cs-outcome__results .cs-step__num--light{background:var(--red);margin-bottom:14px}
.cs-outcome__results h2{font-size:26px;color:var(--navy);margin:0 0 14px}
.cs-outcome__results .cs-results__body,.cs-outcome__results .cs-results__body p,.cs-outcome__results .cs-results__body li{font-size:16.5px;line-height:1.7;color:var(--navy)}

.cs-outcome__applied{padding-top:6px}
.cs-applied__group:not(:has(.jet-listing-grid__item)){display:none}
.cs-applied__group:has(.jet-listing-not-found){display:none}
.cs-applied__label{font-weight:600;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--graphite);margin:0 0 8px}
.cs-applied__group + .cs-applied__group .cs-applied__label{margin-top:22px}
.cs-applied__cta{display:inline-block;margin-top:26px;color:#fff}
/* collapse the related listing cards into compact title-links */
.cs-outcome__applied .jet-listing-grid__items{display:block!important}
.cs-outcome__applied .jet-listing-grid__item{width:auto!important;margin:0 0 8px!important}
.cs-outcome__applied .cap,.cs-outcome__applied .mat{position:relative;background:none!important;border:0!important;padding:0!important;box-shadow:none!important;transform:none!important;min-height:0!important;display:block}
.cs-outcome__applied .cap__img{display:none!important}
.cs-outcome__applied .cap > div:not(:first-of-type):not(.jet-listing-dynamic-link-block),
.cs-outcome__applied .mat > div:not(:first-of-type):not(.jet-listing-dynamic-link-block),
.cs-outcome__applied .mat span{display:none!important}
.cs-outcome__applied .cap .jet-listing-dynamic-field__content,
.cs-outcome__applied .mat b{font-family:var(--display);font-size:16px;font-weight:400;color:var(--navy)!important;text-transform:none;letter-spacing:0;line-height:1.4;border-bottom:2px solid var(--red);display:inline;padding-bottom:1px}
.cs-outcome__applied .cap:hover .jet-listing-dynamic-field__content,.cs-outcome__applied .mat:hover b{color:var(--red)!important}
.cs-outcome__applied .jet-listing-dynamic-link-block{font-size:0;line-height:0}
.cs-outcome__applied .cap a.jet-listing-dynamic-link__link,.cs-outcome__applied .mat a.jet-listing-dynamic-link__link{font-size:0!important}

@media(max-width:900px){
  .cs-step{grid-template-columns:1fr;gap:26px;margin-bottom:44px}
  .cs-step--alt .cs-step__text{order:1}
  .cs-step--alt .cs-step__img{order:2}
  .cs-outcome .wrap{grid-template-columns:1fr;gap:32px}
}

/* --- Brinkman International Group page ---------------------------------- */
.bg-companies{padding:84px 0;background:#fff}
.bg-companies h2{font-size:32px;color:var(--navy);margin:6px 0 14px}
.bg-companies__lede{max-width:780px;color:var(--graphite);font-size:17px;line-height:1.65;margin:0 0 44px}
.bg-company-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.bg-company{background:#fff;border:1px solid #e6e8ec;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}
.bg-company__logo-wrap{background:var(--light);min-height:118px;display:flex;align-items:center;justify-content:center;padding:28px 24px;border-bottom:1px solid #e6e8ec}
.bg-company__logo{max-height:52px;max-width:82%;width:auto;object-fit:contain;display:block}
.bg-company__body{padding:24px 26px 28px}
.bg-company__tag{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--red);font-weight:600;margin:0 0 8px}
.bg-company h3{font-size:18px;color:var(--navy);margin:0 0 10px}
.bg-company p{font-size:14.5px;color:var(--graphite);line-height:1.65;margin:0}

@media(max-width:900px){
  .bg-company-grid{grid-template-columns:1fr;max-width:460px}
}

/* --- Single capability (reuses .ind-body / .ind-aside / .ind-facts / .ind-value) --- */
.ind-main .cap-lede,.ind-main .cap-lede p{font-size:19px;line-height:1.7;color:var(--navy);margin:0 0 18px}
.ind-main .equip-list{margin-top:18px}
.ind-main .equip-list .jet-listing-dynamic-repeater__item{padding:10px 0;border-top:1px solid #e6e8ec;font-size:15px;color:var(--graphite)}
.ind-main .equip-list b{color:var(--navy)}
/* Machine operations chart (two separate charts — Hybrid & Model B). Native
   block markup appended to the capability body; a compact checkmark grid. */
.ops-chart{margin-top:38px;padding-top:26px;border-top:1px solid var(--mist)}
.ops-chart__title{font-family:var(--display);text-transform:uppercase;letter-spacing:.02em;color:var(--navy);font-size:18px;margin:0 0 16px}
.ops-chart__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px 22px}
.ops-chart__item{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:500;color:#2b2c2e}
.ops-chart__item svg{flex:0 0 auto;color:var(--red)}
@media(max-width:700px){.ops-chart__grid{grid-template-columns:1fr 1fr}}
/* "Read more" disclosure (Post-Processing) — one native <details> toggle, no
   JS. Intro stays visible; the summary is styled as a button and relabels on
   open. Not an accordion (single disclosure of the condensed remainder). */
.cap-more{margin-top:20px}
.cap-more > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;font-family:var(--text);font-weight:600;font-size:15px;color:var(--navy);border:1px solid var(--navy);border-radius:3px;padding:12px 24px;transition:all .15s ease}
.cap-more > summary::-webkit-details-marker{display:none}
.cap-more > summary:hover{background:var(--navy);color:#fff}
.cap-more > summary::after{content:"";width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .15s ease;margin-top:-3px}
.cap-more[open] > summary::after{transform:rotate(-135deg);margin-top:2px}
.cap-more[open] > summary{margin-bottom:8px}
.cap-more .cap-more__less{display:none}
.cap-more[open] .cap-more__more{display:none}
.cap-more[open] .cap-more__less{display:inline}
.cap-more__inner{margin-top:12px}
.cap-more__inner h3{font-size:20px;color:var(--navy);margin:22px 0 8px}
.cap-more__inner h3:first-child{margin-top:6px}
.cap-more__inner p{margin:0 0 8px}
.cap-other{margin-top:26px}
.cap-other__list{list-style:none;margin:6px 0 14px;padding:0}
.cap-other__list li{margin-bottom:8px}
.cap-other__list a{font-family:var(--display);font-size:14.5px;color:var(--navy);text-decoration:none;border-bottom:1px solid transparent;transition:color .15s ease,border-color .15s ease}
.cap-other__list a:hover{color:var(--red);border-bottom-color:var(--red)}
.cap-other__all{font-weight:600;font-size:14px;color:var(--red);text-decoration:none}
.cap-other__all:hover{color:var(--red-hover)}
@media(max-width:700px){
  .cs-intro .entry-content{grid-template-columns:1fr;gap:16px}
}

/* --- Materials archive (archive-material): dark theme retained ----------- */
/* Separate the photo hero from the solid-navy grid section with a hairline. */
.mat-hero + .materials{border-top:1px solid rgba(255,255,255,.10)}
.mat-intro{max-width:820px;margin:0 0 40px;position:relative;z-index:2}
.mat-intro h2{color:#fff;font-size:28px;line-height:1.2;margin:0 0 18px}
.mat-intro p{color:var(--mist);font-size:16px;line-height:1.75;margin:0 0 16px}
.mat-intro p:last-child{margin-bottom:0}

/* --- Industries archive (archive-industry): light, image cards ---------- */
.ind-intro{max-width:820px;margin:0 0 40px}
.ind-intro h2{font-size:28px;color:var(--navy);line-height:1.2;margin:0 0 18px}
.ind-intro p{font-size:16px;line-height:1.75;color:var(--graphite);margin:0 0 16px}
.ind-intro p:last-child{margin-bottom:0}
/* Image cards — activate only once listing 1717 gets a Dynamic Image (.ind__img).
   :has() keeps the compact left-border .ind tiles (related-industry grids) intact. */
.ind:has(.ind__img){padding:0;border-left:0;border-radius:4px;overflow:hidden;background:#fff;border-top:4px solid var(--navy);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.ind:has(.ind__img):hover{background:#fff;border-top-color:var(--red);transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,18,51,.12)}
.ind__img{display:block;margin:0;line-height:0}
.ind__img img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}
.ind:has(.ind__img) > *:not(.ind__img){padding-left:18px;padding-right:18px}
.ind:has(.ind__img) .ind__img + *{padding-top:16px}
.ind:has(.ind__img) > *:not(.ind__img):last-child{padding-bottom:18px}

/* --- Brinkman page: intro (text + Gates Albert stacked logo) ------------- */
.bg-companies__intro{display:grid;grid-template-columns:1fr 260px;gap:56px;align-items:center}
.bg-companies__intro .bg-companies__lede{margin-bottom:0}
.bg-companies__intro-logo{display:flex;align-items:center;justify-content:center}
.bg-companies__intro-logo img{max-width:230px;width:100%;height:auto;display:block}
.bg-companies__structure{margin:30px 0 0;padding:20px 24px;background:var(--light);border-left:4px solid var(--red);border-radius:4px;font-size:15.5px;line-height:1.7;color:var(--graphite)}
.bg-companies__structure strong{color:var(--navy);font-weight:600}

/* --- Brinkman page: full sister-company profiles (alternating) ---------- */
.bg-profiles{margin-top:48px;display:flex;flex-direction:column}
.bg-profile{display:grid;grid-template-columns:260px 1fr;gap:48px;align-items:start;padding:44px 0;border-top:1px solid #e6e8ec}
.bg-profile:first-child{border-top:0;padding-top:8px}
.bg-profile--flip{grid-template-columns:1fr 260px}
.bg-profile--flip .bg-profile__aside{order:2}
.bg-profile--flip .bg-profile__body{order:1}
.bg-profile__logo-wrap{background:var(--light);border:1px solid #e6e8ec;border-radius:4px;min-height:120px;display:flex;align-items:center;justify-content:center;padding:24px}
a.bg-profile__logo-wrap{transition:border-color .2s ease,box-shadow .2s ease}
a.bg-profile__logo-wrap:hover,a.bg-profile__logo-wrap:focus-visible{border-color:var(--red);box-shadow:0 2px 10px rgba(0,18,51,.08)}
.bg-profile__logo{max-height:60px;max-width:80%;width:auto;object-fit:contain;display:block}
.bg-profile__tag{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--red);font-weight:600;margin:14px 0 0;text-align:center}
.bg-profile__body h3{font-size:22px;color:var(--navy);margin:0 0 14px}
.bg-profile__body p{font-size:15.5px;color:var(--graphite);line-height:1.7;margin:0 0 14px}
.bg-profile__body p:last-child{margin-bottom:0}

/* --- Company Overview: family cards upgraded with logos ----------------- */
.family-card--logo{display:flex;align-items:center;gap:18px}
.family-card__logo-wrap{flex:0 0 96px;display:flex;align-items:center;justify-content:center}
.family-card__logo{max-width:96px;max-height:48px;width:auto;object-fit:contain;display:block}
.family-card__body h4{margin-bottom:6px}
.family__cta{margin-bottom:24px}

@media (max-width:860px){
	.bg-companies__intro{grid-template-columns:1fr;gap:28px}
	.bg-companies__intro-logo{justify-content:flex-start}
	.bg-companies__intro-logo img{max-width:180px}
	.bg-profile,.bg-profile--flip{grid-template-columns:1fr;gap:22px}
	.bg-profile--flip .bg-profile__aside,.bg-profile--flip .bg-profile__body{order:0}
	.bg-profile__aside{max-width:220px}
	.bg-profile__tag{text-align:left}
	.family-card--logo{gap:14px}
	.family-card__logo-wrap{flex-basis:64px}
	.family-card__logo{max-width:64px;max-height:40px}
}
@media (max-width:420px){
	.family-card--logo{flex-direction:column;align-items:flex-start;gap:10px}
}

/* Client Review Round 2 — hero legibility over photos.
   Industry/capability/case-study heroes place light text over a featured
   image with only a 50% dim; on lighter or busy photos (e.g. Automotive) the
   title and lede/subtitle wash out. Add a soft shadow for contrast and lift
   the case-study subtitle to full white. */
.single-hero h1,
.single-hero .wp-block-post-title,
.single-hero .lede .jet-listing-dynamic-field__content,
.single-hero p,
.cs-hero .cs-subtitle .jet-listing-dynamic-field__content{
	text-shadow:0 1px 4px rgba(0,18,51,.55);
}
.cs-hero .cs-subtitle .jet-listing-dynamic-field__content{color:#fff}

/* Client Review Round 9 — material hero legibility over the new part photos.
   Connor's final material images are bright, white-background product shots —
   far lighter than the dark shop photos these heroes were designed around. At
   the cover block's 50% dim the H1 still holds, but the lede washes out where
   it crosses polished brass/chrome (the R2 text-shadow alone isn't enough at
   this brightness). Rather than raise dimRatio — which would mute the parts the
   client specifically chose these photos to show off — lay a soft left-to-right
   scrim under the text column only: the copy gets a dark base while the
   right-hand side of the photo stays bright. Scoped to .single-material so the
   capability/industry/case-study heroes (still dark photos) are untouched. */
.single-material .single-hero::after{
	content:"";
	position:absolute;
	inset:0;
	background:linear-gradient(90deg,rgba(0,18,51,.62) 0%,rgba(0,18,51,.44) 46%,rgba(0,18,51,0) 80%);
	pointer-events:none;
	z-index:1;
}
/* The scrim paints at z-index 1, the same layer as the cover's inner container,
   and wins on paint order — so the text must be lifted above it explicitly.
   !important is load-bearing here: core's block-library ships
     body:not(.editor-styles-wrapper) .wp-block-cover:not(...:has(.wp-block-cover__background
       + .wp-block-cover__inner-container)) .wp-block-cover__inner-container{z-index:1}
   which scores ~(0,6,1) against this rule's (0,3,0), so specificity beats source
   order no matter where we put it. (The :has() guard doesn't spare us either —
   the cover's <img> sits between the background span and the inner container, so
   the adjacent-sibling test fails and core's rule applies.) */
.single-material .single-hero .wp-block-cover__inner-container{position:relative;z-index:2!important}

/* Client Review Round 3 */
/* Capabilities archive intro: Gates Albert logo in the right-hand whitespace
   beside the (not-full-width) intro copy. */
.cap-intro--logo{display:flex;align-items:center;gap:44px;max-width:none}
.cap-intro--logo .cap-intro__text{flex:1 1 auto;min-width:0;max-width:840px}
.cap-intro__logo{flex:0 0 auto;width:210px;max-width:32%;text-align:center}
.cap-intro__logo img{width:100%;height:auto}
@media (max-width:820px){
	.cap-intro--logo{flex-direction:column;align-items:flex-start;gap:24px}
	.cap-intro__logo{width:180px}
}
/* Case-study "By the numbers": center each value over its label.
   JetEngine frontend.css sets display:flex on every repeater-item child
   (`.jet-listing-dynamic-repeater__item > :not(td)...`, specificity 0,2,1),
   which pins the value's text flex-start (left). Override it with a more
   specific child selector (0,3,0) so the value/label render as centered blocks. */
.cs-metrics .jet-listing-dynamic-repeater__item{display:flex;flex-direction:column;align-items:center}
.cs-metrics .jet-listing-dynamic-repeater__item > .cs-metric__value,
.cs-metrics .jet-listing-dynamic-repeater__item > .cs-metric__label{display:block;width:100%;text-align:center}

/* --- FAQ accordion (page-faq / gates-albert/faq-accordion) -------------- */
/* Native <details>/<summary> disclosure (no JS, keyboard-operable) — same idiom
   as .cap-more. Red (--red) accent marks the active/expanded row. */
.faq-section{padding:64px 0 84px;background:#fff}
.faq-section .wrap{max-width:900px}
.faq-accordion{border-top:1px solid #e6e8ec}
.faq-item{border-bottom:1px solid #e6e8ec}
.faq-q{list-style:none;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 4px;font-family:var(--text);font-weight:600;font-size:18px;line-height:1.4;color:var(--navy);transition:color .15s ease,padding .15s ease}
.faq-q::-webkit-details-marker{display:none}
.faq-q::marker{content:""}
.faq-q:hover{color:var(--red)}
.faq-q:focus-visible{outline:2px solid var(--red);outline-offset:2px;border-radius:2px}
.faq-q__text{flex:1 1 auto}
/* +/- glyph: the horizontal bar stays; the vertical bar collapses when open. */
.faq-q__icon{flex:0 0 auto;position:relative;width:18px;height:18px;margin-top:3px}
.faq-q__icon::before,.faq-q__icon::after{content:"";position:absolute;background:currentColor;border-radius:2px;transition:transform .18s ease,opacity .18s ease}
.faq-q__icon::before{top:8px;left:0;width:18px;height:2px}
.faq-q__icon::after{top:0;left:8px;width:2px;height:18px}
.faq-item[open]{box-shadow:inset 3px 0 0 var(--red)}
.faq-item[open] .faq-q{color:var(--red);padding-left:18px}
.faq-item[open] .faq-q__icon::after{transform:scaleY(0);opacity:0}
/* Answer prose — mirrors .single-body prose; explicit list->paragraph spacing. */
.faq-a{padding:2px 4px 26px;color:#3c3d3f;font-size:16px;line-height:1.75;max-width:760px}
.faq-item[open] .faq-a{padding-left:18px}
.faq-a > *:first-child{margin-top:0}
.faq-a > *:last-child{margin-bottom:0}
.faq-a p{margin:0 0 14px}
.faq-a ul{margin:0 0 16px;padding-left:22px}
.faq-a li{margin:0 0 8px;line-height:1.6}
.faq-a a{color:var(--red);font-weight:600;text-decoration:none;border-bottom:1px solid transparent;transition:color .15s ease,border-color .15s ease}
.faq-a a:hover{color:var(--red-hover);border-bottom-color:var(--red-hover)}
.faq-a strong{color:var(--navy)}
@media(max-width:600px){
  .faq-q{font-size:16px;padding:18px 2px;gap:14px}
  .faq-item[open] .faq-q{padding-left:14px}
  .faq-a{font-size:15px}
}
@media(prefers-reduced-motion:reduce){.faq-q__icon::before,.faq-q__icon::after{transition:none}}
