/*
 * 12-local-icons.css
 * Local Font Awesome compatibility layer for the dashboard/public chat.
 * Keeps existing fa-* markup working without loading the external Font Awesome CSS/font.
 */
:root {
    --local-icon-dot: 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='8' fill='black'/%3E%3C/svg%3E");
    --local-icon-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 4h4v6h6v4h-6v6h-4v-6H4v-4h6z' fill='black'/%3E%3C/svg%3E");
    --local-icon-x: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.2 4.8 12 10.6l5.8-5.8 1.4 1.4L13.4 12l5.8 5.8-1.4 1.4L12 13.4l-5.8 5.8-1.4-1.4 5.8-5.8-5.8-5.8z' fill='black'/%3E%3C/svg%3E");
    --local-icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10.5 4a6.5 6.5 0 0 1 5.14 10.47l4.45 4.44-1.42 1.42-4.44-4.45A6.5 6.5 0 1 1 10.5 4Zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m9.1 16.6-4.2-4.2-1.4 1.4 5.6 5.6L21 7.5l-1.4-1.4z' fill='black'/%3E%3C/svg%3E");
    --local-icon-warning: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3 1.8 20.5h20.4L12 3Zm1 14h-2v-2h2v2Zm0-4h-2V8h2v5Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11 10h2v8h-2v-8Zm0-4h2v2h-2V6Zm1-4a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-user: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Zm0 2c-4.4 0-8 2.2-8 5v2h16v-2c0-2.8-3.6-5-8-5Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-card: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 5h18v14H3V5Zm2 4h14V7H5v2Zm0 8h14v-5H5v5Zm2-3h5v2H7v-2Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-server: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16v6H4V4Zm2 2v2h12V6H6Zm-2 8h16v6H4v-6Zm2 2v2h12v-2H6Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-terminal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 5h18v14H3V5Zm2 2v10h14V7H5Zm2 2.4L8.6 8 12 11.4 8.6 14.8 7.2 13.4l2-2-2.2-2Zm6.5 5.6h4v2h-4v-2Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-external: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 5h8v2H7v10h10v-6h2v8H5V5Zm10 0h4v4h-2V8.4l-6.3 6.3-1.4-1.4L15.6 7H15V5Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-globe: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm6.9 9h-3.1a15 15 0 0 0-1.2-5 8.1 8.1 0 0 1 4.3 5ZM12 4.1c.8 1.1 1.5 3.1 1.8 6.9h-3.6c.3-3.8 1-5.8 1.8-6.9ZM4.2 13h3.9c.1 2.2.5 4.1 1.1 5.5A8.1 8.1 0 0 1 4.2 13Zm3.9-2H4.2a8.1 8.1 0 0 1 5-5c-.6 1.4-1 3.3-1.1 5Zm3.9 8.9c-.8-1.1-1.5-3.1-1.8-6.9h3.6c-.3 3.8-1 5.8-1.8 6.9Zm2.6-1.4c.6-1.4 1-3.3 1.1-5.5h3.9a8.1 8.1 0 0 1-5 5.5Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-robot: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11 2h2v3h5a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V8a3 3 0 0 1 3-3h5V2ZM6 7a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H6Zm2 4a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm6 0a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm-5 4h6v2H9v-2Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-chat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16v11H8l-4 4V4Zm3 4v2h10V8H7Zm0 4v2h7v-2H7Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-paper-plane: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 11 21 3l-8 18-2.4-7.6L3 11Zm5.1-.2 3.6 1.1 1.1 3.6 3.5-7.8-8.2 3.1Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-clip: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 17.5a4 4 0 0 1 0-5.7l6.5-6.5a3 3 0 0 1 4.2 4.2l-7.1 7.1-1.4-1.4 7.1-7.1a1 1 0 1 0-1.4-1.4l-6.5 6.5a2 2 0 0 0 2.8 2.8l5.7-5.7 1.4 1.4-5.7 5.7A4 4 0 0 1 8 17.5Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-file: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 3h8l4 4v14H6V3Zm7 1.8V8h3.2L13 4.8ZM8 11v2h8v-2H8Zm0 4v2h8v-2H8Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-rocket: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 3c3 0 5.5 1 7 2.2C19.8 8.8 18 12 15.2 14.7L16 19l-4-2-3 3-1-4-4-2 3-3L5 7l4.3.8C10.5 5.5 11.8 4 13 3Zm.4 2.1c-.8.7-1.7 2-2.6 3.8l4.3 4.3c1.8-1.8 3-4 3.6-6.7-1.2-.8-3-1.4-5.3-1.4ZM14 7a2 2 0 1 0 0 4 2 2 0 0 0 0-4Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-trash: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 4h8l1 2h4v2H3V6h4l1-2Zm-2 6h12l-1 11H7L6 10Zm4 2v7h2v-7h-2Zm4 0v7h2v-7h-2Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-edit: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 17.5V21h3.5L18.1 10.4l-3.5-3.5L4 17.5ZM19.2 9.3l1.4-1.4a2 2 0 0 0 0-2.8l-1.7-1.7a2 2 0 0 0-2.8 0l-1.4 1.4 4.5 4.5Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-key: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 14.5A5 5 0 1 1 16.5 12H22v3h-3v3h-3v-3h-2v-.5ZM7 12a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z' fill='black'/%3E%3C/svg%3E");
    --local-icon-spinner: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 1 10 10h-3a7 7 0 0 0-7-7V2Z' fill='black'/%3E%3C/svg%3E");
}

.fa,
.fas,
.far,
.fab {
    --local-icon: var(--local-icon-dot);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1em;
    height: 1em;
    font-style: normal;
    font-weight: 400;
    line-height: 1;
    text-rendering: auto;
    vertical-align: -0.125em;
    flex: 0 0 auto;
}

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

.fa-3x { font-size: 3em; }
.fa-spin::before { animation: local-fa-spin 1s linear infinite; }
@keyframes local-fa-spin { to { transform: rotate(360deg); } }

.fa-circle { --local-icon: var(--local-icon-dot); }
.fa-plus,
.fa-plus-circle { --local-icon: var(--local-icon-plus); }
.fa-times { --local-icon: var(--local-icon-x); }
.fa-search { --local-icon: var(--local-icon-search); }
.fa-check,
.fa-check-circle { --local-icon: var(--local-icon-check); }
.fa-exclamation-circle,
.fa-exclamation-triangle { --local-icon: var(--local-icon-warning); }
.fa-info-circle { --local-icon: var(--local-icon-info); }
.fa-user,
.fa-user-check,
.fa-user-circle,
.fa-sign-out-alt { --local-icon: var(--local-icon-user); }
.fa-credit-card,
.fa-coins,
.fa-file-invoice-dollar,
.fa-receipt,
.fa-shopping-cart { --local-icon: var(--local-icon-card); }
.fa-server,
.fa-hdd,
.fa-memory,
.fa-microchip,
.fa-cube,
.fa-layer-group { --local-icon: var(--local-icon-server); }
.fa-terminal,
.fa-project-diagram { --local-icon: var(--local-icon-terminal); }
.fa-up-right-from-square,
.fa-expand,
.fa-compress { --local-icon: var(--local-icon-external); }
.fa-globe { --local-icon: var(--local-icon-globe); }
.fa-robot { --local-icon: var(--local-icon-robot); }
.fa-comments,
.fa-headset { --local-icon: var(--local-icon-chat); }
.fa-paper-plane { --local-icon: var(--local-icon-paper-plane); }
.fa-paperclip { --local-icon: var(--local-icon-clip); }
.fa-file,
.fa-file-alt,
.fa-image,
.fa-video,
.fa-inbox { --local-icon: var(--local-icon-file); }
.fa-rocket,
.fa-cloud { --local-icon: var(--local-icon-rocket); }
.fa-trash { --local-icon: var(--local-icon-trash); }
.fa-edit { --local-icon: var(--local-icon-edit); }
.fa-key { --local-icon: var(--local-icon-key); }
.fa-spinner,
.fa-sync,
.fa-undo,
.fa-undo-alt { --local-icon: var(--local-icon-spinner); }
.fa-chart-line { --local-icon: var(--local-icon-terminal); }
