/**
 * Modern Icon System - No External Dependencies
 * Uses Unicode symbols and CSS for all icons
 */

/* Base icon class */
.icon {
  display: inline-block;
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Navigation Icons */
.icon-prev::before { content: '‹'; font-size: 1.5em; vertical-align: middle; }
.icon-next::before { content: '›'; font-size: 1.5em; vertical-align: middle; }
.icon-hand-left::before { content: '👈'; }
.icon-hand-right::before { content: '👉'; }
.icon-arrow-left::before { content: '←'; }
.icon-arrow-right::before { content: '→'; }
.icon-external::before { content: '↗'; }
.icon-home::before { content: '⌂'; }

/* Heart/Favorite Icons */
.icon-heart::before { content: '♥'; }
.icon-heart-outline::before { content: '♡'; }
.icon-heart.filled::before { content: '♥'; color: #e74c3c; }

/* UI Icons */
.icon-close::before { content: '×'; font-size: 1.5em; line-height: 0.8; }
.icon-check::before { content: '✓'; }
.icon-times::before { content: '✗'; }
.icon-plus::before { content: '+'; }
.icon-minus::before { content: '−'; }
.icon-search::before { content: '🔍'; }
.icon-filter::before { content: '⊙'; }
.icon-sort::before { content: '⇅'; }
.icon-sort-up::before { content: '↑'; }
.icon-sort-down::before { content: '↓'; }

/* Theme Icons */
.icon-moon::before { content: '🌙'; }
.icon-sun::before { content: '☀'; }

/* Admin Icons */
.icon-images::before { content: '🖼'; }
.icon-image::before { content: '🖼'; }
.icon-folder::before { content: '📁'; }
.icon-file::before { content: '📄'; }
.icon-edit::before { content: '✎'; }
.icon-save::before { content: '💾'; }
.icon-trash::before { content: '🗑'; }
.icon-eye::before { content: '👁'; }
.icon-eye-slash::before { content: '🚫'; }
.icon-cog::before { content: '⚙'; }
.icon-settings::before { content: '⚙'; }
.icon-user::before { content: '👤'; }
.icon-lock::before { content: '🔒'; }
.icon-key::before { content: '🔑'; }
.icon-logout::before { content: '🚪'; }
.icon-signin::before { content: '🚪'; }

/* Status Icons */
.icon-spinner::before {
  content: '◌';
  animation: icon-spin 1s linear infinite;
}
.icon-info::before { content: 'ℹ'; }
.icon-warning::before { content: '⚠'; }
.icon-exclamation::before { content: '!'; }
.icon-bell::before { content: '🔔'; }

/* Document Icons */
.icon-code::before { content: '<>'; }
.icon-csv::before { content: '📊'; }

/* Actions */
.icon-play::before { content: '▶'; }
.icon-undo::before { content: '↺'; }

/* Spinner animation */
@keyframes icon-spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* Size modifiers */
.icon-sm { font-size: 0.875em; }
.icon-lg { font-size: 1.25em; }
.icon-xl { font-size: 1.5em; }
.icon-2x { font-size: 2em; }

/* Color helpers */
.icon-primary { color: var(--color-primary, #ab6e47); }
.icon-danger { color: #e74c3c; }
.icon-success { color: #28a745; }
.icon-warning { color: #ffc107; }
.icon-muted { color: #666; }

/* ====================================================================
   FontAwesome Compatibility Layer
   Maps FA classes to modern icons for backward compatibility
   ==================================================================== */

/* Base classes */
.fa, .fas, .far, .fab {
  display: inline-block;
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Icon mappings - using ::before pseudo-elements */
.fa-images::before, .fa-image::before { content: '🖼'; }
.fa-folder::before { content: '📁'; }
.fa-file-alt::before, .fa-file::before { content: '📄'; }
.fa-edit::before { content: '✎'; }
.fa-save::before { content: '💾'; }
.fa-trash::before { content: '🗑'; }
.fa-eye::before { content: '👁'; }
.fa-eye-slash::before { content: '🚫'; }
.fa-cog::before { content: '⚙'; }
.fa-user-circle::before, .fa-user::before { content: '👤'; }
.fa-lock::before { content: '🔒'; }
.fa-key::before { content: '🔑'; }
.fa-sign-out-alt::before, .fa-arrow-left::before { content: '🚪'; }
.fa-external-link-alt::before { content: '↗'; }
.fa-home::before { content: '⌂'; }
.fa-plus::before { content: '+'; }
.fa-filter::before { content: '⊙'; }
.fa-sort::before { content: '⇅'; }
.fa-sort-up::before { content: '↑'; }
.fa-sort-down::before { content: '↓'; }
.fa-search::before { content: '🔍'; }
.fa-file-csv::before { content: '📊'; }
.fa-bell::before { content: '🔔'; }
.fa-check::before, .fa-check-circle::before { content: '✓'; }
.fa-times::before { content: '✗'; }
.fa-exclamation-circle::before, .fa-exclamation-triangle::before { content: '⚠'; }
.fa-spinner::before {
  content: '◌';
  animation: icon-spin 1s linear infinite;
}
.fa-play::before, .fa-play-circle::before { content: '▶'; }
.fa-undo::before { content: '↺'; }
.fa-code::before { content: '<>'; }
.fa-info-circle::before { content: 'ℹ'; }
.fa-circle::before { content: '•'; }

/* Spinning animation */
.fa-spin {
  animation: icon-spin 1s linear infinite;
}
