/*
 * ════════════════════════════════════════════════════════
 * TAKNEK ENGINEERING — main.css v12b  (production-final)
 * Single file. All classes defined here.
 *
 * ⚠ READ BEFORE EDITING — two real bugs this exact file has caused:
 *
 * 1. DUPLICATE SELECTORS SILENTLY FIGHT EACH OTHER. Several sections
 *    of this file exist in more than one "generation" (an old design
 *    was redesigned later, but the old CSS was never deleted). When
 *    the same selector is defined twice at equal specificity, the
 *    LATER one in the file wins with zero warning — the earlier
 *    block just silently does nothing. This has caused real, shipped
 *    bugs (a hover-lift transform cancelled by an unrelated later
 *    rule; a hardcoded hero height overriding a dynamic one). Before
 *    editing any existing rule, grep the class name for a second
 *    definition elsewhere in the file. Known duplicate generations
 *    still present as of this note: .pres-*, .exec-*, .team-* (old
 *    leadership — live version is .lead-*), old .proc-* (live is
 *    .iproc-*, see taknek_proc_steps() in functions.php), .pgal-*
 *    and .pgal2-* (both dead — see taknek_carousel_slides() call
 *    sites for the live gallery pattern), "Design A" .svc-header/
 *    .svc-grid/.svc-badge-* (live is .svc2-*), and .car-life-*
 *    (Careers "Life at Taknek" — the live gallery is .lat-*).
 * 2. THIS FILE HAS ONE KNOWN, HARMLESS BRACE IMBALANCE (-1: one more
 *    `}` than `{`, from before this file's current history began —
 *    not traceable to any specific rule). Any CSS-edit verification
 *    script comparing `{`/`}` counts should expect exactly -1
 *    unchanged, not 0 — a script assuming 0 will report a false
 *    positive on every single edit.
 *
 * SEARCH LABELS:
 *   TOKENS     — colours, spacing, header sizes
 *   RESET      — WP overrides
 *   HEADER     — white sticky nav
 *   TYPE       — headings, body, labels
 *   BUTTONS    — all variants
 *   FRAMES     — spacing system (.frame/.frame-tight/.frame-large)
 *   CONTAINERS — .container / .container-wide
 *   GRID       — col-2, col-3, col-4, col-copy
 *   IMAGES     — .img-fill system, .photo-block fallback
 *   CARDS      — .card, .card-h, .card-p
 *   STATS      — stat-row, stat-band
 *   SECTIONS   — feat-grid, pull-quote, cta-block, memberships
 *   HERO       — hero-split (homepage) + page-hero (inner)
 *   LEADERSHIP — .lead-* (the live leadership grid — NOT .exec-* or
 *                .team-*, which are dead, see the warning above)
 *   PROJECTS   — proj-grid, proj-filter, proj-feat, gallery
 *   FOOTER     — ft-grid
 *   REVEAL     — .rv animation
 *   RESPONSIVE — 1100px, 768px, 480px
 *
 * ─── TWO UNIFORM FRAME TEMPLATES ─────────────────────
 *
 * TEMPLATE A — Image + Text (50/50):
 * <section class="frame bg-white">
 *   <div class="container">
 *     <div class="col-2">
 *       <div class="img-fill aspect-4-3 rv">
 *         <div class="img-fill-bg" style="background-image:url(...)"></div>
 *       </div>
 *       <div class="col-copy rv d1">
 *         <span class="label label-blue">Eyebrow</span>
 *         <h2 class="heading-lg">Title <em>Here</em></h2>
 *         <p class="body-lg">Body copy goes here.</p>
 *         <div class="btn-group">
 *           <a class="btn-primary" href="#">Primary CTA</a>
 *           <a class="btn-outline" href="#">Secondary</a>
 *         </div>
 *       </div>
 *     </div>
 *   </div>
 * </section>
 *
 * TEMPLATE B — Full-width header + card grid:
 * <section class="frame bg-light">
 *   <div class="container">
 *     <div class="frame-header rv">
 *       <div>
 *         <span class="label label-teal">Eyebrow</span>
 *         <h2 class="heading-md d1">Title <em>Here</em></h2>
 *       </div>
 *       <p class="body-md frame-header-copy d2">Optional right text.</p>
 *     </div>
 *     <div class="col-3">
 *       <div class="card rv"><div class="card-bar"></div>
 *         <div class="card-ico"><svg ...></svg></div>
 *         <div class="card-h">Card Title</div>
 *         <p class="card-p">Card body text.</p>
 *       </div>
 *     </div>
 *   </div>
 * </section>
 *
 * TO FLIP image to right: add class "col-2-flip" to .col-2
 * TO REMOVE a frame: delete the entire <section> block
 * ════════════════════════════════════════════════════════
 */

/* ────────────────────────────────────────────────────
   TOKENS
   ─────────────────────────────────────────────────── */
:root {
  /* Brand */
  --blue:       #0B4D90;
  --blue-dark:  #083A6E;
  --blue-light: #E8F0FA;
  --teal:       #00A49F;
  --teal-dark:  #007D79;
  --teal-light: #E0F5F4;

  /* Neutrals */
  --ink:    #0A1828;
  --body:   #2A4255;
  --muted:  #637D92;
  --rule:   #DDE5EE;
  --bg:     #F5F8FC;
  --white:  #FFFFFF;

  /* Header — WHITE sticky */
  --hdr-h:      72px;
  --hdr-bg:     #ffffff;
  --hdr-shadow: 0 1px 0 var(--rule), 0 2px 16px rgba(10,24,40,.06);

  /* Frame spacing */

  /* Manual Change Start 1.3 */

  /* Frame spacing — fluid, continuous across viewport width instead
     of jumping at fixed breakpoints (fluid-scaling-v2). Anchored to
     production's real values at 768px->44px and 1920px->72px (solved
     via slope = (max-min)/(viewportMax-viewportMin), i.e. the
     standard fluid-type formula -- NOT the flat percentages used in
     the first fluid-scaling-v2 commit, which undershot production by
     20-32% in the normal desktop range). -tight/-large keep the same
     ~0.69x/~1.35x ratios to --frame-pad the old stepped tiers had. */
  --frame-pad:        clamp(22px, 2.43vw + 25.33px, 88px);
  --frame-pad-tight:  clamp(15px, 1.68vw + 17.48px, 60px);
  --frame-pad-large:  clamp(30px, 3.33vw + 34.71px, 120px);

  /* Manual Change End 1.3 */

  /* Containers — fluid (fluid-scaling-v2). Floors match the old flat
     base values (1280px/1520px) exactly, so nothing below ~1280px/
     1520px viewport width changes from the old behavior at all --
     the ramp only kicks in above that, reaching production's real
     wide-desktop value (1600px/1680px) by exactly 1920px viewport,
     with no jump in between.
     Raised ceiling past production's own values on request -- Nick
     wants Desktop/Laptop frames to visibly stretch, not just match
     production's modest cap. Anchored so 1920px viewport -> 1800px/
     2000px container (93.8%/very-close-to-full width, up from
     1600px/1680px), still capped at 2000px/2200px beyond that so
     ultrawide monitors (2560px+) don't get absurdly long text lines. */
  --mw:      clamp(1280px, 81.25vw + 240px, 1800px);
  --mw-wide: clamp(1520px, 120vw - 304px, 2000px);

  /* Misc */
  --r:    10px;
  --ease: cubic-bezier(.16,1,.3,1);
}

/* Both formulas above already reach their new, lower caps (1800px/2000px,
   down from 2000px/2200px) at exactly 1920px viewport -- no change to
   any value below that. This override extends the ramp past 1920px
   instead of freezing there, reaching the SAME original caps (2000px/
   2200px) by 2560px -- ultrawide monitors end up in the same place,
   just gradually instead of the curve finishing 150-900px of viewport
   width early (see .heading-xl/.heading-lg etc. above for the matching
   typography-side fix; both are anchored to agree exactly at 1920px). */
@media (min-width: 1920px) {
  :root {
    --mw:      clamp(1800px, 31.25vw + 1200px, 2000px);
    --mw-wide: clamp(2000px, 31.25vw + 1400px, 2200px);
  }
}

/* ────────────────────────────────────────────────────
   RESET
   ─────────────────────────────────────────────────── */

/*MANUAL CHANGE Start 1.1*/

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; overflow-x: hidden; }
body {
  margin: 0;
  padding-top: var(--hdr-h);
  font-family: 'Source Sans 3', sans-serif;
  color: var(--ink);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
}
/* Ensure all grid children cannot overflow their column */
.col-2 > *, .col-2-wide > *, .col-3 > *, .col-4 > * { min-width: 0; max-width: 100%; }

/*MANUAL CHANGE END 1.1*/

a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; height: auto; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }

/* WP resets */
#page, #content, #main, .site, .site-content, .entry-content,
.entry, .post, .page, .wp-site-blocks, .is-layout-flow, .is-layout-constrained {
  margin: 0 !important; padding: 0 !important;
  max-width: none !important; width: 100% !important;
}
html body   { padding-top: 0 !important; }
#wpadminbar { display: none !important; }

/* ────────────────────────────────────────────────────
   HEADER — white, sticky, shadow on scroll
   ─────────────────────────────────────────────────── */
.site-header {
  position: fixed;
  top: var(--topbar-h, 36px);
  left: 0;
  right: 0;
  z-index: 150;
  height: var(--hdr-h);
  background: var(--hdr-bg);
  border-bottom: 1px solid var(--rule);
  transition: box-shadow .22s ease;
}
.site-header.scrolled { box-shadow: var(--hdr-shadow); }
.site-header .container {
  height: 100%;
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
}

/* Wordmark */
.wm { display: flex; align-items: center; gap: 13px; flex-shrink: 0; text-decoration: none; }
.wm-logo { width: 34px; height: 34px; flex-shrink: 0; }
.wm-logo svg polygon:first-child { stroke: var(--blue); }
.wm-logo svg circle { fill: var(--teal); }
.wm-name {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(17px, 1.5vw, 21px); font-weight: 800;
  letter-spacing: .10em; text-transform: uppercase;
  color: var(--ink); line-height: 1;
}
.wm-tag {
  display: block;
  font-family: 'Source Sans 3', sans-serif;
  font-size: 8px; font-weight: 600; letter-spacing: .28em;
  text-transform: uppercase; color: var(--teal); margin-top: 3px;
}

/* Desktop nav */
.site-nav { display: flex; align-items: center; gap: 2px; flex: 1; justify-content: center; }
.nav-link {
  font-size: 13.5px; font-weight: 500; color: var(--body);
  padding: 7px 13px; border-radius: 6px;
  transition: color .15s, background .15s;
}
.nav-link:hover { color: var(--blue); background: var(--blue-light); }
.nav-link.active { color: var(--blue); font-weight: 600; }

/* Dropdown */
.nav-drop { position: relative; }
.nav-drop-btn {
  display: flex; align-items: center; gap: 4px;
  font-size: 13.5px; font-weight: 500; color: var(--body);
  padding: 7px 13px; border-radius: 6px;
  transition: color .15s, background .15s;
}
.nav-drop-btn:hover { color: var(--blue); background: var(--blue-light); }
.nav-drop-icon { transition: transform .18s var(--ease); display: flex; align-items: center; }
.nav-drop:hover .nav-drop-icon,
.nav-drop:focus-within .nav-drop-icon { transform: rotate(180deg); }
/* .nav-panel's base rule lives in the "Header Changes" patch block
   further down (identical values, that copy is the one that wins) --
   removed the exact duplicate that used to be here. */
.nav-drop:hover .nav-panel,
.nav-drop:focus-within .nav-panel { opacity: 1; pointer-events: all; transform: translateY(0); }
.nav-panel { transition-delay: 0s; }
.nav-drop:not(:hover) .nav-panel { transition-delay: 0.30s; }
.nav-panel-item {
  display: flex; flex-direction: column;
  padding: 10px 14px; border-radius: 6px; transition: background .12s;
}
.nav-panel-item:hover { background: var(--blue-light); }
.nav-panel-eyebrow { font-size: 9px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--teal); margin-bottom: 3px; }
.nav-panel-label { font-size: 13px; font-weight: 600; color: var(--ink); }

/* Header CTA */
.hdr-cta {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 10px 22px; background: var(--blue); color: var(--white);
  border-radius: var(--r); font-size: 13px; font-weight: 600;
  white-space: nowrap; flex-shrink: 0;
  transition: background .15s, box-shadow .15s, transform .12s;
}
/* .hdr-cta:hover's exact duplicate (same values) lives in the
   "Header Changes" patch block further down -- removed the one that
   used to be here. */

/* Hamburger */
.nav-burger { display: none; flex-direction: column; gap: 5px; width: 22px; flex-shrink: 0; }
.nav-burger span { display: block; height: 2px; background: var(--ink); border-radius: 2px; transition: transform .24s, opacity .2s, width .2s; }
.nav-burger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-burger.open span:nth-child(2) { opacity: 0; width: 0; }
.nav-burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile drawer */
.nav-mobile {
  /* display:flex always — hidden via translateX, NOT display:none */
  display: flex; position: fixed;
  top: var(--hdr-h); left: 0; right: 0; bottom: 0;
  background: var(--white); z-index: 195;
  flex-direction: column; padding: 24px 20px 40px;
  overflow-y: auto; border-top: 1px solid var(--rule);
  transform: translateX(100%); opacity: 0;
  transition: transform .28s var(--ease), opacity .24s ease;
  pointer-events: none;
}
.nav-mobile.open { transform: translateX(0); opacity: 1; pointer-events: all; }
.mob-link, .mob-sec {
  font-family: 'Outfit', sans-serif;
  font-size: 18px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--ink); padding: 14px 0; border-bottom: 1px solid var(--rule);
  display: flex; align-items: center; justify-content: space-between; width: 100%;
}
.mob-sub { display: none; flex-direction: column; padding: 6px 0 4px 18px; border-left: 3px solid var(--teal); }
.mob-sub.open { display: flex; }
.mob-sub a { font-size: 15px; font-weight: 500; color: var(--body); padding: 10px 0; border-bottom: 1px solid var(--rule); }
.mob-cta { margin-top: 24px; display: block; padding: 15px; background: var(--blue); color: var(--white); font-family: 'Outfit', sans-serif; font-size: 14px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; border-radius: var(--r); text-align: center; }

/* ────────────────────────────────────────────────────
   TYPOGRAPHY
   ─────────────────────────────────────────────────── */
.label {
  display: inline-flex; align-items: center; gap: 10px;
  font-size: clamp(11px, 0.164vw + 9.85px, 13px); font-weight: 700; letter-spacing: .22em; text-transform: uppercase;
  margin-bottom: 14px;
}
.label::before { content: ''; width: 20px; height: 2px; background: currentColor; flex-shrink: 0; }
.label-blue  { color: var(--blue); }
.label-teal  { color: var(--teal); }
.label-white { color: rgba(255,255,255,.75); }

/* Display headings — Outfit font */
/* Fluid Desktop scale-up, same recipe as .heading-lg/md/sm below: floor
   unchanged below ~700px viewport, smooth ramp above that, reaching a
   new ceiling by 1920px. Ceiling raised further than a flat +15% here
   (88 -> 122, not 101.2) because +15% would tie .heading-xl with
   .heading-lg's own already-fixed 101.2px ceiling at common desktop
   widths instead of keeping "xl" visibly the largest tier. */
.heading-xl { font-family: 'Outfit', sans-serif; font-weight: 900; font-size: clamp(42px, 6.557vw + -3.90px, 122px); line-height: .90; text-transform: uppercase; letter-spacing: .01em; color: var(--ink); }
/* Fluid Desktop scale-up (merged from the old separate 1500px !important
   override -- see git history if you need the old two-tier values). Floor
   unchanged below ~700px viewport (zero change on mobile), smooth ramp
   above that, ceiling ~15% bigger than the old override's own ceiling,
   reached by 1920px viewport. Verified against the old two-tier curve at
   a dense width sweep (320-2560px, 2px steps) with zero regressions. */
.heading-lg { font-family: 'Outfit', sans-serif; font-weight: 900; font-size: clamp(32px, 5.672vw + -7.70px, 101.2px); line-height: .92; text-transform: uppercase; letter-spacing: .01em; color: var(--ink); }
.heading-md { font-family: 'Outfit', sans-serif; font-weight: 900; font-size: clamp(26px, 3.525vw + 1.33px, 69px); line-height: .94; text-transform: uppercase; letter-spacing: .01em; color: var(--ink); }
.heading-sm { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: clamp(20px, 2.508vw + 2.44px, 50.6px); line-height: .96; text-transform: uppercase; letter-spacing: .01em; color: var(--ink); }
.heading-xl em, .heading-lg em, .heading-md em, .heading-sm em { font-style: normal; color: var(--teal); }
.heading-teal { color: var(--teal); }

/* Body text */
/* Same elevated-ceiling reasoning as .heading-xl above: flat +15% (20 ->
   23) would put .body-xl below .body-lg's already-fixed 25.3px ceiling
   at common desktop widths, so it's raised further (20 -> 28) instead. */
.body-xl { font-size: clamp(17px, 0.902vw + 10.69px, 28px); line-height: 1.74; color: var(--body); text-align: justify; }
.body-lg  { font-size: clamp(15px, 0.844vw + 9.09px, 25.3px); line-height: 1.74; color: var(--body); text-align: justify; }
.body-md  { font-size: clamp(13.5px, 0.680vw + 8.74px, 21.8px); line-height: 1.74; color: var(--body); text-align: justify; }
.body-sm  { font-size: clamp(12px, 0.336vw + 9.65px, 16.1px); line-height: 1.74; color: var(--muted); text-align: justify; }

/* ────────────────────────────────────────────────────
   BUTTONS
   ─────────────────────────────────────────────────── */
.btn-primary {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 28px; background: var(--blue); color: var(--white);
  border-radius: var(--r); font-size: 14px; font-weight: 600; letter-spacing: .02em;
  white-space: nowrap; transition: background .15s, box-shadow .15s, transform .12s;
}
.btn-primary:hover { background: var(--blue-dark); box-shadow: 0 4px 20px rgba(11,77,144,.3); transform: translateY(-1px); }

.btn-teal {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 28px; background: var(--teal); color: var(--white);
  border-radius: var(--r); font-size: 14px; font-weight: 600;
  white-space: nowrap; transition: background .15s, box-shadow .15s, transform .12s;
}
.btn-teal:hover { background: var(--teal-dark); box-shadow: 0 4px 20px rgba(0,164,159,.3); transform: translateY(-1px); }

.btn-outline {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 26px; background: transparent; color: var(--blue);
  border: 2px solid var(--blue); border-radius: var(--r);
  font-size: 14px; font-weight: 600;
  white-space: nowrap; transition: background .15s, color .15s, transform .12s;
}
.btn-outline:hover { background: var(--blue); color: var(--white); transform: translateY(-1px); }

.btn-outline-white {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 26px; background: transparent; color: var(--white);
  border: 2px solid rgba(255,255,255,.42); border-radius: var(--r);
  font-size: 14px; font-weight: 600;
  white-space: nowrap; transition: background .15s, border-color .15s;
}
.btn-outline-white:hover { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.8); }

.btn-ghost {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 24px; background: transparent; color: var(--body);
  border: 1.5px solid var(--rule); border-radius: var(--r);
  font-size: 13.5px; font-weight: 600;
  white-space: nowrap; transition: border-color .15s, color .15s;
}
.btn-ghost:hover { border-color: var(--blue); color: var(--blue); }

.btn-group { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }

/* ────────────────────────────────────────────────────
   FRAMES — the vertical spacing system
   Every <section> must use one of these.
   ─────────────────────────────────────────────────── */
.frame        { padding: var(--frame-pad) 0; }
.frame-tight  { padding: var(--frame-pad-tight) 0; }
.frame-large  { padding: var(--frame-pad-large) 0; }

/* Background variants */
.bg-white { background: var(--white); }
.bg-light { background: var(--bg); }
.bg-blue  { background: var(--blue); }
.bg-dark  { background: var(--ink); }

/* Divider between adjacent frames */
.bg-white + .bg-light, .bg-light + .bg-white { border-top: 1px solid var(--rule); }
.bg-dark + *, * + .bg-dark { border-top: none; }

/* ────────────────────────────────────────────────────
   CONTAINERS — two sizes only
   ─────────────────────────────────────────────────── */
/* MANUAL CHANGE Start 1.2 */
.container {
  width: 100%; max-width: var(--mw); margin: 0 auto;
  padding-left: clamp(16px, 2.5vw, 44px);
  padding-right: clamp(16px, 2.5vw, 44px);
}
.container-wide {
  width: 100%; max-width: var(--mw-wide); margin: 0 auto;
  padding-left: clamp(16px, 2vw, 36px);
  padding-right: clamp(16px, 2vw, 36px);
}
/* MANUAL CHANGE End 1.2 */
/* Page offset below sticky header */
.page-wrap { padding-top: 0; }

/* ────────────────────────────────────────────────────
   GRID — column layouts
   ─────────────────────────────────────────────────── */
.col-2 {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(32px,5vw,80px); align-items: center;
}

/* Manual Change Start 1.5 */

.col-2-top   { align-items: start; }
.col-2-wide  { grid-template-columns: 1.15fr 1fr; } /* slightly less aggressive ratio */
.col-2-flip  { direction: rtl; }
.col-2-flip > * { direction: ltr; }
/* Prevent grid children from overflowing their column */
.col-2 > *, .col-2-wide > *, .col-3 > *, .col-4 > * { min-width: 0; }

/* Manual Change End 1.5 */

.col-3 { display: grid; grid-template-columns: repeat(3,1fr); gap: clamp(16px,2vw,24px); }
.col-4 { display: grid; grid-template-columns: repeat(4,1fr); gap: clamp(10px,1.4vw,16px); }

/* Text column inside col-2 */

/* Manual Change Start 1.11 */

.col-copy { display: flex; flex-direction: column; gap: clamp(10px,1.6vh,16px); justify-content: center; min-width: 0; overflow: hidden; }
.col-copy > * { min-width: 0; }

/* Manual Change Start 1.11 */

/* ────────────────────────────────────────────────────
   ABOUT THE DIVISION — ruled-band redesign, shared by
   Construction (#cons-about) and Automation (#auto-about). The
   older .ovw-ledger/.col-2 pattern is fully superseded on both
   pages now but its CSS is left in place since nothing else
   references it. Header meta strip -> 2-line headline + numbered
   capability grid -> 3-col lead/body/CTA band, each tier separated
   by a rule, matching the reference "specimen stack" layout.
   Accent color is the site's existing --teal (no new red/orange
   token introduced).
   ─────────────────────────────────────────────────── */
.ovwd-frame { border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }

.ovwd-meta {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
  gap: clamp(10px,1.6vw,20px);
  padding-bottom: clamp(16px,2.2vh,22px);
  border-bottom: 2px solid var(--ink);
  margin-bottom: clamp(28px,4vh,44px);
}
.ovwd-tags { display: flex; align-items: center; flex-wrap: wrap; gap: clamp(10px,1.4vw,16px); }
.ovwd-tags span {
  font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ink);
  padding-left: clamp(10px,1.4vw,16px); border-left: 1px solid var(--rule);
}
.ovwd-tags span:first-child { padding-left: 0; border-left: 0; }

.ovwd-main {
  display: grid; grid-template-columns: 1.3fr 1fr;
  gap: clamp(28px,4vw,56px);
  align-items: stretch;
  padding-bottom: clamp(28px,4vh,44px);
  border-bottom: 1px solid var(--rule);
}
.ovwd-heading { display: flex; flex-direction: column; justify-content: center; }
.ovwd-h { margin: 0; line-height: .98; }
.ovwd-h + .ovwd-h { margin-top: .06em; }
/* This frame's headline is meant to read as a dominant, hero-scale
   statement (see reference) -- noticeably bigger than the shared
   Heading Size system's "Medium" (57px cap), which normalizes every
   other frame on the site to one modest size. Override at higher
   specificity than the paired body.taknek-heading-managed
   .heading-lg.h-size-* rules (assets/main.css ~8330) so the ACF
   dropdown still works, just anchored to a bigger ladder here only. */
.ovwd-h { font-size: clamp(34px, 3.811vw + 7.32px, 80.5px); }
body.taknek-heading-managed .ovwd-h.heading-lg.h-size-sm { font-size: clamp(28px, 1.852vw + 15.03px, 50.6px) !important; }
body.taknek-heading-managed .ovwd-h.heading-lg.h-size-md { font-size: clamp(38px, 4.238vw + 8.34px, 89.7px) !important; }
body.taknek-heading-managed .ovwd-h.heading-lg.h-size-lg { font-size: clamp(44px, 5.066vw + 8.54px, 105.8px) !important; }
body.taknek-heading-managed .ovwd-h.heading-lg.h-size-xl { font-size: clamp(50px, 6.082vw + 7.43px, 124.2px) !important; }

.ovwd-ledger-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0,1fr));
  border-top: 1px solid var(--rule); border-left: 1px solid var(--rule);
  align-self: stretch;
}
.ovwd-ledger-cell {
  padding: clamp(16px,2.2vh,22px) clamp(16px,1.8vw,22px);
  border-bottom: 1px solid var(--rule); border-right: 1px solid var(--rule);
}
.ovwd-ledger-num {
  font-family: 'Outfit', sans-serif; font-size: 12px; font-weight: 800; color: var(--teal); margin-bottom: 6px;
}
.ovwd-ledger-title {
  font-family: 'Outfit', sans-serif; font-size: clamp(15px,1.1vw,18px); font-weight: 700; color: var(--ink);
}
.ovwd-ledger-desc { font-size: clamp(12px,.85vw,13.5px); color: var(--muted); margin-top: 4px; line-height: 1.45; }

.ovwd-foot {
  display: grid; grid-template-columns: 1fr 1fr auto;
  gap: clamp(24px,3.5vw,48px);
  align-items: start;
  padding-top: clamp(24px,3.5vh,36px);
}
.ovwd-lead, .ovwd-body { margin: 0; font-size: clamp(13.5px,.95vw,15px); line-height: 1.6; color: var(--body); max-width: 380px; }
.ovwd-lead strong { color: var(--ink); font-weight: 700; }
.ovwd-ctas { display: flex; flex-direction: column; gap: 10px; min-width: 200px; }
.ovwd-cta-main { justify-content: center; text-align: center; }

@media (max-width: 900px) {
  .ovwd-main { grid-template-columns: 1fr; gap: clamp(24px,4vh,32px); }
  .ovwd-foot { grid-template-columns: 1fr; }
  .ovwd-ctas { min-width: 0; }
}
@media (max-width: 560px) {
  .ovwd-ledger-grid { grid-template-columns: 1fr; }
  .ovwd-tags { gap: 10px; }
  .ovwd-tags span { font-size: 10.5px; }
}

/* Frame section header: label/heading + optional right description */
.frame-header {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: clamp(20px,4vw,56px); flex-wrap: wrap;
  margin-bottom: clamp(22px,3vh,36px);
}
.frame-header-copy { max-width: 400px; margin: 0; }

/* ────────────────────────────────────────────────────
   IMAGES — .img-fill system
   Fills container completely. Parent sets size via
   aspect-ratio or min-height.
   ─────────────────────────────────────────────────── */

/* Manual Change Start 1.6 */

.img-fill {
  position: relative; overflow: hidden;
  border-radius: var(--r); background: #C8D8E8;
  height: clamp(260px,56vh,720px); /* floor lowered for mobile — desktop unchanged */
  max-width: 100%; /* prevent horizontal overflow */
}

/* Manual Change End 1.6 */

.img-fill::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0;
  height: 3px; z-index: 2;
  background: linear-gradient(90deg,var(--blue),var(--teal));
}
.img-fill-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform .85s var(--ease);
}
.img-fill:hover .img-fill-bg { transform: scale(1.04); }

/* Aspect ratio helpers */
.aspect-16-9 { aspect-ratio: 16/9; height: auto; }
.aspect-4-3  { aspect-ratio: 4/3;  height: auto; }
.aspect-3-2  { aspect-ratio: 3/2;  height: auto; }
.aspect-1-1  { aspect-ratio: 1/1;  height: auto; }

/* Taller variant for main content images */

/* Manual Change Start 1.7 */

.img-tall { height: clamp(300px,72vh,860px); } /* floor lowered — desktop ceiling unchanged */

/* Manual Change End 1.7 */

/* Taller variant for main content images */

/* Carousel-safe height utilities (explicit height, not min-height or aspect-ratio)
   Use these on img-carousel instead of aspect-* classes */
.ic-h-4-3  { height: clamp(220px,32vw,420px); }
.ic-h-16-9 { height: clamp(180px,25vw,360px); }
.ic-h-sq   { height: clamp(200px,28vw,380px); }

/* Placeholder when no image uploaded */
.img-ph {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px; color: var(--muted);
}
.img-ph svg { opacity: .4; }
.img-ph span { font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; opacity: .5; }

/* photo-block (v10 compat — same behaviour as img-fill) */
.photo-block {
  position: relative; overflow: hidden;
  border-radius: var(--r); background: #C8D8E8;
}
.photo-block::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0;
  height: 3px; z-index: 2;
  background: linear-gradient(90deg,var(--blue),var(--teal));
}
.ph { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; }
.ph-ring { width: 52px; height: 52px; border-radius: 50%; border: 1.5px solid rgba(11,77,144,.2); display: flex; align-items: center; justify-content: center; color: var(--muted); }
.ph-txt { font-size: 11px; font-weight: 600; letter-spacing: .10em; text-transform: uppercase; color: var(--muted); text-align: center; padding: 0 20px; }
.ph-img { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform .85s var(--ease); }
.photo-block:hover .ph-img { transform: scale(1.04); }

/* ────────────────────────────────────────────────────
   CARDS
   ─────────────────────────────────────────────────── */
.card {
  background: var(--white); border: 1px solid var(--rule); border-radius: var(--r);
  padding: clamp(24px,3vw,36px); position: relative; overflow: hidden;
  transition: transform .22s, box-shadow .22s, border-color .22s;
}
.card:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(10,24,40,.10); border-color: #B5C7DA; }
/* Alias classes from v10 */
.card-bar  { position: absolute; top: 0; left: 0; right: 0; height: 3px; border-radius: var(--r) var(--r) 0 0; background: linear-gradient(90deg,var(--blue),var(--teal)); }
.card-ico  { width: 48px; height: 48px; border-radius: 10px; background: var(--blue-light); display: flex; align-items: center; justify-content: center; color: var(--blue); margin-bottom: 16px; }
/* Alias for v12b */
.card-accent { position: absolute; top: 0; left: 0; right: 0; height: 3px; border-radius: var(--r) var(--r) 0 0; background: linear-gradient(90deg,var(--blue),var(--teal)); }
.card-icon   { width: 48px; height: 48px; border-radius: 10px; background: var(--blue-light); display: flex; align-items: center; justify-content: center; color: var(--blue); margin-bottom: 16px; }
.card-h, .card-title { font-family: 'Outfit', sans-serif; font-size: clamp(15px,1.4vw,18px); font-weight: 700; color: var(--ink); margin-bottom: 10px; }
.card-p, .card-body  { font-size: clamp(13px,1.1vw,15px); line-height: 1.72; color: var(--body); margin: 0; }

/* Testimonial card */
.testi-card {
  background: var(--white); border: 1px solid var(--rule); border-radius: var(--r);
  border-left: 4px solid var(--teal);
  padding: clamp(24px,3vw,36px); display: flex; flex-direction: column; gap: 16px;
}
.testi-quote { font-size: clamp(14px,1.25vw,16.5px); line-height: 1.72; color: var(--body); font-style: italic; margin: 0; }
.testi-author .name { font-family: 'Outfit', sans-serif; font-size: 15px; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: var(--ink); }
.testi-author .role { font-size: 11.5px; color: var(--muted); margin-top: 2px; }

/* ────────────────────────────────────────────────────
   STATS — row inside col-copy AND full stats-band
   ─────────────────────────────────────────────────── */

/* Manual Change Start 1.4 */

.stat-row {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  margin-top: clamp(12px,3vh,12px);
  gap: 0;
}
.stat-item {
  padding: clamp(16px,2.5vh,24px) clamp(12px,1.5vw,20px) 0 0;
  border-right: 1px solid var(--rule);
  min-width: 0; /* prevent overflow in grid */
}
.stat-item:last-child { border-right: none; padding-right: 0; }
.stat-n {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,2.2vw,38px); /* tighter clamp prevents overflow */
  font-weight: 300; color: var(--blue);
  line-height: 1; letter-spacing: -.02em;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.stat-l {
  font-size: clamp(8px,.45vw,11px);
  font-weight: 400; letter-spacing: .12em;
  text-transform: uppercase; color: var(--muted);
  margin-top: 6px; line-height: 1.3;
  overflow-wrap: break-word; hyphens: auto;
}

/* Manual Change End 1.4 */

/* Stats band (hero banner) */
.stats-band { background: var(--white); border-bottom: 1px solid var(--rule); }
.stats-band-inner { display: grid; grid-template-columns: repeat(4,1fr); }
.stats-band-cell { padding: clamp(16px,2.2vh,28px) clamp(14px,2vw,24px); border-right: 1px solid var(--rule); text-align: center; }
.stats-band-cell:last-child { border-right: none; }
.stats-band-n { font-family: 'Outfit', sans-serif; font-size: clamp(28px,3.5vw,48px); font-weight: 900; color: var(--blue); line-height: 1; }
.stats-band-l { font-size: clamp(9px,.85vw,11px); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-top: 6px; }

/* v10 compat aliases */
.stat-cell { padding: clamp(22px,3.2vh,40px) clamp(18px,2.5vw,36px); border-right: 1px solid var(--rule); text-align: center; }
.stat-cell:last-child { border-right: none; }

/* ────────────────────────────────────────────────────
   SECTIONS — feat-grid, proc-list, ticker, pull-quote
               cta-block, mem-bar, logo-grid
   ─────────────────────────────────────────────────── */

/* Feat-grid / feat-strip — 4-column differentiators */
.feat-grid, .feat-strip {
  display: grid; grid-template-columns: repeat(4,1fr);
  border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden;
}
.feat-item {
  padding: clamp(24px,3vw,36px) clamp(18px,2.5vw,28px);
  border-right: 1px solid var(--rule); position: relative; transition: background .18s;
}
.feat-item:last-child { border-right: none; }
.feat-item:hover { background: var(--bg); }
.feat-item::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg,var(--blue),var(--teal));
  transform: scaleX(0); transform-origin: left; transition: transform .3s var(--ease);
}
.feat-item:hover::before { transform: scaleX(1); }
.feat-ico, .feat-icon { color: var(--blue); margin-bottom: 14px; }
.feat-h, .feat-title { font-family: 'Outfit', sans-serif; font-size: clamp(13px,1.2vw,16px); font-weight: 700; color: var(--ink); margin-bottom: 8px; }
.feat-p, .feat-text  { font-size: clamp(12.5px,1.05vw,14px); line-height: 1.72; color: var(--body); margin: 0; }

/* Process list — numbered steps */
.proc-list { display: flex; flex-direction: column; }
.proc-item { display: grid; grid-template-columns: 52px 1fr; gap: 0 18px; position: relative; padding-bottom: clamp(20px,3vh,36px); }
.proc-item:not(:last-child)::before { content: ''; position: absolute; left: 25px; top: 50px; bottom: 0; width: 2px; background: var(--rule); }
.proc-num { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--rule); display: flex; align-items: center; justify-content: center; font-family: 'Outfit', sans-serif; font-size: 13px; font-weight: 800; color: var(--blue); flex-shrink: 0; background: var(--white); transition: border-color .2s; }
.proc-item:hover .proc-num { border-color: var(--teal); }
.proc-h, .proc-title { font-family: 'Outfit', sans-serif; font-size: clamp(14px,1.3vw,17px); font-weight: 700; color: var(--ink); margin-bottom: 6px; margin-top: 10px; }
.proc-p, .proc-body  { font-size: clamp(13px,1.05vw,14.5px); line-height: 1.72; color: var(--body); margin: 0; }

/* Timeline (story) */
.tl-list { display: flex; flex-direction: column; }
.tl-item { display: grid; grid-template-columns: 14px 1fr; gap: 0 18px; position: relative; padding-bottom: clamp(18px,2.8vh,32px); }
.tl-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--blue); margin-top: 6px; flex-shrink: 0; position: relative; }
.tl-item:not(:last-child) .tl-dot::after { content: ''; position: absolute; left: 5px; top: 14px; bottom: calc(-1 * clamp(18px,2.8vh,32px)); width: 2px; background: var(--rule); }
.tl-year { font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--teal); margin-bottom: 4px; }
.tl-title { font-family: 'Outfit', sans-serif; font-size: clamp(15px,1.4vw,18px); font-weight: 700; color: var(--ink); margin-bottom: 5px; }
.tl-body { font-size: clamp(13px,1.1vw,14.5px); line-height: 1.72; color: var(--body); margin: 0; }

/* Ticker — improved pill style */
.ticker-wrap, .ticker-rail {
  overflow: hidden;
  width: 100%;
  position: relative;
  /* Fade edges left and right */
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
  mask-image: linear-gradient(to right, transparent 0%, black 8%, black 92%, transparent 100%);
}
.ticker-track {
  display: flex;
  align-items: center;
  gap: clamp(16px,2.5vw,32px);
  animation: ticker-scroll 40s linear infinite;
  width: max-content;
  will-change: transform;
  padding: clamp(14px,2vh,22px) 0;
}
.ticker-track:hover { animation-play-state: paused; }
@keyframes ticker-scroll { to { transform: translateX(-50%); } }
.ticker-item, .tk-item {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: clamp(12px,1.05vw,14px);
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ink);
  white-space: nowrap;
  background: var(--white);
  border: 1.5px solid var(--rule);
  border-radius: 100px;
  padding: 8px 18px;
  transition: border-color .2s, color .2s;
}
.ticker-item:hover, .tk-item:hover {
  border-color: var(--teal);
  color: var(--teal);
}
.ticker-dot, .tk-dot { display: none; } /* dots replaced by pill border */

/* Pull quote */
.pull-quote {
  background: var(--blue-light); border-left: 4px solid var(--blue);
  border-radius: 0 var(--r) var(--r) 0;
  padding: clamp(20px,3vw,36px) clamp(22px,3.5vw,44px);
}
.pq-text { font-family: 'Outfit', sans-serif; font-size: clamp(16px,1.7vw,22px); font-weight: 700; color: var(--ink); line-height: 1.45; font-style: italic; margin: 0 0 12px; }
.pq-attr { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }

/* CTA block — dark banner inside a frame */
.cta-block {
  display: flex; align-items: center; justify-content: space-between;
  gap: clamp(20px,4vw,56px); flex-wrap: wrap;
  background: linear-gradient(135deg,var(--ink),var(--blue-dark));
  border-radius: clamp(10px,1.2vw,16px);
  padding: clamp(36px,5vw,64px) clamp(32px,5vw,64px);
}

/* CTA strip (lighter, bordered) — v10 compat */
.cta-strip {
  display: flex; align-items: center; justify-content: space-between;
  gap: clamp(16px,3vw,40px); flex-wrap: wrap;
  background: var(--white); border: 1px solid var(--rule); border-radius: var(--r);
  padding: clamp(24px,3.5vw,44px) clamp(20px,3.5vw,52px);
}
.cta-hl { font-family: 'Outfit', sans-serif; font-size: clamp(22px,2.8vw,40px); font-weight: 900; text-transform: uppercase; color: var(--ink); line-height: 1; }
.cta-hl em { font-style: normal; color: var(--teal); }
.cta-btns { display: flex; align-items: center; gap: clamp(10px,1.5vw,16px); flex-wrap: wrap; }

/* Membership bar */
.mem-bar, .mem-strip {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  padding: clamp(14px,2vh,22px) clamp(18px,2.5vw,28px);
  background: var(--white); border: 1px solid var(--rule); border-radius: var(--r);
}
.mem-label, .mem-lbl { font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); flex-shrink: 0; margin-right: 4px; }
.mem-pill, .mem-item { display: flex; align-items: center; gap: 5px; padding: 5px 14px; background: var(--bg); border: 1px solid var(--rule); border-radius: 20px; font-size: clamp(10.5px,.95vw,12px); font-weight: 600; color: var(--body); }
.mem-abbr { font-family: 'Outfit', sans-serif; font-weight: 800; color: var(--blue); }

/* Client logo grid */
/* .logo-grid-wrap holds every 18-logo "page" stacked on top of each
   other (each .logo-grid is position:absolute; inset:0), so switching
   pages is just an opacity/visibility toggle -- no layout reflow, no
   height jump between pages, since every page is the same 3x6 shape.
   perspective enables the per-cell rotateX() flip-in below.

   min-height sized for 3 real rows of .logo-cell at its actual
   content-box size (min-height clamp(80px,10vh,110px) PLUS its own
   padding clamp(18px,2.8vh,30px) top+bottom, since .logo-cell keeps
   its original content-box sizing -- not shrunk to fit a smaller
   budget). Per-cell ends up ~116-170px, so 3 rows need ~348-510px;
   previously this was clamp(242px,32vh,332px), which clipped the 3rd
   row via .logo-grid's overflow:hidden below. */
.logo-grid-wrap { position: relative; min-height: clamp(348px,47vh,510px); perspective: 1000px; }
.logo-grid {
  position: absolute; inset: 0;
  display: grid; grid-template-columns: repeat(6,1fr);
  border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden;
  background: var(--white);
  opacity: 0; visibility: hidden; pointer-events: none;
}
.logo-grid.on { opacity: 1; visibility: visible; pointer-events: auto; }
/* .logo-cell — defined below in LOGO GRID FIX section */
.logo-cell:hover { background: var(--bg); }
.logo-cell:nth-child(6n)         { border-right: none; }
.logo-cell:nth-last-child(-n+6)  { border-bottom: none; }
.logo-name { font-family: 'Outfit', sans-serif; font-size: clamp(10px,1vw,12.5px); font-weight: 700; text-align: center; line-height: 1.3; letter-spacing: .03em; color: var(--muted); }

/* Per-cell flip-in when a page becomes active, staggered by each
   cell's --i (its position in the page, set inline from PHP) for a
   left-to-right/top-to-bottom "wave" instead of all 18 cells
   flipping in lockstep. */
@keyframes logoFlipIn {
  from { opacity: 0; transform: rotateX(-90deg); }
  to   { opacity: 1; transform: rotateX(0deg); }
}
.logo-grid.on .logo-cell {
  animation: logoFlipIn .5s ease both;
  animation-delay: calc(var(--i, 0) * 25ms);
}

.logo-dots { display: flex; justify-content: center; gap: 8px; margin-top: clamp(16px,2.2vh,22px); }
.logo-dots .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--rule); cursor: pointer; transition: .25s; }
.logo-dots .dot.on { width: 20px; border-radius: 4px; background: var(--teal); }

/* Trust stats bar */
.trust-bar {
  display: flex; border: 1px solid var(--rule); border-radius: var(--r);
  overflow: hidden; background: var(--white); margin-top: clamp(24px,3.5vh,44px);
}
.trust-stat { flex: 1; padding: clamp(18px,2.8vh,32px) clamp(14px,2vw,28px); text-align: center; border-right: 1px solid var(--rule); }
.trust-stat:last-child { border-right: none; }
.trust-n { font-family: 'Outfit', sans-serif; font-size: clamp(28px,3.2vw,44px); font-weight: 900; color: var(--blue); line-height: 1; }
.trust-n sup { font-size: .5em; vertical-align: top; margin-top: .2em; }
.trust-l { font-size: clamp(9px,.85vw,11px); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin-top: 6px; }

/* Cert cards */
.cert-card { background: var(--white); border: 1px solid var(--rule); border-radius: var(--r); padding: clamp(14px,1.8vw,20px); display: flex; flex-direction: column; gap: 8px; transition: transform .22s, box-shadow .22s; }
.cert-card:hover { transform: translateY(-3px); box-shadow: 0 8px 28px rgba(10,24,40,.09); }
.cert-icon, .cert-ico { width: 44px; height: 44px; border-radius: 10px; background: var(--blue-light); display: flex; align-items: center; justify-content: center; color: var(--blue); }
.cert-name { font-family: 'Outfit', sans-serif; font-size: clamp(14px,1.3vw,17px); font-weight: 800; color: var(--ink); }
.cert-desc { font-size: clamp(12px,1vw,13.5px); line-height: 1.65; color: var(--muted); margin: 0; }
.cert-strip { display: flex; align-items: center; justify-content: center; gap: clamp(16px,3vw,36px); flex-wrap: wrap; padding-top: clamp(16px,2.5vh,28px); border-top: 1px solid var(--rule); margin-top: clamp(16px,2.5vh,28px); }
.cert-strip-item { font-size: clamp(9.5px,.9vw,11.5px); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }

/* Memberships */
.memberships { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: clamp(12px,2vh,20px) clamp(16px,2.5vw,24px); background: var(--white); border: 1px solid var(--rule); border-radius: var(--r); margin-top: clamp(20px,3vh,36px); }
.mem-label2 { font-size: 9.5px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); margin-right: 6px; }

/* ────────────────────────────────────────────────────
   INNER PAGE HERO
   ─────────────────────────────────────────────────── */
.page-hero { min-height: clamp(520px,68vh,780px); display: flex; flex-direction: column; justify-content: flex-end; position: relative; overflow: hidden; background: var(--ink); }
.page-hero-bg { position: absolute; inset: 0; background-size: cover; background-position: center; filter: brightness(.28) saturate(.6); transform: scale(1.04); transition: transform 10s linear; }
.page-hero:hover .page-hero-bg { transform: scale(1.07); }
.page-hero-overlay, .page-hero-veil { position: absolute; inset: 0; background: linear-gradient(to top,rgba(8,16,28,.96) 0%,rgba(8,16,28,.5) 48%,transparent 80%); }
.page-hero-stripe { position: absolute; left: 0; top: 0; bottom: 0; width: 4px; z-index: 3; background: linear-gradient(to bottom,var(--blue),var(--teal)); }
.page-hero-body { position: relative; z-index: 2; padding: clamp(36px,5vw,72px); padding-top: calc(var(--hdr-h) + clamp(36px,5vw,72px)); }
.page-hero-tag { font-size: 10px; font-weight: 700; letter-spacing: .24em; text-transform: uppercase; color: var(--teal); display: inline-flex; align-items: center; gap: 9px; margin-bottom: 16px; }
.page-hero-tag::before { content: ''; width: 18px; height: 1.5px; background: currentColor; }
.page-hero-h, .pg-hero-h { font-family: 'Outfit', sans-serif; font-weight: 900; font-size: clamp(38px, 5.180vw + 1.74px, 101.2px); text-transform: uppercase; letter-spacing: .01em; line-height: .88; color: #fff; margin-bottom: clamp(14px,2vh,24px); }
.page-hero-h em, .pg-hero-h em { font-style: normal; color: var(--teal); }
.page-hero-sub, .pg-hero-p { font-size: clamp(14px,1.3vw,17px); line-height: 1.72; color: rgba(255,255,255,.62); max-width: 640px; margin-bottom: clamp(24px,3.5vh,40px); }
.page-hero-btns { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.hero-bg-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
  pointer-events: none;
  filter: brightness(.5) saturate(.75);
}

@media (max-width: 768px) {
  .hero-bg-video {
    display: none;
  }
}

/* ────────────────────────────────────────────────────
   PORTFOLIO — mosaic, proj-grid, gallery
   ─────────────────────────────────────────────────── */
.mosaic { display: grid; grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 3px; border-radius: var(--r); overflow: hidden; }
.mosaic-tile { position: relative; overflow: hidden; cursor: pointer; min-height: clamp(160px,22vh,280px); }
.mosaic-tile:first-child { grid-row: 1/3; min-height: clamp(320px,44vh,560px); }
.mosaic-bg { position: absolute; inset: 0; background-size: cover; background-position: center; background-color: var(--ink); transition: transform .85s var(--ease); }
.mosaic-tile:hover .mosaic-bg { transform: scale(1.05); }
.mosaic-overlay { position: absolute; inset: 0; background: linear-gradient(to top,rgba(8,16,28,.9) 0%,transparent 55%); }
.mosaic-info { position: absolute; bottom: 0; left: 0; right: 0; padding: clamp(16px,2.5vw,26px); z-index: 2; }
.mosaic-cat { font-size: 9px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--teal); margin-bottom: 6px; }
.mosaic-name { font-family: 'Outfit', sans-serif; font-size: clamp(14px,1.4vw,19px); font-weight: 700; color: #fff; line-height: 1.2; }
.mosaic-meta { font-size: 11px; color: rgba(255,255,255,.5); margin-top: 4px; }

/* Project filter */
.proj-filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: clamp(24px,3.5vh,44px); }
.proj-filter, .pf-btn { padding: 8px 20px; border: 1.5px solid var(--rule); border-radius: var(--r); font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); background: var(--white); cursor: pointer; transition: all .18s; }
.proj-filter:hover, .pf-btn:hover { border-color: var(--blue); color: var(--blue); }
.proj-filter.active, .pf-btn.active { background: var(--blue); border-color: var(--blue); color: #fff; }

.proj-search {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  background: var(--white);
  color: var(--muted);
  margin-left: auto;
  transition: border-color .18s;
}
.proj-search:focus-within { border-color: var(--blue); color: var(--blue); }
.proj-search svg { flex-shrink: 0; }
.proj-search input {
  border: none;
  outline: none;
  background: transparent;
  font-family: 'Source Sans 3', sans-serif;
  font-size: 13px;
  color: var(--ink);
  width: 170px;
}
.proj-search input::placeholder { color: var(--muted); }
@media (max-width: 560px) {
  .proj-search { margin-left: 0; width: 100%; }
  .proj-search input { width: 100%; }
}

.proj-empty {
  text-align: center;
  padding: 40px 0;
  color: var(--muted);
  font-size: 14px;
}
.proj-loadmore-wrap { display: flex; justify-content: center; margin-top: clamp(28px,3.5vh,44px); }
.proj-loadmore {
  padding: 13px 32px;
  border: 1.5px solid var(--rule);
  border-radius: 0;
  background: var(--white);
  color: var(--ink);
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: border-color .18s, background .18s, color .18s;
}
.proj-loadmore:hover { border-color: var(--blue); background: var(--blue); color: #fff; }

/* Project cards */
.proj-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: clamp(14px,2vw,22px); }
.proj-card { position: relative; background: var(--white); border: 1px solid var(--rule); border-radius: 0; overflow: hidden; transition: transform .25s ease, box-shadow .25s ease; }
/* .rv:hover (not just .rv) -- .rv.in { transform:none } (main.css, scroll-
   reveal utility, applies once a card has scrolled into view) has equal
   specificity to a plain .proj-card:hover and sits later in the file, so
   it was silently cancelling the lift below entirely once a card had
   already revealed -- only the box-shadow was ever actually visible.
   Adding .rv here raises specificity just enough to win reliably. Just
   one property (translateY) so it's one clean motion, nothing else
   changes shape/size on hover. */
.proj-card.rv:hover { transform: translateY(-6px); box-shadow: 0 12px 28px rgba(10,24,40,.14); }
.proj-card[data-hidden="true"] { display: none; }
.proj-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: var(--rule); z-index: 3; }
.proj-card[data-cat="const"]::before { background: var(--teal); }
.proj-card[data-cat="auto"]::before  { background: var(--blue); }
/* #proj-grid dark-overlay card redesign — scoped under #proj-grid
   because bare .proj-card is also reused, unstyled, by the "Related
   Projects" mini-grid in single-taknek_project.php (.proj-card-img/
   -body/-title/-meta) — recoloring bare .proj-card would break that
   unrelated grid's dark-on-white text. */
#proj-grid .proj-card { background: #0B1B2E; border-color: rgba(255,255,255,.14); }
#proj-grid .proj-card::before { display: none; }

#proj-grid .proj-img { aspect-ratio: auto; height: clamp(320px,26vw,400px); overflow: hidden; position: relative; background: #0B1B2E; }
/* Card Photo Shape (ACF: project_card_aspect) -- editor-facing height
   presets for the grid card image. Default (no class) is the
   clamp(320px,26vw,400px) landscape height above; these just swap
   that height, the existing cover-crop background does the rest. */
#proj-grid .proj-img-square   { height: clamp(280px,22vw,340px); }
#proj-grid .proj-img-portrait { height: clamp(420px,34vw,520px); }
#proj-grid .proj-img-wide     { height: clamp(240px,18vw,300px); }
.proj-img-bg { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 1; transition: opacity 1s ease; }
.proj-img-bg.proj-img-slide { opacity: 0; }
.proj-img-bg.proj-img-slide.active { opacity: 1; }
#proj-grid .proj-img::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(7,17,31,.92) 0%, rgba(7,17,31,.72) 34%, rgba(7,17,31,.12) 62%, transparent 80%);
  pointer-events: none;
}
#proj-grid .proj-img-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  padding-top: clamp(90px,11vw,130px);
  background-color: #0B1B2E;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 24px 24px;
}
#proj-grid .proj-card[data-cat="const"] .proj-img-placeholder {
  background-image:
    linear-gradient(rgba(0,164,159,.12) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,164,159,.12) 1px, transparent 1px);
  background-size: 24px 24px;
}
#proj-grid .proj-card[data-cat="auto"] .proj-img-placeholder {
  background-image:
    linear-gradient(rgba(11,77,144,.14) 1px, transparent 1px),
    linear-gradient(90deg, rgba(11,77,144,.14) 1px, transparent 1px);
  background-size: 24px 24px;
}
.proj-img-placeholder-icon {
  width: 40px;
  height: 40px;
  border-radius: 0;
  border: 1.5px solid rgba(255,255,255,.28);
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255,255,255,.55);
}
.proj-img-placeholder-label {
  font-family: 'Outfit', sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255,255,255,.55);
}
#proj-grid .proj-div-tag {
  position: absolute;
  top: 14px;
  left: 0;
  z-index: 2;
  padding: 7px 24px 7px 14px;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: #fff;
  line-height: 1;
  border-radius: 0;
  clip-path: polygon(0 0, 100% 0, calc(100% - 12px) 50%, 100% 100%, 0 100%);
}
#proj-grid .proj-div-tag.const { background: var(--teal); }
#proj-grid .proj-div-tag.auto  { background: var(--blue); }

#proj-grid .proj-overlay {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  gap: 8px;
  padding: 0 clamp(16px,2vw,20px) clamp(14px,1.8vw,18px);
}
#proj-grid .proj-name {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(20px,2vw,26px);
  font-weight: 800;
  color: #fff;
  line-height: 1.15;
  width: 100%;
  text-shadow: 0 2px 12px rgba(0,0,0,.5);
}
#proj-grid .proj-chips { display: flex; flex-wrap: wrap; gap: 6px; width: 100%; }
#proj-grid .proj-chip {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #fff;
  background: var(--teal);
  white-space: nowrap;
}
#proj-grid .proj-card[data-cat="auto"] .proj-chip { background: var(--blue); }
#proj-grid .proj-client {
  font-size: 12px;
  font-weight: 800;
  color: #fff;
  width: 100%;
}
#proj-grid .proj-client-label {
  color: #fff;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-right: 5px;
}

#proj-grid .proj-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 12px 18px;
  border-radius: 0;
  font-family: 'Outfit', sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #fff;
  background: var(--teal);
  transition: gap .18s ease, background .18s ease;
}
#proj-grid .proj-card[data-cat="auto"] .proj-cta { background: var(--blue); }
#proj-grid .proj-cta svg { flex-shrink: 0; transition: transform .18s ease; }
#proj-grid .proj-card:hover .proj-cta { gap: 10px; background: var(--teal-dark); }
#proj-grid .proj-card[data-cat="auto"]:hover .proj-cta { background: var(--blue-dark); }
#proj-grid .proj-card:hover .proj-cta svg { transform: translateX(2px); }

/* Projects page closing CTA — dark, centered, headline-forward band,
   self-contained on this page. No stat/percentage callout, per
   Nick's request. */
.proj-cta-band {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(24px,4vw,56px);
  background: #0B1B2E;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 24px 24px;
  padding: clamp(26px,3.2vw,40px) clamp(28px,4vw,56px);
  overflow: hidden;
}
.proj-cta-band::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--teal), var(--blue));
}
.proj-cta-band-text { min-width: 0; }
.proj-cta-band-h {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(20px,2.2vw,29px);
  font-weight: 900;
  color: #fff;
  line-height: 1.15;
  margin: 0 0 6px;
}
.proj-cta-band-h em { font-style: normal; color: var(--teal); }
.proj-cta-band-sub {
  font-size: clamp(12.5px,1vw,14.5px);
  font-weight: 500;
  color: rgba(255,255,255,.6);
  line-height: 1.55;
  max-width: 480px;
  margin: 0;
}
.proj-cta-band-btns { display: flex; gap: 10px; flex-wrap: wrap; flex-shrink: 0; }
.proj-cta-band-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 24px;
  background: var(--teal);
  color: #fff;
  font-family: 'Outfit', sans-serif;
  font-weight: 800;
  font-size: 13px;
  text-decoration: none;
  transition: background .18s;
}
.proj-cta-band-btn-primary:hover { background: var(--teal-dark); }
.proj-cta-band-btn-ghost {
  display: inline-flex;
  align-items: center;
  padding: 11px 24px;
  background: transparent;
  border: 1.5px solid rgba(255,255,255,.3);
  color: #fff;
  font-family: 'Outfit', sans-serif;
  font-weight: 800;
  font-size: 13px;
  text-decoration: none;
  transition: border-color .18s;
}
.proj-cta-band-btn-ghost:hover { border-color: var(--teal); }
@media (max-width: 700px) {
  .proj-cta-band { flex-direction: column; align-items: center; text-align: center; }
  .proj-cta-band-sub { max-width: none; }
  .proj-cta-band-btns { justify-content: center; }
}

/* Featured project */
.proj-featured { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden; min-height: clamp(480px,58vh,680px); }
.proj-feat-img { position: relative; overflow: hidden; background: #C8D8E8; min-height: 420px; }
/* When carousel is inside proj-feat-img, it fills the container */
.proj-feat-img .img-carousel,
.proj-feat-img .img-fill { position: absolute; inset: 0; min-height: 0; border-radius: 0; }
.proj-feat-img .img-carousel::before { display: none; } /* hide accent bar inside featured block */
.proj-feat-bg { position: absolute; inset: 0; background-size: cover; background-position: center; filter: brightness(.35) saturate(.6); transform: scale(1.04); transition: transform 10s linear; }
.proj-feat-veil { position: absolute; inset: 0; background: linear-gradient(to right,rgba(8,16,28,.85),rgba(8,16,28,.4) 60%,transparent); z-index: 3; pointer-events: none; }
.proj-feat-body { padding: clamp(28px,4vw,52px); display: flex; flex-direction: column; justify-content: center; background: var(--white); }

/* Photo Gallery — masonry-style grid */
.gallery-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: clamp(8px,1.2vw,14px); }
.gallery-item {
  position: relative; overflow: hidden; border-radius: var(--r);
  cursor: pointer; background: #C8D8E8;
  /* default 1:1 */
  aspect-ratio: 1/1;
}
.gallery-item.wide { aspect-ratio: 16/8; min-height: 340px; }
.gallery-item.tall { aspect-ratio: 3/4; }
.gallery-item-bg { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform .75s var(--ease), filter .4s; filter: saturate(.75); }
.gallery-item:hover .gallery-item-bg { transform: scale(1.06); filter: saturate(1); }
.gallery-item-overlay { position: absolute; inset: 0; background: linear-gradient(to top,rgba(8,16,28,.75) 0%,transparent 55%); opacity: 0; transition: opacity .3s; }
.gallery-item:hover .gallery-item-overlay { opacity: 1; }
.gallery-item-cap { position: absolute; bottom: 0; left: 0; right: 0; padding: clamp(12px,1.8vw,18px); color: #fff; font-size: 12.5px; font-weight: 600; opacity: 0; transform: translateY(4px); transition: opacity .3s, transform .3s; }
.gallery-item:hover .gallery-item-cap { opacity: 1; transform: none; }
/* placeholder */
.gallery-ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--muted); }

/* ────────────────────────────────────────────────────
   LEADERSHIP
   ─────────────────────────────────────────────────── */
.exec-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 2px; }
.exec-card { background: var(--white); border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden; transition: border-color .22s, transform .22s, box-shadow .22s; }
.exec-card:hover { border-color: var(--teal); transform: translateY(-4px); box-shadow: 0 16px 48px rgba(10,24,40,.12); }
.exec-photo { aspect-ratio: 4/3; overflow: hidden; background: #C8D8E8; position: relative; }
.exec-photo img { width: 100%; height: 100%; object-fit: cover; object-position: top center; display: block; transition: transform .75s var(--ease), filter .45s; filter: saturate(.75); }
.exec-card:hover .exec-photo img { transform: scale(1.04); filter: saturate(1); }
.exec-body { padding: clamp(20px,2.8vw,30px); }
.exec-name { font-family: 'Outfit', sans-serif; font-size: clamp(20px,2vw,28px); font-weight: 900; text-transform: uppercase; letter-spacing: .04em; color: var(--ink); line-height: 1; margin-bottom: 4px; }
.exec-role { font-size: 9.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--teal); margin-bottom: 12px; }
.exec-bio { font-size: clamp(12.5px,1.05vw,14px); line-height: 1.72; color: var(--body); }
.exec-links { display: flex; gap: 8px; margin-top: 16px; flex-wrap: wrap; }
.exec-link { padding: 5px 14px; border: 1px solid var(--rule); border-radius: 4px; font-size: 10px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); display: flex; align-items: center; gap: 5px; transition: border-color .2s, color .2s; }
.exec-link:hover { border-color: var(--teal); color: var(--teal); }

/* Division team */
.team-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: clamp(12px,1.8vw,20px); }
.team-card { background: var(--white); border: 1px solid var(--rule); border-radius: var(--r); padding: clamp(20px,2.5vw,28px); display: flex; flex-direction: column; align-items: center; text-align: center; transition: border-color .22s, transform .22s, box-shadow .22s; }
.team-card:hover { border-color: var(--teal); transform: translateY(-3px); box-shadow: 0 10px 32px rgba(10,24,40,.10); }
.team-photo { width: clamp(80px,9vw,108px); height: clamp(80px,9vw,108px); border-radius: 50%; overflow: hidden; background: #C8D8E8; border: 3px solid var(--rule); margin-bottom: 16px; flex-shrink: 0; }
.team-photo img { width: 100%; height: 100%; object-fit: cover; object-position: top center; transition: filter .4s; filter: saturate(.7); }
.team-card:hover .team-photo img { filter: saturate(1); }
.team-photo-ph { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: rgba(11,77,144,.3); }
.team-name { font-family: 'Outfit', sans-serif; font-size: clamp(14px,1.3vw,17px); font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: var(--ink); line-height: 1; margin-bottom: 4px; }
.team-role { font-size: 9.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--teal); margin-bottom: 8px; }
.team-note { font-size: clamp(12px,.95vw,13.5px); line-height: 1.65; color: var(--muted); }

/* Join banner */
.join-banner { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; background: linear-gradient(135deg,var(--ink),var(--blue-dark)); border-left: 5px solid var(--teal); border-radius: var(--r); padding: clamp(28px,4vw,48px) clamp(24px,4vw,52px); margin-top: clamp(36px,5vh,64px); }
.join-banner h3 { font-family: 'Outfit', sans-serif; font-size: clamp(22px,2.6vw,36px); font-weight: 900; text-transform: uppercase; color: var(--white); margin-bottom: 6px; }
.join-banner p { font-size: clamp(13px,1.1vw,15px); line-height: 1.65; color: rgba(255,255,255,.55); }

/* ────────────────────────────────────────────────────
   FOOTER
   ─────────────────────────────────────────────────── */
.site-footer { background: var(--ink); color: rgba(255,255,255,.6); padding: clamp(56px,8vh,96px) 0 0; }
.ft-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: clamp(32px,5vw,72px); }
.ft-desc { font-size: 13.5px; line-height: 1.75; color: rgba(255,255,255,.82); max-width: 280px; margin-top: 16px; }
.ft-col-title { font-family: 'Outfit', sans-serif; font-size: 10.5px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; color: #fff; margin-bottom: 18px; }
.ft-links { display: flex; flex-direction: column; gap: 11px; }
.ft-links a { font-size: 14px; color: rgba(255,255,255,.82); transition: color .15s; font-weight: 500; }
.ft-links a:hover { color: #fff; }
.ft-contact-list { display: flex; flex-direction: column; gap: 10px; }
.ft-contact-list a, .ft-contact-list span { font-size: 13.5px; color: rgba(255,255,255,.82); line-height: 1.6; transition: color .15s; font-weight: 500; }
.ft-contact-list a:hover { color: #fff; }
.ft-bottom { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; border-top: 1px solid rgba(255,255,255,.07); padding: clamp(20px,3vh,32px) 0; margin-top: clamp(48px,6vh,76px); }
.ft-copy { font-size: 12px; color: rgba(255,255,255,.55); font-weight: 500; }
.ft-social { display: flex; gap: clamp(14px,2vw,24px); flex-wrap: wrap; }
.ft-social a { font-size: 12px; font-weight: 700; color: rgba(255,255,255,.75); transition: color .15s; letter-spacing: .04em; }
.ft-social a:hover { color: #fff; }

/* ────────────────────────────────────────────────────
   REVEAL ANIMATION
   ─────────────────────────────────────────────────── */
.rv { opacity: 0; transform: translateY(20px); transition: opacity .58s var(--ease), transform .58s var(--ease); }
.rv.in { opacity: 1; transform: none; }
.d1 { transition-delay: .08s; }
.d2 { transition-delay: .16s; }
.d3 { transition-delay: .24s; }
.d4 { transition-delay: .32s; }

/* ────────────────────────────────────────────────────
   RESPONSIVE — 1100px (tablet)
   ─────────────────────────────────────────────────── */
@media (max-width: 1100px) {
  .site-nav, .hdr-cta { display: none !important; }
  .nav-burger { display: flex !important; }

  .hero-split { flex-direction: column; height: auto; min-height: auto; }
  .hero-panel { min-height: 60svh; flex: none; width: 100%; }
  .hero-panel:hover { flex: none; }
  .hero-body { padding-top: calc(var(--hdr-h) + clamp(20px,3.5vh,40px)); }
  .hero-panel.right .hero-body { padding-top: clamp(20px,3.5vh,40px); }
  .hero-divider, .hero-or { display: none; }

  .col-2, .col-2-wide, .col-2-flip { grid-template-columns: 1fr !important; direction: ltr !important; }
  .col-2-flip > * { direction: ltr !important; }
  .col-3 { grid-template-columns: 1fr 1fr; }
  .col-4 { grid-template-columns: 1fr 1fr; }

  .stats-band-inner { grid-template-columns: 1fr 1fr; }
  .stats-band-cell:nth-child(2) { border-right: none; }
  .stats-band-cell:nth-child(3), .stats-band-cell:nth-child(4) { border-top: 1px solid var(--rule); }
  .stats-band-cell:nth-child(4) { border-right: none; }

  .feat-grid, .feat-strip { grid-template-columns: 1fr 1fr; }
  .feat-item:nth-child(2n) { border-right: none; }
  .feat-item:nth-child(n+3) { border-top: 1px solid var(--rule); }

  .mosaic { grid-template-columns: 1fr 1fr; }
  .mosaic-tile:first-child { grid-row: auto; }
  .mosaic-tile { min-height: clamp(240px,32svh,380px); }

  .logo-grid { grid-template-columns: repeat(4,1fr); }
  .logo-cell:nth-child(4n) { border-right: none; }
  .logo-cell:nth-child(6n) { border-right: 1px solid var(--rule); }
  .logo-cell:nth-last-child(-n+4) { border-bottom: none; }

  .trust-bar { flex-wrap: wrap; }
  .trust-stat { flex: 0 0 50%; border-bottom: 1px solid var(--rule); }
  .trust-stat:nth-child(2n) { border-right: none !important; }
  .trust-stat:nth-last-child(-n+2) { border-bottom: none; }

  .exec-grid { grid-template-columns: 1fr 1fr; }
  .team-grid { grid-template-columns: 1fr 1fr; }

  .proj-grid { grid-template-columns: 1fr 1fr; }
  .proj-featured { grid-template-columns: 1fr; min-height: auto; }
  .proj-feat-img { min-height: 380px; }

  .gallery-grid { grid-template-columns: 1fr 1fr; }

  .cta-block { flex-direction: column; align-items: flex-start; }
  .cta-strip  { flex-direction: column; align-items: flex-start; }
  .frame-header { flex-direction: column; align-items: flex-start; }
  .join-banner { flex-direction: column; }

  .ft-grid { grid-template-columns: 1fr 1fr; gap: 36px; }
  .ft-bottom { flex-direction: column; text-align: center; }
  .ft-social { justify-content: center; }
}

/* ────────────────────────────────────────────────────
   RESPONSIVE — 768px (mobile)
   ─────────────────────────────────────────────────── */
@media (max-width: 768px) {
  :root { --hdr-h: 60px; }
  .wm-name { font-size: 16px; }
  .wm-tag  { display: none; }
  .wm-logo { width: 30px; height: 30px; }

  .hero-panel { min-height: 56svh; }
  .hero-h { font-size: clamp(26px,7.5vw,40px) !important; }
	
/* Manual Change Start 1.9 */

  .stat-row { grid-template-columns: 1fr 1fr; }
  .stat-item:nth-child(2) { border-right: none; }
  .stat-item:nth-child(n+3) { border-top: 1px solid var(--rule); padding-top: 16px; }
  /* About frame: stack vertically, don't let carousel be too tall */
  .col-2-wide { grid-template-columns: 1fr !important; }
  .img-tall { height: clamp(260px,42vw,480px); }
	
/* Manual Change Start 1.9 */

  .col-3, .col-4 { grid-template-columns: 1fr; }

  .logo-grid { grid-template-columns: 1fr 1fr; }
  .logo-cell:nth-child(2n) { border-right: none; }
  .logo-cell:nth-last-child(-n+2) { border-bottom: none; }

  .mosaic { grid-template-columns: 1fr; gap: 3px; }
  .mosaic-tile { min-height: clamp(220px,34svh,340px); }

  .exec-grid { grid-template-columns: 1fr; }
  .team-grid { grid-template-columns: 1fr 1fr; }

  .proj-grid { grid-template-columns: 1fr; }
  .feat-grid, .feat-strip { grid-template-columns: 1fr; }
  .feat-item { border-right: none !important; border-bottom: 1px solid var(--rule); }
  .feat-item:last-child { border-bottom: none; }

  .gallery-grid { grid-template-columns: 1fr 1fr; gap: 6px; }

  .stats-band-inner { grid-template-columns: 1fr 1fr; }

  .page-hero { min-height: clamp(400px,58svh,560px); }
  .page-hero-body { padding: clamp(20px,4vw,36px); padding-top: calc(var(--hdr-h) + clamp(20px,4vw,36px)); }
  .page-hero-h, .pg-hero-h { font-size: clamp(30px,8.5vw,46px) !important; }
  .page-hero-btns { flex-direction: column; align-items: flex-start; gap: 10px; }
  .page-hero-btns .btn-teal,
  .page-hero-btns .btn-primary,
  .page-hero-btns .btn-outline-white { width: 100%; justify-content: center; }

  .cta-block { padding: clamp(24px,4vw,40px); }

  .ft-grid { grid-template-columns: 1fr; gap: 32px; }
}

/* ────────────────────────────────────────────────────
   RESPONSIVE — 480px (small mobile)
   ─────────────────────────────────────────────────── */

/* Manual Change Start 1.8 */

@media (max-width: 480px) {
  :root { --hdr-h: 56px; }
  .container, .container-wide { padding-left: 14px; padding-right: 14px; }
  .team-grid { grid-template-columns: 1fr 1fr; }
  .gallery-grid { grid-template-columns: 1fr; }
  .exec-grid { grid-template-columns: 1fr; }

  /* Stat row: stack to 1 column on very small screens */
  .stat-row { grid-template-columns: 1fr 1fr; }
  .stat-item:nth-child(2) { border-right: none; }
  .stat-item:nth-child(n+3) { border-top: 1px solid var(--rule); padding-top: 16px; }

  /* Cards never side-by-side on small phones */
  .col-3, .col-4 { grid-template-columns: 1fr !important; }

  /* Logo grid: 2-col max on small phones */
  .logo-grid { grid-template-columns: repeat(2,1fr) !important; }

  /* Images fill width — no overflow */
  .img-fill, .img-carousel { max-width: 100%; }

  /* Mosaic single col */
  .mosaic { grid-template-columns: 1fr !important; }
  .mosaic-tile { min-height: clamp(200px,38svh,320px); }

  /* Hero panels taller on small screens */
  .hero-panel { min-height: 60svh; }
}

/* Manual Change End 1.8 */

/* ────────────────────────────────────────────────────
   WIDE SCREENS
   ─────────────────────────────────────────────────── */

/* Manual Change Start 1.10 */

/* --mw/--frame-pad breakpoint jumps at 1440px/1800px removed
   (fluid-scaling-v2) -- both variables are now continuous clamp()
   values defined once in the base :root block. */

/* Manual Change Start 1.10 */

/* ────────────────────────────────────────────────────
   PHOTO GALLERY — Uniform 4-image grid (2×2)
   Use: <div class="photo-gallery-4">
          <div class="pg4-item"><div class="pg4-bg" style="background-image:url(...)"></div><div class="pg4-cap">Caption</div></div>
          ... repeat x4 ...
        </div>
   Each image is identical size. Hover reveals caption.
   ─────────────────────────────────────────────────── */
.photo-gallery-4 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: clamp(8px, 1.2vw, 14px);
  /* Force a defined height so all 4 cells are equal */
}
.pg4-item {
  position: relative;
  overflow: hidden;
  border-radius: var(--r);
  background: #C8D8E8;
  /* Equal aspect ratio for all 4 cells — no exceptions */
  aspect-ratio: 4 / 3;
  min-height: 0;
  cursor: pointer;
}
.pg4-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform 0.7s var(--ease), filter 0.4s ease;
  filter: saturate(0.8);
}
.pg4-item:hover .pg4-bg {
  transform: scale(1.05);
  filter: saturate(1);
}
.pg4-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(8,16,28,.78) 0%, transparent 52%);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.pg4-item:hover .pg4-overlay { opacity: 1; }
.pg4-cap {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: clamp(12px, 1.8vw, 18px) clamp(14px, 2vw, 20px);
  font-size: clamp(12px, 1.1vw, 14px);
  font-weight: 600;
  color: #fff;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}
.pg4-item:hover .pg4-cap { opacity: 1; transform: none; }
/* Placeholder when no image uploaded */
.pg4-ph {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: var(--muted);
}
.pg4-ph svg { opacity: .35; }
.pg4-ph span { font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; opacity: .5; }

/* Responsive */
@media (max-width: 1100px) {
  .photo-gallery-4 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .photo-gallery-4 { grid-template-columns: 1fr; }
  .pg4-item { aspect-ratio: 16 / 10; }
}

/* Logo grid — image-ready cells (larger, centered) */
.logo-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(18px,2.8vh,30px) clamp(12px,1.8vw,20px);
  min-height: clamp(80px,10vh,110px);
  border-right: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  background: var(--white);
  transition: background .18s;
}
.logo-cell img {
  max-width: 120px;
  max-height: 48px;
  width: auto;
  height: auto;
  object-fit: contain;
  filter: grayscale(1) opacity(.75);
  transition: filter .3s ease;
}
.logo-cell:hover img { filter: grayscale(0) opacity(1); }
.logo-cell-empty:hover { background: var(--white); }

/* ────────────────────────────────────────────────────
   SPACING — consistent vertical gaps inside frames
   .gap-sm  = between small elements (label → heading)
   .gap-md  = between sections of content
   .gap-lg  = between major blocks
   ─────────────────────────────────────────────────── */
.gap-sm { margin-bottom: clamp(10px, 1.5vh, 16px); }
.gap-md { margin-bottom: clamp(20px, 3vh, 32px); }
.gap-lg { margin-bottom: clamp(36px, 5vh, 56px); }

/* col-copy children: consistent vertical rhythm */
.col-copy > .label      { margin-bottom: clamp(8px, 1.2vh, 12px); }
.col-copy > h2          { margin-bottom: clamp(16px, 2.5vh, 24px); }
.col-copy > p           { margin-bottom: clamp(14px, 2vh, 20px); }
.col-copy > .btn-group  { margin-top: clamp(8px, 1.2vh, 16px); }
.col-copy > .stat-row   { margin-top: clamp(24px, 3.5vh, 36px); margin-bottom: clamp(24px, 3.5vh, 36px); }

/* frame-header consistent bottom margin */
.frame-header { margin-bottom: clamp(32px, 4.5vh, 52px); }
/* Homepage-only: heading-to-content gap tightened, via a separate,
   narrower body class (taknek-home-tight-gap, functions.php) than
   Construction/Automation's (taknek-heading-managed) since that other
   class also cuts heading FONT SIZE ~18%, which isn't wanted here.

   !important required: Additional CSS (wp-admin Customizer, outside
   this repo/git) has a sitewide unscoped ".frame-header { margin-
   bottom: clamp(16px,2.5vh,28px) !important; }" rule. Without
   !important here, this two-class selector was silently losing to
   that plain-class rule (importance is resolved before specificity),
   so this override never actually rendered. */
body.taknek-home-tight-gap .frame-header { margin-bottom: clamp(14px, 2vh, 22px) !important; }

/* Section label → heading gap */
.label + h2, .label + .heading-lg, .label + .heading-md, .label + .heading-sm {
  margin-top: 0;
}

/* Ensure feat-grid items have comfortable internal padding */
.feat-item > * + * { margin-top: clamp(6px, 1vh, 10px); }

/* Card internal rhythm */
.card-ico + .card-h, .card-icon + .card-title { margin-top: 0; }
.card-h + .card-p, .card-title + .card-body { margin-top: clamp(6px, 1vh, 10px); }

/* Proc-list spacing */
.proc-item { padding-bottom: clamp(20px, 3vh, 32px); }

/* Stats band cells — even internal padding */
.stats-band-cell { padding: clamp(24px, 3.5vh, 44px) clamp(20px, 2.5vw, 36px); }

/* Pull-quote consistent padding */
.pull-quote { padding: clamp(22px, 3.2vw, 40px) clamp(24px, 3.8vw, 48px); }

/* ════════════════════════════════════════════════════════
   IMAGE CAROUSEL — .img-carousel
   Drop-in replacement for any .img-fill block.
   Works wherever .img-fill img-tall is used.

   STRUCTURE:
   <div class="img-carousel img-tall rv" data-count="N">
     <div class="ic-track">
       <div class="ic-slide" style="background-image:url(...)">
         <div class="ic-caption">Optional caption</div>  ← optional
       </div>
       ... repeat per slide ...
     </div>
     <button class="ic-prev">‹</button>
     <button class="ic-next">›</button>
     <div class="ic-dots">
       <button class="ic-dot active"></button>
       ... one per slide ...
     </div>
   </div>

   TO REUSE on any page:
   1. Copy the PHP block from front-page.php F2
   2. Change the ACF repeater name ('about_carousel') to your field
   3. Change the fallback URL to your preferred static image
   ════════════════════════════════════════════════════════ */

.img-carousel {
  position: relative;
  overflow: hidden;
  border-radius: var(--r);
  background: #C8D8E8;
  /* Height set by .img-tall / aspect-* / custom min-height.
     .ic-track uses position:absolute to fill the container. */
}

/* Accent bar at top — same as .img-fill */
.img-carousel::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px; z-index: 4;
  background: linear-gradient(90deg, var(--blue), var(--teal));
}

/* Track — slides sit side by side, JS translates X */
.ic-track {
  display: flex;
  /* Simple flex row — overflow:hidden on parent clips extra slides */
  height: 100%;
  transition: transform .42s cubic-bezier(.4,0,.2,1);
  will-change: transform;
}

/* Each slide = full width of the carousel, full height */
.ic-slide {
  flex: 0 0 100%;   /* flex-basis:100%, no grow, no shrink */
  height: 100%;
  background-size: cover;
  background-position: center;
  position: relative;
}

/* Optional caption overlay */
.ic-caption {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  padding: 12px 18px;
  background: linear-gradient(to top, rgba(8,16,28,.72), transparent);
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,.88);
  letter-spacing: .04em;
  z-index: 2;
}

/* Prev / Next arrow buttons */
.ic-prev,
.ic-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,.92);
  color: var(--ink);
  box-shadow: 0 2px 12px rgba(10,24,40,.18);
  transition: background .18s, transform .18s, box-shadow .18s;
  /* Prevent text selection on double-click */
  user-select: none;
}
.ic-prev { left: 14px; }
.ic-next { right: 14px; }
.ic-prev:hover,
.ic-next:hover {
  background: var(--white);
  box-shadow: 0 4px 20px rgba(10,24,40,.24);
  transform: translateY(-50%) scale(1.06);
}
.ic-prev:active,
.ic-next:active { transform: translateY(-50%) scale(.96); }

/* Dot indicators */
.ic-dots {
  position: absolute;
  bottom: 14px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 7px;
}
.ic-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,.7);
  background: transparent;
  cursor: pointer;
  padding: 0;
  transition: background .22s, border-color .22s, transform .22s;
}
.ic-dot.active {
  background: var(--white);
  border-color: var(--white);
  transform: scale(1.25);
}
.ic-dot:hover:not(.active) {
  background: rgba(255,255,255,.45);
}

/* Responsive — arrows smaller on mobile */
@media (max-width: 768px) {
  .ic-prev, .ic-next { width: 34px; height: 34px; }
  .ic-prev { left: 10px; }
  .ic-next { right: 10px; }
}

/* ════════════════════════════════════════════════════
   MOBILE IMAGE & STATS FIXES
   ════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* Images: switch to aspect-ratio so height is always
     proportional to the rendered column width.
     No fixed pixel height = no overflow possible. */
  .img-fill,
  .img-tall,
  .img-carousel {
    height: auto !important;
    min-height: 0 !important;
    aspect-ratio: 16 / 10;
  }

  /* ic-track: keep display:flex, do NOT use position:absolute.
     With aspect-ratio on the parent, height:100% on a flex
     child resolves correctly. Absolute would collapse to 0. */
  .ic-track {
    display: flex !important;
    position: static !important;
    height: 100% !important;
    width: 100% !important;
  }
  .ic-slide {
    flex: 0 0 100% !important;
    height: 100% !important;
    min-width: 0 !important;
  }

  /* Ticker: must stay overflow:hidden and width:100% */
  .ticker-wrap,
  .ticker-rail {
    overflow: hidden !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  /* Stat row — 2 columns, third stat full width */
  .stat-row {
    grid-template-columns: 1fr 1fr !important;
  }
  .stat-item {
    min-width: 0 !important;
    padding: 14px 10px 0 0 !important;
  }
  .stat-item:nth-child(2) {
    border-right: none !important;
  }
  .stat-item:nth-child(3) {
    grid-column: 1 / -1 !important;
    border-right: none !important;
    border-top: 1px solid var(--rule) !important;
    padding-top: 14px !important;
  }
  .stat-n {
    font-size: clamp(22px, 7vw, 36px) !important;
    white-space: normal !important;
  }
  .stat-l {
    font-size: 9px !important;
    letter-spacing: .08em !important;
  }
}

@media (max-width: 480px) {
  .img-fill,
  .img-tall,
  .img-carousel {
    aspect-ratio: 4 / 3 !important;
  }
}

.feat-grid-bordered .feat-item {
  border: 1.5px solid var(--rule);
  background: var(--white);
  transition: background .2s, box-shadow .2s, border-color .2s;
}
.feat-grid-bordered .feat-item:hover {
  border-color: var(--blue);
}

.feat-grid-3 {
  grid-template-columns: repeat(3,1fr);
}

@media (max-width: 768px) {
  .feat-grid-3 {
    grid-template-columns: 1fr !important;
  }
}

/* ═══════════════════════════════════════════════════
   PRESIDENT FRAME
   ═══════════════════════════════════════════════════ */

.pres-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-radius: var(--r);
  overflow: hidden;
  min-height: clamp(480px,60vh,720px);
  box-shadow: 0 8px 48px rgba(10,24,40,.12);
}
.pres-side-right { direction: rtl; }
.pres-side-right > * { direction: ltr; }

/* Photo panel */
.pres-photo-panel {
  position: relative;
  overflow: hidden;
  background: #c8d8e8;
}
.pres-photo-wrap {
  position: absolute;
  inset: 0;
  transition: border-radius .35s var(--ease);
}
.pres-photo-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  transition: border-radius .35s var(--ease);
}
.pres-photo-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  color: var(--muted);
  background: var(--bg);
}

/* Circular shape */
.pres-frame.shape-circular .pres-photo-panel {
  padding: clamp(24px,3vw,40px);
  background: var(--bg);
}
.pres-frame.shape-circular .pres-photo-wrap {
  position: relative;
  inset: auto;
  width: 100%;
  padding-bottom: 100%;
  border-radius: 50%;
  overflow: hidden;
  margin: auto;
  top: 50%;
  transform: translateY(-50%);
}
.pres-frame.shape-circular .pres-photo-img {
  position: absolute;
  inset: 0;
}

/* Quote panel — dark default */
.pres-quote-panel {
  background: var(--ink);
  display: flex;
  align-items: center;
  transition: background .3s;
}
.pres-frame.bg-light .pres-quote-panel {
  background: var(--bg);
}
.pres-quote-inner {
  padding: clamp(32px,5vw,64px);
  display: flex;
  flex-direction: column;
  gap: clamp(16px,2.5vh,28px);
}
.pres-quote-mark {
  font-family: 'Outfit', serif;
  font-size: clamp(64px,8vw,120px);
  line-height: .7;
  color: var(--teal);
  font-weight: 900;
  user-select: none;
}
.pres-quote-text {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(17px,1.8vw,26px);
  font-weight: 500;
  font-style: italic;
  color: #fff;
  line-height: 1.5;
  margin: 0;
  transition: color .3s;
}
.pres-frame.bg-light .pres-quote-text { color: var(--ink); }

.pres-attribution { display: flex; flex-direction: column; gap: 6px; }
.pres-attr-line {
  width: 40px;
  height: 2.5px;
  background: var(--teal);
  border-radius: 2px;
  margin-bottom: 4px;
}
.pres-attr-name {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(16px,1.4vw,20px);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #fff;
  transition: color .3s;
}
.pres-frame.bg-light .pres-attr-name { color: var(--ink); }
.pres-attr-title {
  font-size: clamp(11px,1vw,13px);
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--teal);
}
.pres-attr-bio {
  font-size: clamp(13px,1.05vw,14.5px);
  line-height: 1.7;
  color: rgba(255,255,255,.65);
  margin: 0;
  transition: color .3s;
}
.pres-frame.bg-light .pres-attr-bio { color: var(--body); }
.pres-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--teal);
  text-decoration: none;
  margin-top: 4px;
  transition: gap .2s;
}
.pres-cta:hover { gap: 12px; }

/* ═══════════════════════════════════════════════════
   LEADERSHIP GRID
   ═══════════════════════════════════════════════════ */

.lead-grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: clamp(14px,2vw,22px);
  margin-top: clamp(20px,3vh,32px);
}
.lead-card {
  border-radius: var(--r);
  overflow: hidden;
  border: 1.5px solid var(--rule);
  background: var(--white);
  transition: transform .22s, box-shadow .22s;
  cursor: default;
}
.lead-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 28px rgba(10,24,40,.10);
}
.lead-card-photo {
  aspect-ratio: 1/1;
  overflow: hidden;
  background: var(--bg);
  position: relative;
}
.lead-card-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  transition: transform .4s;
}
.lead-card:hover .lead-card-photo img { transform: scale(1.04); }
.lead-card-ph-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
}

/* ── Style A — teal badge ── */
.lead-info-a {
  padding: clamp(12px,1.5vw,18px);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.lead-role-badge {
  display: inline-block;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--teal);
  background: var(--teal-light);
  border-radius: 20px;
  padding: 3px 10px;
  align-self: flex-start;
}
.lead-info-a .lead-name {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(14px,1.2vw,17px);
  font-weight: 700;
  color: var(--ink);
  line-height: 1.2;
}
.lead-li-link {
  font-size: 11px;
  font-weight: 700;
  color: var(--blue);
  text-decoration: none;
  letter-spacing: .04em;
}
.lead-li-link:hover { color: var(--teal); }

/* ── Style C — dark footer ── */
.lead-info-c {
  padding: clamp(12px,1.5vw,16px);
  background: var(--ink);
  display: flex;
  flex-direction: column;
  gap: 4px;
  position: relative;
}
.lead-name-c {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(13px,1.1vw,16px);
  font-weight: 700;
  color: #fff;
  line-height: 1.2;
}
.lead-role-c {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--teal);
}
.lead-li-link-c {
  position: absolute;
  top: clamp(10px,1.2vw,14px);
  right: clamp(10px,1.2vw,14px);
  font-size: 14px;
  color: rgba(255,255,255,.4);
  text-decoration: none;
  transition: color .15s;
}
.lead-li-link-c:hover { color: var(--teal); }

/* Show/hide style panels — default shows A, hides C */
.lead-grid .lead-info-c { display: none; }
.lead-grid.style-c .lead-info-c { display: flex; }
.lead-grid.style-c .lead-info-a { display: none; }

/* Mobile */
@media (max-width: 900px) {
  .pres-body { grid-template-columns: 1fr; min-height: auto; }
  .pres-photo-panel { min-height: clamp(280px,45vw,420px); }
  .pres-side-right { direction: ltr; }
  .lead-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 480px) {
  .lead-grid { grid-template-columns: repeat(2,1fr); }
}

/* Hide president and leadership toggle buttons */
.pres-controls,
.lead-toggle-group {
  display: none !important;
}


/* MD frame — photo right, quote left */
.pres-body.pres-flip {
  direction: ltr;
}
.pres-body.pres-flip .pres-photo-panel {
  order: 2;
}
.pres-body.pres-flip .pres-quote-panel {
  order: 1;
}

/* MD frame — photo right, quote left */
.pres-body.pres-flip .pres-photo-panel { order: 2; }
.pres-body.pres-flip .pres-quote-panel { order: 1; }




/* ═══════════════════════════════════════════════════
   SPLIT ASYMMETRIC CTA CARD
   Used on: Construction, Automation, About, Projects
   ═══════════════════════════════════════════════════ */

.split-cta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-radius: var(--r);
  overflow: hidden;
  border: 1px solid var(--rule);
  box-shadow: 0 4px 32px rgba(10,24,40,.10);
  margin: 0 auto;
}

/* Left — dark panel */
.split-cta-left {
  background: var(--ink);
  padding: clamp(28px,4vw,48px);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: clamp(20px,3vh,32px);
  position: relative;
  overflow: hidden;
}

/* Animated gear — replaces stat */
.split-cta-gear {
  width: 64px;
  height: 64px;
  color: rgba(255,255,255,.12);
  animation: gear-spin 12s linear infinite;
  flex-shrink: 0;
}
.split-cta-gear-wrap {
  display: flex;
  align-items: center;
  gap: 16px;
}
.split-cta-gear-sub {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--teal);
}
@keyframes gear-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
/* Second gear counter-rotates for realism */
.split-cta-gear-2 {
  width: 40px;
  height: 40px;
  color: rgba(255,255,255,.07);
  animation: gear-spin 8s linear infinite reverse;
  position: absolute;
  bottom: clamp(20px,3vw,32px);
  right: clamp(20px,3vw,32px);
}

.split-cta-headline {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,2vw,28px);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .01em;
  color: var(--white);
  line-height: 1.1;
  margin: 0;
}
.split-cta-headline em {
  font-style: normal;
  color: var(--teal);
}

/* Right — white panel */
.split-cta-right {
  background: var(--white);
  padding: clamp(28px,4vw,48px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: clamp(14px,2.5vh,22px);
}
.split-cta-sub {
  font-size: clamp(13px,1.1vw,15px);
  line-height: 1.72;
  color: var(--body);
  margin: 0;
}
.split-cta-btns {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.split-cta-btns .btn-primary {
  justify-content: center;
}
.split-cta-btns .btn-ghost {
  justify-content: center;
}

/* Mobile */
@media (max-width: 768px) {
  .split-cta {
    grid-template-columns: 1fr;
  }
  .split-cta-left::before,
  .split-cta-left::after { display: none; }
}


/* ═══════════════════════════════════════════════════
   JOIN OUR TEAM — MINIMAL LIGHT
   ═══════════════════════════════════════════════════ */

.jot-wrap {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* Top row */
.jot-top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(32px,5vw,64px);
  align-items: center;
  padding-bottom: clamp(28px,4vh,44px);
}
.jot-heading {
  margin-top: clamp(10px,1.5vh,16px);
  margin-bottom: 0;
}
.jot-body {
  color: var(--body);
  margin-bottom: clamp(18px,2.5vh,28px);
}
.jot-actions {
  display: flex;
  align-items: center;
  gap: clamp(16px,2vw,28px);
  flex-wrap: wrap;
}
.jot-email {
  font-size: 13px;
  font-weight: 600;
  color: var(--blue);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color .18s;
}
.jot-email:hover { border-bottom-color: var(--blue); }

/* Rule */
.jot-rule {
  height: 1px;
  background: var(--rule);
}

/* Values row */
.jot-values {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: clamp(10px,1.5vw,16px);
  padding-top: clamp(24px,3.5vh,40px);
}
.jot-value {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: clamp(16px,2vw,22px);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  background: var(--white);
  transition: border-color .2s, box-shadow .2s;
}
.jot-value:hover {
  border-color: var(--teal);
  box-shadow: 0 4px 16px rgba(10,24,40,.07);
}
.jot-value-num {
  font-family: 'Outfit', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .14em;
  color: var(--teal);
}
.jot-value-label {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(14px,1.2vw,16px);
  font-weight: 700;
  color: var(--ink);
  line-height: 1.2;
}
.jot-value-sub {
  font-size: clamp(12px,.95vw,13px);
  color: var(--muted);
  line-height: 1.6;
  margin: 0;
}

/* Mobile */
@media (max-width: 900px) {
  .jot-top {
    grid-template-columns: 1fr;
  }
  .jot-values {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 480px) {
  .jot-values {
    grid-template-columns: 1fr;
  }
}


/* ═══════════════════════════════════════════════════
   LOCATIONS FRAME
   ═══════════════════════════════════════════════════ */

.loc-grid {
  /* auto-fit (not auto-fill) so the existing cards stretch to fill
     the row when there are fewer of them than fit at 280px min --
     auto-fill would instead reserve empty column tracks for offices
     that don't exist, leaving dead space on the right. Column count
     already follows office_locations' actual length automatically,
     no matter how many are added/removed in ACF. */
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px,1fr));
  gap: clamp(14px,2vw,24px);
  margin-top: clamp(20px,3vh,32px);
}
.loc-card {
  background: var(--white);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  overflow: hidden;
  position: relative;
  transition: border-color .2s, box-shadow .2s;
}
.loc-card::before {
  content: '';
  display: block;
  height: 3px;
  background: linear-gradient(to right, var(--blue), var(--teal));
}
.loc-card:hover {
  border-color: var(--teal);
  box-shadow: 0 4px 20px rgba(10,24,40,.08);
}
.loc-badge {
  position: absolute;
  top: clamp(14px,2vw,20px);
  right: clamp(14px,2vw,20px);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--teal);
  background: rgba(0,164,159,.08);
  border: 1px solid rgba(0,164,159,.2);
  border-radius: 20px;
  padding: 3px 10px;
}
.loc-card-top {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: clamp(16px,2.5vw,24px);
  padding-bottom: clamp(12px,1.8vh,18px);
  border-bottom: 1px solid var(--rule);
}
.loc-flag { font-size: 26px; line-height: 1; flex-shrink: 0; }
.loc-country {
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 4px;
}
.loc-city {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(15px,1.4vw,20px);
  font-weight: 700;
  color: var(--ink);
  line-height: 1.1;
}
.loc-card-body {
  padding: clamp(16px,2.5vw,24px);
  display: flex;
  flex-direction: column;
  gap: clamp(10px,1.5vh,14px);
}
.loc-detail {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.loc-detail-icon {
  width: 26px;
  height: 26px;
  border-radius: 6px;
  background: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: var(--blue);
}
.loc-detail-text {
  font-size: clamp(12px,1vw,13.5px);
  color: var(--body);
  line-height: 1.6;
  margin: 0;
  padding-top: 4px;
}
.loc-detail-link {
  font-size: clamp(12px,1vw,13.5px);
  font-weight: 600;
  color: var(--blue);
  text-decoration: none;
  padding-top: 4px;
  display: block;
  transition: color .15s;
}
.loc-detail-link:hover { color: var(--teal); }

@media (max-width: 600px) {
  .loc-grid { grid-template-columns: 1fr; }
}



/* ═══════════════════════════════════════════════════
   PHOTO GALLERY CAROUSEL
   ═══════════════════════════════════════════════════ */

.pgal-frame {}

/* Header */
.pgal-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: clamp(10px,1.5vh,16px);
  flex-wrap: wrap;
}
.pgal-counter {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: 'Outfit', sans-serif;
  font-size: clamp(13px,1.2vw,16px);
  font-weight: 700;
  color: var(--muted);
}
.pgal-counter-current { color: var(--blue); font-size: clamp(18px,2vw,24px); }
.pgal-counter-sep { font-size: 12px; }

/* Carousel container */
.pgal-carousel {
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
  height: clamp(440px, 72vh, 840px);
  background: var(--ink);
  box-shadow: 0 8px 40px rgba(10,24,40,.14);
}

/* Track */
.pgal-track {
  display: flex;
  height: 100%;
  transition: transform .55s cubic-bezier(.16,1,.3,1);
  will-change: transform;
}

/* Slide */
.pgal-slide {
  flex: 0 0 100%;
  height: 100%;
  position: relative;
  overflow: hidden;
}
.pgal-slide-img {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform 8s ease;
}
/* Subtle Ken Burns effect on active slide */
.pgal-slide.active .pgal-slide-img {
  transform: scale(1.04);
}

/* Caption */
.pgal-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: clamp(16px,2.5vw,28px);
  background: linear-gradient(to top, rgba(10,24,40,.75) 0%, transparent 100%);
  font-size: clamp(12px,1.1vw,14px);
  color: rgba(255,255,255,.85);
  font-weight: 500;
  letter-spacing: .02em;
}

/* Arrows */
.pgal-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: clamp(40px,4vw,52px);
  height: clamp(40px,4vw,52px);
  border-radius: 50%;
  background: rgba(255,255,255,.12);
  border: 1.5px solid rgba(255,255,255,.22);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .18s, border-color .18s, transform .18s;
  z-index: 10;
  backdrop-filter: blur(4px);
}
.pgal-arrow:hover {
  background: rgba(255,255,255,.24);
  border-color: rgba(255,255,255,.5);
  transform: translateY(-50%) scale(1.08);
}
.pgal-prev { left: clamp(12px,2vw,24px); }
.pgal-next { right: clamp(12px,2vw,24px); }

/* Dots */
.pgal-dots {
  position: absolute;
  bottom: clamp(14px,2vh,22px);
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 7px;
  z-index: 10;
  flex-wrap: wrap;
  justify-content: center;
  max-width: 80%;
}
.pgal-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: rgba(255,255,255,.35);
  border: none;
  cursor: pointer;
  transition: background .2s, transform .2s, width .2s;
  padding: 0;
  flex-shrink: 0;
}
.pgal-dot.active {
  background: #fff;
  width: 22px;
  border-radius: 4px;
}

/* Mobile */
@media (max-width: 768px) {
  .pgal-carousel { height: clamp(260px,52vw,420px); }
  .pgal-dots { display: none; }
}


/* ═══════════════════════════════════════════════════
   INTERACTIVE PROCESS STEPS WIDGET
   Header row now uses the sitewide .frame-header class (same as
   every other section, e.g. Markets) instead of a custom .iproc-header
   -- the two had drifted out of sync and only .frame-header actually
   aligned correctly, so there's no reason to keep a second copy here.
   ═══════════════════════════════════════════════════ */

/* Outer widget */
.iproc-widget {
  display: flex;
  flex-direction: column;
  gap: clamp(20px, 1.8vw, 36px);
}

/* ── Bubble row: one grid column per step, connected by a line ── */
.iproc-bubbles {
  display: grid;
  grid-template-columns: repeat(var(--iproc-cols, 6), 1fr);
  position: relative;
}
.iproc-bubble-btn {
  display: flex;
  flex-direction: column;
  align-items: flex-start; /* left-align instead of center */
  gap: 8px;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 0 0 4px;
  position: relative;
  text-align: left;
}
.iproc-bubble {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 2px solid var(--rule);
  background: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 2;
  flex-shrink: 0;
  transition: background .25s, border-color .25s, transform .25s, box-shadow .25s;
}
.iproc-bubble-num {
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 800;
  color: var(--muted);
  transition: color .25s;
}
.iproc-bubble-btn.active .iproc-bubble {
  background: var(--blue);
  border-color: var(--blue);
  transform: scale(1.15);
  box-shadow: 0 0 0 5px rgba(11,77,144,.1);
}
.iproc-bubble-btn.active .iproc-bubble-num { color: #fff; }
.iproc-bubble-btn:hover:not(.active) .iproc-bubble {
  border-color: var(--blue);
  transform: scale(1.08);
}
.iproc-bubble-btn:hover:not(.active) .iproc-bubble-num { color: var(--blue); }

/* Horizontal connector line -- relies on grid columns being equal
   width, so left/right offsets from each bubble's own edge line up
   precisely regardless of how many steps there are. */
.iproc-connector {
  position: absolute;
  top: 21px;
  left: calc(22px + 22px); /* bubble left edge + bubble radius */
  right: calc(-100% + 22px + 22px);
  height: 2px;
  background: var(--rule);
  z-index: 1;
  transition: background .35s;
}
.iproc-connector.filled { background: var(--blue); }

/* Bubble label */
.iproc-bubble-label {
  font-size: clamp(11px,.85vw,13px);
  font-weight: 600;
  color: var(--muted);
  line-height: 1.3;
  transition: color .25s;
  max-width: 120px;
  word-break: break-word;
}
.iproc-bubble-btn.active .iproc-bubble-label { color: var(--blue); }

/* ── Detail card ── */
.iproc-detail {
  background: var(--white);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  overflow: hidden;
  box-shadow: 0 4px 24px rgba(10,24,40,.06);
}

/* Panel */
.iproc-panel { display: none; }
.iproc-panel.active {
  display: block;
  animation: iprocIn .32s var(--ease);
}
@keyframes iprocIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.iproc-panel-grid {
  display: grid;
  grid-template-columns: clamp(56px,6vw,88px) 1fr;
  gap: 0 clamp(18px,2.5vw,36px);
  padding: clamp(24px,3.5vw,44px);
  align-items: start;
}
.iproc-panel-num-large {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(38px,5.5vw,68px);
  font-weight: 900;
  color: var(--rule);
  line-height: 1;
  letter-spacing: -.03em;
  padding-top: 2px;
}
.iproc-panel-content {
  display: flex;
  flex-direction: column;
  gap: clamp(8px,1.4vh,14px);
}
.iproc-panel-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(17px, 1.057vw + 9.60px, 29.9px);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .01em;
  color: var(--ink);
  line-height: 1.05;
  margin: 0;
}
.iproc-panel-body {
  font-size: clamp(13px,1.1vw,15px);
  line-height: 1.76;
  color: var(--body);
  margin: 0;
  max-width: 580px;
}

/* Panel footer */
.iproc-panel-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: clamp(12px,1.8vw,18px) clamp(24px,3.5vw,44px);
  border-top: 1px solid var(--rule);
  background: var(--bg);
  gap: 12px;
  flex-wrap: wrap;
}

/* Dots */
.iproc-dots {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}
.iproc-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--rule);
  border: none;
  cursor: pointer;
  padding: 0;
  transition: background .2s, width .22s;
  flex-shrink: 0;
}
.iproc-dot.active {
  background: var(--blue);
  width: 20px;
  border-radius: 4px;
}

/* Nav buttons */
.iproc-panel-nav {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.iproc-nav-prev,
.iproc-nav-next {
  display: inline-flex;
  align-items: center;
  padding: 7px 16px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: .03em;
  transition: all .18s;
  text-decoration: none;
  white-space: nowrap;
}
.iproc-nav-prev {
  background: transparent;
  border: 1.5px solid var(--rule);
  color: var(--muted);
}
.iproc-nav-prev:hover { border-color: var(--blue); color: var(--blue); }
.iproc-nav-next {
  background: var(--blue);
  border: 1.5px solid var(--blue);
  color: #fff;
}
.iproc-nav-next:hover { background: var(--teal); border-color: var(--teal); }

/* Mobile — 2 per row; connector line only makes sense in a single
   row of equal-width columns, so it's hidden here rather than trying
   to route it around a wrap. */
@media (max-width: 768px) {

  .iproc-bubbles {
    grid-template-columns: 1fr 1fr;
    gap: 8px 0;
  }

  .iproc-bubble-btn {
    align-items: center;
    text-align: center;
    padding: 8px 4px;
  }

  .iproc-bubble {
    width: 40px;
    height: 40px;
  }

  .iproc-connector { display: none !important; }

  /* Simple top border between rows instead */
  .iproc-bubble-btn:nth-child(n+3) {
    border-top: 1px solid var(--rule);
    padding-top: 16px;
  }

  .iproc-bubble-label {
    font-size: 11px;
    max-width: 100px;
    text-align: center;
  }

  .iproc-panel-grid {
    grid-template-columns: 1fr;
    padding: 20px;
  }
  .iproc-panel-num-large { display: none; }
  .iproc-panel-title { font-size: 16px; }
  .iproc-panel-body  { font-size: 13px; line-height: 1.7; }
  .iproc-panel-footer { padding: 12px 20px; flex-wrap: nowrap; }
  .iproc-dots { display: none; }
  .iproc-nav-prev,
  .iproc-nav-next { padding: 7px 14px; font-size: 12px; }
}

/* ═══════════════════════════════════════════════════
   CONTACT PAGE — REDESIGN
   ═══════════════════════════════════════════════════ */

/* Shorter hero */
.contact-hero-short {
  min-height: clamp(240px,36vh,360px) !important;
}
.contact-hero-short .page-hero-body {
  padding-top: calc(var(--hdr-h) + clamp(20px,3vh,36px)) !important;
  padding-bottom: clamp(20px,3vh,36px) !important;
}
.contact-hero-short .page-hero-h {
  font-size: clamp(24px,3.5vw,44px) !important;
}

/* Disclaimer */
.contact-disclaimer {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: var(--white);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--teal);
  border-radius: var(--r);
  padding: clamp(10px,1.5vw,16px) clamp(14px,2vw,20px);
  margin-top: clamp(16px,2.5vh,24px);
}
.contact-disclaimer-icon { color: var(--teal); flex-shrink: 0; margin-top: 2px; }
.contact-disclaimer p {
  font-size: clamp(12px,1vw,14px);
  line-height: 1.65;
  color: var(--body);
  margin: 0;
  text-align: left;
}

/* Form tab switcher */
.ctab-wrap {
  background: var(--white);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  overflow: hidden;
  box-shadow: 0 4px 24px rgba(10,24,40,.06);
}
.ctab-tabs {
  display: flex;
  border-bottom: 1px solid var(--rule);
  background: var(--bg);
  overflow-x: auto;
  scrollbar-width: none;
}
.ctab-tabs::-webkit-scrollbar { display: none; }
.ctab-tab {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: clamp(12px,1.8vh,18px) clamp(18px,2.5vw,28px);
  font-family: 'Outfit', sans-serif;
  font-size: clamp(13px,1.1vw,15px);
  font-weight: 700;
  color: var(--muted);
  background: transparent;
  border: none;
  border-bottom: 3px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: color .18s, border-color .18s, background .18s;
  flex-shrink: 0;
}
.ctab-tab:hover { color: var(--ink); background: rgba(0,0,0,.02); }
.ctab-tab.active {
  color: var(--blue);
  border-bottom-color: var(--blue);
  background: var(--white);
}
.ctab-icon { font-size: 16px; line-height: 1; }

/* Form panels */
.ctab-panels { position: relative; }
.ctab-panel { display: none; }
.ctab-panel.active { display: block; animation: ctabIn .25s var(--ease); }
@keyframes ctabIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.ctab-form-wrap {
  padding: clamp(20px,3vw,36px);
}
.ctab-empty {
  padding: clamp(32px,5vh,56px) clamp(24px,4vw,40px);
  text-align: center;
  color: var(--muted);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.ctab-empty p { font-size: 14px; line-height: 1.7; max-width: 400px; }

/* ═══════════════════════════════════════════════════
   CF7 FORMS — Contact Page
   ═══════════════════════════════════════════════════ */

.ctab-form-wrap {
  padding: clamp(20px,3vw,32px);
}

/* ── General Enquiry form — .ctf-row / .ctf-field structure ── */
.ctab-form-wrap .ctf-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 18px;
  margin-bottom: 14px;
}
.ctab-form-wrap .ctf-field {
  display: flex;
  flex-direction: column;
}
.ctab-form-wrap .ctf-field p {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.ctab-form-wrap .ctf-field > p {
  flex: 1;
}

/* ── Partner form — .cf7-row structure ── */
.ctab-form-wrap .cf7-row {
  margin-bottom: 14px;
}
.ctab-form-wrap .cf7-row p {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* ── Shared label styles ── */
.ctab-form-wrap label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--ink);
  display: block;
  margin-bottom: 5px;
  line-height: 1.4;
}

/* Hide the <br> CF7 inserts between label and input */
.ctab-form-wrap br { display: none; }

/* ── Input/select/textarea base ── */
.ctab-form-wrap .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}
.ctab-form-wrap input[type="text"],
.ctab-form-wrap input[type="email"],
.ctab-form-wrap input[type="tel"],
.ctab-form-wrap input[type="number"],
.ctab-form-wrap input[type="url"],
.ctab-form-wrap select,
.ctab-form-wrap textarea {
  width: 100%;
  padding: 10px 14px;
  border: 1.5px solid var(--rule);
  border-radius: 6px;
  font-family: 'Source Sans 3', sans-serif;
  font-size: 14px;
  color: var(--ink);
  background: var(--white);
  outline: none;
  transition: border-color .18s, box-shadow .18s;
  box-sizing: border-box;
  appearance: none;
  -webkit-appearance: none;
  display: block;
}
.ctab-form-wrap input:focus,
.ctab-form-wrap select:focus,
.ctab-form-wrap textarea:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(11,77,144,.07);
}
.ctab-form-wrap textarea {
  resize: vertical;
  min-height: 110px;
  line-height: 1.6;
}
.ctab-form-wrap select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23637D92' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 36px;
  cursor: pointer;
}

/* ── Standalone fields not in a row ── */
.ctab-form-wrap .wpcf7-form > .ctf-field,
.ctab-form-wrap .wpcf7-form > p {
  margin-bottom: 14px;
}
.ctab-form-wrap .wpcf7-form > p:last-of-type {
  margin-bottom: 0;
}

/* ── Submit button ── */
.ctab-form-wrap input[type="submit"] {
  width: 100%;
  padding: 12px 24px;
  background: var(--blue);
  color: #fff;
  border: none;
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: background .18s;
  margin-top: 6px;
  letter-spacing: .04em;
}
.ctab-form-wrap input[type="submit"]:hover { background: var(--teal); }

/* ── Validation ── */
.ctab-form-wrap .wpcf7-not-valid-tip {
  font-size: 11px;
  color: #c0392b;
  margin-top: 3px;
  display: block;
}
.ctab-form-wrap .wpcf7-form-control.wpcf7-not-valid {
  border-color: #c0392b;
}

/* ── Response output ── */
.ctab-form-wrap .wpcf7-response-output {
  border-radius: var(--r);
  padding: 10px 14px;
  font-size: 13px;
  margin-top: 12px;
  border: none !important;
}
.ctab-form-wrap .wpcf7-mail-sent-ok {
  background: rgba(0,164,159,.08);
  color: var(--teal);
  border-left: 3px solid var(--teal) !important;
}
.ctab-form-wrap .wpcf7-mail-sent-ng,
.ctab-form-wrap .wpcf7-validation-errors {
  background: rgba(192,57,43,.06);
  color: #c0392b;
  border-left: 3px solid #c0392b !important;
}

/* ── Info cards ── */
.cinfo-grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: clamp(12px,1.8vw,20px);
  margin-bottom: clamp(20px,3vh,32px);
}
.cinfo-card {
  background: var(--white);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  padding: clamp(16px,2vw,24px);
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: border-color .2s, box-shadow .2s;
}
.cinfo-card:hover {
  border-color: var(--teal);
  box-shadow: 0 4px 16px rgba(10,24,40,.07);
}
.cinfo-card-icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  background: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--blue);
  margin-bottom: 4px;
  flex-shrink: 0;
}
.cinfo-card-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted);
}
.cinfo-card-value {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(14px,1.2vw,17px);
  font-weight: 700;
  color: var(--ink);
  text-decoration: none;
  line-height: 1.2;
  display: block;
  transition: color .15s;
}
a.cinfo-card-value:hover { color: var(--blue); }
.cinfo-card-sub {
  font-size: 11px;
  color: var(--muted);
  line-height: 1.5;
}

/* ── Map ── */
.cinfo-map {
  border-radius: var(--r);
  overflow: hidden;
  border: 1.5px solid var(--rule);
}

/* ── Mobile ── */
@media (max-width: 900px) {
  .cinfo-grid { grid-template-columns: 1fr 1fr; }
  .ctab-form-wrap .ctf-row { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .cinfo-grid { grid-template-columns: 1fr; }
  .ctab-tabs { gap: 0; }
  .ctab-tab { padding: 10px 14px; font-size: 12px; }
  .ctab-form-wrap { padding: 16px; }
  .ctab-form-wrap .ctf-row,
  .ctab-form-wrap .cf7-row { margin-bottom: 12px; }
}

/* ═══════════════════════════════════════════════════
   WHAT WE DO — IMAGE SERVICE CARDS (Design A)
   ═══════════════════════════════════════════════════ */

.svc-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: clamp(20px,4vw,56px);
  flex-wrap: wrap;
  margin-bottom: clamp(14px,2vh,22px);
}

.svc-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: clamp(10px,1.4vw,16px);
}

/* Card */
.svc-card {
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
  border: 1.5px solid var(--rule);
  background: var(--white);
  display: flex;
  flex-direction: column;
  text-decoration: none;
  cursor: default;
  transition: border-color .22s, box-shadow .22s, transform .22s;
}
a.svc-card { cursor: pointer; }
.svc-card:hover {
  border-color: var(--teal);
  box-shadow: 0 6px 24px rgba(10,24,40,.10);
  transform: translateY(-3px);
}

/* Image area — 70% of card */
.svc-card-bg {
  width: 100%;
  aspect-ratio: 16/9;
  background-size: cover;
  background-position: center;
  flex-shrink: 0;
  transition: transform .65s cubic-bezier(.16,1,.3,1);
  position: relative;
}
.svc-card:hover .svc-card-bg { transform: scale(1.04); }

/* Teal accent line — draws in on hover */
.svc-card-bg::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(to right, var(--blue), var(--teal));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--ease);
}
.svc-card:hover .svc-card-bg::after { transform: scaleX(1); }

/* Division badge on image */
.svc-badge {
  position: absolute;
  top: 10px;
  left: 10px;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #fff;
  padding: 2px 7px;
  border-radius: 3px;
  z-index: 2;
}
.svc-badge-cons { background: rgba(11,77,144,.88); }
.svc-badge-auto { background: rgba(0,164,159,.88); }

/* Text panel — white, below image */
.svc-card-body {
  padding: clamp(12px,1.6vw,18px);
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1;
}
.svc-card-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(13px,1.1vw,15px);
  font-weight: 700;
  color: var(--ink);
  line-height: 1.2;
}
.svc-card-desc {
  font-size: clamp(11px,.9vw,12.5px);
  line-height: 1.6;
  color: var(--muted);
  margin: 0;
  flex: 1;
}
.svc-card-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--blue);
  margin-top: 4px;
  transition: color .18s, gap .18s;
}
.svc-card:hover .svc-card-link {
  color: var(--teal);
  gap: 7px;
}

/* Mobile */
@media (max-width: 900px) {
  .svc-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 480px) {
  .svc-grid { grid-template-columns: 1fr; }
}



/* ═══════════════════════════════════════════════════
   INDUSTRIES TICKER
   ═══════════════════════════════════════════════════ */

.ind-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: clamp(20px,3vw,40px);
  flex-wrap: wrap;
  margin-bottom: clamp(28px,4vh,44px);
}

/* Ticker rail */
.ind-ticker-rail {
  overflow: hidden;
  padding: clamp(18px,3vh,28px) 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  -webkit-mask-image: linear-gradient(to right,transparent 0%,black 5%,black 95%,transparent 100%);
  mask-image: linear-gradient(to right,transparent 0%,black 5%,black 95%,transparent 100%);
}
.ind-ticker-track {
  display: flex;
  align-items: center;
  gap: 12px;
  width: max-content;
  animation: indScroll 40s linear infinite;
}
.ind-ticker-track:hover { animation-play-state: paused; }
@keyframes indScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-33.333%); }
}

/* Pills — larger and more prominent */
.tk-pill {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: clamp(12px,1.8vh,18px) clamp(20px,2.5vw,32px);
  border-radius: 100px;
  border: 1.5px solid var(--rule);
  background: var(--white);
  white-space: nowrap;
  cursor: default;
  flex-shrink: 0;
  transition: border-color .22s, background .22s, box-shadow .22s;
}
.tk-pill:hover {
  border-color: var(--teal);
  background: rgba(0,164,159,.04);
  box-shadow: 0 4px 16px rgba(0,164,159,.08);
}
.tk-pill:hover .tk-label { color: var(--teal); }
.tk-pill:hover .tk-icon svg { stroke: var(--teal); }

.tk-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.tk-icon svg {
  stroke: var(--muted);
  transition: stroke .22s;
}
.tk-label {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(13px,1.2vw,16px);
  font-weight: 700;
  color: var(--body);
  letter-spacing: .02em;
  transition: color .22s;
}
.tk-sep {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--rule);
  flex-shrink: 0;
  margin: 0 4px;
}

@media (max-width: 768px) {
  .ind-header { flex-direction: column; align-items: flex-start; }
  .tk-pill { padding: 10px 18px; }
  .tk-label { font-size: 13px; }
}


/* ═══════════════════════════════════════════════════
   PHOTO GALLERY v2 — Split panel layout
   ═══════════════════════════════════════════════════ */

.pgal2-frame { overflow: hidden; }

.pgal2-wrap {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: clamp(24px,3vw,48px);
  align-items: stretch;
  min-height: clamp(480px,72vh,760px);
}

/* LEFT panel */
.pgal2-left {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: clamp(12px,1.8vh,20px);
  padding: clamp(16px,2vh,28px) 0;
}
.pgal2-eyebrow {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--teal);
}
.pgal2-heading {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(28px,3.2vw,52px);
  font-weight: 900;
  color: var(--ink);
  line-height: 1;
  margin: 0;
  text-transform: uppercase;
  letter-spacing: .01em;
}
.pgal2-subtext {
  font-size: clamp(13px,1.1vw,15px);
  line-height: 1.72;
  color: var(--body);
  margin: 0;
}
.pgal2-bullets {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.pgal2-bullets li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: clamp(11px,.95vw,13px);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--ink);
}
.pgal2-bullets li::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--teal);
  flex-shrink: 0;
}
.pgal2-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 22px;
  background: var(--ink);
  color: #fff;
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s;
  align-self: flex-start;
  margin-top: 4px;
}
.pgal2-btn:hover { background: var(--blue); }

/* RIGHT panel */
.pgal2-right {
  display: grid;
  grid-template-columns: 1fr 38%;
  gap: clamp(6px,1vw,10px);
  min-height: 0;
}

/* Featured image */
.pgal2-featured {
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
  background: var(--ink);
}
.pgal2-feat-slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity .6s var(--ease);
}
.pgal2-feat-slide.active { opacity: 1; }

/* Bottom bar on featured */
.pgal2-feat-bar {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: clamp(12px,2vw,20px);
  background: linear-gradient(to top, rgba(10,24,40,.92) 0%, transparent 100%);
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
}
.pgal2-feat-counter {
  display: flex;
  align-items: baseline;
  gap: 4px;
}
.pgal2-feat-cur {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,2vw,28px);
  font-weight: 900;
  color: #fff;
  line-height: 1;
}
.pgal2-feat-sep {
  font-size: 11px;
  color: rgba(255,255,255,.5);
  font-weight: 600;
}
.pgal2-feat-label {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--teal);
  margin-left: 6px;
}
.pgal2-feat-name {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(11px,1vw,13px);
  font-weight: 700;
  letter-spacing: .06em;
  color: #fff;
  text-align: right;
  max-width: 55%;
  line-height: 1.3;
}

/* Arrows */
.pgal2-prev,
.pgal2-next {
  position: absolute;
  bottom: clamp(12px,2vw,20px);
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(255,255,255,.12);
  border: 1.5px solid rgba(255,255,255,.28);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .18s;
  z-index: 10;
  backdrop-filter: blur(4px);
}
.pgal2-prev { left: clamp(10px,1.5vw,18px); }
.pgal2-next { left: calc(clamp(10px,1.5vw,18px) + 44px); }
.pgal2-prev:hover,
.pgal2-next:hover { background: rgba(255,255,255,.25); }

/* Corner brackets — decorative */
.pgal2-featured::before,
.pgal2-featured::after {
  content: '';
  position: absolute;
  width: 18px;
  height: 18px;
  z-index: 5;
  pointer-events: none;
}
.pgal2-featured::before {
  top: 12px; left: 12px;
  border-top: 2px solid var(--teal);
  border-left: 2px solid var(--teal);
}
.pgal2-featured::after {
  bottom: 12px; right: 12px;
  border-bottom: 2px solid var(--blue);
  border-right: 2px solid var(--blue);
}

/* Side tiles */
.pgal2-side {
  display: grid;
  grid-template-rows: 1fr 1fr;
  gap: clamp(6px,1vw,10px);
}
.pgal2-side-tile {
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
  background: var(--ink);
  background-size: cover;
  background-position: center;
  transition: transform .5s var(--ease);
}
.pgal2-side-tile:hover { transform: scale(1.02); }
.pgal2-side-tile::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(10,24,40,.85) 0%, rgba(10,24,40,.2) 60%, transparent 100%);
}
.pgal2-side-badge {
  position: absolute;
  top: 10px;
  left: 10px;
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: .14em;
  color: #fff;
  background: rgba(11,77,144,.85);
  padding: 3px 9px;
  border-radius: 3px;
  z-index: 2;
}
.pgal2-side-name {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: clamp(8px,1.2vw,14px);
  font-family: 'Outfit', sans-serif;
  font-size: clamp(10px,.9vw,12px);
  font-weight: 700;
  letter-spacing: .06em;
  color: #fff;
  z-index: 2;
  line-height: 1.3;
}

/* Mobile */
@media (max-width: 900px) {
  .pgal2-wrap {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .pgal2-left { padding: 0; }
  .pgal2-right {
    grid-template-columns: 1fr;
    height: clamp(400px,60vw,560px);
  }
  .pgal2-featured { min-height: clamp(260px,40vw,360px); }
  .pgal2-side { grid-template-rows: none; grid-template-columns: 1fr 1fr; }
  .pgal2-side-tile { min-height: clamp(120px,18vw,180px); }
}
@media (max-width: 480px) {
  .pgal2-right { height: auto; }
  .pgal2-featured { min-height: 240px; }
  .pgal2-side { grid-template-columns: 1fr; }
  .pgal2-side-tile { min-height: 140px; }
}



/* ═══════════════════════════════════════════════════
   CTA BAND — compact cream strip
   ═══════════════════════════════════════════════════ */

.bg-cream { background: #F4F1EA; }
#cta.frame {
  position: relative;
  padding: 0;
  border-top: 2.4px solid var(--teal);
}
/* Traveling "weld spark" glow along the top border — same motif as the
   old cta-dark-* divider's animated spark, moved to the new edge-to-
   edge line. */
#cta.frame::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0%;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--teal);
  box-shadow: 0 0 12px 4px rgba(0,164,159,.7), 0 0 26px 8px rgba(0,164,159,.3);
  transform: translate(-50%,-50%);
  animation: ctaBandSpark 4.5s ease-in-out infinite;
  pointer-events: none;
}
@keyframes ctaBandSpark {
  0%   { left: 0%;   opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { left: 100%; opacity: 0; }
}

.cta-band {
  display: flex;
  align-items: center;
  gap: clamp(20px,2.6vw,32px);
  padding: 18px 0;
}
.cta-band-heading {
  flex: 1 1 auto;
  font-family: 'Outfit', sans-serif;
  font-size: clamp(24px,2vw,36px);
  font-weight: 800;
  color: var(--ink);
  text-transform: uppercase;
  letter-spacing: -.015em;
  line-height: 1;
  margin: 0;
}
.cta-band-accent { color: var(--blue); }
.cta-band-divider {
  flex: 0 0 auto;
  width: 1px;
  align-self: stretch;
  background: rgba(10,24,40,.14);
}
.cta-band-note {
  flex: 1 1 260px;
  max-width: 320px;
  font-size: clamp(13px,1vw,14.5px);
  line-height: 1.45;
  color: var(--body);
  margin: 0;
}
.cta-band-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: clamp(16px,2vw,28px);
}
.cta-band-link {
  font-size: clamp(13px,1vw,14.5px);
  font-weight: 600;
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 3px;
  white-space: nowrap;
  transition: color .18s;
}
.cta-band-link:hover { color: var(--blue); }
.cta-band-btn {
  height: 50px;
  padding: 0 24px;
  font-size: 15px;
  font-weight: 600;
  gap: 10px;
  border-radius: 3px;
}

/* Tablet */
@media (max-width: 900px) {
  .cta-band {
    flex-wrap: wrap;
  }
  .cta-band-divider { display: none; }
  .cta-band-heading { flex: 1 1 100%; }
  .cta-band-note { flex: 1 1 auto; }
}

/* Mobile */
@media (max-width: 480px) {
  .cta-band {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }
  .cta-band-actions {
    width: 100%;
    justify-content: space-between;
  }
}


/* ═══════════════════════════════════════════════════
   OUR STORY — 3-col timeline grid
   ═══════════════════════════════════════════════════ */

.story-grid {
  display: grid !important;
  grid-template-columns: 1fr 1.1fr 1fr !important;
  gap: clamp(10px,1.5vw,16px);
  align-items: stretch;
}

.story-cards-left,
.story-cards-right {
  display: flex !important;
  flex-direction: column;
  gap: clamp(10px,1.5vw,16px);
  min-width: 0;
}

.story-card {
  flex: 1;
  background: var(--bg);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--blue);
  border-radius: var(--r);
  padding: clamp(16px,2vw,24px);
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: border-color .22s, box-shadow .22s;
  min-width: 0;
}
.story-card:hover {
  border-left-color: var(--teal);
  box-shadow: 0 4px 20px rgba(10,24,40,.07);
}
.story-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}
.story-card-year {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,1.8vw,26px);
  font-weight: 900;
  color: var(--teal);
  line-height: 1;
}
.story-card-count {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--muted);
}
.story-card-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(14px,1.2vw,17px);
  font-weight: 700;
  color: var(--ink);
  line-height: 1.2;
}
.story-card-body {
  font-size: clamp(12px,1vw,13.5px);
  line-height: 1.65;
  color: var(--body);
  margin: 0;
}

.story-img-wrap {
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
  background: var(--ink);
  min-height: clamp(300px,40vh,520px);
  min-width: 0;
}
.story-img-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform .7s var(--ease);
}
.story-img-wrap:hover .story-img-bg { transform: scale(1.03); }
.story-img-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top,rgba(10,24,40,.75) 0%,rgba(10,24,40,.1) 60%,transparent 100%);
}
.story-img-cap {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: clamp(12px,1.8vw,18px);
  font-family: 'Outfit', sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  color: rgba(255,255,255,.7);
  z-index: 2;
}

@media (max-width: 900px) {
  .story-grid {
    grid-template-columns: 1fr 1fr !important;
  }
  .story-img-wrap {
    grid-column: 1 / -1;
    min-height: clamp(200px,35vw,320px);
    order: -1;
  }
}

@media (max-width: 560px) {
  .story-grid { grid-template-columns: 1fr !important; }
  .story-img-wrap { min-height: 220px; order: 0; }
}


/* ── TRUE 1920px DESKTOP SCALE-UP ── */
@media (min-width: 1500px) {

  /* --mw/--frame-pad breakpoint jump removed here (fluid-scaling-v2)
     -- both are now continuous clamp() values in the base :root
     block, so this tier no longer needs its own override.

     2026-08-20: every value below raised by a flat +25% ceiling (Nick's
     own reference point -- he found that zooming a page to 125% at
     100% OS scaling is exactly the "comfortably readable" size he
     wants on wide Desktop screens, vs. how small it read at 100% zoom).
     Same anchor method as before: floor = today's exact value AT
     1500px (zero seam right at the breakpoint, so nothing changes on
     a typical laptop), ceiling = old ceiling x1.25 reached by 2560px.
     Mobile/laptop below 1500px are completely untouched -- confirmed
     with Nick this pass is Desktop/wide-screens only. */

  /* Bigger container padding */
  .container {
    padding-left: clamp(48px, calc(3.9623vw + -11.434px), 90px) !important;
    padding-right: clamp(48px, calc(3.9623vw + -11.434px), 90px) !important;
  }

  /* Bigger gaps */
  .col-2 { gap: clamp(56px, calc(6.0377vw + -34.566px), 120px) !important; }
  .col-3 { gap: clamp(28px, calc(2.0755vw + -3.132px), 50px) !important; }
  .col-4 { gap: clamp(20px, calc(1.4151vw + -1.226px), 35px) !important; }

  /* Bigger cards */
  .card {
    padding: clamp(28px, calc(2.0755vw + -3.132px), 50px) !important;
  }
  .card-h {
    font-size: clamp(18px, calc(1.1321vw + 1.019px), 30px) !important;
  }
  .card-p {
    font-size: clamp(15px, calc(0.7075vw + 4.387px), 22.5px) !important;
  }

  /* Hero text */
  .hero-h {
  font-size: clamp(26px, calc(3.6792vw + -29.189px), 65px) !important;
}
  .hero-p {
    font-size: clamp(16px, calc(0.8491vw + 3.264px), 25px) !important;
    max-width: 520px !important;
  }
  .page-hero-h {
    font-size: clamp(52px, calc(5.4717vw + -30.075px), 110px) !important;
  }
  .page-hero-sub {
    font-size: clamp(16px, calc(0.8491vw + 3.264px), 25px) !important;
  }

  /* Nav — was clamp(14px,1vw,16px), which saturated at its 16px
     ceiling the instant this block activated and never grew again on
     any wider screen. Re-anchored so 1500px still resolves to today's
     16px (zero change right at the breakpoint) and keeps ramping up to
     23.75px by 2560px (+25% ceiling pass). */
  .nav-link,
  .nav-drop-btn {
    font-size: clamp(16px, calc(0.7311vw + 5.033px), 23.75px) !important;
    font-weight: 600 !important;
  }
  .hdr-cta {
    padding: clamp(12px, calc(0.2830vw + 7.755px), 15px) clamp(28px, calc(0.6604vw + 18.094px), 35px) !important;
    font-size: clamp(15px, calc(0.7075vw + 4.387px), 22.5px) !important;
    font-weight: 700 !important;
  }

  /* Topbar / logo / dropdown-panel text — previously flat px at every
     width, even on wide desktop. Anchored the same way: exact current
     value at 1500px, ramps to a bigger ceiling by 2560px. Keep the
     topbar ceilings conservative -- .hdr-topbar is height:44px with
     overflow:hidden (search "Header Changes START" below), so pill/
     text content must not grow past what that clipped height allows. */
  .hdr-top-item {
    font-size: clamp(13px, calc(0.5425vw + 4.863px), 18.75px) !important;
    font-weight: 700 !important;
  }
  .hdr-top-pill {
    font-size: clamp(13.5px, calc(0.5542vw + 5.186px), 19.375px) !important;
  }
  .hdr-top-pill-ghost {
    font-size: clamp(11px, calc(0.4363vw + 4.455px), 15.625px) !important;
  }
  .wm-name {
    font-size: clamp(21px, calc(1.0849vw + 4.726px), 32.5px) !important;
  }
  .wm-tag {
    font-size: clamp(8px, calc(0.3656vw + 2.517px), 11.875px) !important;
  }
  .nav-panel-eyebrow {
    font-size: clamp(10px, calc(0.3538vw + 4.693px), 13.75px) !important;
  }
  .nav-panel-label {
    font-size: clamp(14px, calc(0.5660vw + 5.509px), 20px) !important;
  }

  /* Buttons */
  .btn-primary,
  .btn-teal,
  .btn-ghost,
  .btn-outline-white {
    padding: clamp(14px, calc(0.3302vw + 9.047px), 17.5px) clamp(36px, calc(0.8491vw + 23.264px), 45px) !important;
    font-size: clamp(15px, calc(0.3538vw + 9.693px), 18.75px) !important;
  }

  /* Image tall */
  .img-tall {
    min-height: clamp(560px,58vh,860px) !important;
  }

  /* Service cards — fix 1452px tall services frame */

  .svc-grid {
    gap: clamp(10px, calc(0.7075vw + -0.613px), 17.5px) !important;
  }
  .svc-card-title {
    font-size: clamp(14px, calc(0.8019vw + 1.972px), 22.5px) !important;
  }
  .svc-card-desc {
    font-size: clamp(12px, calc(0.5189vw + 4.217px), 17.5px) !important;
  }

  /* Frame header */
  .frame-header {
    margin-bottom: clamp(24px,2.5vh,36px) !important;
  }
  .frame-header-copy {
    font-size: clamp(15px, calc(0.7075vw + 4.387px), 22.5px) !important;
  }

  /* Labels */
  .label {
    font-size: clamp(11px, calc(0.2594vw + 7.108px), 13.75px) !important;
    letter-spacing: .22em !important;
  }

  /* Why cards / feat items */
  .feat-h {
    font-size: clamp(16px, calc(0.8491vw + 3.264px), 25px) !important;
  }
  .feat-p {
    font-size: clamp(14px, calc(0.6840vw + 3.741px), 21.25px) !important;
  }

  /* Page hero tag */
  .page-hero-tag {
    font-size: clamp(10px, calc(0.5896vw + 1.156px), 16.25px) !important;
    letter-spacing: .28em !important;
  }

  /* Section headings / body copy — .heading-lg/md/sm and .body-lg/md
     already ramp fluidly from the base :root formula and reach their
     old ceiling ~1920px, but that ceiling itself read as too small on
     wide Desktop. These override just the >=1500px tail: floor = the
     base formula's own value exactly at 1500px (zero seam), ceiling =
     the old true ceiling x1.25, reached by 2560px. */
  .heading-lg {
    font-size: clamp(77.38px, calc(4.634vw + 7.871px), 126.5px) !important;
  }
  .heading-md {
    font-size: clamp(54.205px, calc(3.0231vw + 8.858px), 86.25px) !important;
  }
  .heading-sm {
    font-size: clamp(40.06px, calc(2.1877vw + 7.244px), 63.25px) !important;
  }
  .body-lg {
    font-size: clamp(21.75px, calc(0.9316vw + 7.776px), 31.625px) !important;
  }
  .body-md {
    font-size: clamp(18.94px, calc(0.784vw + 7.181px), 27.25px) !important;
  }
}


/* ═══════════════════════════════════════════════════
   PHOTO GALLERY — Filmstrip
   ═══════════════════════════════════════════════════ */

.film-frame { background: var(--white); }

/* Header */
.film-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: clamp(20px,3vw,40px);
  flex-wrap: nowrap;
  margin-bottom: clamp(12px,2vh,18px);
}
.film-eyebrow {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.film-eyebrow::before {
  content: '';
  width: 24px;
  height: 1.5px;
  background: var(--teal);
  display: inline-block;
}
.film-heading {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(28px,3.5vw,56px);
  font-weight: 900;
  color: var(--ink);
  text-transform: uppercase;
  letter-spacing: .02em;
  line-height: 1;
  margin: 0;
}

/* Filter buttons */
.film-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-start;
  padding-top: 8px;
}
.film-filter-btn {
  padding: 8px 16px;
  border: 1.5px solid var(--rule);
  border-radius: 4px;
  background: transparent;
  font-family: 'Outfit', sans-serif;
  font-size: clamp(10px,.9vw,12px);
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink);
  cursor: pointer;
  transition: background .18s, border-color .18s, color .18s;
  white-space: nowrap;
}
.film-filter-btn:hover {
  border-color: var(--blue);
  color: var(--blue);
}
.film-filter-btn.active {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}

/* Featured viewer */
.film-viewer {
  position: relative;
  width: 100%;
  height: clamp(340px,52vh,560px);
  background: var(--ink);
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: clamp(6px,1vh,10px);
}

/* Corner brackets */
.film-bracket {
  position: absolute;
  width: 22px;
  height: 22px;
  z-index: 10;
  pointer-events: none;
}
.film-bracket-tl {
  top: 14px; left: 14px;
  border-top: 2px solid var(--teal);
  border-left: 2px solid var(--teal);
}
.film-bracket-br {
  bottom: 14px; right: 14px;
  border-bottom: 2px solid var(--teal);
  border-right: 2px solid var(--teal);
}

/* Slides */
.film-slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity .6s var(--ease);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.film-slide.active { opacity: 1; }
.film-slide::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(7,17,31,.55) 0%,
    transparent 35%,
    transparent 55%,
    rgba(7,17,31,.85) 100%
  );
}

/* Top bar */
.film-slide-top {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: clamp(14px,2vw,22px) clamp(16px,2.5vw,28px);
}
.film-slide-badge {
  font-family: 'Outfit', sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .14em;
  color: #fff;
  background: rgba(11,77,144,.75);
  padding: 4px 10px;
  border-radius: 3px;
}
.film-slide-counter {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(11px,1vw,14px);
  font-weight: 700;
  letter-spacing: .08em;
  color: rgba(255,255,255,.7);
}
.film-cur {
  font-size: clamp(16px,1.5vw,22px);
  font-weight: 900;
  color: #fff;
}

/* Bottom bar */
.film-slide-bottom {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  padding: clamp(14px,2vw,22px) clamp(16px,2.5vw,28px);
  gap: 16px;
}
.film-slide-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(16px,1.8vw,28px);
  font-weight: 700;
  color: #fff;
  line-height: 1.2;
  margin-bottom: 4px;
}
.film-slide-loc {
  font-family: 'Courier New', monospace;
  font-size: clamp(11px,1vw,14px);
  color: rgba(255,255,255,.55);
  letter-spacing: .06em;
}

/* Arrows */
.film-slide-arrows {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}
.film-arrow {
  width: clamp(36px,3vw,48px);
  height: clamp(36px,3vw,48px);
  background: rgba(255,255,255,.12);
  border: 1.5px solid rgba(255,255,255,.3);
  border-radius: 4px;
  color: #fff;
  font-size: clamp(20px,2vw,28px);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .18s, border-color .18s;
  line-height: 1;
}
.film-arrow:hover {
  background: rgba(255,255,255,.25);
  border-color: rgba(255,255,255,.6);
}

/* Filmstrip */
.film-strip {
  display: grid;
  grid-template-columns: repeat(6,1fr);
  gap: clamp(4px,.5vw,6px);
  width: 100%;
}
.film-thumb {
  position: relative;
  height: clamp(70px,9vh,100px);
  background-size: cover;
  background-position: center;
  background-color: var(--ink);
  border-radius: 3px;
  cursor: pointer;
  overflow: hidden;
  border: 2px solid transparent;
  transition: border-color .2s, opacity .2s;
  opacity: .7;
}
.film-thumb::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(7,17,31,.4);
  transition: background .2s;
}
.film-thumb:hover { opacity: 1; }
.film-thumb:hover::before { background: rgba(7,17,31,.2); }
.film-thumb.active {
  border-color: var(--teal);
  opacity: 1;
}
.film-thumb.active::before { background: rgba(7,17,31,.15); }
.film-thumb-badge {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 5px 7px;
  font-family: 'Outfit', sans-serif;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .1em;
  color: rgba(255,255,255,.85);
  background: linear-gradient(to top,rgba(7,17,31,.8),transparent);
  z-index: 2;
}

/* Mobile */
@media (max-width: 900px) {
  .film-header { flex-direction: column; gap: 12px; }
  .film-viewer { aspect-ratio: 16/9; }
  .film-strip { grid-template-columns: repeat(4,1fr); }
}
@media (max-width: 560px) {
  .film-strip { grid-template-columns: repeat(3,1fr); }
  .film-filters { gap: 6px; }
  .film-filter-btn { padding: 6px 10px; font-size: 10px; }
}


/* ═══════════════════════════════════════════════════
   PROJECT POPUP MODAL — v3 (full-width carousel + details panel)
   ═══════════════════════════════════════════════════ */

#proj-popup {
  position: fixed;
  inset: 0;
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(16px,3vw,40px);
}

.pp-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(7,17,31,.85);
  backdrop-filter: blur(8px);
}

.pp-modal {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: min(1600px, 94vw);
  /* A fixed height (not max-height) on purpose -- the drag-to-resize
     handle below needs real, consistent space to redistribute between
     the carousel and the text content; an auto-sizing modal would give
     it nothing to work with on a short-content project. */
  height: 92vh;
  border-radius: 0;
  overflow: hidden;
  box-shadow: 0 40px 100px rgba(7,17,31,.5);
  background: var(--white);
  animation: ppZoomIn .25s ease;
}
@keyframes ppZoomIn {
  from { opacity: 0; transform: scale(.96); }
  to   { opacity: 1; transform: scale(1); }
}

.pp-close {
  position: absolute;
  top: 18px;
  right: 18px;
  width: 38px;
  height: 38px;
  border-radius: 0;
  border: 1.5px solid rgba(255,255,255,.35);
  background: rgba(7,17,31,.4);
  color: #fff;
  font-size: 15px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .18s, transform .18s;
  z-index: 20;
  backdrop-filter: blur(4px);
}
.pp-close:hover {
  background: rgba(7,17,31,.75);
  transform: rotate(90deg);
}

/* ── Carousel (full-width, dark, diagonal-stripe placeholder for
   any slide without a real uploaded photo yet). Height is driven by
   --pp-carousel-h (set per drag-split state below, or live during an
   active drag via inline style from footer.php's ppResizeMove()) --
   the .35s transition is what makes the 3-state snap feel animated;
   .pp-dragging disables it while the pointer is actually moving so
   the carousel tracks 1:1 instead of lagging. ── */
.pp-carousel {
  position: relative;
  width: 100%;
  height: var(--pp-carousel-h, 50%);
  min-height: 0;
  flex-shrink: 0;
  overflow: hidden;
  background: #0B1B2E;
  background-image: repeating-linear-gradient(135deg, rgba(0,164,159,.09) 0 2px, transparent 2px 14px);
  transition: height .35s cubic-bezier(.25,.8,.4,1);
}
.pp-carousel.pp-dragging { transition: none; }

/* Three true view modes -- Split (default/even, both halves visible),
   Photos (carousel fills 100% of the space above the bar, text panel
   fully hidden), Details (carousel fully collapsed, text panel fills
   everything). --pp-resize-bar-h keeps the bar's own height in sync
   with the calc() below so "100%" never overflows the modal by the
   bar's height -- overridden once at the mobile breakpoint. */
#proj-popup { --pp-resize-bar-h: 44px; }
#proj-popup.pp-split-image .pp-carousel { --pp-carousel-h: calc(100% - var(--pp-resize-bar-h)); }
#proj-popup.pp-split-image .pp-content  { display: none; }
#proj-popup.pp-split-text  .pp-carousel { --pp-carousel-h: 0%; }

/* ── Resize handle -- sits between the carousel and the text content
   as its own flex child. Contains the 3-button view switcher (direct
   access) plus a small drag grip (free-drag, snaps to the nearest of
   the 3 states on release) -- see footer.php's ppResizeStart/Move/End. ── */
.pp-resize-handle {
  flex-shrink: 0;
  width: 100%;
  height: var(--pp-resize-bar-h, 44px);
  border: none;
  background: var(--bg);
  border-top: 1px solid var(--rule);
  cursor: ns-resize;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 0;
  touch-action: none;
}
.pp-view-switch {
  display: flex;
  gap: 2px;
  background: var(--white);
  border: 1px solid var(--rule);
  padding: 3px;
}
.pp-view-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 7px 12px;
  border: none;
  background: transparent;
  color: var(--muted);
  font-family: 'Outfit', sans-serif;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .15s, color .15s;
  touch-action: none;
}
.pp-view-btn svg { flex-shrink: 0; }
.pp-view-btn:hover { color: var(--ink); }
.pp-view-btn.active { background: var(--teal); color: #fff; }
.pp-resize-grip {
  width: 4px;
  height: 18px;
  background: var(--muted);
  opacity: .3;
  flex-shrink: 0;
  transition: opacity .18s, background .18s;
}
.pp-resize-handle:hover .pp-resize-grip,
.pp-resize-handle:focus-visible .pp-resize-grip {
  opacity: 1;
  background: var(--teal);
}
.pp-resize-handle:focus-visible { outline: 2px solid var(--teal); outline-offset: -2px; }
.pp-slides { position: absolute; inset: 0; }
.pp-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  background-size: cover;
  background-position: center;
  transition: opacity .5s ease;
}
.pp-slide.active { opacity: 1; }
.pp-slide::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(7,17,31,.55) 0%, rgba(7,17,31,.05) 40%, transparent 70%);
}

.pp-cat-badge {
  position: absolute;
  top: 20px;
  left: 20px;
  z-index: 5;
  background: var(--teal);
  color: #fff;
  font-family: 'Outfit', sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  padding: 8px 14px;
  border-radius: 0;
}

.pp-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border-radius: 0;
  border: 1px solid rgba(255,255,255,.3);
  background: rgba(7,17,31,.4);
  color: #fff;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .18s;
  z-index: 5;
  backdrop-filter: blur(4px);
}
.pp-arrow:hover { background: rgba(7,17,31,.75); }
.pp-arrow-prev { left: 20px; }
.pp-arrow-next { right: 20px; }

.pp-slide-caption {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  z-index: 3;
  max-width: 70%;
  text-align: center;
  pointer-events: none;
  color: rgba(255,255,255,.55);
  font-family: 'Courier New', monospace;
  font-size: clamp(14px,1.6vw,22px);
  letter-spacing: .1em;
}

.pp-counter {
  position: absolute;
  bottom: 20px;
  left: 20px;
  z-index: 5;
  font-family: 'Courier New', monospace;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .1em;
  color: rgba(255,255,255,.75);
}

.pp-dots {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  gap: 6px;
}
.pp-dot {
  width: 16px;
  height: 3px;
  border-radius: 0;
  border: none;
  padding: 0;
  cursor: pointer;
  background: rgba(255,255,255,.3);
  transition: background .18s, width .18s;
}
.pp-dot.active { background: var(--teal); width: 26px; }

.pp-carousel-single .pp-arrow,
.pp-carousel-single .pp-dots,
.pp-carousel-single .pp-counter { display: none; }

/* ── Content (below the carousel, this is the scrolling region) ── */
.pp-content {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: clamp(20px,2.4vw,32px) clamp(24px,3vw,44px);
  scrollbar-width: thin;
}
.pp-content::-webkit-scrollbar { width: 6px; }
.pp-content::-webkit-scrollbar-thumb { background: var(--rule); border-radius: 4px; }

.pp-header-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
  padding-bottom: 20px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--rule);
}
.pp-header-left { flex: 1; min-width: 260px; }

.pp-division {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 10px;
}
.pp-division::before {
  content: '';
  width: 16px;
  height: 1.5px;
  background: var(--teal);
  display: inline-block;
  flex-shrink: 0;
}

.pp-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(24px,2.6vw,38px);
  font-weight: 900;
  color: var(--ink);
  line-height: 1.08;
  margin: 0 0 8px;
}
.pp-meta {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  line-height: 1.5;
}
.pp-meta strong { color: var(--ink); font-weight: 800; }

.pp-stats {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  border-radius: 0;
  overflow: hidden;
  flex-shrink: 0;
  min-width: 280px;
}
.pp-stat {
  background: var(--bg);
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.pp-stat-val {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,1.9vw,26px);
  font-weight: 900;
  color: var(--ink);
  line-height: 1;
}
.pp-stat-lbl {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .12em;
  color: var(--muted);
  text-transform: uppercase;
}

/* ── Body: Overview / Scope of Work / Project Details ── */
.pp-body-grid {
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr;
  gap: clamp(20px,2.4vw,36px);
  padding-bottom: 24px;
  align-items: start;
}
.pp-col { min-width: 0; }
.pp-col + .pp-col {
  border-left: 1px solid var(--rule);
  padding-left: clamp(16px,1.8vw,28px);
}
.pp-col-label {
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--teal);
  padding-bottom: 10px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--rule);
}
.pp-desc {
  font-size: clamp(13.5px,1vw,15px);
  font-weight: 500;
  line-height: 1.78;
  color: var(--body);
  margin: 0;
}

.pp-scope {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.pp-scope li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: clamp(13px,1vw,14.5px);
  font-weight: 500;
  color: var(--body);
  line-height: 1.5;
}
.pp-scope li::before {
  content: '◆';
  color: var(--teal);
  font-size: 8px;
  flex-shrink: 0;
  margin-top: 5px;
}

.pp-details-list { display: flex; flex-direction: column; }
.pp-details-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--rule);
}
.pp-details-row:last-child { border-bottom: none; }
.pp-details-label {
  font-family: 'Courier New', monospace;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
  white-space: nowrap;
}
.pp-details-value {
  font-size: 14px;
  font-weight: 800;
  color: var(--ink);
  text-align: right;
}

/* ── Actions ── */
.pp-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  padding-top: 20px;
  border-top: 1px solid var(--rule);
}
.pp-btn-primary {
  padding: 14px 24px;
  background: var(--blue);
  color: #fff;
  border-radius: 0;
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  transition: background .18s;
  white-space: nowrap;
}
.pp-btn-primary:hover { background: var(--teal); }
.pp-btn-ghost {
  padding: 14px 24px;
  background: transparent;
  color: var(--ink);
  border: 1.5px solid var(--rule);
  border-radius: 0;
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  transition: border-color .18s, color .18s;
  white-space: nowrap;
}
.pp-btn-ghost:hover {
  border-color: var(--blue);
  color: var(--blue);
}

/* Tablet -- body grid stacks to one column, header stays side-by-side
   down to the mobile breakpoint since it still fits comfortably. */
@media (max-width: 900px) {
  .pp-body-grid { grid-template-columns: 1fr; gap: 24px; }
  .pp-title { font-size: clamp(22px,4vw,30px); }
}

/* Mobile -- drag-to-resize stays on here too (if anything it's a more
   natural gesture on a touch bottom-sheet than on desktop), just with
   a taller touch target on the handle and this breakpoint's own
   height. */
@media (max-width: 560px) {
  #proj-popup { padding: 0; align-items: flex-end; }
  .pp-modal {
    border-radius: 0;
    height: 94vh;
    animation: ppSlideUp .28s ease;
  }
  @keyframes ppSlideUp {
    from { transform: translateY(40px); opacity: 0; }
    to   { transform: translateY(0); opacity: 1; }
  }
  .pp-view-btn span, .pp-view-btn { font-size: 9.5px; padding: 7px 9px; }
  .pp-cat-badge { top: 14px; left: 14px; font-size: 10px; padding: 6px 10px; }
  .pp-arrow { width: 34px; height: 34px; font-size: 17px; }
  .pp-content { padding: 20px 18px; }
  .pp-header-row { flex-direction: column; align-items: stretch; gap: 14px; }
  .pp-stats { grid-template-columns: repeat(3,1fr); min-width: 0; }
  .pp-stat { padding: 10px 8px; }
  .pp-stat-val { font-size: 16px; }
  .pp-stat-lbl { font-size: 8px; }
  .pp-title { font-size: clamp(20px,6vw,26px); }
  .pp-actions { flex-direction: column; }
  .pp-btn-primary, .pp-btn-ghost { width: 100%; }
  .pp-close { top: 12px; right: 12px; width: 34px; height: 34px; }
}



/* ── Card hover — teal bottom border draw ── */
.svc-card::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  height: 3px;
  width: 0;
  background: linear-gradient(to right, var(--blue), var(--teal));
  transition: width .4s cubic-bezier(.25,.46,.45,.94);
  z-index: 10;
}
.svc-card:hover::after { width: 100%; }

/* ── feat-item hover — left border accent ── */
.feat-item {
  border-left: 3px solid transparent;
  transition: border-color .32s ease, transform .32s ease, box-shadow .32s ease;
}
.feat-item:hover {
  border-left-color: var(--teal);
}

/* ═══════════════════════════════════════════════════
   TOP BAR
   ═══════════════════════════════════════════════════ */
.hdr-topbar {
  background: var(--white);
  border-bottom: 1px solid var(--rule);
  height: 36px;
  display: flex;
  align-items: center;
  position: sticky;
  top: 0;
  z-index: 201;
  transition: transform .3s ease, opacity .3s ease;
}
.hdr-topbar.hidden {
  transform: translateY(-100%);
  opacity: 0;
  pointer-events: none;
}
.hdr-topbar .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.hdr-topbar-left,
.hdr-topbar-right {
  display: flex;
  align-items: center;
  gap: 8px;
}
.hdr-top-item {
  font-size: 11px;
  font-weight: 500;
  color: var(--muted);
  letter-spacing: .04em;
}
.hdr-top-accent {
  font-weight: 700;
  color: var(--teal);
}
.hdr-top-sep {
  color: var(--rule);
  font-size: 11px;
}
.hdr-top-link {
  text-decoration: none;
  transition: color .15s;
}
.hdr-top-link:hover { color: var(--blue); }

/* Update header position to account for topbar */
.site-header {
  position: sticky;
  top: 36px;
  z-index: 200;
}

/* ═══════════════════════════════════════════════════
   HERO SPLIT — redesigned
   ═══════════════════════════════════════════════════ */
.hero-split {
  display: flex;
  height: calc(100svh - var(--stack-h, 140px));
  min-height: 580px;
  background: #07111f;
}
.hero-panel {
  flex: 1;
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  cursor: pointer;
  transition: flex .6s var(--ease);
}
.hero-panel:hover { flex: 1.08; }
.hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  background-color: #07111f;
  transition: transform .9s var(--ease);
  opacity: .35;
}
.hero-panel:hover .hero-bg {
  transform: scale(1.04);
  opacity: .45;
}
.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(7,17,31,.97) 0%,
    rgba(7,17,31,.6) 50%,
    rgba(7,17,31,.2) 100%
  );
}

/* Ghost number */
.hero-num {
  position: absolute;
  top: clamp(16px,4vh,40px);
  right: clamp(20px,3vw,48px);
  font-family: 'Outfit', sans-serif;
  font-size: clamp(80px,12vw,180px);
  font-weight: 900;
  color: rgba(255,255,255,.04);
  line-height: 1;
  pointer-events: none;
  user-select: none;
  letter-spacing: -.02em;
}
.hero-panel.left .hero-num { right: auto; left: clamp(20px,3vw,48px); }

/* Body */
.hero-body {
  position: relative;
  z-index: 3;
  padding: clamp(20px,3.5vh,48px) clamp(24px,3.5vw,56px);
  display: flex;
  flex-direction: column;
  gap: clamp(10px,1.5vh,16px);
  width: 100%;
}

/* Division name */
.hero-division {
  display: flex;
  flex-direction: column;
  gap: 0;
  line-height: 1;
}
.hero-div-thin {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,2.2vw,36px);
  font-weight: 300;
  color: rgba(255,255,255,.7);
  text-transform: uppercase;
  letter-spacing: .08em;
}
.hero-div-bold {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(28px,4vw,64px);
  font-weight: 900;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: .02em;
  line-height: .95;
}

/* Description */
.hero-p {
  font-size: clamp(12px,1vw,15px);
  line-height: 1.65;
  color: rgba(255,255,255,.55);
  max-width: 400px;
  margin: 0;
}

/* Tag pills */
.hero-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.hero-tag-pill {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(8px,.7vw,10px);
  font-weight: 700;
  letter-spacing: .12em;
  color: rgba(255,255,255,.6);
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 3px;
  padding: 4px 10px;
  transition: border-color .2s, color .2s;
}
.hero-panel:hover .hero-tag-pill {
  border-color: rgba(0,164,159,.5);
  color: rgba(255,255,255,.85);
}

/* Button */
.hero-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: clamp(10px,1.2vh,14px) clamp(18px,2vw,28px);
  border-radius: var(--r);
  background: rgba(255,255,255,.08);
  color: #fff;
  border: 1.5px solid rgba(255,255,255,.25);
  font-family: 'Outfit', sans-serif;
  font-size: clamp(12px,.95vw,14px);
  font-weight: 700;
  text-decoration: none;
  backdrop-filter: blur(4px);
  transition: background .18s, border-color .18s;
  align-self: flex-start;
}
.hero-btn:hover {
  background: rgba(255,255,255,.16);
  border-color: rgba(255,255,255,.6);
}

/* Divider + OR */
.hero-divider {
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 1px;
  background: linear-gradient(
    to bottom,
    transparent 0%,
    rgba(0,164,159,.5) 20%,
    rgba(0,164,159,.8) 50%,
    rgba(0,164,159,.5) 80%,
    transparent 100%
  );
  transform: translateX(-50%);
  z-index: 8;
  pointer-events: none;
}
.hero-or {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  width: clamp(44px,4vw,56px);
  height: clamp(44px,4vw,56px);
  border-radius: 50%;
  background: #07111f;
  border: 2px solid var(--teal);
  box-shadow: 0 0 24px rgba(0,164,159,.5), inset 0 0 12px rgba(0,164,159,.1);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Outfit', sans-serif;
  font-size: clamp(8px,.7vw,10px);
  font-weight: 900;
  letter-spacing: .1em;
  color: var(--teal);
  z-index: 10;
  pointer-events: none;
}

/* Mobile */
@media (max-width: 768px) {
  .hdr-topbar { display: none; }
  .site-header { top: 0; }
  /* Each panel gets its own generous height (matching how much room a
     desktop panel effectively has, just full-width instead of
     half-width) rather than splitting one screen's height 50/50
     between both -- that compressed split was the actual cause of
     content/buttons overflowing each panel's own bounds. .hero-split
     grows to hold both full panels; the visitor scrolls to reach the
     second division, same as the tablet breakpoint just above this
     one already does correctly. */
  .hero-split {
    flex-direction: column;
    height: auto;
    min-height: auto;
  }
  .hero-panel {
    flex: none;
    min-height: calc(100svh - var(--stack-h, 140px));
  }
  .hero-panel:hover { flex: none; }
  .hero-body {
    /* Asymmetric padding -- less above/between elements (reclaims
       vertical room in a short mobile panel), more below the button
       specifically so it always clears the fold with real breathing
       room instead of sitting flush against the panel edge. */
    padding: 14px 18px 22px !important;
    gap: 6px !important;
  }
  .hero-num {
    font-size: clamp(60px,18vw,100px) !important;
    top: 10px !important;
    right: 14px !important;
  }
  .hero-panel.left .hero-num {
    left: auto !important;
    right: 14px !important;
  }
  .hero-div-thin { font-size: clamp(12px,3.4vw,17px) !important; letter-spacing: .1em !important; }
  .hero-div-bold { font-size: clamp(20px,6.4vw,32px) !important; line-height: .96 !important; }
  .hero-p {
    font-size: 11.5px !important;
    line-height: 1.5 !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .hero-tags { gap: 4px; margin-top: 1px; }
  .hero-tag-pill { font-size: 8px !important; padding: 3px 7px !important; }
  .hero-btn { padding: 9px 16px !important; font-size: 11.5px !important; margin-top: 2px; }
  .hero-divider {
    position: relative;
    left: auto; top: auto; bottom: auto;
    width: 100%; height: 1px;
    transform: none;
    background: linear-gradient(to right, transparent, rgba(0,164,159,.6), transparent);
  }
  .hero-or {
    top: 50%; left: 50%;
    transform: translate(-50%,-50%);
    width: 36px; height: 36px;
    font-size: 8px;
  }
}


/* ═══════════════════════════════════════════════════
   SITEMAP PAGE
   ═══════════════════════════════════════════════════ */
.sm-hero { padding-bottom: 0; }
.sm-sub { max-width: 640px; margin-top: 12px; }

.sm-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(28px, 4vw, 56px);
}
.sm-col-title {
  font-family: 'Outfit', sans-serif;
  font-weight: 800;
  font-size: 13px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rule);
}
.sm-links { display: flex; flex-direction: column; gap: 10px; }
.sm-links a {
  color: var(--ink);
  font-size: 15px;
  text-decoration: none;
  transition: color .15s ease;
}
.sm-links a:hover { color: var(--teal); }

@media (max-width: 900px) {
  .sm-grid { grid-template-columns: repeat(2, 1fr); gap: 32px; }
}
@media (max-width: 480px) {
  .sm-grid { grid-template-columns: 1fr; gap: 28px; }
}

/* ────────────────────────────────────────────────────
   Legal Files CSS -- START
   ─────────────────────────────────────────────────── */

/* ═══════════════════════════════════════════════════
   LEGAL PAGES
   ═══════════════════════════════════════════════════ */

/* Progress bar */
.lgl-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  width: 0;
  background: linear-gradient(to right, var(--blue), var(--teal));
  z-index: 9999;
  transition: width .1s linear;
}

.lgl-page { background: var(--white); }

/* Hero */
.lgl-hero {
  background: var(--ink);
  position: relative;
  overflow: hidden;
  padding: clamp(40px,6vh,80px) 0 clamp(32px,5vh,64px);
}
.lgl-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 20% 50%, rgba(11,77,144,.4) 0%, transparent 60%),
              radial-gradient(ellipse at 80% 50%, rgba(0,164,159,.2) 0%, transparent 60%);
}
.lgl-hero-inner {
  position: relative;
  z-index: 2;
}
.lgl-bracket {
  position: absolute;
  width: 20px;
  height: 20px;
  pointer-events: none;
}
.lgl-br-tl { top: 16px; left: 16px; border-top: 2px solid var(--teal); border-left: 2px solid var(--teal); }
.lgl-br-br { bottom: 16px; right: 16px; border-bottom: 2px solid var(--teal); border-right: 2px solid var(--teal); }
.lgl-eyebrow {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: 12px;
}
.lgl-heading {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(28px,4vw,56px);
  font-weight: 900;
  color: #fff;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: .02em;
  margin: 0 0 20px;
}
.lgl-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  font-size: 12px;
  color: rgba(255,255,255,.5);
}
.lgl-meta-item {
  display: flex;
  align-items: center;
  gap: 5px;
}
.lgl-meta-sep { color: rgba(255,255,255,.2); }
.lgl-meta-badge {
  font-family: 'Courier New', monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--teal);
  background: rgba(0,164,159,.12);
  border: 1px solid rgba(0,164,159,.3);
  border-radius: 4px;
  padding: 2px 8px;
}
.lgl-hero-actions {
  display: flex;
  gap: 8px;
  margin-left: auto;
}

/* Buttons */
.lgl-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: var(--blue);
  color: #fff;
  border: none;
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
  transition: background .18s;
}
.lgl-btn-primary:hover { background: var(--teal); }
.lgl-btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: transparent;
  color: rgba(255,255,255,.7);
  border: 1.5px solid rgba(255,255,255,.2);
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: border-color .18s, color .18s;
}
.lgl-btn-ghost:hover { border-color: rgba(255,255,255,.5); color: #fff; }

/* Body layout */
.lgl-body {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: clamp(24px,4vw,56px);
  padding-top: clamp(32px,5vh,56px);
  padding-bottom: clamp(40px,6vh,80px);
  align-items: start;
}

/* TOC */
.lgl-toc {
  position: sticky;
  top: clamp(80px,12vh,120px);
  max-height: calc(100vh - 160px);
  overflow-y: auto;
}
.lgl-toc-label {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rule);
}
.lgl-toc-link {
  display: block;
  font-size: 12px;
  color: var(--muted);
  text-decoration: none;
  padding: 5px 0 5px 10px;
  border-left: 2px solid transparent;
  line-height: 1.4;
  transition: color .15s, border-color .15s;
}
.lgl-toc-link:hover { color: var(--ink); border-left-color: var(--rule); }
.lgl-toc-link.active { color: var(--blue); border-left-color: var(--teal); font-weight: 600; }

/* Sections */
.lgl-section {
  padding-top: clamp(24px,4vh,40px);
  padding-bottom: clamp(24px,4vh,40px);
  border-bottom: 1px solid var(--rule);
}
.lgl-section:first-child { padding-top: 0; }
.lgl-sec-num {
  font-family: 'Courier New', monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .16em;
  color: var(--teal);
  margin-bottom: 8px;
}
.lgl-sec-heading {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,1.8vw,26px);
  font-weight: 700;
  color: var(--ink);
  margin: 0 0 16px;
  line-height: 1.2;
}
.lgl-sec-body {
  font-size: clamp(14px,1.1vw,16px);
  line-height: 1.85;
  color: var(--body);
}
.lgl-sec-body p { margin: 0 0 14px; }
.lgl-sec-body p:last-child { margin-bottom: 0; }
.lgl-sec-body ul, .lgl-sec-body ol { padding-left: 20px; margin: 0 0 14px; }
.lgl-sec-body li { margin-bottom: 6px; }
.lgl-sec-body strong { color: var(--ink); font-weight: 600; }
.lgl-sec-body a { color: var(--blue); text-decoration: underline; }
.lgl-sec-body h3 {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(14px,1.2vw,17px);
  font-weight: 700;
  color: var(--ink);
  margin: 20px 0 8px;
}
.lgl-sec-body table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  margin: 16px 0;
}
.lgl-sec-body th {
  background: var(--bg);
  font-weight: 700;
  font-size: 10px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 8px 12px;
  border: 1px solid var(--rule);
  text-align: left;
}
.lgl-sec-body td {
  padding: 8px 12px;
  border: 1px solid var(--rule);
  vertical-align: top;
}

/* Contact card */
.lgl-contact-card {
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--bg);
  border: 1.5px solid var(--rule);
  border-left: 3px solid var(--teal);
  border-radius: var(--r);
  padding: clamp(16px,2vw,24px);
  margin-top: clamp(24px,4vh,40px);
  flex-wrap: wrap;
}
.lgl-contact-icon {
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: var(--white);
  border: 1px solid var(--rule);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--teal);
  flex-shrink: 0;
}
.lgl-contact-title {
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 3px;
}
.lgl-contact-sub {
  font-size: 13px;
  color: var(--muted);
}
.lgl-contact-sub a { color: var(--blue); text-decoration: none; }
.lgl-contact-card .lgl-btn-primary { margin-left: auto; white-space: nowrap; }

/* Print styles */
@media print {
  .lgl-progress,
  .lgl-toc,
  .lgl-hero-actions,
  .site-header,
  .hdr-topbar,
  .nav-mobile,
  footer { display: none !important; }
  .lgl-body { grid-template-columns: 1fr !important; }
  .lgl-hero { background: #fff !important; color: #000 !important; }
  .lgl-heading { color: #000 !important; }
  .lgl-eyebrow, .lgl-meta { color: #555 !important; }
}

/* Tablet */
@media (max-width: 900px) {
  .lgl-body { grid-template-columns: 1fr; }
  .lgl-toc { display: none; }
}

/* Mobile */
@media (max-width: 560px) {
  .lgl-meta { flex-direction: column; align-items: flex-start; gap: 6px; }
  .lgl-hero-actions { margin-left: 0; }
  .lgl-contact-card { flex-direction: column; align-items: flex-start; }
  .lgl-contact-card .lgl-btn-primary { margin-left: 0; }
}

/* ────────────────────────────────────────────────────
   Legal Files CSS -- END
   ─────────────────────────────────────────────────── */


/* ────────────────────────────────────────────────────
   Careers Page - START
   ─────────────────────────────────────────────────── */

/* ═══════════════════════════════════════════════════
   CAREERS PAGE
   ═══════════════════════════════════════════════════ */

/* Shared eyebrow */
.car-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--teal);
  margin-bottom: clamp(10px,1.5vh,16px);
}
.car-eyebrow-line {
  display: inline-block;
  width: 24px;
  height: 1.5px;
  background: var(--teal);
  flex-shrink: 0;
}

/* Shared section header */
.car-section-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(20px,4vw,56px);
  align-items: end;
  margin-bottom: clamp(24px,4vh,40px);
}
.car-section-h {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(24px,3vw,48px);
  font-weight: 900;
  color: var(--ink);
  text-transform: uppercase;
  line-height: 1;
  margin: 0;
  letter-spacing: .02em;
}
.car-section-sub {
  font-size: clamp(14px,1.1vw,16px);
  line-height: 1.75;
  color: var(--body);
  margin: 0;
  align-self: end;
}

/* Buttons */
.car-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: clamp(11px,1.4vh,14px) clamp(18px,2vw,28px);
  background: var(--blue);
  color: #fff;
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: clamp(13px,1vw,15px);
  font-weight: 700;
  text-decoration: none;
  transition: background .18s;
  white-space: nowrap;
}
.car-btn-primary:hover { background: var(--teal); }
.car-btn-ghost {
  display: inline-flex;
  align-items: center;
  padding: clamp(11px,1.4vh,14px) clamp(18px,2vw,28px);
  background: transparent;
  color: var(--ink);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: clamp(13px,1vw,15px);
  font-weight: 700;
  text-decoration: none;
  transition: border-color .18s, color .18s;
  white-space: nowrap;
}
.car-btn-ghost:hover { border-color: var(--blue); color: var(--blue); }

/* ── F1: HERO ── */
.car-hero {
  background: var(--white);
  padding: clamp(40px,6vh,72px) 0;
}
.car-hero-wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(32px,5vw,72px);
  align-items: center;
}
.car-hero-left {
  display: flex;
  flex-direction: column;
  gap: clamp(14px,2vh,20px);
}
.car-hero-h {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(28px,3.8vw,60px);
  font-weight: 900;
  color: var(--ink);
  text-transform: uppercase;
  line-height: .95;
  letter-spacing: .01em;
  margin: 0;
}
.car-hero-sub {
  font-size: clamp(14px,1.1vw,16px);
  line-height: 1.75;
  color: var(--body);
  margin: 0;
  max-width: 480px;
}
.car-hero-btns {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.car-stats {
  display: flex;
  align-items: center;
  gap: 0;
  padding-top: clamp(16px,2.5vh,24px);
  border-top: 1px solid var(--rule);
  margin-top: 4px;
}
.car-stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 0 clamp(14px,2vw,24px);
}
.car-stat:first-child { padding-left: 0; }
.car-stat-div {
  width: 1px;
  height: 36px;
  background: var(--rule);
  flex-shrink: 0;
}
.car-stat-n {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(20px,2.2vw,32px);
  font-weight: 900;
  color: var(--ink);
  line-height: 1;
}
.car-stat-l {
  font-size: clamp(8px,.7vw,10px);
  font-weight: 700;
  letter-spacing: .14em;
  color: var(--muted);
}
.car-hero-right { height: 100%; }
.car-hero-img {
  position: relative;
  width: 100%;
  height: clamp(400px,60vh,680px);
  background: var(--ink);
  background-size: cover;
  background-position: center;
  border-radius: var(--r);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.car-hero-img-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  color: rgba(255,255,255,.3);
  font-size: 12px;
  text-align: center;
  padding: 20px;
}
.car-hero-img-cap {
  position: absolute;
  bottom: 14px;
  left: 14px;
  font-family: 'Courier New', monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .14em;
  color: rgba(255,255,255,.6);
  background: rgba(10,24,40,.5);
  padding: 4px 8px;
  border-radius: 3px;
  backdrop-filter: blur(4px);
}

/* ── F2: DIVISIONS ── */
.car-div-grid {
  display: grid;
  grid-template-columns: repeat(2,1fr);
  gap: clamp(16px,2vw,28px);
}
.car-div-card {
  background: var(--white);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  padding: clamp(20px,2.5vw,32px);
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: border-color .2s, box-shadow .2s;
}
.car-div-card:hover {
  border-color: var(--teal);
  box-shadow: 0 4px 20px rgba(10,24,40,.07);
}
.car-div-num {
  font-family: 'Courier New', monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .16em;
  color: var(--teal);
}
.car-div-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(16px,1.5vw,22px);
  font-weight: 900;
  color: var(--ink);
  text-transform: uppercase;
  letter-spacing: .04em;
  line-height: 1.1;
  margin: 0;
}
.car-div-desc {
  font-size: clamp(13px,1vw,15px);
  line-height: 1.65;
  color: var(--body);
  margin: 0;
  flex: 1;
}
.car-div-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 4px;
}
.car-div-tag {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--muted);
  border: 1px solid var(--rule);
  border-radius: 3px;
  padding: 3px 8px;
}

/* ── F3: LIFE AT TAKNEK ── */
.car-life-grid {
  display: grid;
  grid-template-columns: 1fr 2fr;
  grid-template-rows: auto auto;
  gap: clamp(6px,0.8vw,10px);
  height: clamp(380px,55vh,620px);
}
.car-life-tile {
  position: relative;
  background: var(--ink);
  background-size: cover;
  background-position: center;
  border-radius: var(--r);
  overflow: hidden;
  display: flex;
  align-items: flex-end;
}
/* Portrait — spans 2 rows */
.car-life-0 {
  grid-column: 1;
  grid-row: 1 / 3;
}
/* Top right — spans 2 columns */
.car-life-1 {
  grid-column: 2;
  grid-row: 1;
}
/* Bottom right split */
.car-life-2 {
  grid-column: 2;
  grid-row: 2;
  /* Override to split into 3 */
}

/* Actually do a more complex grid for the right side */
.car-life-grid {
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
}
.car-life-0 { grid-column: 1; grid-row: 1 / 3; }
.car-life-1 { grid-column: 2 / 4; grid-row: 1; }
.car-life-2 { grid-column: 2; grid-row: 2; }
.car-life-3 { grid-column: 3; grid-row: 2; display: none; }
.car-life-4 { display: none; }

.car-life-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(10,24,40,.75) 0%, transparent 50%);
}
.car-life-cap {
  position: relative;
  z-index: 2;
  padding: clamp(10px,1.5vw,16px);
  font-family: 'Courier New', monospace;
  font-size: clamp(8px,.7vw,10px);
  font-weight: 700;
  letter-spacing: .16em;
  color: rgba(255,255,255,.7);
}
.car-life-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: rgba(255,255,255,.3);
  font-size: 11px;
  text-align: center;
  padding: 16px;
}

/* ── F4: OPEN ROLES ── */
.car-jobs-wrap {
  margin-bottom: clamp(20px,3vh,32px);
}

/* WP Job Manager overrides */
.car-jobs-list .job_filters { display: none !important; }
.car-jobs-list .job-manager-job-listings-rss-link { display: none !important; }
.car-jobs-list .job_types { display: none !important; }
.car-jobs-list ul.job_listings {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: column !important;
}
.car-jobs-list ul.job_listings li.job_listing {
  display: flex !important;
  align-items: center !important;
  gap: 16px !important;
  padding: clamp(16px,2vh,22px) 0 !important;
  border-bottom: 1px solid var(--rule) !important;
  text-decoration: none !important;
  transition: background .15s !important;
}
.car-jobs-list ul.job_listings li.job_listing:first-child {
  border-top: 1px solid var(--rule) !important;
}
.car-jobs-list .job_listing .position {
  flex: 1 !important;
  min-width: 0 !important;
}
.car-jobs-list .job_listing h3 {
  font-family: 'Outfit', sans-serif !important;
  font-size: clamp(16px,1.4vw,20px) !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
  margin: 0 0 6px !important;
  line-height: 1.2 !important;
}
/* Entirely-external listings (functions.php: job_manager_job_listing_class
   filter adds this class) -- link already points straight off-site, this
   just flags that visually on the card itself. */
.car-jobs-list .job_listing.job-external h3::after {
  content: 'External ↗';
  display: inline-block;
  margin-left: 10px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--blue);
  background: rgba(11,77,144,.1);
  border: 1px solid rgba(11,77,144,.25);
  border-radius: 4px;
  padding: 2px 8px;
  vertical-align: middle;
}
.car-jobs-list .job_listing .company {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-size: 12px !important;
  color: var(--muted) !important;
  flex-wrap: wrap !important;
}
.car-jobs-list .job_listing .company::before {
  content: '◆' !important;
  color: var(--teal) !important;
  font-size: 8px !important;
}
.car-jobs-list .job_listing .location {
  font-size: 12px !important;
  color: var(--muted) !important;
}
.car-jobs-list .job_listing ul.job-types {
  display: flex !important;
  gap: 6px !important;
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  flex-shrink: 0 !important;
}
.car-jobs-list .job_listing ul.job-types li {
  font-size: 10px !important;
  font-weight: 700 !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
  color: var(--muted) !important;
  padding: 0 !important;
  background: none !important;
  border: none !important;
}
.car-jobs-list .job_listing .job_listing-apply-link,
.car-jobs-list .job_listing a.button {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 9px 18px !important;
  background: transparent !important;
  color: var(--ink) !important;
  border: 1.5px solid var(--rule) !important;
  border-radius: var(--r) !important;
  font-family: 'Outfit', sans-serif !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  transition: border-color .18s, color .18s, background .18s !important;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
}
.car-jobs-list .job_listing .job_listing-apply-link:hover,
.car-jobs-list .job_listing a.button:hover {
  border-color: var(--blue) !important;
  color: var(--blue) !important;
}
.car-jobs-list .no_job_listings_found {
  text-align: center !important;
  color: var(--muted) !important;
  font-size: 14px !important;
  padding: 40px 24px !important;
  border-top: 1px solid var(--rule) !important;
  border-bottom: 1px solid var(--rule) !important;
}

/* No fit CTA */
.car-no-fit {
  display: flex;
  align-items: center;
  gap: clamp(16px,3vw,40px);
  background: var(--bg);
  border: 1.5px solid var(--rule);
  border-left: 3px solid var(--blue);
  border-radius: var(--r);
  padding: clamp(20px,2.5vw,32px);
  flex-wrap: wrap;
}
.car-no-fit-h {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(16px,1.4vw,20px);
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 4px;
}
.car-no-fit-p {
  font-size: clamp(13px,1vw,15px);
  color: var(--body);
  line-height: 1.6;
  max-width: 520px;
}
.car-no-fit .car-btn-primary { margin-left: auto; flex-shrink: 0; }

/* ── Tablet ── */
@media (max-width: 1024px) {
  .car-hero-wrap { grid-template-columns: 1fr 1fr; gap: 28px; }
}

/* ── Mobile ── */
@media (max-width: 768px) {
  .car-hero { padding: clamp(24px,4vh,40px) 0; }
  .car-hero-wrap { grid-template-columns: 1fr; }
  .car-hero-right { order: -1; }
  .car-hero-img { height: clamp(220px,40vw,320px); }
  .car-section-header { grid-template-columns: 1fr; gap: 12px; }
  .car-div-grid { grid-template-columns: 1fr; }
  .car-div-grid .car-div-card:last-child { grid-column: 1; }
  .car-life-grid {
    grid-template-columns: 1fr 1fr !important;
    grid-template-rows: repeat(3,160px) !important;
    height: auto !important;
  }
  .car-life-0 { grid-column: 1 / -1 !important; grid-row: 1 !important; }
  .car-life-1 { grid-column: 1 !important; grid-row: 2 !important; }
  .car-life-2 { grid-column: 2 !important; grid-row: 2 !important; display: block !important; }
  .car-life-3 { display: none !important; }
  .car-no-fit { flex-direction: column; align-items: flex-start; }
  .car-no-fit .car-btn-primary { margin-left: 0; width: 100%; justify-content: center; }
  .car-stats { flex-wrap: wrap; gap: 12px; }
  .car-stat { padding: 0; }
  .car-stat-div { display: none; }
}

/* ────────────────────────────────────────────────────
   Careers Page - END
   ─────────────────────────────────────────────────── */




/* ── Single Job Listing ── */
.sjl-wrap {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: clamp(24px,4vw,48px);
  align-items: start;
}
.sjl-main { min-width: 0; }
.sjl-content {
  max-width: 760px;
  font-size: clamp(14px,1.1vw,16px);
  line-height: 1.75;
  color: var(--body);
}
.sjl-content h2 {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,1.8vw,24px);
  font-weight: 700;
  color: var(--ink);
  margin: 28px 0 10px;
  padding-bottom: 8px;
  border-bottom: 1.5px solid var(--rule);
}
.sjl-content h3 {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(15px,1.3vw,18px);
  font-weight: 700;
  color: var(--ink);
  margin: 20px 0 8px;
}
.sjl-content ul, .sjl-content ol {
  padding-left: 20px;
  margin: 0 0 16px;
}
.sjl-content li { margin-bottom: 6px; }
.sjl-content p { margin: 0 0 14px; }
.sjl-content strong { color: var(--ink); }

/* Sidebar */
.sjl-sidebar {
  position: sticky;
  top: clamp(80px,12vh,120px);
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.sjl-apply-box {
  background: var(--ink);
  border-radius: var(--r);
  padding: clamp(20px,2.5vw,28px);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sjl-apply-title {
  font-family: 'Outfit', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255,255,255,.5);
}
.sjl-apply-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 13px 20px;
  background: var(--teal);
  color: #fff;
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s;
  text-align: center;
}
.sjl-apply-btn:hover { background: #008f8a; }
.sjl-apply-note {
  font-size: 11px;
  color: rgba(255,255,255,.35);
  text-align: center;
  line-height: 1.5;
}
/* External-apply variant (job's Application field is a URL, not an
   email) -- given its own accent + note so it reads as visibly
   different from the on-site CF7/email apply paths. */
.sjl-apply-btn-external {
  background: var(--blue);
}
.sjl-apply-btn-external:hover { background: #083d75; }
.sjl-apply-note-external {
  color: rgba(255,255,255,.55);
  margin-top: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}
/* #sjl-apply-form (id, not just the class) -- the Customizer's
   Additional CSS has its own ".wpcf7-form label { color: var(--ink) }"
   (equal class-level specificity, loads after this stylesheet, so it
   would otherwise win the tie and force near-black label text onto
   this dark apply box, making every label invisible). The id selector
   here outranks it regardless of load order. */
#sjl-apply-form label {
  display: block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: rgba(255,255,255,.55);
  margin-bottom: 6px;
}
.sjl-apply-form input[type="file"] {
  width: 100%;
  padding: 8px 0;
  color: rgba(255,255,255,.75);
  font-size: 12.5px;
}
.sjl-apply-form .wpcf7-form > p:first-child { margin-top: 0; }
.sjl-details-box {
  background: var(--bg);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  padding: clamp(16px,2vw,22px);
}
.sjl-details-title {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rule);
}
.sjl-details-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sjl-detail-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.sjl-detail-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
}
.sjl-detail-val {
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  text-align: right;
}
.sjl-back {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  text-decoration: none;
  transition: color .15s;
  padding: 4px 0;
}
.sjl-back:hover { color: var(--blue); }

/* Mobile */
@media (max-width: 900px) {
  .sjl-wrap {
    grid-template-columns: 1fr;
  }
  .sjl-sidebar {
    position: relative;
    top: auto;
    order: -1;
  }
}

/* ── Single Job Listing END ── */


/* ═══════════════════════════════════════════════════
   CINEMATIC BAND — full-bleed photo opener + timeline strip
   Replaces both the old page-hero AND the old "Our Story v3"
   section on the About page (page-about.php only) -- a single
   full-bleed photo with a dark scrim for the eyebrow/heading/
   intro up top, and a darker timeline strip along the bottom
   edge of the same photo. Since it now serves as the page's
   opening section, its heading is the page's one <h1>.
   ═══════════════════════════════════════════════════ */
.cband-frame {
  position: relative;
  min-height: clamp(560px, 78vh, 820px);
  overflow: hidden;
  color: #fff;
  display: flex;
  flex-direction: column;
}
.cband-photos { position: absolute; inset: 0; }
/* Belt-and-suspenders: .hero-bg-video is already position:absolute
   (assets/main.css ~883), which should already remove it from
   .cband-frame's flex flow on its own -- this wrapper guarantees it
   regardless, so a video can never affect the flex-column layout
   that positions .cband-band at the bottom. */
.cband-video-wrap { position: absolute; inset: 0; z-index: 1; }
.cband-photo {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  opacity: 0; transition: opacity 1.6s ease;
}
.cband-photo.on { opacity: 1; }
.cband-scrim {
  /* z-index:1 matches .hero-bg-video's own z-index:1 (assets/main.css
     ~883) -- without it the video would paint above this gradient
     regardless of DOM order, since a z-index:auto sibling never beats
     a z-index:1 one no matter which comes later in the markup. */
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(10,24,40,.78) 0%, rgba(10,24,40,.32) 42%, rgba(10,24,40,.4) 65%, rgba(8,18,30,.9) 100%);
}
.cband-top {
  position: relative; z-index: 2;
  padding-top: clamp(72px,12vh,132px);
  max-width: 660px;
}
.cband-eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: clamp(16px,2vw,22px); }
.cband-bar { display: block; flex: none; width: 24px; height: 2px; background: var(--teal); }
.cband-eyebrow span:last-child {
  font-size: 12px; font-weight: 700; letter-spacing: .28em; text-transform: uppercase; color: var(--teal);
}
/* Tag Color ACF option -- default (no extra class needed) is teal,
   matching the rules above. */
.cband-eyebrow.cband-tag-white .cband-bar { background: #fff; }
.cband-eyebrow.cband-tag-white span:last-child { color: #fff; }
.cband-eyebrow.cband-tag-ink .cband-bar { background: var(--ink); }
.cband-eyebrow.cband-tag-ink span:last-child { color: var(--ink); }
.cband-ttl {
  font-family: 'Outfit', sans-serif; font-weight: 900; text-transform: uppercase;
  font-size: clamp(30px, 3.008vw + 8.94px, 66.7px); line-height: .96; letter-spacing: .01em;
  margin: 0 0 clamp(16px,2.2vw,26px); color: #fff;
}
/* Heading Size ACF option -- 'md' matches the toned-down default
   above; sm/lg/xl scale from there. Plain (non-!important) overrides
   are enough since the About page isn't in the sitewide
   taknek-heading-managed scope that would otherwise outrank this. */
.cband-ttl.h-size-sm { font-size: clamp(24px, 1.992vw + 10.06px, 48.3px); }
.cband-ttl.h-size-lg { font-size: clamp(36px, 3.836vw + 9.15px, 82.8px); }
.cband-ttl.h-size-xl { font-size: clamp(42px, 4.852vw + 8.04px, 101.2px); }
.cband-intro {
  font-size: clamp(14.5px,1.15vw,17px); line-height: 1.7; color: rgba(255,255,255,.84);
  max-width: 480px; margin: 0;
}
.cband-band {
  position: relative; z-index: 2; margin-top: auto;
  background: rgba(6,16,28,.6);
  border-top: 1px solid rgba(255,255,255,.16);
  padding: clamp(22px,3.2vh,34px) 0;
}
.cband-band-inner {
  /* --cband-cols is set inline from the actual Timeline Events count
     (repeater allows 1-6 rows) so this always divides evenly into one
     row on desktop, instead of assuming a fixed 4 and leaving orphan
     cells when an editor adds a 5th/6th event. */
  display: grid; grid-template-columns: repeat(var(--cband-cols, 4), minmax(0,1fr));
  gap: clamp(20px,3vw,40px);
}
.cband-bi { padding-left: clamp(14px,1.6vw,22px); border-left: 1px solid rgba(255,255,255,.2); }
.cband-bi:first-child { padding-left: 0; border-left: 0; }
.cband-yr { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: clamp(20px,1.9vw,29px); color: var(--teal); line-height: 1; }
.cband-bi-h { font-family: 'Outfit', sans-serif; font-weight: 700; font-size: clamp(13.5px,1vw,16px); color: #fff; margin: 6px 0 6px; }
.cband-bi-p { font-size: clamp(11.5px,.85vw,13.5px); line-height: 1.5; color: rgba(255,255,255,.7); margin: 0; }

@media (max-width: 900px) {
  .cband-frame { min-height: clamp(520px, 84vh, 760px); }
  /* Fixed 2 columns here regardless of --cband-cols -- odd/even
     targets each row's first/second slot correctly for any item count. */
  .cband-band-inner { grid-template-columns: repeat(2, minmax(0,1fr)); row-gap: clamp(18px,3vh,26px); }
  .cband-bi { padding-left: 0; border-left: 0; }
  .cband-bi:nth-child(even) { padding-left: clamp(14px,1.6vw,22px); border-left: 1px solid rgba(255,255,255,.2); }
}
@media (max-width: 560px) {
  .cband-band-inner { grid-template-columns: 1fr; }
  .cband-bi { padding-left: 0; border-left: 0; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.2); }
  .cband-bi:first-child { padding-top: 0; border-top: 0; }
}


/* ═══════════════════════════════════════════════════
   FEATURED PROJECT FRAME START — page-projects.php
   ═══════════════════════════════════════════════════ */

.fp-frame {
  background: var(--white);
  border-bottom: 1px solid var(--rule);
}

/* Top-left group: counter + badge */
.fp-topleft-group {
  position: absolute;
  top: 16px;
  left: 16px;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 8px;
}
.fp-counter {
  position: static;
  background: var(--teal);
  color: #fff;
  font-family: 'Courier New', monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  padding: 5px 12px;
  border-radius: 3px;
  display: flex;
  align-items: center;
  gap: 3px;
}
.fp-cat-badge {
  position: static;
  background: rgba(7,17,31,.55);
  backdrop-filter: blur(4px);
  color: #fff;
  font-family: 'Outfit', sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .12em;
  padding: 6px 14px;
  border-radius: 3px;
  border: 1px solid rgba(255,255,255,.2);
}

/* Details link button */
.fp-details-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: none;
  border: none;
  padding: 0;
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 700;
  color: var(--blue);
  cursor: pointer;
  width: fit-content;
  margin-top: -4px;
  transition: color .15s, gap .15s;
}
.fp-details-link:hover {
  color: var(--teal);
  gap: 9px;
}
.fp-details-link svg { transition: transform .15s; }
.fp-details-link:hover svg { transform: translateX(2px); }

/* Top bar */
.fp-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: clamp(12px,1.8vh,18px) clamp(16px,3vw,48px);
  border-bottom: 1px solid var(--rule);
}
.fp-topbar-left {
  display: flex;
  align-items: center;
  gap: 10px;
}
.fp-eyebrow-line {
  display: inline-block;
  width: 24px;
  height: 1.5px;
  background: var(--teal);
  flex-shrink: 0;
}
.fp-eyebrow {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .22em;
  color: var(--teal);
}
.fp-topbar-stats {
  display: flex;
  align-items: center;
  gap: clamp(20px,3vw,48px);
}
.fp-top-stat {
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.fp-top-stat-n {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(18px,1.7vw,26px);
  font-weight: 900;
  color: var(--ink);
  line-height: 1;
}
.fp-top-stat-l {
  font-size: clamp(9px,.75vw,11px);
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--muted);
}

/* Main split */
.fp-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: clamp(420px,58vh,640px);
}

/* Left */
.fp-left {
  padding: clamp(36px,5.5vh,64px) clamp(32px,4.5vw,64px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: clamp(14px,2vh,22px);
}
.fp-division {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--teal);
}
.fp-division::before {
  content: '';
  width: 16px;
  height: 1.5px;
  background: var(--teal);
  display: inline-block;
}
.fp-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(24px,2.8vw,42px);
  font-weight: 900;
  color: var(--ink);
  text-transform: uppercase;
  line-height: 1.05;
  letter-spacing: .005em;
  margin: 0;
}
.fp-meta {
  padding-bottom: clamp(14px,2vh,20px);
  border-bottom: 1px solid var(--rule);
  margin-bottom: 2px;
}
.fp-meta-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--teal);
  flex-shrink: 0;
}
.fp-desc {
  font-size: clamp(14px,1.1vw,16px);
  line-height: 1.7;
  color: var(--body);
  margin: 0;
  max-width: 460px;
  text-align: left !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.fp-btns {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 4px;
}
.fp-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 11px 22px;
  background: var(--blue);
  color: #fff;
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  transition: background .18s;
  white-space: nowrap;
}
.fp-btn-primary:hover { background: var(--teal); }
.fp-btn-ghost {
  display: inline-flex;
  align-items: center;
  padding: 11px 22px;
  background: transparent;
  color: var(--ink);
  border: 1.5px solid var(--rule);
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  transition: border-color .18s, color .18s;
  white-space: nowrap;
}
.fp-btn-ghost:hover { border-color: var(--blue); color: var(--blue); }

/* Right — image */
.fp-right {
  position: relative;
  background: var(--ink);
  overflow: hidden;
}
.fp-slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity .7s ease;
}
.fp-slide.active { opacity: 1; }
.fp-slide::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(7,17,31,.3) 0%, transparent 60%);
}

/* Counter badge */
.fp-counter {
  position: absolute;
  top: 16px;
  left: 16px;
  z-index: 10;
  background: var(--teal);
  color: #fff;
  font-family: 'Courier New', monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  padding: 5px 12px;
  border-radius: 3px;
  display: flex;
  align-items: center;
  gap: 3px;
}
.fp-cur { font-size: 14px; font-weight: 900; }
.fp-sep { opacity: .6; }
.fp-tot { opacity: .7; }

/* Category badge */
.fp-cat-badge {
  position: absolute;
  bottom: 16px;
  right: 16px;
  z-index: 10;
  background: var(--teal);
  color: #fff;
  font-family: 'Outfit', sans-serif;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .14em;
  padding: 6px 14px;
  border-radius: 3px;
}

/* Arrows */
.fp-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  width: 38px;
  height: 38px;
  background: rgba(255,255,255,.12);
  border: 1.5px solid rgba(255,255,255,.3);
  border-radius: 4px;
  color: #fff;
  font-size: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .18s;
  line-height: 1;
}
.fp-arrow:hover { background: rgba(255,255,255,.25); }
.fp-arrow-prev { left: 14px; }
.fp-arrow-next { right: 14px; }

/* Tablet */
@media (max-width: 900px) {
  .fp-body { grid-template-columns: 1fr; }
  .fp-right {
    order: -1;
    height: clamp(220px,35vw,360px);
  }
  .fp-left { padding: 24px 20px; }
  .fp-topbar { padding: 10px 20px; }
  .fp-topbar-stats { gap: 16px; }
  /* NEW — keep badge group readable on tablet */
  .fp-topleft-group { top: 12px; left: 12px; gap: 6px; }
  .fp-counter { font-size: 10px; padding: 4px 10px; }
  .fp-cat-badge { font-size: 9px; padding: 5px 11px; }
}

/* Mobile */
@media (max-width: 560px) {
  .fp-topbar { display: none; }
  .fp-title { font-size: clamp(18px,5.5vw,28px); }
  .fp-btns { flex-direction: column; }
  .fp-btn-primary, .fp-btn-ghost { justify-content: center; }
  .fp-right { height: 200px; }
  /* NEW */
  .fp-topleft-group { flex-direction: row; flex-wrap: wrap; gap: 5px; }
  .fp-cat-badge { font-size: 8px; padding: 4px 9px; }
  .fp-counter { font-size: 9px; padding: 4px 9px; }
  .fp-details-link { font-size: 12px; }
  .fp-left { gap: 10px; }
}

/* Mobile stats band */
.fp-stats-band {
  display: none;
}
@media (max-width: 560px) {
  .fp-stats-band {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--ink);
    padding: 12px 16px;
  }
  .fp-stats-band-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    flex: 1;
  }
  .fp-stats-band-n {
    font-family: 'Outfit', sans-serif;
    font-size: 16px;
    font-weight: 900;
    color: #fff;
    line-height: 1;
  }
  .fp-stats-band-l {
    font-size: 8px;
    font-weight: 700;
    letter-spacing: .1em;
    color: rgba(255,255,255,.5);
  }
  .fp-stats-band-div {
    width: 1px;
    height: 28px;
    background: rgba(255,255,255,.15);
    flex-shrink: 0;
  }
  .fp-topbar-stats { display: none; }
}

/* ═══════════════════════════════════════════════════
   FEATURED PROJECT FRAME END — page-projects.php
   ═══════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════
   LIFE AT TAKNEK — Asymmetric hero grid
   ═══════════════════════════════════════════════════ */

.lat-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: clamp(20px,3vw,40px);
  margin-bottom: clamp(20px,3vh,32px);
  flex-wrap: wrap;
}
.lat-header-left { flex-shrink: 0; }
.lat-h {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(26px,3.2vw,48px);
  font-weight: 900;
  color: var(--ink);
  text-transform: uppercase;
  line-height: 1;
  margin: 6px 0 0;
}
.lat-header-right {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
@media (max-width: 560px) {
  .lat-header-right {
    width: 100%;
    flex-direction: column;
    align-items: stretch;
  }
  .lat-btn {
    width: 100%;
    box-sizing: border-box;
    justify-content: center;
  }
}
.lat-sub {
  font-size: clamp(13px,1vw,15px);
  line-height: 1.6;
  color: var(--body);
  margin: 0;
  max-width: 360px;
}
.lat-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 13px 22px;
  background: var(--ink);
  color: #fff;
  border-radius: var(--r);
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background .18s;
}
.lat-btn:hover { background: var(--blue); }

/* Grid */
.lat-grid {
  display: grid;
  grid-template-columns: 1.55fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: clamp(10px,1.2vw,16px);
  height: clamp(440px,58vh,620px);
}
.lat-card-0 { grid-column: 1; grid-row: 1 / 3; }
.lat-card-1 { grid-column: 2; grid-row: 1; }
.lat-card-2 { grid-column: 3; grid-row: 1; }
.lat-card-3 { grid-column: 2; grid-row: 2; }
.lat-card-4 { grid-column: 3; grid-row: 2; }

.lat-card {
  position: relative;
  background-color: var(--ink);
  background-size: cover;
  background-position: center;
  border-radius: 4px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  border: 1px solid rgba(255,255,255,.08);
}

/* Corner brackets — only on large card */
.lat-bracket {
  position: absolute;
  width: 20px;
  height: 20px;
  z-index: 4;
  pointer-events: none;
}
.lat-br-tl { top: 14px; left: 14px; border-top: 2px solid var(--teal); border-left: 2px solid var(--teal); }
.lat-br-br { bottom: 14px; right: 14px; border-bottom: 2px solid var(--teal); border-right: 2px solid var(--teal); }

/* Tag — top left label */
.lat-card-tag {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 3;
  font-family: 'Courier New', monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .14em;
  color: rgba(255,255,255,.75);
}
.lat-card-0 .lat-card-tag { left: 32px; }

/* Overlay */
.lat-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(7,17,31,.92) 0%, rgba(7,17,31,.25) 55%, transparent 80%);
  z-index: 1;
}

/* Placeholder when no image */
.lat-placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
}

/* Body */
.lat-card-body {
  position: relative;
  z-index: 2;
  padding: clamp(12px,1.6vw,20px);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.lat-card-title {
  font-family: 'Outfit', sans-serif;
  font-weight: 700;
  color: #fff;
  font-size: clamp(13px,1.1vw,17px);
  line-height: 1.2;
}
.lat-card-0 .lat-card-title { font-size: clamp(20px,2vw,30px); }
.lat-card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.lat-tag-pill {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .04em;
  color: rgba(255,255,255,.75);
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 3px;
  padding: 3px 9px;
}

/* Tablet */
@media (max-width: 1024px) {
  .lat-grid {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: repeat(3,200px);
    height: auto;
  }
  .lat-card-0 { grid-column: 1 / -1; grid-row: 1; }
  .lat-card-1 { grid-column: 1; grid-row: 2; }
  .lat-card-2 { grid-column: 2; grid-row: 2; }
  .lat-card-3 { grid-column: 1; grid-row: 3; }
  .lat-card-4 { grid-column: 2; grid-row: 3; }
  .lat-header { flex-direction: column; align-items: flex-start; }
  .lat-header-right { justify-content: flex-start; width: 100%; }
}

/* Mobile */
@media (max-width: 560px) {
  .lat-grid {
    display: flex;
    grid-template-columns: unset;
    grid-template-rows: unset;
    height: auto;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    gap: 12px;
    padding-bottom: 4px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    width: 100%;
    margin: 0;
    padding: 0;
  }
  .lat-grid::-webkit-scrollbar { display: none; }
  .lat-card-0,.lat-card-1,.lat-card-2,.lat-card-3,.lat-card-4 {
    grid-column: unset;
    grid-row: unset;
    flex: 0 0 82vw;
    height: 320px;
    scroll-snap-align: start;
  }
  .lat-card-0 .lat-card-title { font-size: clamp(18px,5.5vw,24px); }
  .lat-h { font-size: clamp(22px,7vw,32px); }
  .lat-btn { width: 100%; justify-content: center; }
}


/* ═══════════════════════════════════════════════════
   WHAT WE DO v2 — Hover-Reveal Cards
   ═══════════════════════════════════════════════════ */
.svc2-header {
  text-align: left;
  margin-bottom: clamp(60px,5.5vh,74px);
}
/* Matches the same clamp(14px,2vh,22px) target used by .frame-header/
   .mosaic-hdr/.saf-a-sub/.saf-b-head elsewhere on this page -- not the
   larger value Construction/Automation use for their own .svc2-header
   (body.taknek-heading-managed, below) -- so every homepage frame's
   heading-to-content gap reads as the same size when scrolling down
   the page. That other page's rule is untouched by this one. */
body.taknek-home-tight-gap .svc2-header { margin-bottom: clamp(14px, 2vh, 22px) !important; }
.svc2-header .label {
  justify-content: flex-start;
}
.svc2-heading {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(26px, 2.016vw + 11.89px, 50.6px);
  font-weight: 900;
  color: var(--ink);
  text-transform: uppercase;
  margin: 8px 0 0;
}

.svc2-wrap {
  width: 100%;
}

.svc2-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(10px,1.2vw,16px);
}
.svc2-card {
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
}
.svc2-card-media {
  position: relative;
  height: clamp(440px,58vh,620px);
  overflow: hidden;
}
.svc2-card-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transition: transform .5s ease;
}
.svc2-card:hover .svc2-card-bg {
  transform: scale(1.06);
}
.svc2-card-media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(7,17,31,.55) 0%, rgba(7,17,31,.05) 45%, transparent 70%);
  pointer-events: none;
  transition: background .35s ease;
}
.svc2-card:hover .svc2-card-media::after {
  background: rgba(7,17,31,.3);
}
.svc2-card-title {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  justify-content: flex-start;
  text-align: left;
  padding: clamp(20px,2.6vw,30px);
  font-family: 'Outfit', sans-serif;
  font-size: clamp(17px,1.5vw,22px);
  font-weight: 800;
  text-transform: uppercase;
  color: #fff;
  line-height: 1.25;
  z-index: 2;
  text-shadow: 0 2px 12px rgba(0,0,0,.5);
  transition: opacity .3s ease;
}
.svc2-card:hover .svc2-card-title {
  opacity: 0;
}

/* Bottom slide-up drawer -- photo stays visible at rest and on hover
   (just dims via .svc2-card-media::after above); this panel rises
   from the bottom edge instead of covering the whole card. */
.svc2-card-hover {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(to top, rgba(7,17,31,.97) 0%, rgba(7,17,31,.9) 70%, rgba(7,17,31,.75) 100%);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 10px;
  padding: clamp(20px,2.6vw,30px);
  transform: translateY(100%);
  transition: transform .4s cubic-bezier(.22,1,.36,1);
  z-index: 3;
}
.svc2-card:hover .svc2-card-hover {
  transform: translateY(0);
}
.svc2-card-hover-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(15px,1.3vw,19px);
  font-weight: 800;
  color: #fff;
  text-transform: uppercase;
  text-align: left;
  line-height: 1.2;
}
.svc2-card-desc {
  font-size: clamp(13px,1.05vw,15px);
  line-height: 1.7;
  color: rgba(255,255,255,.8);
  text-align: left;
  margin: 0;
}

@media (max-width: 1024px) {
  .svc2-cards { grid-template-columns: repeat(3,1fr); }
}

@media (max-width: 768px) {
  .svc2-cards { grid-template-columns: 1fr; }
  .svc2-card-media { height: 260px; }
  .svc2-card-hover {
    position: static;
    transform: none;
    background: var(--ink);
    padding: 18px;
    align-items: flex-start;
  }
}

/* 6-card variant (Construction "What We Build") */
.svc2-cards-6 {
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, 1fr);
}
.svc2-cards-6 .svc2-card-media {
  height: clamp(300px,36vh,380px);
}

@media (max-width: 1024px) {
  .svc2-cards-6 { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(3, 1fr); }
}
@media (max-width: 768px) {
  .svc2-cards-6 { grid-template-columns: 1fr; grid-template-rows: none; }
}

/* Same card-media height as .svc2-cards-6 (Construction/Automation's "What
   We Build"/capabilities cards), without that class's grid-template-rows:
   repeat(2,1fr) -- which only makes sense for exactly 6 cards. Used when
   Homepage's Services repeater has a different count, so the cards still
   match Construction/Automation's size while the grid auto-flows correctly
   for any number of cards. */
.svc2-cards-sm .svc2-card-media {
  height: clamp(300px,36vh,380px);
}

/* ═══ WHO WE ARE — kinetic heading + Industries marquee ═══
   Word-reveal heading and marquee both ride the site's existing .rv
   scroll-reveal toggle (assets/taknek.js's IntersectionObserver adds
   .in to .wwa-grid) -- no new JS. Marquee reuses the horizontal-ticker
   CSS shape (assets/main.css:644-679, .ticker-*) rotated to a vertical
   axis: flex-direction row->column, mask-image axis to right->to
   bottom, translateX->translateY. animation-direction:reverse plays
   the same translateY(-50%) keyframe backwards so content visibly
   travels top-to-bottom (confirmed with Nick) instead of the pattern's
   default bottom-to-top motion, without needing a second keyframe. */

/* min-width:0 on both grid children -- without it, a min-width:auto
   grid item containing white-space:nowrap content (the heading below)
   can force its own track wider than its 1.6fr share, squeezing the
   Industries column next to it instead of the heading just fitting
   within the width it's actually given. */
.wwa-grid { display: grid; grid-template-columns: 1.6fr 1fr; gap: clamp(32px,5vw,64px); align-items: center; }
.wwa-text { display: flex; flex-direction: column; max-width: 680px; min-width: 0; }

.wwa-eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: clamp(12px,1.5vw,18px); }
.wwa-eyebrow-line { display: block; flex: none; width: 24px; height: 2px; background: var(--teal); }
.wwa-eyebrow span:last-child {
  font-size: 12px; font-weight: 600; letter-spacing: .28em; text-transform: uppercase;
  color: var(--teal);
}

.wwa-heading {
  /* Family/weight/line-height/letter-spacing/transform/color still
     come from the shared .heading-md class -- only font-size is
     overridden here (below .heading-md in source order, so it wins
     without !important) so this heading comfortably fits the
     .wwa-text column at typical heading lengths. Paired with
     .wwa-grid/.wwa-text's min-width:0 above, which stops long nowrap
     content from ever expanding the grid track. white-space is
     intentionally left at its normal default (not nowrap): a real
     admin-entered heading longer than the short code default should
     wrap to a second line here -- same as it already does under
     900px below -- rather than be forced onto one line via nowrap
     with a truncating ellipsis, which cuts real content off instead
     of just showing it on two lines. .wwa-text is a column flexbox,
     so a taller 2-line heading only pushes this column's own content
     down; it can't overlap the neighboring Industries ticker. */
  margin: 0 0 clamp(14px, 2vh, 22px);
  font-size: clamp(18px, 1.8vw, 28px);
}
@media (max-width: 900px) {
  /* .wwa-grid collapses to a single full-width column here (see
     below) -- just a larger font-size for this width; wrapping is
     already the default (see the base rule above). */
  .wwa-heading { font-size: clamp(22px, 4vw, 34px); }
}
.wwa-wmask { display: inline-block; overflow: hidden; vertical-align: top; }
.wwa-wi {
  display: inline-block;
  opacity: 0; transform: translateY(100%);
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
.wwa-grid.rv.in .wwa-wi { opacity: 1; transform: translateY(0); }

.wwa-intro {
  font-size: clamp(15px,1.25vw,17px); line-height: 1.75; color: var(--body);
  text-align: justify; -webkit-hyphens: auto; -ms-hyphens: auto; hyphens: auto;
}

.wwa-stats {
  display: flex;
  margin-top: clamp(16px,2vw,22px);
  padding: clamp(14px,1.6vw,18px) 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.wwa-stat { flex: 1; padding-right: clamp(12px,2vw,24px); }
.wwa-stat:not(:first-child) {
  padding-left: clamp(12px,2vw,24px);
  border-left: 1px solid var(--rule);
}
.wwa-stat-n {
  font-family: 'Outfit', sans-serif; font-weight: 800;
  font-size: clamp(26px,2.6vw,36px); line-height: 1; letter-spacing: -.01em;
  color: var(--ink);
}
.wwa-stat-accent .wwa-stat-n { color: var(--teal); }
.wwa-stat-l {
  margin-top: 6px;
  font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted);
}

.wwa-btns { margin-top: 20px; }

@media (max-width: 480px) {
  .wwa-stats { flex-wrap: wrap; row-gap: clamp(16px,3vh,20px); }
  .wwa-stat { flex: 0 0 50%; }
  .wwa-stat:nth-child(2) { padding-left: clamp(12px,2vw,24px); border-left: 1px solid var(--rule); }
  .wwa-stat:nth-child(3) { padding-left: 0; border-left: none; margin-top: clamp(12px,2vh,16px); }
}

.wwa-ind-col { display: flex; flex-direction: column; min-width: 0; }
.wwa-ind-eyebrow {
  font-size: 10px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
  color: rgba(10,24,40,.42); margin-bottom: clamp(12px,1.5vw,16px);
}
.wwa-ind-rail {
  /* Shorter than before (was 480-640px) so this column's height tracks
     the text column's real content height instead of the shorter
     column floating in extra frame space with a tall marquee next to
     it -- both columns should read as comparable visual weight. */
  overflow: hidden;
  height: clamp(360px,44vh,480px);
  position: relative;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 10%, black 90%, transparent 100%);
  mask-image: linear-gradient(to bottom, transparent 0%, black 10%, black 90%, transparent 100%);
}
.wwa-ind-track {
  display: flex;
  flex-direction: column;
  height: max-content;
  animation: wwa-ind-scroll 28s linear infinite;
  animation-direction: reverse;
  will-change: transform;
}
.wwa-ind-track:hover { animation-play-state: paused; }
@keyframes wwa-ind-scroll { to { transform: translateY(-50%); } }
.wwa-ind-row { display: flex; align-items: baseline; gap: 18px; padding: 13px 0; border-bottom: 1px solid var(--rule); }
.wwa-ind-n { flex: none; width: 22px; font-size: 11px; font-weight: 600; letter-spacing: .08em; color: var(--teal); }
.wwa-ind-l { font-family: 'Outfit', sans-serif; font-size: clamp(16px,1.5vw,21px); font-weight: 600; color: var(--ink); letter-spacing: -.01em; }

@media (max-width: 900px) {
  .wwa-grid { grid-template-columns: 1fr; }
  .wwa-ind-rail { height: clamp(320px,46vh,420px); margin-top: clamp(24px,4vh,32px); }
}

/* 6-card tight grid variant (Home "What We Do") */

.svc2-cards-tight {
  grid-template-columns: repeat(3, 1fr);
  gap: 3px;
}
.svc2-cards-tight .svc2-card-media { aspect-ratio: 4/3; height: auto; }
.svc2-cards-tight .svc2-card { border-radius: 0; }
.svc2-cards-tight .svc2-card-title { font-size: clamp(14px,1.1vw,16px); }
@media (max-width: 900px) { .svc2-cards-tight { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 560px) { .svc2-cards-tight { grid-template-columns: 1fr; } }


/* ═══════════════════════════════════════════════════
   SAFETY PROGRAMME — Scroll-Pin Two-Part
   ═══════════════════════════════════════════════════ */

.safety-pin { position: relative; }
.safety-stage { position: relative; overflow: visible; background: transparent; }
.safety-panel { position: relative; }
.safety-panel-a { background: #07111f; color: #fff; height: 72vh; min-height: 480px; display: flex; align-items: center; overflow: hidden; }
.saf-a-video { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; background: #0a1420; }
.saf-a-scrim { position: absolute; inset: 0; z-index: 1; background: linear-gradient(100deg,rgba(6,13,24,.96) 0%,rgba(6,13,24,.9) 34%,rgba(6,13,24,.6) 60%,rgba(6,13,24,.24) 100%); }
.saf-a-tick { position: absolute; width: 24px; height: 24px; border-color: var(--teal); border-style: solid; z-index: 2; pointer-events: none; }
.saf-a-inner { position: relative; z-index: 3; padding: 0 clamp(28px,6vw,80px); max-width: var(--mw); margin: 0 auto; width: 100%; }
.saf-eyebrow { display: inline-block; margin-bottom: 14px; }
/* Font metrics come from the shared .heading-md class on the same
   element -- single source of truth, don't redeclare them here.
   color:#fff overrides .heading-md's dark-navy default since this
   heading sits on the Safety Programme's full-bleed dark panel. */
.saf-a-heading { color: #fff; max-width: 760px; margin: 0; }
.saf-a-sub { margin-top: clamp(14px, 2vh, 22px); font-size: clamp(15px,1.25vw,17.5px); line-height: 1.7; color: rgba(255,255,255,.68); max-width: 520px; }
.saf-a-statcard { display: grid; grid-template-columns: repeat(3,auto); justify-content: start; margin-top: clamp(16px,2.2vh,22px); background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.16); border-radius: var(--r); overflow: hidden; max-width: 560px; }
.saf-a-stat { padding: 13px 22px; }
.saf-a-stat:not(:first-child) { border-left: 1px solid rgba(255,255,255,.14); }
.saf-a-stat-n { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: clamp(18px,1.8vw,24px); color: #fff; line-height: 1; white-space: nowrap; }
.saf-a-stat-l { margin-top: 5px; font-size: 9px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: rgba(255,255,255,.5); white-space: nowrap; }
.saf-scroll-chip { margin-top: clamp(18px,2.6vh,24px); display: inline-flex; align-items: center; gap: 9px; padding: 11px 20px; border: 1.5px solid rgba(255,255,255,.26); border-radius: 24px; color: #fff; font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; background: rgba(255,255,255,.04); transition: background .15s,border-color .15s; }
.saf-scroll-chip:hover { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.5); }
.saf-scroll-chip svg { animation: safBounce 1.6s ease-in-out infinite; }
@keyframes safBounce { 0%,100%{transform:translateY(0)} 50%{transform:translateY(5px)} }

.safety-panel-b{background:var(--bg);overflow-y:visible;display:flex;flex-direction:column;justify-content:flex-start;min-height:auto}
.saf-b-inner { box-sizing: border-box; display: flex; flex-direction: column; padding: clamp(28px,4.4vh,44px) clamp(28px,6vw,80px); max-width: var(--mw); margin: 0 auto; width: 100%; flex: 1; }
.saf-b-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;flex-wrap:wrap;margin-bottom:clamp(14px,2vh,22px)}
.saf-cards { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; }
.saf-card { display: flex; flex-direction: column; gap: 6px; border: 1.5px solid var(--rule); border-radius: var(--r); padding: clamp(20px,2.4vw,26px); background: var(--white); position: relative; overflow: hidden; transition: border-color .25s,box-shadow .25s,transform .25s; }
.saf-card:before { content:''; position: absolute; top:0; left:0; right:0; height:3px; background: linear-gradient(90deg,var(--blue),var(--teal)); transform: scaleX(0); transform-origin: left; transition: transform .3s ease; }
.saf-card:hover:before { transform: scaleX(1); }
.saf-card:hover { border-color: rgba(0,164,159,.35); box-shadow: 0 10px 30px rgba(10,24,40,.08); transform: translateY(-3px); }
.saf-card-n { font-family: 'Outfit', sans-serif; font-size: 11px; font-weight: 700; letter-spacing: .1em; color: var(--teal); margin-bottom: 14px; }
.saf-card-h { font-family: 'Outfit', sans-serif; font-size: 15.5px; font-weight: 700; color: var(--ink); margin-bottom: 8px; }
.saf-card-p { font-size: 13px; line-height: 1.65; color: var(--body); margin: 0; }
.saf-b-foot{margin-top:auto;padding-top:clamp(16px,2.2vh,22px);display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}

@media (max-width: 1100px) { .saf-cards{grid-template-columns:repeat(2,1fr)} }
@media (max-width: 900px) {
  .safety-pin { height: auto; }
  .safety-stage { position: static; height: auto; overflow: visible; }
  .safety-panel { position: relative; transform: none!important; filter: none!important; inset: auto; }
  .safety-panel-a { padding: 72px 0; }
  .safety-panel-b { padding: 56px 0; }
  .saf-scroll-chip { display: none; }
}
@media (max-width: 560px) {
  .saf-a-statcard { grid-template-columns: 1fr; }
  .saf-a-stat:not(:first-child) { border-left: none; border-top: 1px solid rgba(255,255,255,.14); }
  .saf-cards { grid-template-columns: 1fr; }
}


/* ═══════════════════════════════════════════════════
   Header Changes START
   ═══════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════
   Header TOP BAR — Enhanced gradient + pills
   ═══════════════════════════════════════════════════ */

.hdr-topbar {
  background: linear-gradient(90deg, var(--ink) 0%, #0b3550 55%, var(--teal-dark, #067b76) 100%);
  height: 44px;
  overflow: hidden;
}
.hdr-topbar .container {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.hdr-topbar-left, .hdr-topbar-right {
  display: flex;
  align-items: center;
  gap: 14px;
}
.hdr-top-item {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  font-weight: 600;
  color: rgba(255,255,255,.78);
  white-space: nowrap;
}
.hdr-top-item svg { flex-shrink: 0; opacity: .8; }
.hdr-top-accent { color: var(--teal); }
.hdr-top-accent svg { color: var(--teal); opacity: 1; }
.hdr-top-link { text-decoration: none; transition: color .15s; }
.hdr-top-link:hover { color: #fff; }

.hdr-top-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 17px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.25);
  background: rgba(255,255,255,.06);
  font-family: 'Outfit', sans-serif;
  font-size: 13.5px;
  font-weight: 700;
  color: #fff;
  text-decoration: none;
  transition: background .18s, border-color .18s;
  white-space: nowrap;
}
.hdr-top-pill:hover { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.4); }
.hdr-top-pill svg { color: var(--teal); flex-shrink: 0; }
.hdr-top-pill-ghost {
  color: rgba(255,255,255,.85);
  font-size: 11px;
  letter-spacing: .04em;
  cursor: default;
}
.hdr-top-pill-ghost:hover { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.25); }

@media (max-width: 900px) {
  .hdr-topbar { display: none; }
}
@media (max-width: 1100px) {
  .hdr-top-item:not(.hdr-top-accent) span { display: none; }
}

/* Active/hover nav pill */
.nav-link {
  padding: 8px 16px;
  border-radius: 999px;
  transition: background .18s, color .18s;
}
.nav-link.active {
  background: var(--blue-light, rgba(11,77,144,.1));
  color: var(--blue);
}
.nav-link:hover:not(.active) {
  background: var(--bg);
}
.nav-drop-btn {
  padding: 8px 16px;
  border-radius: 999px;
  transition: background .18s, color .18s;
}
.nav-drop-btn:hover { background: var(--bg); }

/* New HEADER Change */

/* Scrolled state */
.site-header.scrolled { box-shadow: 0 1px 0 var(--rule), 0 2px 16px rgba(10,24,40,.06); }

/* Refined nav panel dropdown */
.nav-drop { position: relative; }
.nav-drop-icon { transition: transform .18s var(--ease, ease); display: flex; }
.nav-drop:hover .nav-drop-icon { transform: rotate(180deg); }
.nav-panel {
  position: absolute; top: calc(100% + 8px); left: 0; min-width: 230px;
  background: var(--white); border: 1px solid var(--rule); border-top: 3px solid var(--teal);
  border-radius: 0 0 var(--r) var(--r); padding: 6px;
  box-shadow: 0 12px 40px rgba(10,24,40,.12);
  opacity: 0; pointer-events: none; transform: translateY(-6px);
  transition: opacity .18s, transform .18s;
}
.nav-drop:hover .nav-panel { opacity: 1; pointer-events: all; transform: translateY(0); }
.nav-panel-item { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 6px; }
.nav-panel-item:hover { background: var(--bg); }
.nav-panel-eyebrow { font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--teal); }
.nav-panel-label { font-family: 'Outfit', sans-serif; font-size: 14px; font-weight: 600; color: var(--ink); }
.hdr-cta:hover { background: var(--blue-dark); box-shadow: 0 4px 16px rgba(11,77,144,.3); transform: translateY(-1px); }


/* ═══════════════════════════════════════════════════
   Header Changes END
   ═══════════════════════════════════════════════════ */


   
   /* ═══════════════════════════════════════════════════
   ANNOUNCEMENT BAR — Global
   ═══════════════════════════════════════════════════ */
.ann-bar {
  position: relative;
  background: var(--white);
  border-bottom: 3px solid var(--teal);
  z-index: 100;
  overflow: hidden;
}
.ann-bar-inner {
  display: flex;
  align-items: stretch;
  min-height: 50px;
}
.ann-bar-label {
  flex-shrink: 0;
  background: var(--blue);
  color: #fff;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 clamp(30px,3.2vw,40px) 0 clamp(24px,4vw,48px);
  margin-left: calc(-50vw + 50%);
  clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 50%, calc(100% - 20px) 100%, 0 100%);
}
.ann-bar-label-main {
  font-family: 'Outfit', sans-serif;
  font-weight: 900;
  font-size: clamp(17px,1.6vw,22px);
  text-transform: uppercase;
  letter-spacing: .01em;
  white-space: nowrap;
}
.ann-bar-label-sub {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  line-height: 1.4;
  border-left: 1px solid rgba(255,255,255,.3);
  padding-left: 14px;
  opacity: .9;
  max-width: 110px;
}
.ann-bar-text {
  flex: 1;
  display: flex;
  align-items: center;
  overflow: hidden;
  padding: 0 clamp(16px,2vw,24px);
  position: relative;
}
.ann-bar-text-scroll {
  white-space: nowrap;
  font-size: clamp(13px,1vw,15px);
  font-weight: 600;
  color: var(--ink);
  display: inline-block;
}
.ann-bar-actions {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 20px;
  padding-right: clamp(8px,1vw,12px);
}
.ann-bar-link {
  font-size: 13px;
  font-weight: 700;
  color: var(--teal);
  text-decoration: none;
  white-space: nowrap;
  transition: color .15s;
}
.ann-bar-link:hover { color: var(--blue); }
.ann-bar-close {
  background: none;
  border: none;
  color: var(--muted);
  font-size: 14px;
  cursor: pointer;
  padding: 6px;
  line-height: 1;
  transition: color .15s;
}
.ann-bar-close:hover { color: var(--ink); }

@keyframes annBarSlideDown {
  0%   { transform: translateY(-100%); }
  55%  { transform: translateY(10px); }
  75%  { transform: translateY(-4px); }
  100% { transform: translateY(0); }
}
.ann-bar-flash .ann-bar-inner {
  animation: annBarSlideDown .55s cubic-bezier(.25,.8,.35,1);
}

/* Continuous gentle pulse on the label — runs forever */
@keyframes annBarLabelPulse {
  0%, 100% { background: var(--blue); }
  50%      { background: var(--teal-dark, #067b76); }
}
.ann-bar-label {
  animation: annBarLabelPulse 2.6s ease-in-out infinite;
}

@media (max-width: 768px) {
  .ann-bar { display: none; }
  .ann-bar-inner { flex-wrap: wrap; min-height: auto; }
  .ann-bar-label {
    margin-left: -16px;
    padding: 6px 16px;
    width: 100%;
    box-sizing: border-box;
    clip-path: none;
  }
  .ann-bar-label-main { font-size: 13px; }
  .ann-bar-label-sub { display: none; }
  .ann-bar-text {
    padding: 8px 12px 8px 16px;
    order: 2;
    flex: 1;
    min-width: 0;
  }
  .ann-bar-text-scroll {
    display: block;
    white-space: normal;
    font-size: 12px;
    line-height: 1.4;
  }
  .ann-bar-actions {
    padding: 8px 16px 8px 0;
    order: 3;
    flex-shrink: 0;
    gap: 12px;
  }
  .ann-bar-link { font-size: 12px; white-space: nowrap; }
}

/* ═══════════════════════════════════════════════════
   COOKIE CONSENT BANNER — Global
   Bottom-right popup card, deliberately distinct from .ann-bar (top,
   full-width) so the two are never confused. Markup + toggle logic in
   footer.php; shown only when Site Settings -> Analytics & Cookie
   Consent has a GTM Container ID set.
   ═══════════════════════════════════════════════════ */
.cookie-banner {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 200;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 16px;
  width: min(340px, calc(100vw - 32px));
  padding: 22px;
  background: var(--ink);
  border-top: 3px solid var(--teal);
  border-radius: var(--r);
  box-shadow: 0 20px 50px rgba(10,24,40,.28);
}
.cookie-banner-text {
  font-size: 13px;
  line-height: 1.6;
  color: rgba(255,255,255,.82);
}
.cookie-banner-text a {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 3px;
  white-space: nowrap;
  margin-left: 4px;
}
.cookie-banner-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.cookie-banner-actions .btn-outline,
.cookie-banner-actions .btn-primary {
  flex: 1 1 0;
  justify-content: center;
}
.cookie-banner .btn-outline {
  border-color: rgba(255,255,255,.35);
  color: #fff;
}
.cookie-banner .btn-outline:hover {
  border-color: #fff;
  background: rgba(255,255,255,.08);
  color: #fff;
}

@media (max-width: 480px) {
  .cookie-banner {
    right: 12px;
    left: 12px;
    bottom: 12px;
    width: auto;
    padding: 18px;
  }
}

/* ═══════════════════════════════════════════════════
   PEEK CAROUSEL — Photo Gallery (Construction + Automation)
   Shared by both division pages' "Photo Gallery" section -- markup
   from taknek_render_panel_carousel() in inc/carousel-helper.php,
   nav JS is pcarNav/pcarGoto in assets/taknek.js. Replaces the earlier
   "Panel Carousel" (dark sidebar + stacked next-panels) built earlier
   this session -- rebuilt in place rather than left as unused dead
   CSS, since it's this session's own component being iterated on, not
   pre-existing client work.

   Full-bleed edge to edge (margin-left/right breakout, same technique
   as .ann-bar-label elsewhere in this file -- no width:100vw, which
   would include the scrollbar's width and misalign the element).
   #gallery.frame's own sitewide vertical padding (--frame-pad) is
   zeroed out below, same technique as #cta.frame for the CTA band, so
   .pcar's own much smaller padding is the only vertical spacing --
   no stacked dead space between sections. Header, image row, and
   footer all share one identical --pcar-pad-x value for their side
   padding so they can't drift out of alignment with each other again
   (an earlier round had each computing its own independently against
   .container, and they disagreed at some viewport widths).

   Sizing: kept short and compact -- image aspect-ratio, gaps, and
   heading size are all tuned down from the first pass so the whole
   frame fits a laptop/desktop viewport without much scroll.
   ═══════════════════════════════════════════════════ */
#gallery.frame { padding: 0; }
.pcar {
  --pcar-pad-x: clamp(16px, 2.5vw, 44px); /* matches .container's own padding exactly */
  background: var(--white);
  padding: 16px 0;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
}

/* Header and footer additionally match .container's max-width + auto
   centering (not just its padding) -- .container itself stops
   growing past var(--mw) and centers with extra margin beyond that,
   which a full-bleed sibling doesn't get for free just by copying the
   padding value. Only .pcar-body (the image row) stays genuinely
   full-width/edge-to-edge; matching .container fully here is what
   actually makes the heading line up with every other section's,
   including on wide viewports where --mw is narrower than the
   viewport itself. */
.pcar-head {
  max-width: var(--mw);
  margin-left: auto;
  margin-right: auto;
  padding: 0 var(--pcar-pad-x);
}
.pcar-eyebrow {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--teal);
}
.pcar-eyebrow-line { width: 16px; height: 2px; background: var(--teal); flex-shrink: 0; }

/* Heading, desc and counter all share this one row/plane instead of
   stacking -- keeps the header compact so the image row gets more of
   the frame's height. */
.pcar-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-top: 6px;
}
.pcar-head-text { display: flex; align-items: baseline; gap: 16px; min-width: 0; flex: 1 1 auto; }
/* Font (family/size/weight/case/color) comes from the shared
   .heading-md class applied alongside this one, same as every other
   section header on the site -- just layout tweaks here. */
.pcar-heading {
  flex-shrink: 0;
  white-space: nowrap;
}
.pcar-desc {
  font-size: 13px;
  line-height: 1.4;
  color: var(--body);
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pcar-counter { flex-shrink: 0; line-height: 1; text-align: right; }
.pcar-cur {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(20px,1.8vw,28px);
  font-weight: 900;
  color: var(--ink);
}
.pcar-tot {
  font-family: 'Outfit', sans-serif;
  font-size: 15px;
  font-weight: 700;
  color: var(--body);
}

/* Image row: peek | main | peek. Single-photo galleries drop the peek
   columns entirely (.pcar-body-single) -- nothing to peek at. */
.pcar-body {
  display: grid;
  grid-template-columns: clamp(60px,8vw,140px) 1fr clamp(60px,8vw,140px);
  gap: 10px;
  margin-top: clamp(10px,1.5vh,16px);
  aspect-ratio: 1440 / 440;
  min-height: 260px;
}
.pcar-body-single { grid-template-columns: 1fr; }

.pcar-peek {
  position: relative;
  background-size: cover;
  background-position: center;
  background-color: var(--ink);
  cursor: pointer;
  overflow: hidden;
}
.pcar-peek::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(7,17,31,.55);
  transition: background .2s;
}
.pcar-peek:hover::after { background: rgba(7,17,31,.35); }

/* Main photo -- slides cross-fade via opacity, same technique as
   .proj-img-bg/.proj-img-slide elsewhere in this file. Sharp corners
   kept intentionally; the wider gap + shadow alone are enough to read
   as a distinct plate against the peek strip either side. */
.pcar-main { position: relative; background: #0B1B2E; overflow: hidden; box-shadow: 0 8px 28px rgba(10,24,40,.18); }
.pcar-main-inner { position: absolute; inset: 0; overflow: hidden; }
.pcar-slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity .5s ease;
}
.pcar-slide.active { opacity: 1; }
.pcar-caption {
  position: absolute;
  left: 0;
  bottom: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--ink);
  padding: 12px 20px 12px 18px;
  border-radius: 0 var(--r) 0 0;
  max-width: calc(100% - 24px);
}
.pcar-caption-num {
  font-family: 'Outfit', sans-serif;
  font-size: 12px;
  font-weight: 800;
  color: var(--teal);
  flex-shrink: 0;
}
.pcar-caption-text {
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Footer: prev/next arrows + caption label, a progress line, then
   division/location meta -- replaces the old per-photo dot rail,
   which doesn't scale well once a gallery reaches two dozen photos. */
.pcar-foot {
  display: flex;
  align-items: center;
  gap: clamp(16px,2.5vw,32px);
  max-width: var(--mw);
  margin: clamp(10px,1.5vh,16px) auto 0;
  padding: 0 var(--pcar-pad-x);
}
.pcar-foot-left { display: flex; align-items: center; gap: 12px; flex-shrink: 0; min-width: 0; }
.pcar-arrow {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: var(--r);
  border: 1px solid var(--rule);
  background: var(--white);
  color: var(--ink);
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(10,24,40,.08);
  transition: border-color .18s, box-shadow .18s;
}
.pcar-arrow:hover { border-color: var(--teal); box-shadow: 0 4px 14px rgba(10,24,40,.14); }
.pcar-foot-label {
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pcar-progress { flex: 1 1 auto; height: 2px; min-width: 60px; background: var(--rule); }
.pcar-progress-fill { height: 100%; background: var(--teal); transition: width .3s ease; }
.pcar-foot-right {
  flex-shrink: 0;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--body);
  white-space: nowrap;
}

/* Tablet: drop the peek panels -- not enough width left over to make
   a meaningful crop once the main plate needs the space. */
@media (max-width: 900px) {
  .pcar-body { grid-template-columns: 1fr; aspect-ratio: 4 / 3; }
  .pcar-peek { display: none; }
}

/* Phone: header stacks, footer wraps so the meta text gets its own
   row instead of squeezing the progress line to nothing. */
@media (max-width: 560px) {
  .pcar-head-row { flex-direction: column; align-items: flex-start; gap: 6px; }
  .pcar-head-text { flex-direction: column; align-items: flex-start; gap: 2px; }
  .pcar-desc { white-space: normal; }
  .pcar-counter { text-align: left; }
  .pcar-foot { flex-wrap: wrap; }
  .pcar-progress { order: 2; flex-basis: 100%; }
  .pcar-foot-right { order: 3; width: 100%; }
}

/* ═══════════════════════════════════════════════════
   TAKNEK HEADING-MANAGED PAGES — scoped heading/spacing overrides
   Started as Construction+Automation only; now the shared "one
   umbrella" scope for every page migrated onto the per-frame Heading
   Size ACF system (see functions.php's body_class filter for the
   current page list). Most of these pages have no "Template Name:"
   header, so WordPress's own body_class() never emits a filename-
   derived class to scope to otherwise -- this shared class fills
   that gap.

   Per feedback: section headings on Construction/Automation read too
   large and sat too far from the content below them. .heading-lg/
   .heading-md/.svc2-heading/.iproc-panel-title and the header-to-
   content gaps (.frame-header/.svc2-header margin-bottom, .iproc-
   widget's gap) are shared sitewide, so overriding them directly would
   have changed every other page using the same classes -- scoped here
   instead. Font sizes cut by roughly the same ~18% across the board;
   gaps cut by roughly a third. (Other pages added to this scope later
   may add their own base-class rules below without inheriting this
   specific cut -- see each page's own comment.)

   !important on every rule below: Additional CSS (wp-admin Customizer,
   outside this repo/git) carries sitewide unscoped !important rules
   touching these same classes (an unconditional .frame-header margin/
   gap rule, and a max-width:768px block for .heading-lg/.heading-md/
   .heading-sm). CSS resolves importance before specificity, so without
   !important these more-specific two-class selectors were silently
   losing to those plain-class sitewide rules on mobile widths -- which
   is why the "Small" heading-size preset rendered differently per
   frame depending on which base heading class it was applied to.

   SINGLE SOURCE OF TRUTH for the 4 "Heading Size" presets: the actual
   clamp() formula for each of sm/md/lg/xl is defined ONCE, right here,
   as a custom property. Every rule below -- and every ID/body-class/
   page-scoped copy of these same 4 rules further down (Homepage,
   About, Careers) -- references var(--hsz-*) instead of repeating the
   literal formula. Previously the same 4 numbers were retyped by hand
   in ~17 separate places across this file; if a preset's size ever
   needs to change, there is now exactly one line to edit instead of
   17 (and no risk of one copy drifting out of sync with the rest,
   which is what made this system hard to reason about). */
:root {
  --hsz-sm: clamp(16px, 1.139vw + 8.02px, 29.9px);
  --hsz-md: clamp(21px, 2.891vw + 1.09px, 57px);
  --hsz-lg: clamp(26px, 2.959vw + 5.29px, 62.1px);
  --hsz-xl: clamp(32px, 4.164vw + 2.85px, 82.8px);
}
/* ═══════════════════════════════════════════════════ */
body.taknek-heading-managed .heading-lg { font-size: clamp(26px, 4.651vw - 6.314px, 83px) !important; }
body.taknek-heading-managed .heading-md { font-size: var(--hsz-md) !important; }
body.taknek-heading-managed .svc2-heading { font-size: clamp(21px, 1.653vw + 9.75px, 41.49px) !important; }
body.taknek-heading-managed .iproc-panel-title { font-size: clamp(14px, 0.867vw + 7.87px, 24.52px) !important; }

body.taknek-heading-managed .frame-header { margin-bottom: clamp(20px, 2.8vh, 32px) !important; }
body.taknek-heading-managed .svc2-header { margin-bottom: clamp(32px, 3.2vh, 44px) !important; }
body.taknek-heading-managed .iproc-widget { gap: clamp(14px, 1.3vw, 24px) !important; }

/* Per-frame "Heading Size" ACF control (Construction page only, see
   Site Settings on each frame in wp-admin) -- absolute sizes so every
   preset, including "Medium", means the same actual rendered size on
   every frame regardless of which base heading class (.heading-lg/
   .heading-md/.svc2-heading) it overrides. .h-size-md is set to the
   same value as the .heading-md scoped default above on purpose: most
   frames already use .heading-md, so giving "Medium" that same value
   normalizes the two outliers (About's larger .heading-lg, Capabilities'
   smaller .svc2-heading) without visibly changing anything already on
   .heading-md. */
.h-size-sm { font-size: var(--hsz-sm) !important; }
.h-size-md { font-size: var(--hsz-md) !important; }
.h-size-lg { font-size: var(--hsz-lg) !important; }
.h-size-xl { font-size: var(--hsz-xl) !important; }

/* The rules above lose to the scoped base-class defaults higher up
   this file (body.taknek-heading-managed .heading-lg etc.): both are
   !important, so cascade falls to specificity, and a type-selector-
   plus-2-classes rule beats a 1-class rule -- meaning a frame's
   Heading Size choice was being silently ignored in favor of its
   base class's own default. Pairing each size class with each base
   class it appears alongside restores enough specificity to win. */
body.taknek-heading-managed .heading-lg.h-size-sm,
body.taknek-heading-managed .heading-md.h-size-sm,
body.taknek-heading-managed .svc2-heading.h-size-sm,
body.taknek-heading-managed .iproc-panel-title.h-size-sm { font-size: var(--hsz-sm) !important; }

body.taknek-heading-managed .heading-lg.h-size-md,
body.taknek-heading-managed .heading-md.h-size-md,
body.taknek-heading-managed .svc2-heading.h-size-md,
body.taknek-heading-managed .iproc-panel-title.h-size-md { font-size: var(--hsz-md) !important; }

body.taknek-heading-managed .heading-lg.h-size-lg,
body.taknek-heading-managed .heading-md.h-size-lg,
body.taknek-heading-managed .svc2-heading.h-size-lg,
body.taknek-heading-managed .iproc-panel-title.h-size-lg { font-size: var(--hsz-lg) !important; }

body.taknek-heading-managed .heading-lg.h-size-xl,
body.taknek-heading-managed .heading-md.h-size-xl,
body.taknek-heading-managed .svc2-heading.h-size-xl,
body.taknek-heading-managed .iproc-panel-title.h-size-xl { font-size: var(--hsz-xl) !important; }

/* HOMEPAGE — Services/Why/Safety headings under the same Heading Size
   system, ID-scoped instead of via the shared taknek-heading-managed
   body class: the homepage has 8 total .heading-md headings and only
   these 3 have an ACF Heading Size field (Services/Why/Safety use
   taknek_heading() + an editable field; the other 5 -- Who We Are,
   Clients & Partners, Projects In Action, Safety Pillar B, the CTA
   strip -- are hardcoded text with no field to hook a size choice to).
   Scoping by body class would resize all 8 just because they share
   .heading-md; ID-scoping confines it to exactly the 3 in scope.

   This also happens to be the correct fix for a pre-existing Additional
   CSS (wp-admin Customizer, outside this repo) conflict: #services div
   .heading-md and #why div .heading-md are ID-scoped !important rules,
   which no class-only selector can ever outrank (an ID always beats
   any number of classes). Recommend deleting those two Additional CSS
   blocks (all breakpoint variants, both staging and live) since this
   supersedes them; until then, this rule's own ID + 3 classes reliably
   wins regardless. */
#services .svc2-header .heading-md.h-size-sm,
#why .frame-header .heading-md.h-size-sm,
#safetyPin .saf-a-heading.h-size-sm { font-size: var(--hsz-sm) !important; }

#services .svc2-header .heading-md.h-size-md,
#why .frame-header .heading-md.h-size-md,
#safetyPin .saf-a-heading.h-size-md { font-size: var(--hsz-md) !important; }

#services .svc2-header .heading-md.h-size-lg,
#why .frame-header .heading-md.h-size-lg,
#safetyPin .saf-a-heading.h-size-lg { font-size: var(--hsz-lg) !important; }

#services .svc2-header .heading-md.h-size-xl,
#why .frame-header .heading-md.h-size-xl,
#safetyPin .saf-a-heading.h-size-xl { font-size: var(--hsz-xl) !important; }

/* Additional CSS (wp-admin Customizer, outside this repo/git) has
   "#services div .heading-md { margin-bottom: -40px !important; ... }"
   (with -34px/-26px variants at narrower breakpoints). Because the
   Services heading is the last child of .svc2-header -- a plain block
   with no flex/grid/overflow/border to stop it -- that negative margin
   collapses straight through into .svc2-header's own margin-bottom,
   combining into one value (header's margin + this rule's -40px).
   That was harmless while the header's margin was large (60-74px,
   collapsed result still positive), but became a visible overlap once
   the header's margin was tightened (32-44px, collapsed result near
   zero or negative). Zeroing the heading's own margin here removes it
   from the collapse entirely, so .svc2-header's margin-bottom is once
   again the only thing controlling this gap. Higher specificity (ID +
   2 classes + type vs. the external rule's ID + 1 class + type) wins
   without needing to match every one of its breakpoint variants. */
#services .svc2-header h2.heading-md { margin-bottom: 0 !important; }

/* ABOUT PAGE — Industries/Credentials/Locations/Careers headings under
   the same Heading Size system. Same reasoning as the homepage block
   above -- ID-scoping confines the change instead of resizing
   everything sharing a class. (Our Story's own heading, formerly
   .story3-heading, was replaced by the Cinematic Band's .cband-ttl,
   which has its own dedicated h-size-* rules elsewhere in this file --
   the .story3-heading pairing that used to live here is gone with it.) */

#industries .ind-header .heading-md.h-size-sm,
#credentials .frame-header .heading-md.h-size-sm,
#our-locations .frame-header .heading-md.h-size-sm,
#careers .jot-top-left .heading-md.h-size-sm { font-size: var(--hsz-sm) !important; }

#industries .ind-header .heading-md.h-size-md,
#credentials .frame-header .heading-md.h-size-md,
#our-locations .frame-header .heading-md.h-size-md,
#careers .jot-top-left .heading-md.h-size-md { font-size: var(--hsz-md) !important; }

#industries .ind-header .heading-md.h-size-lg,
#credentials .frame-header .heading-md.h-size-lg,
#our-locations .frame-header .heading-md.h-size-lg,
#careers .jot-top-left .heading-md.h-size-lg { font-size: var(--hsz-lg) !important; }

#industries .ind-header .heading-md.h-size-xl,
#credentials .frame-header .heading-md.h-size-xl,
#our-locations .frame-header .heading-md.h-size-xl,
#careers .jot-top-left .heading-md.h-size-xl { font-size: var(--hsz-xl) !important; }

/* CAREERS PAGE — Divisions/Life at Taknek/Open Roles headings under
   the same Heading Size system. .car-section-h (Divisions, Open
   Roles) and .lat-h (Life at Taknek) are unique to these 3 headings
   sitewide -- no other section shares them, and the hero (.car-hero-h,
   an h1) is deliberately excluded, same as every other page's hero.
   Safe as plain global rules, no ID/body-class scoping needed. */
.car-section-h.h-size-sm,
.lat-h.h-size-sm { font-size: var(--hsz-sm) !important; }

.car-section-h.h-size-md,
.lat-h.h-size-md { font-size: var(--hsz-md) !important; }

.car-section-h.h-size-lg,
.lat-h.h-size-lg { font-size: var(--hsz-lg) !important; }

.car-section-h.h-size-xl,
.lat-h.h-size-xl { font-size: var(--hsz-xl) !important; }

/* ═══════════════════════════════════════════════════
   CONTACT PAGE v2 — "Bid Desk" redesign
   All component classes prefixed `ctc-` so they can't collide with
   existing sitewide classes of the same short names used elsewhere
   in this file (.hero, .cell, .chip, .band, .flush, .close, .info,
   .poster, .disp, .meter, .fgrid, .segrow all already exist for
   unrelated components).

   Reuses the theme's existing brand variables (--blue/--blue-dark/
   --teal/--ink/--body/--muted/--rule/--bg/--white) mapped onto the
   reference mockup's own token names, and the theme's existing
   typefaces (Outfit for headings/mono-style labels, Source Sans 3
   for body) rather than the mockup's Archivo/DM Sans/JetBrains Mono
   -- introducing 3 new webfonts for one page would be inconsistent
   with every other page on the site.
   ═══════════════════════════════════════════════════ */

/* ── Hero — split navy, image right ── */
.ctc-hero { display: grid; grid-template-columns: minmax(0,0.78fr) minmax(0,1.22fr); background: var(--blue-dark); color: #fff; }
.ctc-hero-l { display: flex; flex-direction: column; gap: clamp(18px,2.4vw,26px); padding: clamp(36px,5vw,58px) clamp(16px,2.5vw,44px) clamp(32px,4vw,52px); max-width: 640px; width: 100%; margin-left: auto; }
.ctc-eyebrow { display: flex; align-items: center; gap: 12px; font-family: 'Outfit', sans-serif; font-size: 11px; font-weight: 700; letter-spacing: .28em; text-transform: uppercase; color: #9fc6e8; }
.ctc-eyebrow::before { content: ''; width: 26px; height: 2px; background: var(--teal); flex: none; }
.ctc-disp { font-family: 'Outfit', sans-serif; font-weight: 800; text-transform: uppercase; letter-spacing: -.02em; line-height: .95; font-size: clamp(34px, 4.000vw + 6.00px, 82.8px); color: #fff; margin: 0; }
.ctc-lede { font-size: clamp(14px, 0.408vw + 11.14px, 18.98px); line-height: 1.6; color: #cbd9e7; max-width: 48ch; margin: 0; }
.ctc-promise { display: grid; border-top: 2px solid rgba(255,255,255,.28); margin-top: auto; }
.ctc-promise > div { display: grid; grid-template-columns: 110px minmax(0,1fr); gap: 22px; align-items: baseline; padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.2); }
.ctc-promise .k { font-family: 'Outfit', sans-serif; font-size: 10.5px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: #2AA6B0; }
.ctc-promise .v { font-size: 14px; line-height: 1.5; color: #dbe6f0; }
.ctc-hero-r { position: relative; min-height: 320px; background: #12283f; overflow: hidden; }
.ctc-hero-bg { position: absolute; inset: 0; background-size: cover; background-position: center; }
.ctc-hero-r.grayscale .ctc-hero-bg { filter: grayscale(1) contrast(1.08); }
.ctc-stamp { position: absolute; left: 0; bottom: 0; z-index: 3; background: var(--ink); color: #fff; font-family: 'Outfit', sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; padding: 11px 18px; }
.ctc-idx { position: absolute; right: 0; top: 0; z-index: 3; background: var(--teal); color: #fff; font-family: 'Outfit', sans-serif; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; padding: 10px 16px; }

/* ── Status strip ── */
.ctc-stripband { background: var(--bg); border-bottom: 2px solid var(--ink); }
.ctc-strip { display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); max-width: var(--mw); margin: 0 auto; padding: 0 clamp(16px,2.5vw,44px); }
.ctc-strip div { padding: 13px 20px; font-family: 'Outfit', sans-serif; font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--body); border-left: 1px solid var(--rule); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ctc-strip div:first-child { color: var(--ink); font-weight: 700; border-left: 0; padding-left: 0; }
.ctc-strip .dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--teal); margin-right: 9px; vertical-align: 1px; }

/* ── Form band shell ── */
.ctc-band { max-width: var(--mw); margin: 0 auto; padding: 0 clamp(16px,2.5vw,44px); }
.ctc-fbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; padding: clamp(28px,4vh,44px) 0 22px; flex-wrap: wrap; }
.ctc-fbar-h { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: clamp(26px, 1.451vw + 15.84px, 43.7px); text-transform: uppercase; letter-spacing: -.02em; line-height: .98; color: var(--ink); margin: 0; }
.ctc-fbar-h em { font-style: normal; color: var(--teal); }
.ctc-fbar p { margin: 10px 0 0; font-size: 14px; line-height: 1.6; color: var(--body); max-width: 56ch; }
.ctc-tabs { display: flex; gap: 10px; flex: none; flex-wrap: wrap; }
.ctc-tab { display: flex; align-items: center; gap: 8px; padding: 11px 18px; border: 1px solid var(--rule); background: transparent; font-family: 'Outfit', sans-serif; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); white-space: nowrap; cursor: pointer; transition: .16s; }
.ctc-tab:hover { color: var(--ink); border-color: var(--ink); }
.ctc-tab.on { background: var(--ink); border-color: var(--ink); color: #fff; }
.ctc-tab-icon { font-size: 14px; line-height: 1; }

.ctc-panels { position: relative; }
.ctc-panel { display: none; }
.ctc-panel.on { display: block; animation: ctcIn .25s ease; }
@keyframes ctcIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.ctc-empty { padding: clamp(32px,5vh,56px) clamp(24px,4vw,40px); text-align: center; color: var(--muted); display: flex; flex-direction: column; align-items: center; gap: 14px; border-top: 2px solid var(--ink); }
.ctc-empty p { font-size: 14px; line-height: 1.7; max-width: 400px; }
.ctc-note { font-size: 12.5px; line-height: 1.55; color: var(--body); max-width: 60ch; margin: 16px 0 0; }

/* ── Numbered-cell field grid (both forms share this) ── */
.ctc-form-wrap .ctc-fgrid,
.ctc-form-wrap .fgrid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); border-top: 2px solid var(--ink); }
.ctc-form-wrap .fgrid { display: none; }
.ctc-form-wrap .fgrid.on { display: grid; }
.ctc-form-wrap .cell,
.ctc-form-wrap .ctc-cell { position: relative; padding: 18px clamp(16px,2vw,26px); border-bottom: 1px solid var(--rule); border-left: 1px solid var(--rule); transition: background .18s; }
.ctc-form-wrap .cell:first-child { border-left: 0; }
.ctc-form-wrap .cell.span2 { grid-column: span 2; }
.ctc-form-wrap .cell.span3 { grid-column: 1/-1; }
.ctc-form-wrap .cell:focus-within { background: var(--bg); }
.ctc-form-wrap .cell .idx { position: absolute; top: 18px; right: 10px; font-family: 'Outfit', sans-serif; font-size: 10px; letter-spacing: .08em; color: var(--muted); transition: color .18s; }
.ctc-form-wrap .cell:focus-within .idx { color: var(--teal); }
.ctc-form-wrap .cell:focus-within label,
.ctc-form-wrap .cell:focus-within .glabel { color: var(--ink); }
.ctc-form-wrap .req { color: var(--teal); }
.ctc-form-wrap br { display: none; }

/* Every field-wrapper convention this theme supports (.cell, .ctc-cell,
   .ctf-field -- see the ctf-row block below) is targeted here AND one
   level deeper (> p), because WordPress's wpautop filter wraps a
   field's label+shortcode content in an extra <p> whenever the CF7
   admin content puts them on separate source lines. Confirmed live via
   DevTools twice, once per convention: the rendered DOM was actually
   .cell > p > (label, br, span.wpcf7-form-control-wrap), not
   .cell > (label, span) directly as the admin content visually
   suggests. Without covering both levels, this flex/text-align never
   reaches the real label and input (wpautop's <p> sits one level too
   deep), leaving an inherited text-align:justify (from Additional CSS,
   outside this repo) free to stretch short label text across the full
   field width -- exactly what broke live twice, once per convention,
   until both were covered by one shared rule instead of two separate,
   easy-to-forget copies. */
.ctc-form-wrap .cell,
.ctc-form-wrap .cell > p,
.ctc-form-wrap .ctc-cell,
.ctc-form-wrap .ctc-cell > p {
  display: flex; flex-direction: column; gap: 6px; margin: 0; text-align: left !important;
}
.ctc-form-wrap .cell label,
.ctc-form-wrap .cell .glabel,
.ctc-form-wrap .ctc-cell label {
  display: block; font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--body); margin: 0;
}
.ctc-form-wrap .cell .wpcf7-form-control-wrap,
.ctc-form-wrap .ctc-cell .wpcf7-form-control-wrap { display: block; width: 100%; }
/* ...except inside a chips/segrow group, where CF7 wraps the whole
   checkbox/radio list in one span -- display:contents removes that
   span's own box so its individual list items/labels become direct
   participants in .chips/.segrow's own flex/grid layout instead of
   being trapped one level too deep inside a single flex/grid item. */
.ctc-form-wrap .chips .wpcf7-form-control-wrap,
.ctc-form-wrap .segrow .wpcf7-form-control-wrap,
.ctc-form-wrap .chips .wpcf7-form-control,
.ctc-form-wrap .segrow .wpcf7-form-control,
.ctc-form-wrap .chips .wpcf7-list-item,
.ctc-form-wrap .segrow .wpcf7-list-item { display: contents; }

/* "Flush" inputs — borderless, sit directly under the numbered label */
.ctc-form-wrap input[type="text"],
.ctc-form-wrap input[type="email"],
.ctc-form-wrap input[type="tel"],
.ctc-form-wrap input[type="url"],
.ctc-form-wrap input[type="number"],
.ctc-form-wrap select,
.ctc-form-wrap textarea,
.ctc-form-wrap .flush {
  border: 0; background: transparent; width: 100%; font-family: 'Source Sans 3', sans-serif;
  font-size: 16px; line-height: 1.4; color: var(--ink); caret-color: var(--teal);
  padding: 2px 0; min-height: 32px; outline: none; border-radius: 0; appearance: none; -webkit-appearance: none;
}
.ctc-form-wrap input::placeholder,
.ctc-form-wrap textarea::placeholder { color: var(--muted); }
.ctc-form-wrap textarea { resize: vertical; min-height: 96px; font-size: 15px; line-height: 1.55; }
.ctc-form-wrap select { cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23637D92' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 2px center; padding-right: 20px; }
.ctc-hint { font-size: 12.5px; line-height: 1.5; color: var(--body); margin: 7px 0 0; }

/* Older .ctf-row/.cf7-row conventions kept working inside the new
   wrap too, in case a form still uses them at the wp-admin end. */
.ctc-form-wrap .ctf-row,
.ctc-form-wrap .cf7-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; padding: 18px clamp(16px,2vw,26px); border-top: 2px solid var(--ink); }
.ctc-form-wrap .ctf-row:not(:first-child),
.ctc-form-wrap .cf7-row:not(:first-child) { border-top: 1px solid var(--rule); }
.ctc-form-wrap .ctf-row-1col { grid-template-columns: 1fr; }
/* .ctf-field's own children are targeted here AND one level deeper
   (> p) because WordPress's wpautop filter wraps any label+shortcode
   content that spans multiple source lines in a <p> -- confirmed live
   via DevTools: the rendered DOM was actually
   .ctf-field > p > (label, br, span.wpcf7-form-control-wrap), not
   .ctf-field > (label, span) directly as the CF7 admin content
   visually suggests. Without this, flex never reaches the label/input
   (they're one level too deep to be flex items), and an inherited
   text-align:justify (from Additional CSS, outside this repo) stretched
   short labels across the full field width -- forcing text-align here
   overrides that regardless of which element wpautop happened to wrap. */
.ctc-form-wrap .ctf-field,
.ctc-form-wrap .ctf-field > p { display: flex; flex-direction: column; gap: 6px; margin: 0; text-align: left !important; }
.ctc-form-wrap .ctf-field label { font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--body); }
.ctc-form-wrap .ctf-field .idx { font-family: 'Outfit', sans-serif; font-size: 10px; letter-spacing: .08em; color: var(--muted); margin-right: 6px; }
.ctc-form-wrap .ctf-field .wpcf7-form-control-wrap { display: block; width: 100%; }

/* Chips (checkbox group) */
.ctc-form-wrap .chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.ctc-form-wrap .chip { position: relative; display: inline-flex; align-items: baseline; gap: 8px; padding: 9px 14px; border: 1px solid var(--rule); cursor: pointer; font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--body); transition: .16s; }
.ctc-form-wrap .chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.ctc-form-wrap .chip .cn { font-family: 'Outfit', sans-serif; font-size: 9.5px; color: var(--muted); letter-spacing: .08em; }
.ctc-form-wrap .chip:hover { border-color: var(--blue); color: var(--ink); }
.ctc-form-wrap .chip:has(input:checked) { background: var(--ink); border-color: var(--ink); color: #fff; }
.ctc-form-wrap .chip:has(input:checked) .cn { color: #2AA6B0; }

/* Segmented single-select rows (radios) */
.ctc-form-wrap .segrow { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); margin-top: 8px; border: 1px solid var(--rule); }
.ctc-form-wrap .segrow label { position: relative; padding: 11px 10px; font-family: 'Outfit', sans-serif; font-weight: 600; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; transition: .16s; white-space: nowrap; text-align: center; color: var(--body); margin: 0; }
.ctc-form-wrap .segrow label + label { border-left: 1px solid var(--rule); }
.ctc-form-wrap .segrow input { position: absolute; opacity: 0; width: 0; height: 0; }
.ctc-form-wrap .segrow label:has(input:checked) { background: var(--ink); color: #fff; }
.ctc-form-wrap .segrow label:not(:has(input:checked)):hover { background: var(--bg); color: var(--ink); }

.ctc-form-wrap .scopecell { display: grid; grid-template-columns: minmax(0,1fr) 240px; gap: 26px; align-items: start; }
.ctc-form-wrap .scopecell .side { padding-left: 26px; border-left: 1px solid var(--rule); }
.ctc-form-wrap .scopecell .side .ctc-hint { margin-top: 0; }

/* Step pills + progress meter (2-step forms) */
.ctc-steps { display: flex; gap: 10px; margin: 18px 0 0; }
.ctc-step-pill { display: flex; align-items: baseline; gap: 8px; padding: 9px 14px; border: 1px solid var(--rule); font-family: 'Outfit', sans-serif; font-size: 10.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.ctc-step-pill i { font-style: normal; font-size: 9.5px; }
.ctc-step-pill.on { background: var(--ink); border-color: var(--ink); color: #fff; }
.ctc-step-pill.on i { color: #2AA6B0; }
.ctc-step-pill.done { border-color: var(--teal); color: var(--ink); }
.ctc-meter { display: flex; align-items: center; gap: 16px; margin: 4px 0 0; padding: 14px clamp(16px,2vw,26px) 0; }
.ctc-meter .n { font-family: 'Outfit', sans-serif; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.ctc-meter .n b { font-family: 'Outfit', sans-serif; font-size: 14px; font-weight: 800; letter-spacing: 0; color: var(--ink); }
.ctc-meter .bar { position: relative; flex: 1; height: 2px; background: var(--rule); }
.ctc-meter .bar i { position: absolute; left: 0; top: -1px; display: block; height: 4px; width: 0; background: var(--teal); transition: width .35s cubic-bezier(.2,.7,.2,1); }

/* Submit row */
.ctc-submit { display: flex; align-items: center; gap: 20px; padding: 20px clamp(16px,2vw,26px) 24px; flex-wrap: wrap; }
.ctc-submit .ctc-note { margin: 0 auto 0 0; }
.ctc-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.ctc-form-wrap input[type="submit"],
.ctc-btn-next { width: auto; min-width: 220px; padding: 14px 26px; background: var(--blue-dark); color: #fff; border: none; font-family: 'Outfit', sans-serif; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; transition: background .18s; }
.ctc-form-wrap input[type="submit"]:hover,
.ctc-btn-next:hover { background: var(--teal); }
.ctc-btn-back { background: transparent; border: 1px solid var(--rule); color: var(--body); font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; padding: 14px 18px; cursor: pointer; white-space: nowrap; }
.ctc-btn-back:hover { border-color: var(--ink); color: var(--ink); }
.ctc-attach { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--rule); padding: 14px 18px; font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; color: var(--body); white-space: nowrap; }
.ctc-attach:hover { border-color: var(--ink); color: var(--ink); }
.ctc-attach input { display: none; }
.ctc-attach em { font-style: normal; font-weight: 400; font-size: 10px; letter-spacing: .08em; color: var(--muted); text-transform: uppercase; margin-left: 4px; }

/* Validation / response output (CF7 classes) */
.ctc-form-wrap .wpcf7-not-valid-tip { font-size: 11px; color: #c0392b; margin-top: 3px; display: block; }
.ctc-form-wrap .wpcf7-form-control.wpcf7-not-valid { outline: 1px solid #c0392b; }
.ctc-form-wrap .wpcf7-response-output { border-radius: 0; padding: 12px clamp(16px,2vw,26px); font-size: 13px; margin: 0; border: none !important; border-top: 2px solid var(--ink) !important; }
.ctc-form-wrap .wpcf7-mail-sent-ok { background: rgba(0,164,159,.08); color: var(--teal); border-left: 3px solid var(--teal) !important; }
.ctc-form-wrap .wpcf7-mail-sent-ng,
.ctc-form-wrap .wpcf7-validation-errors { background: rgba(192,57,43,.06); color: #c0392b; border-left: 3px solid #c0392b !important; }

/* ── Contact info grid ── */
.ctc-info { border-top: 3px solid var(--ink); border-bottom: 3px solid var(--ink); background: var(--bg); }
.ctc-infogrid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); max-width: var(--mw); margin: 0 auto; padding: 0 clamp(16px,2.5vw,44px); }
.ctc-infogrid > div { position: relative; padding: clamp(24px,3.5vh,36px) clamp(18px,2.5vw,32px) clamp(28px,4vh,40px) 0; }
.ctc-infogrid > div + div { padding-left: clamp(18px,2.5vw,32px); border-left: 2px solid var(--ink); }
.ctc-infogrid > div::before { content: ''; display: block; width: 26px; height: 3px; background: var(--teal); margin-bottom: 12px; }
.ctc-infogrid .k { font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--teal); margin-bottom: 14px; }
.ctc-big-line { display: block; font-family: 'Outfit', sans-serif; font-weight: 800; font-size: clamp(19px, 0.799vw + 13.41px, 28.75px); letter-spacing: -.01em; color: var(--ink); }
.ctc-big-line + .ctc-big-line { margin-top: 5px; }
a.ctc-big-line:hover { color: var(--teal); }
.ctc-infogrid address { font-style: normal; font-weight: 600; font-size: 15.5px; line-height: 1.6; color: var(--ink); }
.ctc-infolist { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; font-size: 14px; }
.ctc-infolist a { color: var(--ink); }
.ctc-infolist a:hover { color: var(--teal); }

/* Office slot rotator: 2 fixed grid slots cycle through all offices,
   so adding more offices in ACF never overruns the 4-column grid. */
.ctc-office-slot { min-height: 108px; }
.ctc-office-panel { display: none; opacity: 0; transform: translateY(8px); transition: opacity .45s ease, transform .45s ease; }
.ctc-office-panel.on { display: block; opacity: 1; transform: translateY(0); }
.ctc-office-dots { display: flex; gap: 6px; margin-top: 14px; }
.ctc-office-dots .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--rule); transition: .25s; }
.ctc-office-dots .dot.on { width: 18px; border-radius: 3px; background: var(--teal); }

/* ── Map + urgent-line close section ── */
.ctc-close { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); background: var(--ink); color: #fff; border-bottom: 2px solid rgba(255,255,255,.28); }
.ctc-close-map { position: relative; display: flex; flex-direction: column; padding: clamp(28px,4vw,40px) clamp(24px,3vw,40px) clamp(24px,3vh,34px) clamp(16px,2.5vw,44px); border-right: 2px solid rgba(255,255,255,.28); }
.ctc-maphead { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; padding-bottom: 14px; border-bottom: 1px solid rgba(255,255,255,.24); flex-wrap: wrap; }
.ctc-maphead .k { font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: #2AA6B0; }
.ctc-maphead .m { font-family: 'Outfit', sans-serif; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: #8fa8c0; white-space: nowrap; }
.ctc-mapplate { position: relative; flex: 1; min-height: 280px; margin-top: 18px; }
.ctc-poster { display: flex; flex-direction: column; justify-content: center; gap: 20px; padding: clamp(36px,5vh,56px) clamp(16px,2.5vw,44px) clamp(36px,5vh,56px) clamp(24px,3vw,48px); }
.ctc-poster .ctc-disp { font-size: clamp(28px, 1.852vw + 15.03px, 50.6px); }
.ctc-num { display: block; font-family: 'Outfit', sans-serif; font-weight: 800; font-size: clamp(24px, 1.049vw + 16.66px, 36.8px); letter-spacing: -.01em; color: #fff; margin-top: 8px; }
.ctc-num:hover { color: #2AA6B0; }
.ctc-poster .k { font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: #2AA6B0; }
.ctc-poster p { font-size: 14px; line-height: 1.6; color: #a8bcd0; max-width: 46ch; margin: 0; }
.ctc-lines { border-top: 2px solid rgba(255,255,255,.3); padding-top: 20px; }

/* ── Responsive ── */
@media (max-width: 1240px) {
  .ctc-form-wrap .fgrid,
  .ctc-form-wrap .ctc-fgrid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .ctc-form-wrap .cell.span2,
  .ctc-form-wrap .cell.span3 { grid-column: 1/-1; }
  .ctc-form-wrap .scopecell { grid-template-columns: minmax(0,1fr) 200px; }
}
@media (max-width: 1000px) {
  .ctc-hero { grid-template-columns: minmax(0,1fr); }
  .ctc-hero-l { margin-left: 0; max-width: none; }
  .ctc-hero-r { min-height: 260px; }
  .ctc-infogrid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .ctc-infogrid > div:nth-child(odd) { border-left: 0; padding-left: 0; }
  .ctc-infogrid > div:nth-child(n+3) { border-top: 1px solid var(--rule); padding-top: 28px; }
  .ctc-close { grid-template-columns: minmax(0,1fr); }
  .ctc-close-map { border-right: 0; border-bottom: 2px solid rgba(255,255,255,.28); }
}
@media (max-width: 900px) {
  .ctc-strip { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .ctc-strip div:nth-child(3n+1) { border-left: 0; padding-left: 0; }
  .ctc-strip div:nth-child(n+4) { border-top: 1px solid var(--rule); }
}
@media (max-width: 720px) {
  .ctc-form-wrap .fgrid,
  .ctc-form-wrap .ctc-fgrid,
  .ctc-form-wrap .ctf-row { grid-template-columns: 1fr; }
  .ctc-form-wrap .cell { border-left: 0 !important; }
  .ctc-form-wrap .segrow { grid-template-columns: 1fr 1fr; }
  .ctc-form-wrap .segrow label:nth-child(odd) { border-left: 0; }
  .ctc-form-wrap .segrow label:nth-child(n+3) { border-top: 1px solid var(--rule); }
  .ctc-form-wrap .scopecell { grid-template-columns: 1fr; gap: 14px; }
  .ctc-form-wrap .scopecell .side { padding-left: 0; border-left: 0; }
  .ctc-infogrid { grid-template-columns: 1fr; }
  .ctc-infogrid > div + div { padding-left: 0; border-left: 0; border-top: 1px solid var(--rule); padding-top: 28px; }
  .ctc-strip { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .ctc-strip div:nth-child(2n+1) { border-left: 0; padding-left: 0; }
  .ctc-strip div:nth-child(n+3) { border-top: 1px solid var(--rule); }
  .ctc-submit .ctc-note { margin-right: 0; order: 2; }
}