/* ---------------------------------------------------------------------------
   Subset icon fonts — replaces bootstrap-icons.css and fontawesome all.min.css.

   The full versions shipped ~2,000 Bootstrap Icons and ~2,000 Font Awesome
   glyphs; this site uses 79 and 21 respectively. The two woff2 files were
   subset with pyftsubset to exactly those glyphs:

     bootstrap-icons.woff2   127.3 KB -> 7.4 KB
     fa-solid-900.woff2      153.5 KB -> 3.4 KB

   font-display is swap rather than block. With the originals, block was the
   safer choice because the fonts were large enough that a fallback flash was
   likely; at 7 KB and 3 KB they arrive with the stylesheet, and swap stops
   Lighthouse flagging up to 3 s of invisible glyphs.

   REGENERATING: if you add an icon that is not in the lists below it will
   render as a blank box. Re-run the subsetting step with the new glyph included,
   or temporarily re-link the full vendor stylesheets in the page <head>.

   2026-07-25: added bi-columns, bi-distribute-horizontal, bi-grid-3x3 and
   bi-ladder (used by the homepage's JS-rendered "Related articles" blog
   cards) and re-subset bootstrap-icons-subset.woff2 to include them —
   these were missing from the original 75-glyph subset, which meant they
   silently rendered as blank boxes anywhere the full vendor CSS wasn't
   also loaded as a fallback.
   --------------------------------------------------------------------------- */

@font-face {
  font-family: "bootstrap-icons";
  font-display: swap;
  font-style: normal;
  font-weight: normal;
  src: url("../fonts/bootstrap-icons-subset.woff2") format("woff2");
}

@font-face {
  font-family: "Font Awesome 6 Free";
  font-display: swap;
  font-style: normal;
  font-weight: 900;
  src: url("../fonts/fa-solid-subset.woff2") format("woff2");
}

/* ---- Bootstrap Icons base ------------------------------------------------ */
.bi::before,
[class^="bi-"]::before,
[class*=" bi-"]::before {
  display: inline-block;
  font-family: bootstrap-icons !important;
  font-style: normal;
  font-weight: normal !important;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  vertical-align: -.125em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ---- Font Awesome base (solid style only — nothing else is used) --------- */
.fa-solid,
.fas {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  display: var(--fa-display, inline-block);
  font-family: "Font Awesome 6 Free";
  font-style: normal;
  font-variant: normal;
  font-weight: 900;
  line-height: 1;
  text-rendering: auto;
}

/* ---- Bootstrap Icons in use (75) ---------------------------------------- */
.bi-arrow-right::before { content: "\f138"; }
.bi-arrow-up-short::before { content: "\f145"; }
.bi-bar-chart-line::before { content: "\f17c"; }
.bi-bezier::before { content: "\f18b"; }
.bi-binoculars::before { content: "\f18f"; }
.bi-box-arrow-in-right::before { content: "\f1be"; }
.bi-bricks::before { content: "\f1ca"; }
.bi-briefcase::before { content: "\f1cc"; }
.bi-brightness-high::before { content: "\f1d2"; }
.bi-building::before { content: "\f1dd"; }
.bi-building-check::before { content: "\f868"; }
.bi-buildings::before { content: "\f87d"; }
.bi-calendar-check::before { content: "\f1e2"; }
.bi-cash-coin::before { content: "\f632"; }
.bi-chat-dots::before { content: "\f24a"; }
.bi-check-circle::before { content: "\f26b"; }
.bi-check-circle-fill::before { content: "\f26a"; }
.bi-check2-all::before { content: "\f26f"; }
.bi-check2-circle::before { content: "\f270"; }
.bi-chevron-down::before { content: "\f282"; }
.bi-chevron-left::before { content: "\f284"; }
.bi-chevron-right::before { content: "\f285"; }
.bi-clipboard-check::before { content: "\f28b"; }
.bi-clock::before { content: "\f293"; }
.bi-clock-fill::before { content: "\f291"; }
.bi-clock-history::before { content: "\f292"; }
.bi-collection::before { content: "\f2cc"; }
.bi-columns::before { content: "\f2ce"; }
.bi-columns-gap::before { content: "\f2cd"; }
.bi-cpu::before { content: "\f2d6"; }
.bi-diagram-3::before { content: "\f2ee"; }
.bi-distribute-horizontal::before { content: "\f303"; }
.bi-droplet::before { content: "\f30d"; }
.bi-easel::before { content: "\f310"; }
.bi-emoji-smile::before { content: "\f327"; }
.bi-envelope::before { content: "\f32f"; }
.bi-envelope-fill::before { content: "\f32c"; }
.bi-envelope-paper::before { content: "\f73d"; }
.bi-exclamation-triangle::before { content: "\f33b"; }
.bi-facebook::before { content: "\f344"; }
.bi-fan::before { content: "\f670"; }
.bi-file-earmark-text::before { content: "\f38b"; }
.bi-fire::before { content: "\f7f6"; }
.bi-folder::before { content: "\f3d7"; }
.bi-gear-wide-connected::before { content: "\f3e3"; }
.bi-geo-alt::before { content: "\f3e8"; }
.bi-geo-alt-fill::before { content: "\f3e7"; }
.bi-graph-up-arrow::before { content: "\f673"; }
.bi-grid-3x3::before { content: "\f3fa"; }
.bi-houses::before { content: "\f8c6"; }
.bi-instagram::before { content: "\f437"; }
.bi-ladder::before { content: "\f452"; }
.bi-layers::before { content: "\f45b"; }
.bi-lightbulb::before { content: "\f46b"; }
.bi-lightbulb-fill::before { content: "\f468"; }
.bi-lightning-charge::before { content: "\f46d"; }
.bi-lightning-charge-fill::before { content: "\f46c"; }
.bi-link-45deg::before { content: "\f470"; }
.bi-linkedin::before { content: "\f472"; }
.bi-list::before { content: "\f479"; }
.bi-patch-check::before { content: "\f4b6"; }
.bi-people::before { content: "\f4d0"; }
.bi-person::before { content: "\f4e1"; }
.bi-person-badge::before { content: "\f4d3"; }
.bi-person-workspace::before { content: "\f67a"; }
.bi-quote::before { content: "\f6b0"; }
.bi-reply-fill::before { content: "\f51f"; }
.bi-rulers::before { content: "\f523"; }
.bi-search::before { content: "\f52a"; }
.bi-shield-check::before { content: "\f52f"; }
.bi-shop::before { content: "\f543"; }
.bi-star-fill::before { content: "\f586"; }
.bi-star-half::before { content: "\f587"; }
.bi-tags::before { content: "\f5b2"; }
.bi-telephone::before { content: "\f5c1"; }
.bi-twitter-x::before { content: "\f8db"; }
.bi-whatsapp::before { content: "\f618"; }
.bi-x::before { content: "\f62a"; }
.bi-zoom-in::before { content: "\f62c"; }

/* ---- Font Awesome icons in use (21) ------------------------------------ */
.fa-archway::before { content: "\f557"; }
.fa-bolt::before { content: "\f0e7"; }
.fa-book-open::before { content: "\f518"; }
.fa-building::before { content: "\f1ad"; }
.fa-diagram-project::before { content: "\f542"; }
.fa-drafting-compass::before { content: "\f568"; }
.fa-earth-americas::before { content: "\f57d"; }
.fa-fan::before { content: "\f863"; }
.fa-faucet::before { content: "\e005"; }
.fa-faucet-drip::before { content: "\e006"; }
.fa-fire-extinguisher::before { content: "\f134"; }
.fa-fire-flame-curved::before { content: "\f7e4"; }
.fa-handshake::before { content: "\f2b5"; }
.fa-helmet-safety::before { content: "\f807"; }
.fa-industry::before { content: "\f275"; }
.fa-layer-group::before { content: "\f5fd"; }
.fa-magnifying-glass-chart::before { content: "\e522"; }
.fa-ruler-combined::before { content: "\f546"; }
.fa-sack-dollar::before { content: "\f81d"; }
.fa-tools::before { content: "\f7d9"; }
.fa-user-gear::before { content: "\f4fe"; }
