/* L100 ICONS — SELF-HOSTED, AND ONLY WHAT THE PRODUCT USES.
 *
 * WHY THIS FILE EXISTS. The shell loaded Font Awesome from https://cdnjs.cloudflare.com, which meant
 * the governed surface made a runtime request to a third party on every page load and the CSP had to
 * admit that origin for both `style-src` and `font-src`. It was recorded as a follow-up for several
 * generations; the closure sweep refused to leave an L100-owned item as a deferral.
 *
 * WHAT THIS IS. Font Awesome 6.4.0 Free, SUBSET to the 168 glyphs the 17-view product actually
 * references -- 159 solid and 9 brand -- and served from L100's own origin. 15.6KB of font instead of
 * 258KB, and no external request at all. The icon list is derived from the markup rather than guessed:
 * `u8` re-derives it and fails if a referenced icon has no rule here.
 *
 * NOT A PACKAGE MANAGER AND NOT A SECOND CDN. Two woff2 files and this stylesheet live in the
 * repository and are served by the same asset mechanism as app.css.
 *
 * ONE ICON WAS NEVER RENDERING. `fa-sparkles` is Font Awesome PRO; the free set has no rule for it, so
 * the two places that used it drew nothing. Replaced with `fa-wand-magic-sparkles`, which is free, and
 * `u8` now fails on any icon the stylesheet cannot satisfy.
 *
 * Licences: the fonts are SIL OFL 1.1, the CSS below is MIT, the icon designs are CC BY 4.0.
 * See assets/l100-icons-LICENSE.txt, vendored alongside.
 */
@font-face {
  font-family: 'L100 Icons Solid';
  font-style: normal;
  font-weight: 900;
  font-display: block;
  src: url("/assets/l100-icons-solid.woff2") format("woff2");
}
@font-face {
  font-family: 'L100 Icons Brands';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url("/assets/l100-icons-brands.woff2") format("woff2");
}

/* The base rules Font Awesome applies to every icon, so the design's spacing is unchanged. */
.fa, .fas, .fab {
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  display: var(--fa-display, inline-block);
  font-style: normal;
  font-variant: normal;
  line-height: 1;
  text-rendering: auto;
}
.fa, .fas { font-family: 'L100 Icons Solid'; font-weight: 900; }
.fab { font-family: 'L100 Icons Brands'; font-weight: 400; }

/* The one modifier the product uses. */
.fa-spin { animation-name: fa-spin; animation-duration: 2s; animation-iteration-count: infinite;
           animation-timing-function: linear; }
@keyframes fa-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .fa-spin { animation-delay: -1ms; animation-duration: 1ms;
           animation-iteration-count: 1; } }

/* THE GLYPHS. One rule per icon the markup references, and nothing else. */
.fa-archive::before { content: "\f187"; }
.fa-arrow-down::before { content: "\f063"; }
.fa-arrow-left::before { content: "\f060"; }
.fa-arrow-right::before { content: "\f061"; }
.fa-arrow-up::before { content: "\f062"; }
.fa-ban::before { content: "\f05e"; }
.fa-bars::before { content: "\f0c9"; }
.fa-bell::before { content: "\f0f3"; }
.fa-bolt::before { content: "\f0e7"; }
.fa-book::before { content: "\f02d"; }
.fa-book-open::before { content: "\f518"; }
.fa-brain::before { content: "\f5dc"; }
.fa-building::before { content: "\f1ad"; }
.fa-calculator::before { content: "\f1ec"; }
.fa-calendar::before { content: "\f133"; }
.fa-calendar-alt::before { content: "\f073"; }
.fa-calendar-check::before { content: "\f274"; }
.fa-calendar-day::before { content: "\f783"; }
.fa-calendar-week::before { content: "\f784"; }
.fa-chart-area::before { content: "\f1fe"; }
.fa-chart-bar::before { content: "\f080"; }
.fa-chart-line::before { content: "\f201"; }
.fa-chart-pie::before { content: "\f200"; }
.fa-check::before { content: "\f00c"; }
.fa-check-circle::before { content: "\f058"; }
.fa-check-double::before { content: "\f560"; }
.fa-chess::before { content: "\f439"; }
.fa-chevron-down::before { content: "\f078"; }
.fa-chevron-left::before { content: "\f053"; }
.fa-chevron-right::before { content: "\f054"; }
.fa-circle::before { content: "\f111"; }
.fa-circle-notch::before { content: "\f1ce"; }
.fa-circle-question::before { content: "\f059"; }
.fa-circle-xmark::before { content: "\f057"; }
.fa-clipboard-check::before { content: "\f46c"; }
.fa-clipboard-list::before { content: "\f46d"; }
.fa-clock::before { content: "\f017"; }
.fa-clone::before { content: "\f24d"; }
.fa-cloud-download-alt::before { content: "\f0ed"; }
.fa-cloud-upload-alt::before { content: "\f0ee"; }
.fa-code::before { content: "\f121"; }
.fa-cog::before { content: "\f013"; }
.fa-coins::before { content: "\f51e"; }
.fa-columns::before { content: "\f0db"; }
.fa-comment::before { content: "\f075"; }
.fa-comments::before { content: "\f086"; }
.fa-compress::before { content: "\f066"; }
.fa-copy::before { content: "\f0c5"; }
.fa-credit-card::before { content: "\f09d"; }
.fa-crown::before { content: "\f521"; }
.fa-database::before { content: "\f1c0"; }
.fa-desktop::before { content: "\f390"; }
.fa-diagram-project::before { content: "\f542"; }
.fa-dollar-sign::before { content: "\24"; }
.fa-download::before { content: "\f019"; }
.fa-edit::before { content: "\f044"; }
.fa-ellipsis-h::before { content: "\f141"; }
.fa-ellipsis-v::before { content: "\f142"; }
.fa-equals::before { content: "\3d"; }
.fa-exchange-alt::before { content: "\f362"; }
.fa-exclamation-circle::before { content: "\f06a"; }
.fa-exclamation-triangle::before { content: "\f071"; }
.fa-expand::before { content: "\f065"; }
.fa-eye::before { content: "\f06e"; }
.fa-eye-slash::before { content: "\f070"; }
.fa-file::before { content: "\f15b"; }
.fa-file-alt::before { content: "\f15c"; }
.fa-file-archive::before { content: "\f1c6"; }
.fa-file-code::before { content: "\f1c9"; }
.fa-file-contract::before { content: "\f56c"; }
.fa-file-csv::before { content: "\f6dd"; }
.fa-file-excel::before { content: "\f1c3"; }
.fa-file-export::before { content: "\f56e"; }
.fa-file-image::before { content: "\f1c5"; }
.fa-file-invoice-dollar::before { content: "\f571"; }
.fa-file-pdf::before { content: "\f1c1"; }
.fa-file-powerpoint::before { content: "\f1c4"; }
.fa-file-word::before { content: "\f1c2"; }
.fa-filter::before { content: "\f0b0"; }
.fa-fire::before { content: "\f06d"; }
.fa-flag::before { content: "\f024"; }
.fa-folder::before { content: "\f07b"; }
.fa-folder-open::before { content: "\f07c"; }
.fa-folder-plus::before { content: "\f65e"; }
.fa-gavel::before { content: "\f0e3"; }
.fa-gem::before { content: "\f3a5"; }
.fa-graduation-cap::before { content: "\f19d"; }
.fa-hdd::before { content: "\f0a0"; }
.fa-history::before { content: "\f1da"; }
.fa-home::before { content: "\f015"; }
.fa-id-card::before { content: "\f2c2"; }
.fa-infinity::before { content: "\f534"; }
.fa-info-circle::before { content: "\f05a"; }
.fa-key::before { content: "\f084"; }
.fa-layer-group::before { content: "\f5fd"; }
.fa-leaf::before { content: "\f06c"; }
.fa-lightbulb::before { content: "\f0eb"; }
.fa-link::before { content: "\f0c1"; }
.fa-list-check::before { content: "\f0ae"; }
.fa-list-ol::before { content: "\f0cb"; }
.fa-lock::before { content: "\f023"; }
.fa-magic::before { content: "\f0d0"; }
.fa-map-marker-alt::before { content: "\f3c5"; }
.fa-moon::before { content: "\f186"; }
.fa-object-group::before { content: "\f247"; }
.fa-palette::before { content: "\f53f"; }
.fa-paper-plane::before { content: "\f1d8"; }
.fa-paperclip::before { content: "\f0c6"; }
.fa-percent::before { content: "\25"; }
.fa-play::before { content: "\f04b"; }
.fa-plug::before { content: "\f1e6"; }
.fa-plus::before { content: "\2b"; }
.fa-plus-circle::before { content: "\f055"; }
.fa-project-diagram::before { content: "\f542"; }
.fa-puzzle-piece::before { content: "\f12e"; }
.fa-random::before { content: "\f074"; }
.fa-receipt::before { content: "\f543"; }
.fa-redo::before { content: "\f01e"; }
.fa-right-left::before { content: "\f362"; }
.fa-robot::before { content: "\f544"; }
.fa-rocket::before { content: "\f135"; }
.fa-route::before { content: "\f4d7"; }
.fa-satellite::before { content: "\f7bf"; }
.fa-save::before { content: "\f0c7"; }
.fa-scale-balanced::before { content: "\f24e"; }
.fa-search::before { content: "\f002"; }
.fa-search-plus::before { content: "\f00e"; }
.fa-seedling::before { content: "\f4d8"; }
.fa-server::before { content: "\f233"; }
.fa-share-alt::before { content: "\f1e0"; }
.fa-shield-alt::before { content: "\f3ed"; }
.fa-sign-in-alt::before { content: "\f2f6"; }
.fa-sign-out-alt::before { content: "\f2f5"; }
.fa-sitemap::before { content: "\f0e8"; }
.fa-square::before { content: "\f0c8"; }
.fa-star::before { content: "\f005"; }
.fa-sticky-note::before { content: "\f249"; }
.fa-sun::before { content: "\f185"; }
.fa-sync-alt::before { content: "\f2f1"; }
.fa-tachometer-alt::before { content: "\f625"; }
.fa-terminal::before { content: "\f120"; }
.fa-th-large::before { content: "\f009"; }
.fa-thumbs-down::before { content: "\f165"; }
.fa-thumbs-up::before { content: "\f164"; }
.fa-times::before { content: "\f00d"; }
.fa-trash::before { content: "\f1f8"; }
.fa-trash-alt::before { content: "\f2ed"; }
.fa-triangle-exclamation::before { content: "\f071"; }
.fa-trophy::before { content: "\f091"; }
.fa-upload::before { content: "\f093"; }
.fa-user::before { content: "\f007"; }
.fa-user-check::before { content: "\f4fc"; }
.fa-user-plus::before { content: "\f234"; }
.fa-user-shield::before { content: "\f505"; }
.fa-user-slash::before { content: "\f506"; }
.fa-users::before { content: "\f0c0"; }
.fa-users-cog::before { content: "\f509"; }
.fa-wand-magic-sparkles::before { content: "\e2ca"; }
.fa-wind::before { content: "\f72e"; }

/* Brands. */
.fa-cc-mastercard::before { content: "\f1f1"; }
.fa-cc-visa::before { content: "\f1f0"; }
.fa-css3-alt::before { content: "\f38b"; }
.fa-github::before { content: "\f09b"; }
.fa-google::before { content: "\f1a0"; }
.fa-google-drive::before { content: "\f3aa"; }
.fa-html5::before { content: "\f13b"; }
.fa-microsoft::before { content: "\f3ca"; }
.fa-slack::before { content: "\f198"; }
