/*
 * Self-hosted Font Awesome 6 Free — minimal build.
 * Replaces https://kit.fontawesome.com/af0e3f8fdd.js
 *
 * Contains ONLY the ~25 icon classes actually used on this site.
 * Full FA6 has 7000+ icons; shipping only what's needed saves ~95% CSS weight.
 *
 * font-display:optional — browser uses the font only if already cached.
 * First visit: falls back to the 1em box (reserved by .fa/.fas rules below).
 * Repeat visits: instant icon render, zero FOIT, zero CLS.
 *
 * Fonts served from same origin — no DNS lookup, no CORS, no kit auth.
 */

/* ── FONT FACES ──────────────────────────────────────────────────────────── */

@font-face {
    font-family: "Font Awesome 6 Free";
    font-style: normal;
    font-weight: 900;
    font-display: optional;
    src: url("/app/webfonts/fa-solid-900.woff2") format("woff2"),
         url("/app/webfonts/fa-solid-900.woff")  format("woff");
}

@font-face {
    font-family: "Font Awesome 6 Free";
    font-style: normal;
    font-weight: 400;
    font-display: optional;
    src: url("/app/webfonts/fa-regular-400.woff2") format("woff2"),
         url("/app/webfonts/fa-regular-400.woff")  format("woff");
}

@font-face {
    font-family: "Font Awesome 6 Brands";
    font-style: normal;
    font-weight: 400;
    font-display: optional;
    src: url("/app/webfonts/fa-brands-400.woff2") format("woff2"),
         url("/app/webfonts/fa-brands-400.woff")  format("woff");
}

/* ── BASE RULES ──────────────────────────────────────────────────────────── */

/* Reserve a stable 1em×1em slot before the font loads.
   This prevents any layout shift regardless of font-display setting. */
.fa, .fas, .far, .fab, .fal, .fad {
    display: inline-block;
    width: 1em;
    min-width: 1em;
    height: 1em;
    line-height: 1;
    text-align: center;
    font-style: normal;
    font-variant: normal;
    text-rendering: auto;
    vertical-align: -0.125em;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Solid (weight 900) */
.fa,
.fas {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
}

/* Regular / outlined (weight 400) */
.far {
    font-family: "Font Awesome 6 Free";
    font-weight: 400;
}

/* Brand icons */
.fab {
    font-family: "Font Awesome 6 Brands";
    font-weight: 400;
}

/* Light — no Pro font available; gracefully falls back to Regular */
.fal {
    font-family: "Font Awesome 6 Free";
    font-weight: 400;
}

/* ── ICONS ───────────────────────────────────────────────────────────────── */

/* Navigation & UI */
.fa-chevron-down::before  { content: "\f078" }
.fa-chevron-up::before    { content: "\f077" }
.fa-chevron-left::before  { content: "\f053" }
.fa-chevron-right::before { content: "\f054" }
.fa-angle-left::before    { content: "\f104" }
.fa-angle-right::before   { content: "\f105" }
.fa-bars::before          { content: "\f0c9" }
.fa-search::before        { content: "\f002" }
.fa-times::before         { content: "\f00d" }
.fa-close::before         { content: "\f00d" } /* FA4 alias */

/* Contact */
.fa-phone::before         { content: "\f095" }
.fa-envelope::before      { content: "\f0e0" }
.fa-comment-alt::before   { content: "\f27a" }
.fa-message::before       { content: "\f27a" } /* FA6 rename of comment-alt */

/* Course listings (map-marker, clock-o and calendar-o are FA4 names) */
.fa-map-marker::before       { content: "\f041" }
.fa-map-marker-alt::before   { content: "\f3c5" }
.fa-clock::before            { content: "\f017" }
.fa-clock-o::before          { content: "\f017" } /* FA4 alias → regular clock */
.fa-calendar::before         { content: "\f133" }
.fa-calendar-o::before       { content: "\f073" } /* FA4 alias → calendar-days */
.fa-calendar-alt::before     { content: "\f073" } /* FA5 alias */

/* Misc */
.fa-check::before            { content: "\f00c" }
.fa-play::before             { content: "\f04b" }
.fa-spinner::before          { content: "\f110" }
.fa-gift::before             { content: "\f06b" }
.fa-arrow-circle-down::before { content: "\f0ab" }

/* Brand (social icons) */
.fa-linkedin::before   { content: "\f08c" }
.fa-twitter::before    { content: "\f099" }
.fa-facebook::before   { content: "\f09a" }
.fa-instagram::before  { content: "\f16d" }
.fa-youtube::before    { content: "\f167" }
.fa-quora::before      { content: "\f2c4" }
.fa-pinterest::before  { content: "\f0d2" }
.fa-slideshare::before { content: "\f1e7" }

/* ── ANIMATIONS ──────────────────────────────────────────────────────────── */

@keyframes fa-spin {
    0%   { transform: rotate(0deg) }
    100% { transform: rotate(360deg) }
}

.fa-spin  { animation: fa-spin 2s linear infinite }
.fa-pulse { animation: fa-spin 1s steps(8, end) infinite }

/* Size helpers (used in some templates) */
.fa-lg { font-size: 1.33333em; line-height: 0.75em; vertical-align: -0.0667em }
.fa-fw { width: 1.25em; text-align: center }