.fa,
.fas,
.far,
.fab,
.fa-solid,
.fa-regular,
.fa-brands {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1em;
    height: 1em;
    font-family: inherit;
    font-style: normal;
    font-weight: inherit;
    line-height: 1;
    vertical-align: -0.125em;
}

.fa::before,
.fas::before,
.far::before,
.fab::before,
.fa-solid::before,
.fa-regular::before,
.fa-brands::before {
    content: "";
    display: block;
    width: 1em;
    height: 1em;
    background: currentColor;
    -webkit-mask: var(--af-icon, var(--af-icon-circle)) center / contain no-repeat;
    mask: var(--af-icon, var(--af-icon-circle)) center / contain no-repeat;
}

.fa-spin {
    animation: af-icon-spin 1s linear infinite;
}

@keyframes af-icon-spin {
    to { transform: rotate(360deg); }
}

:root {
    --af-icon-circle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3C/svg%3E");
    --af-icon-arrow-left: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 12H5M12 19l-7-7 7-7'/%3E%3C/svg%3E");
    --af-icon-arrow-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E");
    --af-icon-arrow-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12l7 7 7-7'/%3E%3C/svg%3E");
    --af-icon-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M10 14 20 4M20 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E");
    --af-icon-bars: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M4 6h16M4 12h16M4 18h16'/%3E%3C/svg%3E");
    --af-icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 13 4 4L19 7'/%3E%3C/svg%3E");
    --af-icon-chevron-left: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E");
    --af-icon-chevron-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");
    --af-icon-chevron-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    --af-icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16.5 16.5 4 4'/%3E%3C/svg%3E");
    --af-icon-x: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.8' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E");
    --af-icon-user: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21a8 8 0 0 1 16 0'/%3E%3C/svg%3E");
    --af-icon-users: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.1' stroke-linecap='round'%3E%3Ccircle cx='9' cy='8' r='3'/%3E%3Ccircle cx='17' cy='9' r='2.5'/%3E%3Cpath d='M3 20a6 6 0 0 1 12 0M14 19a5 5 0 0 1 7 0'/%3E%3C/svg%3E");
    --af-icon-home: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linejoin='round'%3E%3Cpath d='M3 11 12 3l9 8'/%3E%3Cpath d='M5 10v11h14V10'/%3E%3Cpath d='M10 21v-6h4v6'/%3E%3C/svg%3E");
    --af-icon-envelope: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M4 6h16v12H4z'/%3E%3Cpath d='m4 7 8 6 8-6'/%3E%3C/svg%3E");
    --af-icon-bell: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 9a6 6 0 1 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9'/%3E%3Cpath d='M10 21h4'/%3E%3C/svg%3E");
    --af-icon-gear: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M19.4 15a8 8 0 0 0 .1-2l2-1.5-2-3.5-2.4 1a8 8 0 0 0-1.7-1L15 5H9l-.4 3a8 8 0 0 0-1.7 1l-2.4-1-2 3.5 2 1.5a8 8 0 0 0 .1 2l-2 1.5 2 3.5 2.4-1a8 8 0 0 0 1.7 1L9 23h6l.4-3a8 8 0 0 0 1.7-1l2.4 1 2-3.5-2.1-1.5Z'/%3E%3C/svg%3E");
    --af-icon-trash: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M10 11v6M14 11v6M6 7l1 14h10l1-14M9 7V4h6v3'/%3E%3C/svg%3E");
    --af-icon-pen: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='m16.5 3.5 4 4L8 20H4v-4L16.5 3.5Z'/%3E%3C/svg%3E");
    --af-icon-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.8' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");
    --af-icon-lock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linejoin='round'%3E%3Crect x='5' y='10' width='14' height='11' rx='2'/%3E%3Cpath d='M8 10V7a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E");
    --af-icon-unlock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linejoin='round'%3E%3Crect x='5' y='10' width='14' height='11' rx='2'/%3E%3Cpath d='M8 10V7a4 4 0 0 1 7.5-2'/%3E%3C/svg%3E");
    --af-icon-ban: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M6 6l12 12'/%3E%3C/svg%3E");
    --af-icon-warning: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 2 21h20L12 3Z'/%3E%3Cpath d='M12 9v5M12 18h.01'/%3E%3C/svg%3E");
    --af-icon-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v6M12 7h.01'/%3E%3C/svg%3E");
    --af-icon-eye: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
    --af-icon-heart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21s-8-4.7-10-10a5.6 5.6 0 0 1 9-6 5.6 5.6 0 0 1 9 6c-2 5.3-10 10-10 10Z'/%3E%3C/svg%3E");
    --af-icon-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m12 2 3.1 6.3 6.9 1-5 4.9 1.2 6.8L12 17.8 5.8 21 7 14.2 2 9.3l6.9-1L12 2Z'/%3E%3C/svg%3E");
    --af-icon-palette: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22a10 10 0 1 1 10-10 3.5 3.5 0 0 1-3.5 3.5h-1.3a2 2 0 0 0-1.7 3l.2.3A2 2 0 0 1 14 22h-2Z'/%3E%3Ccircle cx='7.5' cy='10.5' r='1'/%3E%3Ccircle cx='10.5' cy='7.5' r='1'/%3E%3Ccircle cx='14.5' cy='7.5' r='1'/%3E%3Ccircle cx='16.5' cy='11' r='1'/%3E%3C/svg%3E");
    --af-icon-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M5 5h14v14H5z'/%3E%3Cpath d='M8 14l2-2 3 3 2-2 3 4'/%3E%3Ccircle cx='9' cy='9' r='1'/%3E%3C/svg%3E");
    --af-icon-cube: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='m12 2 8 4.5v9L12 20l-8-4.5v-9L12 2Z'/%3E%3Cpath d='m4.5 7 7.5 4.2L19.5 7M12 11.2V20'/%3E%3C/svg%3E");
    --af-icon-chart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19h16'/%3E%3Cpath d='M5 16l5-5 4 3 5-7'/%3E%3C/svg%3E");
    --af-icon-receipt: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M6 3v18l3-2 3 2 3-2 3 2V3z'/%3E%3Cpath d='M9 8h6M9 12h6M9 16h4'/%3E%3C/svg%3E");
    --af-icon-file: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 3h7l4 4v14H7z'/%3E%3Cpath d='M14 3v5h4M10 12h5M10 16h5'/%3E%3C/svg%3E");
    --af-icon-download: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12M7 10l5 5 5-5M5 21h14'/%3E%3C/svg%3E");
    --af-icon-upload: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21V9M7 14l5-5 5 5M5 21h14'/%3E%3C/svg%3E");
    --af-icon-comment: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M4 5h16v11H8l-4 4V5Z'/%3E%3C/svg%3E");
    --af-icon-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");
    --af-icon-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M5 5h14v16H5zM8 3v4M16 3v4M5 10h14'/%3E%3C/svg%3E");
    --af-icon-shield: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.1' stroke-linejoin='round'%3E%3Cpath d='M12 3 20 6v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3Z'/%3E%3Cpath d='m8.5 12 2.5 2.5 4.5-5'/%3E%3C/svg%3E");
    --af-icon-logout: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 5H5v14h5'/%3E%3Cpath d='M14 8l4 4-4 4M18 12H9'/%3E%3C/svg%3E");
    --af-icon-wallet: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M4 7h16v13H4zM4 7l3-4h12v4M16 14h4'/%3E%3C/svg%3E");
    --af-icon-brand: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3C/svg%3E");
}

.fa-arrow-left { --af-icon: var(--af-icon-arrow-left); }
.fa-arrow-right { --af-icon: var(--af-icon-arrow-right); }
.fa-arrow-down { --af-icon: var(--af-icon-arrow-down); }
.fa-arrow-rotate-left { --af-icon: var(--af-icon-arrow-left); }
.fa-arrow-up-right-from-square { --af-icon: var(--af-icon-external); }
.fa-bars { --af-icon: var(--af-icon-bars); }
.fa-check,
.fa-check-circle,
.fa-circle-check { --af-icon: var(--af-icon-check); }
.fa-chevron-left { --af-icon: var(--af-icon-chevron-left); }
.fa-chevron-right { --af-icon: var(--af-icon-chevron-right); }
.fa-chevron-down { --af-icon: var(--af-icon-chevron-down); }
.fa-magnifying-glass,
.fa-search { --af-icon: var(--af-icon-search); }
.fa-times,
.fa-xmark { --af-icon: var(--af-icon-x); }
.fa-user,
.fa-user-circle,
.fa-user-check,
.fa-user-pen,
.fa-user-plus,
.fa-id-card { --af-icon: var(--af-icon-user); }
.fa-users,
.fa-user-friends,
.fa-user-shield { --af-icon: var(--af-icon-users); }
.fa-home { --af-icon: var(--af-icon-home); }
.fa-envelope,
.fa-paper-plane { --af-icon: var(--af-icon-envelope); }
.fa-bell { --af-icon: var(--af-icon-bell); }
.fa-cog,
.fa-cogs,
.fa-gear,
.fa-sliders { --af-icon: var(--af-icon-gear); }
.fa-trash,
.fa-trash-alt,
.fa-trash-can { --af-icon: var(--af-icon-trash); }
.fa-pen,
.fa-pen-line { --af-icon: var(--af-icon-pen); }
.fa-plus { --af-icon: var(--af-icon-plus); }
.fa-lock { --af-icon: var(--af-icon-lock); }
.fa-unlock,
.fa-lock-open { --af-icon: var(--af-icon-unlock); }
.fa-ban { --af-icon: var(--af-icon-ban); }
.fa-exclamation-circle,
.fa-exclamation-triangle,
.fa-triangle-exclamation,
.fa-circle-exclamation { --af-icon: var(--af-icon-warning); }
.fa-info-circle,
.fa-circle-info,
.fa-question-circle { --af-icon: var(--af-icon-info); }
.fa-eye { --af-icon: var(--af-icon-eye); }
.fa-heart { --af-icon: var(--af-icon-heart); }
.fa-star { --af-icon: var(--af-icon-star); }
.fa-palette,
.fa-paint-brush,
.fa-wand-magic-sparkles { --af-icon: var(--af-icon-palette); }
.fa-image,
.fa-images { --af-icon: var(--af-icon-image); }
.fa-cube,
.fa-cubes,
.fa-layer-group { --af-icon: var(--af-icon-cube); }
.fa-chart-line,
.fa-wave-square { --af-icon: var(--af-icon-chart); }
.fa-receipt,
.fa-file-invoice,
.fa-file-invoice-dollar,
.fa-sack-dollar,
.fa-dollar-sign { --af-icon: var(--af-icon-receipt); }
.fa-file-lines,
.fa-file-pdf,
.fa-file-signature,
.fa-clipboard-check,
.fa-database { --af-icon: var(--af-icon-file); }
.fa-download,
.fa-cloud-arrow-down { --af-icon: var(--af-icon-download); }
.fa-cloud-arrow-up,
.fa-cloud-upload-alt { --af-icon: var(--af-icon-upload); }
.fa-comment,
.fa-comment-dots,
.fa-comments,
.fa-message,
.fa-inbox { --af-icon: var(--af-icon-comment); }
.fa-clock,
.fa-history,
.fa-hourglass-half,
.fa-hourglass-start { --af-icon: var(--af-icon-clock); }
.fa-calendar-alt,
.fa-calendar-days { --af-icon: var(--af-icon-calendar); }
.fa-shield-halved,
.fa-key { --af-icon: var(--af-icon-shield); }
.fa-right-from-bracket { --af-icon: var(--af-icon-logout); }
.fa-wallet,
.fa-shopping-bag { --af-icon: var(--af-icon-wallet); }
.fa-twitter,
.fa-instagram,
.fa-discord,
.fa-github,
.fa-linkedin-in,
.fa-code,
.fa-laptop-code,
.fa-globe,
.fa-rocket,
.fa-bolt,
.fa-camera,
.fa-filter,
.fa-expand,
.fa-expand-alt,
.fa-print,
.fa-save,
.fa-spinner,
.fa-circle-notch,
.fa-thumbtack { --af-icon: var(--af-icon-brand); }
