/* ==========================================================================
   2026-10-29 — Final revision (management's 22 points + revision pack).
   Enqueued LAST on every page (after oct25.css, and after oct27.css on the
   bearings page), so its sitewide alignment rule is not beaten by an earlier
   file at equal specificity.
   ========================================================================== */

/* SPACING · no rivers. Justified text at this site's measures (<=72ch, and far narrower
   in every two-column section, card and caption) opens uneven word gaps, which the
   live review found on ENCORE and the bearing sections. Every paragraph is set left,
   with the line spacing unchanged. */
main p, main li, main dd, main figcaption{text-align:left;text-align-last:auto;hyphens:manual;-webkit-hyphens:manual}

/* Gallery (point 14): the tab bar ships `hidden`; .v2-filter's display:flex would
   otherwise beat the UA [hidden] rule (author beats UA). */
.v2-filter[hidden]{display:none}
.o29-gal-group + .o29-gal-group{margin-top:40px}
.o29-gal-h{font-family:var(--f-dsp);font-weight:600;font-size:clamp(20px,1.8vw,24px);line-height:1.25;margin:0 0 16px}
.gal-tabbed .o29-gal-h{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.gal-tabbed .o29-gal-group + .o29-gal-group{margin-top:0}

/* Figures at their OWN aspect, never wider than their native pixels (--mw). */
.o29-fig{margin:0;width:100%;max-width:var(--mw)}
.o29-frame{display:block;aspect-ratio:var(--ar);border-radius:6px;overflow:hidden;background:#fff;border:1px solid rgba(12,13,15,.08)}
.o29-frame img{display:block;width:100%;height:100%;object-fit:cover}
.o29-fig figcaption{margin-top:10px;font-size:.875rem;line-height:1.45;color:var(--tx-l-dim)}
.v2-split > .o29-fig{justify-self:center}

/* Tool Holders: the p11 holder group and the p12 collets, each captioned with its name.
   Side by side at ONE shared height from 640px (each figure's flex-grow is its own aspect
   ratio, so neither is cropped), stacked below. */
.o29-pair{display:flex;flex-direction:column;gap:var(--v2-gap);width:100%;align-items:center}
@media (min-width:640px){
  .o29-pair{flex-direction:row;align-items:flex-start}
  .o29-pair .o29-fig{flex:var(--ar) 1 0;min-width:0;max-width:none}
}

/* ENCORE (point 12): two left-aligned paragraphs under the heading */
.o29-prose{max-width:72ch;margin-top:16px;display:grid;gap:14px}
.o29-prose p{margin:0}

/* White Metal Application (point 8): the three processes side by side, full width,
   text-only until the approved casting visuals land in their uniform 4:3 slots. */
.o29-anchor{display:block;height:0}
.o29-cast{display:grid;gap:20px 40px;margin-top:24px}
@media (min-width:900px){.o29-cast{grid-template-columns:repeat(3,minmax(0,1fr))}}
.o29-cast-item{display:grid;align-content:start;gap:8px}
.o29-cast-item .v2-h3{margin:0}
.o29-cast-item p{margin:0;color:var(--tx-l-dim)}
.o29-cast-media{display:block;aspect-ratio:4/3;border-radius:6px;overflow:hidden;margin-bottom:8px}
.o29-cast-media img{display:block;width:100%;height:100%;object-fit:cover}

/* FAQ (point 16): the four service headings */
.o29-faq-h{font-family:var(--f-dsp);font-weight:600;font-size:clamp(20px,1.8vw,24px);line-height:1.25;margin:20px 0 4px}
.v2-faq > .o29-faq-h:first-child{margin-top:0}

/* Engineering Insights (point 18): Falcon Group developments are labelled as such */
.o29-fg-tag{display:inline-block;margin-bottom:8px;padding:3px 10px;border:1px solid var(--brand-ink);border-radius:999px;font-size:.75rem;line-height:1.5;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--brand-ink)}
.scene-dark .o29-fg-tag{border-color:var(--brand-lift);color:#fff}   /* the article hero is LIGHT: only a dark scene flips the tag */

/* About · Regional Presence on its own row: three entries across from 760px */
@media (min-width:760px){.o29-regions{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}}
.o29-regions-link{display:inline-block;margin-top:20px}

/* Home · Our Four Divisions (live review): less space above the cards. The pinned stage
   still fills the viewport (so no page ground shows under the pin), but its content now
   starts just under the fixed header instead of being centred in 100vh, which had left
   ~250px of empty field above the heading. The scroll distance is shortened in app.js
   (2.6 -> 1.6 viewport heights). */
@media (min-width:1000px){
  .js .mech{padding-top:0}
  .js .mech .mech-stage{align-items:flex-start;padding-top:calc(var(--hdr-h) + 20px)}
  .js .mech .mech-copy{align-self:start}   /* the grid row is the gear's height; the copy no longer centres in it */
}
@media (min-width:1000px) and (prefers-reduced-motion:reduce){
  .js .mech .mech-stage{padding-top:0}
  .js .mech{padding-top:var(--sp-sm)}
}

/* Home · Who We Are is now one sentence: centre it against the photograph */
#who-we-are .v2-split{align-items:center}

/* Insights tag sits at its own width inside the flex-column card */
.o29-fg-tag{align-self:flex-start;width:max-content;max-width:100%}

/* Industry links (Home tiles -> /industries/#<sector>): land the card fully below the fixed header */
.v2-card[id], .o29-anchor, #vertical-guide-bearings, #coatings, #tool-holders, #tool-management, #gallery{scroll-margin-top:calc(var(--hdr-h) + 16px)}
