/* ==========================================================================
   Company Overview (resource 65) — page stylesheet
   Scoped under .icao. Shipped from design/company-overview/css/overview.css
   in full, per docs/BUILD-RECIPE.md ("ship the design CSS in full").

   Deviations from the export, all deliberate:
     1. --icao-navy reads --bs-tertiary-hex, not --bs-heading-color-hex.
        On this theme the latter is #212124 (body ink) and renders the hero
        and community bands ink-black. BUILD-RECIPE, "Hero or navy band
        renders ink-black".
     2. The bespoke video-modal rules are removed. The hero video uses the
        site's GLightbox (a .glightbox class on a YouTube link), per the task
        brief. Sizing for it is appended below.
     3. Heading colours are restated explicitly. The ICA theme sets h1/h2
        colour directly and a direct rule beats the design's inherited
        colour — this is what rendered home-page headings at 1.14:1.
     4. The hero photo is a Bootstrap carousel, not a single <img>.
     5. Value-band numerals come from a CSS counter (:lpad is not a MODX
        output modifier).
   ========================================================================== */

/* Company Overview — Injury Care Associates
   All rules scoped under .icao. Page root: <main id="main" class="icao">
   Tokens read from the theme with live-value fallbacks. */

.icao {
  --icao-navy: var(--bs-tertiary-hex, #1e2d3b);
  --icao-blue: var(--bs-primary-hex, #0072bc);
  --icao-blue-dark: #005b96;
  --icao-blue-hover: #0086dd;
  --icao-sky: #80b7e3;
  --icao-ice: #d8ecf9;
  --icao-tint: var(--bs-light-hex, #f2f8fc);
  --icao-gold: #ffd240;
  --icao-gold-ink: #a67c00;
  --icao-ink: #212124;
  --icao-muted: #495356;
  --icao-line: var(--bs-secondary-border-hex, #e7e7e7);
  --icao-line-soft: #cfe2f1;
  --icao-radius: var(--bs-border-radius, 10px);
  --icao-sans: 'Nunito Sans', system-ui, -apple-system, sans-serif;
  --icao-display: 'Catamaran', 'Nunito Sans', sans-serif;
  font-family: var(--icao-sans);
  color: var(--icao-ink);
  background: var(--icao-tint);
  overflow-x: hidden;
}
.icao *, .icao *::before, .icao *::after { box-sizing: border-box; }
.icao img { max-width: 100%; }
.icao a { color: var(--icao-navy); }
.icao a:hover { color: var(--icao-blue); }
.icao a, .icao button { transition: background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease; }

/* ---------- layout ---------- */
.icao-wrap { max-width: 1180px; margin: 0 auto; padding: 0 24px; }
.icao-wrap--wide { max-width: 1320px; }
.icao-sec { padding: 68px 0; }
.icao-sec--white { background: #fff; }
.icao-sec--tint { background: var(--icao-tint); }
.icao-sec--dark { background: var(--icao-navy); color: #fff; }
.icao-sec--rule { border-bottom: 1px solid var(--icao-line); }
.icao-sec--mark { position: relative; overflow: hidden; }
.icao-sec > .icao-wrap { position: relative; }
.icao-two { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 44px; align-items: start; }
.icao-two--center { align-items: center; }
.icao-head { max-width: 62ch; margin-bottom: 30px; }
.icao-stack { display: flex; flex-direction: column; gap: 18px; }
.icao-cards { display: grid; gap: 18px; }
.icao-cards--4 { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.icao-cards--2 { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 22px; }

/* ---------- type ---------- */
.icao-kicker { font-family: var(--icao-display); font-weight: 700; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--icao-blue); margin: 0 0 10px; }
.icao-kicker--accent { color: var(--icao-sky); }
.icao-kicker--gold { font-size: 12px; letter-spacing: .12em; color: var(--icao-gold-ink); }
.icao-h1 { font-family: var(--icao-display); font-weight: 800; font-size: clamp(34px, 5.2vw, 60px); line-height: 1.04; letter-spacing: -.02em; margin: 0 0 18px; max-width: 23ch; text-wrap: balance; }
.icao-h2 { font-family: var(--icao-display); font-weight: 800; font-size: clamp(28px, 3.6vw, 40px); line-height: 1.1; letter-spacing: -.015em; margin: 0 0 12px; max-width: 24ch; text-wrap: balance; }
.icao-h3 { font-family: var(--icao-display); font-weight: 800; font-size: 21px; line-height: 1.2; margin: 0; }
.icao-h3--lg { font-size: 22px; }
.icao-lede { font-size: 18px; line-height: 1.6; color: var(--icao-muted); margin: 0 0 14px; max-width: 58ch; }
.icao-lede:last-child { margin-bottom: 0; }
.icao-lede--onDark { color: var(--icao-ice); max-width: 62ch; }
.icao-tag { font-family: var(--icao-display); font-weight: 800; font-size: 15px; letter-spacing: .1em; text-transform: uppercase; color: var(--icao-gold); margin: 0; }

/* ---------- buttons ---------- */
.icao-btn { display: inline-flex; align-items: center; gap: 10px; background: var(--icao-blue); color: #fff; text-decoration: none; font-family: var(--icao-display); font-weight: 700; font-size: 16px; padding: 14px 24px; border: 0; border-radius: 8px; cursor: pointer; }
.icao-btn:hover { background: var(--icao-blue-hover); color: #fff; }
.icao-btn--lg { font-size: 18px; padding: 17px 30px; }
.icao-btn--lg:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(0, 114, 188, .35); }
.icao-btn--ghost { background: transparent; color: #fff; font-size: 17px; padding: 15px 24px; border: 1px solid rgba(255, 255, 255, .34); }
.icao-btn--ghost:hover { background: rgba(255, 255, 255, .1); border-color: var(--icao-sky); color: #fff; }
.icao-pill { display: flex; align-items: center; justify-content: center; background: var(--icao-blue); color: #fff; text-decoration: none; font-weight: 600; font-size: 17px; padding: 14px 24px; border-radius: 999px; border: 2px solid var(--icao-blue); }
.icao-pill:hover { background: var(--icao-blue-dark); border-color: var(--icao-blue-dark); color: #fff; }
.icao-pill--outline { background: transparent; color: var(--icao-blue); }
.icao-pill--outline:hover { background: var(--icao-blue); color: #fff; }

/* ---------- hero ---------- */
.icao-hero { position: relative; background: var(--icao-navy); color: #fff; overflow: hidden; }
.icao-hero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .22; animation: icaoDrift 26s ease-in-out infinite alternate; }
.icao-hero__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, #1e2d3b 20%, rgba(30, 45, 59, .84) 70%, rgba(30, 45, 59, .5) 100%); }
.icao-hero__inner { position: relative; padding-top: 64px; padding-bottom: 60px; }
.icao-hero__lede { font-size: clamp(17px, 2vw, 21px); line-height: 1.5; color: var(--icao-tint); max-width: 62ch; margin: 0 0 28px; }
.icao-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.icao-play { display: inline-flex; align-items: center; gap: 12px; color: #fff; background: none; border: 0; font: inherit; font-weight: 700; font-size: 17px; padding: 10px 12px; cursor: pointer; }
.icao-play:hover { color: var(--icao-gold); }
.icao-play__disc { width: 44px; height: 44px; border-radius: 50%; background: var(--icao-gold); display: inline-flex; align-items: center; justify-content: center; animation: icaoPulse 2.4s ease-out infinite; }
.icao-play__tri { width: 0; height: 0; border-style: solid; border-width: 8px 0 8px 14px; border-color: transparent transparent transparent var(--icao-navy); margin-left: 3px; }

/* ---------- value band ---------- */
.icao-band { background: var(--icao-blue); color: #fff; }
.icao-band__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; padding-top: 24px; padding-bottom: 24px; }
.icao-band__item { display: flex; gap: 12px; align-items: flex-start; }
.icao-band__n { font-family: var(--icao-display); font-weight: 800; font-size: 26px; color: var(--icao-sky); line-height: 1; }
.icao-band__item b { display: block; font-weight: 700; font-size: 16px; }
.icao-band__item span:not(.icao-band__n) { display: block; font-size: 15px; line-height: 1.4; color: var(--icao-ice); }

/* ---------- who we are ---------- */
.icao-figure { position: relative; margin: 0; }
.icao-figure img { width: 100%; aspect-ratio: 16 / 11; object-fit: cover; border-radius: var(--icao-radius); border: 1px solid var(--icao-line); display: block; }
.icao-badge { position: absolute; left: 18px; bottom: 18px; background: var(--icao-gold); color: var(--icao-ink); border-radius: var(--icao-radius); padding: 13px 17px; font-family: var(--icao-display); font-weight: 800; font-size: 16px; line-height: 1.25; max-width: 19ch; box-shadow: 0 10px 24px rgba(30, 45, 59, .18); }
.icao-card { background: #fff; border: 1px solid var(--icao-line); border-radius: var(--icao-radius); padding: 24px; }
.icao-card--tint { background: var(--icao-tint); }
.icao-card .icao-h3 { font-size: 19px; margin-bottom: 14px; }
.icao-dots { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.icao-dots a { display: block; text-decoration: none; font-size: 16.5px; line-height: 1.45; color: var(--icao-navy); padding-left: 17px; position: relative; }
.icao-dots a::before { content: ""; position: absolute; left: 0; top: 9px; width: 7px; height: 7px; border-radius: 50%; background: var(--icao-blue); }
.icao-dots a:hover { color: var(--icao-blue); }
.icao-dots b { font-family: var(--icao-display); }

/* ---------- value cards ---------- */
.icao-value { background: #fff; border: 1px solid var(--icao-line); border-top: 5px solid var(--icao-gold); border-radius: var(--icao-radius); padding: 26px; display: flex; flex-direction: column; gap: 12px; transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.icao-value:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(30, 45, 59, .1); border-color: var(--icao-line-soft); }
.icao-value p:last-child { font-size: 16px; line-height: 1.55; color: var(--icao-muted); margin: 0; }
.icao-value .icao-kicker { margin: 0; }

/* ---------- yellow team band ---------- */
.icao-gold { background: var(--icao-gold); border-radius: 14px; overflow: hidden; display: flex; flex-wrap: wrap; align-items: center; gap: 24px 40px; padding: 32px; }
.icao-gold__art { flex: 0 1 340px; min-width: 240px; align-self: flex-end; display: flex; }
.icao-gold__art img { width: 100%; height: auto; display: block; }
.icao-gold__body { flex: 1 1 420px; min-width: 0; display: flex; flex-wrap: wrap; gap: 24px 36px; align-items: center; }
.icao-gold__copy { flex: 1 1 320px; min-width: 0; }
.icao-gold__h2 { font-family: var(--icao-display); font-weight: 600; font-size: clamp(26px, 3vw, 38px); line-height: 1.15; color: var(--icao-blue); margin: 0 0 12px; max-width: 22ch; }
.icao-gold__copy p { font-size: 17.5px; line-height: 1.5; color: var(--icao-blue); margin: 0; max-width: 52ch; }
.icao-gold__actions { flex: 0 0 auto; min-width: 200px; display: flex; flex-direction: column; gap: 10px; }

/* ---------- culture collage ---------- */
.icao-collage { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.icao-collage img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 8px; border: 1px solid var(--icao-line); }

/* ---------- community ---------- */
.icao-watermark { position: absolute; right: -8%; top: 50%; transform: translateY(-50%); width: min(56vw, 560px); opacity: .07; pointer-events: none; }
.icao-glass { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .14); border-radius: var(--icao-radius); padding: 24px; display: flex; flex-direction: column; gap: 10px; }
.icao-glass p:last-child { font-size: 16px; line-height: 1.55; color: var(--icao-ice); margin: 0; }

/* ---------- partners ---------- */
.icao-partner { background: #fff; border: 1px solid var(--icao-line); border-radius: var(--icao-radius); overflow: hidden; display: flex; flex-direction: column; }
.icao-partner__img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.icao-partner__body { padding: 24px; display: flex; flex-direction: column; gap: 12px; }
.icao-partner__logo { height: 52px; width: auto; align-self: flex-start; object-fit: contain; }
.icao-partner p { font-size: 16.5px; line-height: 1.55; color: var(--icao-muted); margin: 0; }

/* ---------- careers CTA ---------- */
.icao-cta { position: relative; background: var(--icao-navy); color: #fff; overflow: hidden; }
.icao-cta__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .28; }
.icao-cta__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, #1e2d3b 18%, rgba(30, 45, 59, .8) 68%, rgba(30, 45, 59, .45) 100%); }
.icao-cta__inner { position: relative; padding-top: 64px; padding-bottom: 64px; gap: 40px; }
.icao-cta__actions { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; }

/* ---------- motion ---------- */
@keyframes icaoHeroIn { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes icaoDrift { from { transform: scale(1.06) translate3d(0, 0, 0); } to { transform: scale(1.14) translate3d(-1.5%, -1%, 0); } }
@keyframes icaoPulse { 0% { box-shadow: 0 0 0 0 rgba(255, 210, 64, .6); } 70% { box-shadow: 0 0 0 12px rgba(255, 210, 64, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 210, 64, 0); } }
.icao-anim { animation: icaoHeroIn .7s cubic-bezier(.2, .7, .3, 1) both; }
.icao-anim--1 { animation-duration: .6s; }
.icao-anim--2 { animation-delay: .08s; }
.icao-anim--3 { animation-delay: .16s; }
.icao-anim--4 { animation-delay: .24s; }
/* scroll reveal: only applied once JS confirms support (html.js-icao) */
.js-icao .icao-reveal { opacity: 0; transform: translateY(22px); }
.js-icao .icao-reveal.is-shown { opacity: 1; transform: none; transition: opacity .62s cubic-bezier(.2, .7, .3, 1), transform .62s cubic-bezier(.2, .7, .3, 1); }

@media print {
  .icao-reveal, .icao-anim { opacity: 1 !important; transform: none !important; animation: none !important; }
  .icao-modal { display: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .icao *, .icao *::before, .icao *::after { animation: none !important; transition: none !important; }
  .js-icao .icao-reveal { opacity: 1; transform: none; }
}

/* ==========================================================================
   ICA theme reconciliation — appended, nothing above is reordered
   ========================================================================== */

/* 3. The theme sets h1/h2/h3 colour directly; restate ours so it wins on
      every ground the page uses. Without this the dark bands go 1.14:1. */
.icao .icao-h1,
.icao .icao-h2,
.icao .icao-h3 { color: var(--icao-ink); }
.icao .icao-sec--dark .icao-h2,
.icao .icao-sec--dark .icao-h3,
.icao .icao-hero .icao-h1,
.icao .icao-cta .icao-h2 { color: #fff; }
.icao .icao-gold__h2 { color: var(--icao-blue); }
.icao .icao-sec--dark .icao-tag { color: var(--icao-gold); }

/* Rich-text TV output ([[*content]], [[*types-content]], [[*collage-content]],
   [[*bottom-text]]) arrives as <p> runs — give it the lede treatment rather
   than asking an editor to remember classes. */
.icao-prose > p { font-size: 17px; line-height: 1.6; color: var(--icao-muted); margin: 0 0 14px; max-width: 62ch; }
.icao-prose > p:last-child { margin-bottom: 0; }
.icao-prose--lede > p { font-size: 18px; }
.icao-prose--onDark > p { color: var(--icao-ice); }
.icao-prose strong, .icao-prose b { color: var(--icao-ink); font-weight: 700; }
.icao-prose--onDark strong, .icao-prose--onDark b { color: #fff; }
.icao-prose a { color: var(--icao-blue); }

/* 4. Hero carousel. The export used one <img class="icao-hero__bg">; the live
      page keeps its three slides (Thornton clinic, home, workplace injuries),
      so the drift and scrim now sit on the carousel instead. */
.icao-hero__media { position: absolute; inset: 0; }
.icao-hero__media .carousel,
.icao-hero__media .carousel-inner,
.icao-hero__media .carousel-item { height: 100%; }
.icao-hero__media .carousel-item { transition: opacity .9s ease; }
.icao-hero__inner { min-height: 460px; display: flex; flex-direction: column; justify-content: center; }

/* 5. Value-band numerals: CSS counter, so reordering rows in the manager
      renumbers them and no editor has to type "03". */
.icao-band__grid { counter-reset: icaoBand; }
.icao-band__item { counter-increment: icaoBand; }
.icao-band__item::before {
  content: counter(icaoBand, decimal-leading-zero);
  font-family: var(--icao-display); font-weight: 800; font-size: 26px;
  color: var(--icao-sky); line-height: 1; flex: 0 0 auto;
}

/* Counter row — middle-stats-migx, above the careers CTA (Gate 2). */
.icao-sec--tight { padding: 44px 0; }
.icao-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 24px; text-align: center; }
.icao-stat__n { font-family: var(--icao-display); font-weight: 800; font-size: clamp(36px, 5vw, 54px); line-height: 1; color: var(--icao-blue); margin: 0 0 6px; }
.icao-stat__l { font-size: 16px; line-height: 1.4; color: var(--icao-muted); margin: 0; }

/* 2. GLightbox video sizing. data-width/data-height do not size a video slide
      (the instance's videosWidth wins), so it is done here. */
.glightbox-container .gslide-video { max-width: min(1100px, 92vw) !important; }

/* The play control is an <a> now, not a <button>, so it needs the reset. */
.icao a.icao-play { text-decoration: none; color: #fff; }
.icao a.icao-play:hover { color: var(--icao-gold); }

/* Fail-open: if the reveal script never runs, nothing stays at opacity 0.
   The opacity rules are already gated on html.js-icao; this is the belt. */
.icao [data-reveal] { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .icao-hero__bg { animation: none !important; }
  .icao-play__disc { animation: none !important; }
}

/* Counter row — hidden while it has no rows.                       2026-10-05

   Ryan's Gate 1 answer was to keep the three statistics and source them, on my
   statement that they were already published. That was wrong: middle-stat-tpl
   renders them into data-value attributes on empty <p> elements and the countup
   script never writes them in, so "1000s served / 30+ staff / 95% satisfaction"
   has never been visible to anyone. Keeping them would have published three
   unsourced numbers for the first time, "30+" among them, which contradicts
   resource 30's 28-person roster. Dropped on his instruction, 2026-10-05.

   The TV is emptied on resource 65 only — middle-stats-migx is shared with five
   other templates and values are per-resource, so nothing else moves. The
   section markup stays, so real figures are a manifest edit away.

   :not(:has(.icao-stat)) rather than :empty — getImageList leaves whitespace
   in the wrapper. Hiding the section, not the grid, so its padding goes too.
   .icao-sec--tight is used by this section alone. */
.icao .icao-sec--tight:not(:has(.icao-stat)) { display: none; }

/* Contrast — WCAG AA on the live theme.                           2026-10-05

   Measured against the rendered page after the first deploy, compositing the
   translucent layers properly. Three of the design export's own accessibility
   claims did not hold on this theme:

     gold band body   #0072bc on #ffd240  3.52  (brief claimed ~4.6)
     blue band note   #d8ecf9 on #0072bc  4.18  (brief measured it on navy,
                                                 but the band is blue)
     value kicker     #a67c00 on tint     3.56  (brief called it the fix)

   All three are body-size text needing 4.5. Replacements stay in the existing
   palette: --icao-blue-dark and --icao-tint are already tokens.

     #005b96 on gold   4.95
     #f2f8fc on blue   4.74
     #8a6700 on tint   4.88 / on white 5.22

   The gold heading passed at 3.52 as large text, but it moves with the body so
   the band does not carry two near-identical blues. */
.icao .icao-gold__h2,
.icao .icao-gold__copy p { color: var(--icao-blue-dark); }
.icao .icao-band__item span:not(.icao-band__n) { color: var(--icao-tint); }
.icao .icao-kicker--gold { color: #8a6700; }

/* Button colour — specificity.                                    2026-10-06

   The design's own `.icao a { color: var(--icao-navy) }` is (0,1,1) and beat
   every `.icao-btn`/`.icao-pill` colour rule at (0,1,0), so every button that
   is an <a> rendered navy. Measured on the live page:

     "Meet our team"      ghost on the dark hero   1.00  invisible
     "Talk to our team"   ghost on the careers band 1.00  invisible
     filled blue buttons                            2.77  fails AA
     The rest of the site uses white on blue (crr-btn, wic-btn).

   The same bug was patched for .icao-play alone earlier in this file; these
   are the cases that fix missed. Scoped `a.` selectors raise specificity to
   (0,2,1) without touching the design's rules. */
.icao a.icao-btn,
.icao a.icao-btn:hover,
.icao a.icao-btn--ghost,
.icao a.icao-btn--ghost:hover,
.icao a.icao-pill,
.icao a.icao-pill:hover { color: #fff; }
.icao a.icao-pill--outline { color: var(--icao-blue-dark); }
.icao a.icao-pill--outline:hover { color: #fff; }

/* Paired CTA buttons now come from the "Two Buttons Table" TVs, so the variant
   is positional: first row filled, second outlined. */
.icao a.icao-pill.is-first { color: #fff; }
