/**
 * Local Icons Fallback for Offline Mode
 * Uses Unicode/emoji fallbacks when web fonts are unavailable
 * For full icon support, copy font files from CDN when internet is available
 */

/* ============================================
   BOOTSTRAP ICONS FALLBACK
   ============================================ */

/* Base Bootstrap Icons Class */
.bi {
    display: inline-block;
    font-style: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    vertical-align: -.125em;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Common Bootstrap Icons - Text/Emoji Fallbacks */
.bi::before { content: "●"; }
.bi-house::before, .bi-house-fill::before { content: "🏠"; }
.bi-person::before, .bi-person-fill::before { content: "👤"; }
.bi-people::before, .bi-people-fill::before { content: "👥"; }
.bi-gear::before, .bi-gear-fill::before { content: "⚙️"; }
.bi-cart::before, .bi-cart-fill::before { content: "🛒"; }
.bi-bag::before, .bi-bag-fill::before { content: "🛍️"; }
.bi-box::before, .bi-box-fill::before { content: "📦"; }
.bi-building::before, .bi-building-fill::before { content: "🏢"; }
.bi-cash::before, .bi-cash-stack::before { content: "💵"; }
.bi-credit-card::before, .bi-credit-card-fill::before { content: "💳"; }
.bi-receipt::before { content: "🧾"; }
.bi-file::before, .bi-file-earmark::before { content: "📄"; }
.bi-file-text::before, .bi-file-earmark-text::before { content: "📝"; }
.bi-folder::before, .bi-folder-fill::before { content: "📁"; }
.bi-folder2::before, .bi-folder2-open::before { content: "📂"; }
.bi-search::before { content: "🔍"; }
.bi-plus::before, .bi-plus-lg::before { content: "+"; font-weight: bold; }
.bi-plus-circle::before, .bi-plus-circle-fill::before { content: "➕"; }
.bi-dash::before, .bi-dash-lg::before { content: "−"; font-weight: bold; }
.bi-dash-circle::before, .bi-dash-circle-fill::before { content: "➖"; }
.bi-x::before, .bi-x-lg::before { content: "✕"; }
.bi-x-circle::before, .bi-x-circle-fill::before { content: "❌"; }
.bi-check::before, .bi-check-lg::before { content: "✓"; }
.bi-check-circle::before, .bi-check-circle-fill::before { content: "✅"; }
.bi-check2::before, .bi-check2-circle::before { content: "☑"; }
.bi-arrow-left::before { content: "←"; }
.bi-arrow-right::before { content: "→"; }
.bi-arrow-up::before { content: "↑"; }
.bi-arrow-down::before { content: "↓"; }
.bi-arrow-clockwise::before { content: "↻"; }
.bi-arrow-counterclockwise::before { content: "↺"; }
.bi-chevron-left::before { content: "‹"; font-size: 1.2em; }
.bi-chevron-right::before { content: "›"; font-size: 1.2em; }
.bi-chevron-up::before { content: "ˆ"; }
.bi-chevron-down::before { content: "ˇ"; }
.bi-caret-down::before, .bi-caret-down-fill::before { content: "▼"; font-size: 0.7em; }
.bi-caret-up::before, .bi-caret-up-fill::before { content: "▲"; font-size: 0.7em; }
.bi-caret-right::before, .bi-caret-right-fill::before { content: "▶"; font-size: 0.7em; }
.bi-caret-left::before, .bi-caret-left-fill::before { content: "◀"; font-size: 0.7em; }
.bi-list::before { content: "☰"; }
.bi-three-dots::before { content: "⋯"; }
.bi-three-dots-vertical::before { content: "⋮"; }
.bi-calendar::before, .bi-calendar-fill::before { content: "📅"; }
.bi-calendar-event::before, .bi-calendar-event-fill::before { content: "📆"; }
.bi-calendar-check::before, .bi-calendar-check-fill::before { content: "🗓️"; }
.bi-clock::before, .bi-clock-fill::before { content: "⏰"; }
.bi-bell::before, .bi-bell-fill::before { content: "🔔"; }
.bi-envelope::before, .bi-envelope-fill::before { content: "✉️"; }
.bi-telephone::before, .bi-telephone-fill::before { content: "📞"; }
.bi-chat::before, .bi-chat-fill::before { content: "💬"; }
.bi-star::before, .bi-star-fill::before { content: "⭐"; }
.bi-heart::before, .bi-heart-fill::before { content: "❤️"; }
.bi-trash::before, .bi-trash-fill::before { content: "🗑️"; }
.bi-pencil::before, .bi-pencil-fill::before { content: "✏️"; }
.bi-eye::before, .bi-eye-fill::before { content: "👁️"; }
.bi-eye-slash::before, .bi-eye-slash-fill::before { content: "🙈"; }
.bi-lock::before, .bi-lock-fill::before { content: "🔒"; }
.bi-unlock::before, .bi-unlock-fill::before { content: "🔓"; }
.bi-key::before, .bi-key-fill::before { content: "🔑"; }
.bi-shield::before, .bi-shield-fill::before { content: "🛡️"; }
.bi-shield-check::before, .bi-shield-fill-check::before { content: "✓🛡️"; }
.bi-exclamation::before { content: "!"; font-weight: bold; }
.bi-exclamation-circle::before, .bi-exclamation-circle-fill::before { content: "⚠️"; }
.bi-exclamation-triangle::before, .bi-exclamation-triangle-fill::before { content: "⚠"; }
.bi-info::before { content: "ℹ"; }
.bi-info-circle::before, .bi-info-circle-fill::before { content: "ℹ️"; }
.bi-question::before { content: "?"; font-weight: bold; }
.bi-question-circle::before, .bi-question-circle-fill::before { content: "❓"; }
.bi-download::before { content: "⬇️"; }
.bi-upload::before { content: "⬆️"; }
.bi-cloud::before, .bi-cloud-fill::before { content: "☁️"; }
.bi-cloud-download::before { content: "⬇☁"; }
.bi-cloud-upload::before { content: "⬆☁"; }
.bi-printer::before, .bi-printer-fill::before { content: "🖨️"; }
.bi-clipboard::before { content: "📋"; }
.bi-clipboard-check::before { content: "📋✓"; }
.bi-link::before, .bi-link-45deg::before { content: "🔗"; }
.bi-share::before, .bi-share-fill::before { content: "↗️"; }
.bi-save::before, .bi-save-fill::before { content: "💾"; }
.bi-graph-up::before { content: "📈"; }
.bi-graph-down::before { content: "📉"; }
.bi-bar-chart::before, .bi-bar-chart-fill::before { content: "📊"; }
.bi-pie-chart::before, .bi-pie-chart-fill::before { content: "🥧"; }
.bi-speedometer::before, .bi-speedometer2::before { content: "⏱️"; }
.bi-currency-dollar::before { content: "$"; font-weight: bold; }
.bi-currency-euro::before { content: "€"; font-weight: bold; }
.bi-calculator::before, .bi-calculator-fill::before { content: "🧮"; }
.bi-laptop::before { content: "💻"; }
.bi-pc-display::before { content: "🖥️"; }
.bi-phone::before { content: "📱"; }
.bi-tablet::before { content: "📱"; }
.bi-wifi::before { content: "📶"; }
.bi-globe::before, .bi-globe2::before { content: "🌐"; }
.bi-map::before { content: "🗺️"; }
.bi-pin::before, .bi-pin-fill::before { content: "📍"; }
.bi-geo-alt::before, .bi-geo-alt-fill::before { content: "📍"; }
.bi-truck::before { content: "🚚"; }
.bi-box-seam::before { content: "📦"; }
.bi-archive::before, .bi-archive-fill::before { content: "🗄️"; }
.bi-journal::before, .bi-journal-text::before { content: "📓"; }
.bi-book::before, .bi-book-fill::before { content: "📖"; }
.bi-bookmark::before, .bi-bookmark-fill::before { content: "🔖"; }
.bi-tags::before, .bi-tag::before, .bi-tag-fill::before { content: "🏷️"; }
.bi-filter::before { content: "⏣"; }
.bi-funnel::before, .bi-funnel-fill::before { content: "⏣"; }
.bi-sort-alpha-down::before { content: "A↓"; font-size: 0.8em; }
.bi-sort-alpha-up::before { content: "A↑"; font-size: 0.8em; }
.bi-sort-numeric-down::before { content: "1↓"; font-size: 0.8em; }
.bi-sort-numeric-up::before { content: "1↑"; font-size: 0.8em; }
.bi-table::before { content: "☷"; }
.bi-grid::before, .bi-grid-fill::before { content: "⊞"; }
.bi-grid-3x3::before, .bi-grid-3x3-gap::before { content: "▦"; }
.bi-layout::before, .bi-layout-sidebar::before { content: "☰"; }
.bi-columns::before, .bi-columns-gap::before { content: "▥"; }
.bi-power::before { content: "⏻"; }
.bi-box-arrow-right::before { content: "↪"; }
.bi-box-arrow-left::before { content: "↩"; }
.bi-box-arrow-in-right::before { content: "↳"; }
.bi-door-open::before, .bi-door-open-fill::before { content: "🚪"; }
.bi-plug::before, .bi-plug-fill::before { content: "🔌"; }
.bi-lightning::before, .bi-lightning-fill::before { content: "⚡"; }
.bi-activity::before { content: "📊"; }
.bi-database::before, .bi-database-fill::before { content: "🗄️"; }
.bi-server::before { content: "🖥️"; }
.bi-hdd::before, .bi-hdd-fill::before { content: "💽"; }
.bi-cpu::before, .bi-cpu-fill::before { content: "⚙️"; }
.bi-memory::before { content: "🧠"; }
.bi-tools::before { content: "🛠️"; }
.bi-wrench::before { content: "🔧"; }
.bi-screwdriver::before { content: "🔩"; }
.bi-hammer::before { content: "🔨"; }
.bi-clipboard-data::before { content: "📋📊"; }
.bi-file-spreadsheet::before { content: "📊"; }
.bi-currency-exchange::before { content: "💱"; }
.bi-wallet::before, .bi-wallet2::before, .bi-wallet-fill::before { content: "👛"; }
.bi-bank::before, .bi-bank2::before { content: "🏦"; }
.bi-safe::before, .bi-safe-fill::before { content: "🔐"; }
.bi-percent::before { content: "%"; font-weight: bold; }
.bi-receipt-cutoff::before { content: "🧾"; }
.bi-diagram-3::before, .bi-diagram-3-fill::before { content: "⎔"; }
.bi-toggles::before, .bi-toggles2::before { content: "☰"; }
.bi-sliders::before, .bi-sliders2::before { content: "☰"; }


/* ============================================
   FONT AWESOME FALLBACK
   ============================================ */

/* Base Font Awesome Classes */
.fa, .fas, .far, .fal, .fab, .fad {
    display: inline-block;
    font-style: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Common Font Awesome Icons */
.fa::before, .fas::before, .far::before { content: "●"; }
.fa-home::before { content: "🏠"; }
.fa-user::before, .fa-user-circle::before { content: "👤"; }
.fa-users::before { content: "👥"; }
.fa-cog::before, .fa-cogs::before, .fa-gear::before { content: "⚙️"; }
.fa-shopping-cart::before, .fa-cart-shopping::before { content: "🛒"; }
.fa-box::before, .fa-boxes::before, .fa-cube::before, .fa-cubes::before { content: "📦"; }
.fa-building::before, .fa-city::before { content: "🏢"; }
.fa-money::before, .fa-money-bill::before, .fa-money-bill-wave::before { content: "💵"; }
.fa-credit-card::before { content: "💳"; }
.fa-receipt::before { content: "🧾"; }
.fa-file::before, .fa-file-alt::before { content: "📄"; }
.fa-file-invoice::before, .fa-file-invoice-dollar::before { content: "📝💵"; }
.fa-folder::before, .fa-folder-open::before { content: "📁"; }
.fa-search::before, .fa-magnifying-glass::before { content: "🔍"; }
.fa-plus::before { content: "+"; font-weight: bold; }
.fa-plus-circle::before { content: "➕"; }
.fa-minus::before { content: "−"; font-weight: bold; }
.fa-minus-circle::before { content: "➖"; }
.fa-times::before, .fa-xmark::before { content: "✕"; }
.fa-times-circle::before, .fa-circle-xmark::before { content: "❌"; }
.fa-check::before { content: "✓"; }
.fa-check-circle::before, .fa-circle-check::before { content: "✅"; }
.fa-arrow-left::before { content: "←"; }
.fa-arrow-right::before { content: "→"; }
.fa-arrow-up::before { content: "↑"; }
.fa-arrow-down::before { content: "↓"; }
.fa-chevron-left::before { content: "‹"; font-size: 1.2em; }
.fa-chevron-right::before { content: "›"; font-size: 1.2em; }
.fa-chevron-up::before { content: "ˆ"; }
.fa-chevron-down::before { content: "ˇ"; }
.fa-caret-down::before { content: "▼"; font-size: 0.7em; }
.fa-caret-up::before { content: "▲"; font-size: 0.7em; }
.fa-caret-right::before { content: "▶"; font-size: 0.7em; }
.fa-caret-left::before { content: "◀"; font-size: 0.7em; }
.fa-bars::before { content: "☰"; }
.fa-ellipsis-h::before, .fa-ellipsis::before { content: "⋯"; }
.fa-ellipsis-v::before, .fa-ellipsis-vertical::before { content: "⋮"; }
.fa-calendar::before, .fa-calendar-alt::before, .fa-calendar-days::before { content: "📅"; }
.fa-clock::before { content: "⏰"; }
.fa-bell::before { content: "🔔"; }
.fa-envelope::before { content: "✉️"; }
.fa-phone::before { content: "📞"; }
.fa-comment::before, .fa-comments::before { content: "💬"; }
.fa-star::before { content: "⭐"; }
.fa-heart::before { content: "❤️"; }
.fa-trash::before, .fa-trash-alt::before { content: "🗑️"; }
.fa-trash-can::before { content: "🗑️"; }
.fa-edit::before, .fa-pencil::before, .fa-pencil-alt::before, .fa-pen::before { content: "✏️"; }
.fa-eye::before { content: "👁️"; }
.fa-eye-slash::before { content: "🙈"; }
.fa-lock::before { content: "🔒"; }
.fa-unlock::before { content: "🔓"; }
.fa-key::before { content: "🔑"; }
.fa-shield::before, .fa-shield-alt::before { content: "🛡️"; }
.fa-exclamation::before { content: "!"; font-weight: bold; }
.fa-exclamation-circle::before, .fa-circle-exclamation::before { content: "⚠️"; }
.fa-exclamation-triangle::before, .fa-triangle-exclamation::before { content: "⚠"; }
.fa-info::before { content: "ℹ"; }
.fa-info-circle::before, .fa-circle-info::before { content: "ℹ️"; }
.fa-question::before { content: "?"; font-weight: bold; }
.fa-question-circle::before, .fa-circle-question::before { content: "❓"; }
.fa-download::before { content: "⬇️"; }
.fa-upload::before { content: "⬆️"; }
.fa-cloud::before { content: "☁️"; }
.fa-cloud-download::before, .fa-cloud-download-alt::before { content: "⬇☁"; }
.fa-cloud-upload::before, .fa-cloud-upload-alt::before { content: "⬆☁"; }
.fa-print::before { content: "🖨️"; }
.fa-clipboard::before { content: "📋"; }
.fa-clipboard-check::before { content: "📋✓"; }
.fa-link::before { content: "🔗"; }
.fa-share::before, .fa-share-alt::before { content: "↗️"; }
.fa-save::before, .fa-floppy-disk::before { content: "💾"; }
.fa-chart-line::before { content: "📈"; }
.fa-chart-bar::before { content: "📊"; }
.fa-chart-pie::before { content: "🥧"; }
.fa-tachometer::before, .fa-tachometer-alt::before, .fa-gauge::before { content: "⏱️"; }
.fa-dollar::before, .fa-dollar-sign::before { content: "$"; font-weight: bold; }
.fa-euro::before, .fa-euro-sign::before { content: "€"; font-weight: bold; }
.fa-calculator::before { content: "🧮"; }
.fa-laptop::before { content: "💻"; }
.fa-desktop::before { content: "🖥️"; }
.fa-mobile::before, .fa-mobile-alt::before { content: "📱"; }
.fa-wifi::before { content: "📶"; }
.fa-globe::before { content: "🌐"; }
.fa-map::before, .fa-map-marker::before, .fa-map-marker-alt::before, .fa-location-dot::before { content: "📍"; }
.fa-truck::before { content: "🚚"; }
.fa-warehouse::before { content: "🏭"; }
.fa-archive::before { content: "🗄️"; }
.fa-book::before { content: "📖"; }
.fa-bookmark::before { content: "🔖"; }
.fa-tag::before, .fa-tags::before { content: "🏷️"; }
.fa-filter::before { content: "⏣"; }
.fa-sort::before { content: "⇅"; }
.fa-sort-up::before { content: "↑"; }
.fa-sort-down::before { content: "↓"; }
.fa-table::before { content: "☷"; }
.fa-th::before, .fa-grip::before { content: "⊞"; }
.fa-power-off::before { content: "⏻"; }
.fa-sign-out::before, .fa-sign-out-alt::before, .fa-right-from-bracket::before { content: "↪"; }
.fa-sign-in::before, .fa-sign-in-alt::before, .fa-right-to-bracket::before { content: "↳"; }
.fa-door-open::before { content: "🚪"; }
.fa-plug::before { content: "🔌"; }
.fa-bolt::before { content: "⚡"; }
.fa-database::before { content: "🗄️"; }
.fa-server::before { content: "🖥️"; }
.fa-hdd::before { content: "💽"; }
.fa-microchip::before { content: "⚙️"; }
.fa-tools::before, .fa-screwdriver-wrench::before { content: "🛠️"; }
.fa-wrench::before { content: "🔧"; }
.fa-hammer::before { content: "🔨"; }
.fa-wallet::before { content: "👛"; }
.fa-university::before, .fa-building-columns::before { content: "🏦"; }
.fa-percent::before { content: "%"; font-weight: bold; }
.fa-balance-scale::before, .fa-scale-balanced::before { content: "⚖️"; }
.fa-handshake::before { content: "🤝"; }
.fa-industry::before { content: "🏭"; }
.fa-sitemap::before { content: "⎔"; }
.fa-list::before, .fa-list-ul::before { content: "☰"; }
.fa-list-ol::before { content: "1."; }
.fa-sync::before, .fa-rotate::before, .fa-arrows-rotate::before { content: "↻"; }
.fa-redo::before, .fa-rotate-right::before { content: "↻"; }
.fa-undo::before, .fa-rotate-left::before { content: "↺"; }
.fa-refresh::before { content: "↻"; }
.fa-spinner::before { content: "◌"; }
.fa-circle-notch::before { content: "◌"; }
.fa-copy::before { content: "📋"; }
.fa-paste::before { content: "📋"; }
.fa-cut::before, .fa-scissors::before { content: "✂️"; }
.fa-expand::before { content: "⤢"; }
.fa-compress::before { content: "⤡"; }
.fa-external-link::before, .fa-external-link-alt::before, .fa-arrow-up-right-from-square::before { content: "↗"; }
.fa-window-maximize::before { content: "⬜"; }
.fa-window-minimize::before { content: "▬"; }
.fa-window-close::before { content: "✕"; }
.fa-lightbulb::before { content: "💡"; }
.fa-sun::before { content: "☀️"; }
.fa-moon::before { content: "🌙"; }
.fa-adjust::before, .fa-circle-half-stroke::before { content: "◐"; }
.fa-palette::before { content: "🎨"; }
.fa-image::before { content: "🖼️"; }
.fa-camera::before { content: "📷"; }
.fa-video::before { content: "🎥"; }
.fa-music::before { content: "🎵"; }
.fa-headphones::before { content: "🎧"; }
.fa-play::before { content: "▶"; }
.fa-pause::before { content: "⏸"; }
.fa-stop::before { content: "⏹"; }
.fa-forward::before { content: "⏩"; }
.fa-backward::before { content: "⏪"; }
.fa-step-forward::before { content: "⏭"; }
.fa-step-backward::before { content: "⏮"; }
.fa-random::before, .fa-shuffle::before { content: "🔀"; }
.fa-repeat::before { content: "🔁"; }
.fa-volume-up::before, .fa-volume-high::before { content: "🔊"; }
.fa-volume-down::before, .fa-volume-low::before { content: "🔉"; }
.fa-volume-off::before, .fa-volume-xmark::before { content: "🔇"; }
.fa-mute::before { content: "🔇"; }
.fa-layer-group::before { content: "☷"; }
.fa-tasks::before, .fa-list-check::before { content: "☑"; }
.fa-project-diagram::before { content: "⎔"; }
.fa-code::before { content: "</>"; font-family: monospace; }
.fa-terminal::before { content: ">_"; font-family: monospace; }
.fa-bug::before { content: "🐛"; }
.fa-magic::before, .fa-wand-magic-sparkles::before { content: "✨"; }
.fa-certificate::before { content: "📜"; }
.fa-award::before { content: "🏆"; }
.fa-trophy::before { content: "🏆"; }
.fa-medal::before { content: "🏅"; }
.fa-gift::before { content: "🎁"; }
.fa-birthday-cake::before, .fa-cake-candles::before { content: "🎂"; }
.fa-flag::before { content: "🚩"; }
.fa-thumbs-up::before { content: "👍"; }
.fa-thumbs-down::before { content: "👎"; }
.fa-hand-paper::before, .fa-hand::before { content: "✋"; }
.fa-handshake::before { content: "🤝"; }
.fa-id-card::before, .fa-id-badge::before { content: "🪪"; }
.fa-address-card::before { content: "📇"; }
.fa-user-tie::before { content: "👔"; }
.fa-user-shield::before { content: "👤🛡"; }
.fa-user-plus::before { content: "👤+"; }
.fa-user-minus::before { content: "👤−"; }
.fa-user-check::before { content: "👤✓"; }
.fa-user-times::before, .fa-user-xmark::before { content: "👤✕"; }

/* Size modifiers */
.fa-xs { font-size: .75em; }
.fa-sm { font-size: .875em; }
.fa-lg { font-size: 1.33em; }
.fa-2x { font-size: 2em; }
.fa-3x { font-size: 3em; }
.fa-4x { font-size: 4em; }
.fa-5x { font-size: 5em; }

/* Animations */
.fa-spin {
    animation: fa-spin 2s infinite linear;
}
@keyframes fa-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.fa-pulse {
    animation: fa-spin 1s infinite steps(8);
}
