/*!
 * Font Awesome Self-Hosted Replacement v1.0
 * SPAV IT Dept — GIGW/STQC Phase 2A
 * Unicode-based icon fallback — no external font files required
 * Covers FA 4.x (.fa) and FA 6.x (.fas/.fab/.far) class names
 */

/* ─── Base ─────────────────────────────────────────────────────────────────── */
.fa, .fas, .fab, .far, .fal, .fat,
.fa-solid, .fa-regular, .fa-light, .fa-brands, .fa-thin {
  display: inline-block;
  font-style: normal;
  font-variant: normal;
  font-weight: normal;
  line-height: 1;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  speak: never;
}

/* ─── Sizing ─────────────────────────────────────────────────────────────── */
.fa-xs  { font-size: .75em; }
.fa-sm  { font-size: .875em; }
.fa-lg  { font-size: 1.25em; line-height: .05em; vertical-align: -.075em; }
.fa-xl  { font-size: 1.5em; }
.fa-2xl { font-size: 2em; }
.fa-2x  { font-size: 2em; }
.fa-3x  { font-size: 3em; }
.fa-4x  { font-size: 4em; }
.fa-5x  { font-size: 5em; }
.fa-fw  { width: 1.25em; text-align: center; }
.fa-pull-left  { float: left;  margin-right: .3em; }
.fa-pull-right { float: right; margin-left: .3em; }

/* ─── Animation ─────────────────────────────────────────────────────────── */
.fa-spin  { animation: fa-spin 2s linear infinite; }
.fa-pulse { animation: fa-spin 1s steps(8) infinite; }
@keyframes fa-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

/* ─── Navigation — critical (hamburger, close, chevrons) ────────────────── */
.fa-bars::before,        .fa-navicon::before          { content: "\2630"; }
.fa-times::before,       .fa-xmark::before,
.fa-close::before,       .fa-remove::before           { content: "\2715"; }
.fa-chevron-down::before                              { content: "\25BE"; }
.fa-chevron-up::before                               { content: "\25B4"; }
.fa-chevron-right::before, .fa-angle-right::before   { content: "\203A"; }
.fa-chevron-left::before,  .fa-angle-left::before    { content: "\2039"; }
.fa-angle-double-right::before, .fa-angles-right::before { content: "\00BB"; }
.fa-angle-double-left::before,  .fa-angles-left::before  { content: "\00AB"; }
.fa-angle-up::before    { content: "\2038"; }
.fa-angle-down::before  { content: "\2C65"; }

/* ─── Search ─────────────────────────────────────────────────────────────── */
.fa-search::before,
.fa-magnifying-glass::before                         { content: "\2315"; }
.fa-search-plus::before,
.fa-magnifying-glass-plus::before                    { content: "\2A01"; }
.fa-search-minus::before,
.fa-magnifying-glass-minus::before                   { content: "\2A02"; }

/* ─── Header / Footer navigation icons ──────────────────────────────────── */
.fa-home::before, .fa-house::before                  { content: "\2302"; }
.fa-envelope::before                                 { content: "\2709"; }
.fa-map-marker-alt::before, .fa-location-dot::before,
.fa-map-marker::before                               { content: "\229A"; }
.fa-language::before                                 { content: "\24B6"; }
.fa-fingerprint::before                              { content: "\25CE"; }
.fa-file-signature::before, .fa-signature::before    { content: "\270E"; }
.fa-address-book::before, .fa-contact-book::before   { content: "\260F"; }
.fa-universal-access::before                         { content: "\267F"; }
.fa-assistive-listening-systems::before              { content: "\266B"; }
.fa-id-card::before, .fa-id-card-alt::before        { content: "\229B"; }
.fa-id-badge::before                                { content: "\1FAAA"; }
.fa-receipt::before                                 { content: "\1F9FE"; }
.fa-headset::before                                  { content: "\2706"; }
.fa-phone::before, .fa-phone-alt::before            { content: "\260E"; }
.fa-phone-volume::before                             { content: "\260E"; }

/* ─── Social brands ─────────────────────────────────────────────────────── */
.fa-facebook-f::before, .fa-facebook::before         { content: "f"; font-weight: bold; }
.fa-twitter::before                                  { content: "\1D54F"; }
.fa-instagram::before                               { content: "\25C9"; }
.fa-youtube::before                                  { content: "\25B6"; }
.fa-linkedin-in::before, .fa-linkedin::before        { content: "in"; font-size: .75em; }
.fa-whatsapp::before                                 { content: "\2706"; }
.fa-github::before                                   { content: "\26BF"; }

/* ─── Files ──────────────────────────────────────────────────────────────── */
.fa-file-pdf::before, .fa-file-pdf-o::before         { content: "\1F5BA"; }
.fa-file-word::before, .fa-file-word-o::before       { content: "\1F4DD"; }
.fa-file-excel::before, .fa-file-excel-o::before     { content: "\1F4CA"; }
.fa-file-powerpoint::before,
.fa-file-powerpoint-o::before                        { content: "\1F4CB"; }
.fa-file-archive::before, .fa-file-archive-o::before,
.fa-file-zipper::before                             { content: "\1F4E6"; }
.fa-file-image::before, .fa-file-image-o::before    { content: "\1F5BC"; }
.fa-file-video::before, .fa-file-video-o::before    { content: "\1F3AC"; }
.fa-file-alt::before, .fa-file-text::before,
.fa-file-lines::before, .fa-file-text-o::before     { content: "\1F5BA"; }
.fa-file::before, .fa-file-o::before                { content: "\1F5BA"; }
.fa-folder::before, .fa-folder-o::before            { content: "\1F4C1"; }
.fa-folder-open::before, .fa-folder-open-o::before  { content: "\1F4C2"; }

/* ─── Actions ────────────────────────────────────────────────────────────── */
.fa-download::before                                 { content: "\2B07"; }
.fa-upload::before                                   { content: "\2B06"; }
.fa-arrow-right::before                              { content: "\2192"; }
.fa-arrow-left::before                               { content: "\2190"; }
.fa-arrow-up::before                                 { content: "\2191"; }
.fa-arrow-down::before                               { content: "\2193"; }
.fa-external-link-alt::before,
.fa-up-right-from-square::before,
.fa-external-link::before                           { content: "\2197"; }
.fa-link::before, .fa-chain::before                 { content: "\1F517"; }
.fa-share-alt::before, .fa-share::before            { content: "\21B7"; }
.fa-share-alt-square::before                         { content: "\21B7"; }
.fa-print::before                                   { content: "\2399"; }
.fa-edit::before, .fa-pen-to-square::before,
.fa-pencil-alt::before                              { content: "\270E"; }
.fa-pencil::before, .fa-pencil-square-o::before     { content: "\270F"; }
.fa-trash::before, .fa-trash-alt::before,
.fa-trash-can::before, .fa-trash-o::before          { content: "\1F5D1"; }
.fa-plus::before, .fa-add::before                   { content: "+"; }
.fa-minus::before, .fa-subtract::before             { content: "\2212"; }
.fa-times-circle::before, .fa-circle-xmark::before  { content: "\2297"; }
.fa-check::before                                   { content: "\2713"; }
.fa-check-circle::before, .fa-circle-check::before  { content: "\2714"; }
.fa-info::before                                    { content: "\24D8"; }
.fa-info-circle::before, .fa-circle-info::before    { content: "\24D8"; }
.fa-exclamation-triangle::before,
.fa-triangle-exclamation::before,
.fa-warning::before                                 { content: "\26A0"; }
.fa-question-circle::before,
.fa-circle-question::before                         { content: "\003F"; }
.fa-bell::before                                    { content: "\1F514"; }
.fa-bell-o::before                                  { content: "\1F514"; }
.fa-cog::before, .fa-gear::before,
.fa-cogs::before, .fa-gears::before                 { content: "\2699"; }
.fa-lock::before                                    { content: "\1F512"; }
.fa-unlock::before                                  { content: "\1F513"; }
.fa-unlock-alt::before                              { content: "\1F513"; }
.fa-eye::before                                     { content: "\1F441"; }
.fa-eye-slash::before                               { content: "\1F648"; }
.fa-star::before                                    { content: "\2605"; }
.fa-star-o::before                                  { content: "\2606"; }
.fa-heart::before                                   { content: "\2665"; }
.fa-heart-o::before                                 { content: "\2661"; }
.fa-thumbs-up::before                               { content: "\1F44D"; }
.fa-thumbs-down::before                             { content: "\1F44E"; }
.fa-copy::before                                    { content: "\1F4CB"; }
.fa-cut::before, .fa-scissors::before               { content: "\2702"; }
.fa-paste::before                                   { content: "\1F4CB"; }
.fa-undo::before, .fa-rotate-left::before           { content: "\21B6"; }
.fa-redo::before, .fa-rotate-right::before          { content: "\21B7"; }
.fa-refresh::before, .fa-rotate::before             { content: "\21BA"; }
.fa-sync::before, .fa-sync-alt::before              { content: "\21BA"; }
.fa-save::before, .fa-floppy-disk::before           { content: "\1F4BE"; }
.fa-reply::before                                   { content: "\21A9"; }
.fa-forward::before                                 { content: "\23E9"; }
.fa-backward::before                                { content: "\23EA"; }
.fa-step-forward::before                            { content: "\23ED"; }
.fa-step-backward::before                           { content: "\23EE"; }

/* ─── People / Users ─────────────────────────────────────────────────────── */
.fa-user::before, .fa-user-o::before                { content: "\1F464"; }
.fa-users::before                                   { content: "\1F465"; }
.fa-user-circle::before, .fa-user-circle-o::before  { content: "\229A"; }
.fa-user-plus::before                               { content: "\1F464"; }
.fa-user-times::before, .fa-user-xmark::before      { content: "\1F464"; }
.fa-user-check::before                              { content: "\1F464"; }
.fa-user-tie::before                                { content: "\1F454"; }
.fa-user-graduate::before                           { content: "\1F393"; }
.fa-person::before                                  { content: "\1F464"; }

/* ─── Media ──────────────────────────────────────────────────────────────── */
.fa-image::before, .fa-photo::before,
.fa-picture-o::before                               { content: "\1F5BC"; }
.fa-images::before                                  { content: "\1F5BC"; }
.fa-video::before, .fa-video-camera::before         { content: "\1F3AC"; }
.fa-camera::before, .fa-camera-alt::before          { content: "\1F4F7"; }
.fa-play::before, .fa-play-circle::before,
.fa-play-circle-o::before                           { content: "\25B6"; }
.fa-pause::before                                   { content: "\23F8"; }
.fa-stop::before, .fa-stop-circle::before           { content: "\23F9"; }
.fa-volume-up::before, .fa-volume-high::before      { content: "\1F50A"; }
.fa-volume-down::before, .fa-volume-low::before     { content: "\1F509"; }
.fa-volume-mute::before, .fa-volume-off::before,
.fa-volume-xmark::before                            { content: "\1F507"; }
.fa-microphone::before                              { content: "\1F3A4"; }

/* ─── Date / Time ───────────────────────────────────────────────────────── */
.fa-calendar::before, .fa-calendar-alt::before,
.fa-calendar-days::before, .fa-calendar-o::before   { content: "\1F4C5"; }
.fa-calendar-check::before,
.fa-calendar-check-o::before                        { content: "\1F4C5"; }
.fa-calendar-plus::before                           { content: "\1F4C5"; }
.fa-clock::before, .fa-clock-o::before              { content: "\1F553"; }
.fa-history::before, .fa-clock-rotate-left::before  { content: "\1F553"; }
.fa-hourglass::before, .fa-hourglass-half::before   { content: "\231B"; }

/* ─── Navigation / Location ──────────────────────────────────────────────── */
.fa-map::before, .fa-map-o::before                  { content: "\1F5FA"; }
.fa-map-pin::before                                 { content: "\1F4CC"; }
.fa-compass::before,
.fa-drafting-compass::before                        { content: "\1F9ED"; }
.fa-bullseye::before,
.fa-target::before                                  { content: "\25CE"; }
.fa-lightbulb::before,
.fa-lightbulb-o::before                             { content: "\1F4A1"; }
.fa-globe::before, .fa-globe-americas::before,
.fa-globe-asia::before, .fa-globe-europe::before    { content: "\1F310"; }
.fa-directions::before, .fa-road::before            { content: "\1F6A7"; }

/* ─── Institution / Education ───────────────────────────────────────────── */
.fa-building::before, .fa-building-o::before        { content: "\1F3DB"; }
.fa-university::before, .fa-landmark::before        { content: "\1F3DB"; }
.fa-graduation-cap::before,
.fa-mortar-board::before                            { content: "\1F393"; }
.fa-crown::before                                   { content: "\1F451"; }
.fa-project-diagram::before                         { content: "\1F500"; }
.fa-users-cog::before                               { content: "\1F465"; }
.fa-medal::before                                   { content: "\1F947"; }
.fa-microscope::before                              { content: "\1F52C"; }
.fa-book::before, .fa-book-open::before             { content: "\1F4DA"; }
.fa-books::before                                   { content: "\1F4DA"; }
.fa-newspaper::before, .fa-newspaper-o::before      { content: "\1F4F0"; }
.fa-briefcase::before                               { content: "\1F4BC"; }
.fa-award::before, .fa-certificate::before          { content: "\1F3C5"; }
.fa-trophy::before                                  { content: "\1F3C6"; }
.fa-chalkboard-teacher::before,
.fa-chalkboard-user::before                         { content: "\1F3EB"; }
.fa-school::before                                  { content: "\1F3EB"; }
.fa-clipboard::before, .fa-clipboard-o::before      { content: "\1F4CB"; }
.fa-clipboard-list::before,
.fa-clipboard-check::before                         { content: "\1F4CB"; }
.fa-tasks::before, .fa-list-check::before           { content: "\2611"; }
.fa-th-list::before, .fa-table-list::before         { content: "\2630"; }
.fa-th::before                                      { content: "\2B1B"; }
.fa-list::before, .fa-list-ul::before               { content: "\2630"; }
.fa-list-ol::before                                 { content: "\2630"; }

/* ─── Misc / Status ──────────────────────────────────────────────────────── */
.fa-spinner::before, .fa-circle-notch::before,
.fa-circle-o-notch::before                          { content: "\25CC"; animation: fa-spin 1s linear infinite; }
.fa-shield-alt::before, .fa-shield-halved::before   { content: "\1F6E1"; }
.fa-key::before                                     { content: "\1F511"; }
.fa-tag::before, .fa-tags::before                   { content: "\1F3F7"; }
.fa-flag::before, .fa-flag-o::before                { content: "\1F3F3"; }
.fa-filter::before                                  { content: "\25BD"; }
.fa-sort::before                                    { content: "\21F5"; }
.fa-sort-up::before, .fa-sort-asc::before           { content: "\21F3"; }
.fa-sort-down::before, .fa-sort-desc::before        { content: "\21F3"; }
.fa-columns::before                                 { content: "\2016"; }
.fa-bars-progress::before                           { content: "\2630"; }
.fa-ellipsis-h::before,
.fa-ellipsis::before                                { content: "\2026"; }
.fa-ellipsis-v::before,
.fa-ellipsis-vertical::before                       { content: "\22EE"; }
.fa-grip-lines::before,
.fa-grip-lines-vertical::before                     { content: "\2630"; }
.fa-dot-circle::before,
.fa-circle-dot::before                              { content: "\25CE"; }
.fa-circle::before, .fa-circle-o::before            { content: "\25CF"; }
.fa-square::before, .fa-square-o::before            { content: "\25A0"; }
.fa-minus-square::before,
.fa-square-minus::before                            { content: "\229F"; }
.fa-plus-square::before,
.fa-square-plus::before                             { content: "\229E"; }
.fa-check-square::before,
.fa-square-check::before                            { content: "\229E"; }
.fa-ban::before                                     { content: "\2298"; }
.fa-power-off::before                               { content: "\23FB"; }
.fa-wifi::before                                    { content: "\1F4F6"; }
.fa-rss::before, .fa-rss-square::before             { content: "\25D5"; }
.fa-qrcode::before                                  { content: "\229B"; }
.fa-barcode::before                                 { content: "\2016"; }
.fa-sitemap::before                                 { content: "\25A6"; }
.fa-code::before                                    { content: "\003C/\003E"; }
.fa-terminal::before                                { content: "\003E"; }
.fa-database::before                                { content: "\1F5C4"; }
.fa-server::before                                  { content: "\1F5A5"; }
.fa-microchip::before                               { content: "\1F4BB"; }
.fa-rocket::before                                  { content: "\1F680"; }
.fa-bed::before                                     { content: "\1F6CF"; }
.fa-vote-yea::before, .fa-check-to-slot::before     { content: "\2611"; }
.fa-cloud-download-alt::before,
.fa-cloud-arrow-down::before                        { content: "\2B07"; }
.fa-chart-line::before, .fa-line-chart::before      { content: "\1F4C8"; }
.fa-flask::before                                   { content: "\2697"; }
.fa-handshake::before, .fa-handshake-o::before      { content: "\1F91D"; }
.fa-palette::before                                 { content: "\1F3A8"; }
.fa-chart-bar::before                               { content: "\1F4CA"; }
.fa-laptop::before                                  { content: "\1F4BB"; }
.fa-desktop::before                                 { content: "\1F5A5"; }
.fa-mobile::before, .fa-mobile-alt::before,
.fa-mobile-screen-button::before                    { content: "\1F4F1"; }
.fa-tablet::before, .fa-tablet-alt::before          { content: "\1F4F1"; }
.fa-keyboard::before, .fa-keyboard-o::before        { content: "\2328"; }
.fa-mouse-pointer::before                           { content: "\1F5B1"; }
.fa-long-arrow-right::before,
.fa-arrow-right-long::before                        { content: "\27A1"; }
.fa-long-arrow-left::before,
.fa-arrow-left-long::before                         { content: "\2B05"; }
.fa-random::before, .fa-shuffle::before             { content: "\21C4"; }
.fa-exchange-alt::before,
.fa-right-left::before                              { content: "\21C4"; }
.fa-expand::before                                  { content: "\2194"; }
.fa-compress::before                                { content: "\2194"; }
.fa-cut::before                                     { content: "\2702"; }
.fa-network-wired::before                           { content: "\1F310"; }
.fa-bolt::before, .fa-bolt-lightning::before       { content: "\26A1"; }
.fa-route::before                                   { content: "\21AA"; }
.fa-ethernet::before                                { content: "\1F50C"; }
.fa-tachometer-alt::before,
.fa-gauge-high::before                              { content: "\1F4CA"; }
.fa-link::before                                    { content: "\1F517"; }
.fa-cloud::before                                   { content: "\2601"; }
.fa-university::before                              { content: "\1F393"; }
.fa-hotel::before                                   { content: "\1F3E8"; }
.fa-memory::before                                  { content: "\1F4BE"; }
.fa-hdd::before, .fa-hard-drive::before             { content: "\1F4BF"; }
.fa-archway::before                                 { content: "\1F3DB"; }
.fa-laptop-code::before                             { content: "\1F4BB"; }
.fa-cube::before                                    { content: "\25A0"; }
.fa-layer-group::before                             { content: "\2630"; }
.fa-tools::before                                   { content: "\1F527"; }
.fa-file-invoice-dollar::before                     { content: "\1F4B5"; }
.fa-solar-panel::before                             { content: "\2600"; }
.fa-medkit::before, .fa-kit-medical::before         { content: "\2695"; }
.fa-utensils::before                                { content: "\1F374"; }
