/* ===== MODERN ICON SYSTEM ===== */
/* Replacing FontAwesome and emoji icons with better glyph alternatives */
/* Using Bootstrap Icons and custom SVG icons for better visual quality */

/* ===== BOOTSTRAP ICONS INTEGRATION ===== */
/* Include Bootstrap Icons CSS */
@import url('https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css');

/* ===== CUSTOM SVG ICONS ===== */
/* Define custom SVG icons for better quality and consistency */

/* Hamburger Menu Icon */
.icon-menu::before {
  content: '';
  display: inline-block;
  width: 18px;
  height: 14px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 24'%3e%3cpath stroke='currentColor' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 6h22M4 12h22M4 18h22'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Search Icon */
.icon-search::before {
  content: '';
  display: inline-block;
  width: 18px;
  height: 18px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-4.35-4.35M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0z'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Close/X Icon */
.icon-close::before {
  content: '';
  display: inline-block;
  width: 16px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Arrow Right Icon */
.icon-arrow-right::before {
  content: '';
  display: inline-block;
  width: 14px;
  height: 14px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 18l6-6-6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Calendar Icon */
.icon-calendar::before {
  content: '';
  display: inline-block;
  width: 16px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 4h18v18H3zM16 2v4M8 2v4M3 10h18'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* File Icon */
.icon-file::before {
  content: '';
  display: inline-block;
  width: 16px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M14 2v6h6M16 13H8M16 17H8M10 9H8'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon - Now using FontAwesome in HTML instead of CSS pseudo-element */
/* .icon-pdf::before {
  content: '';
  display: inline-block;
  width: 16px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M14 2v6h6M16 13H8M16 17H8M10 9H8'/%3e%3cpath fill='currentColor' d='M9 12h2v4H9z'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
} */

/* PDF Icon with PDF Text - Compact */
.icon-pdf-text::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='%23dc2626' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Standard */
.icon-pdf-badge::before {
  content: '';
  display: inline-block;
  width: 28px;
  height: 18px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 24'%3e%3crect x='2' y='2' width='20' height='20' rx='3' fill='%23dc2626' stroke='currentColor' stroke-width='1'/%3e%3ctext x='12' y='15' font-family='Arial, sans-serif' font-size='7' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Large */
.icon-pdf-large::before {
  content: '';
  display: inline-block;
  width: 32px;
  height: 20px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 26'%3e%3crect x='2' y='2' width='24' height='22' rx='3' fill='%23dc2626' stroke='currentColor' stroke-width='1'/%3e%3ctext x='14' y='16' font-family='Arial, sans-serif' font-size='8' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Minimal */
.icon-pdf-minimal::before {
  content: '';
  display: inline-block;
  width: 20px;
  height: 14px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 18'%3e%3crect x='1' y='1' width='14' height='16' rx='2' fill='%23dc2626' stroke='currentColor' stroke-width='1'/%3e%3ctext x='8' y='12' font-family='Arial, sans-serif' font-size='5' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Blue Theme */
.icon-pdf-blue::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='%232563eb' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Green Theme */
.icon-pdf-green::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='%2316a34a' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Orange Theme */
.icon-pdf-orange::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='%23ea580c' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Purple Theme */
.icon-pdf-purple::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='%239334d6' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Dark Theme */
.icon-pdf-dark::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='%23374151' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Outline Style */
.icon-pdf-outline::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='none' stroke='currentColor' stroke-width='2'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='currentColor' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Rounded */
.icon-pdf-rounded::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='8' fill='%23dc2626' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Square */
.icon-pdf-square::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='2' y='2' width='16' height='16' rx='0' fill='%23dc2626' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Gradient */
.icon-pdf-gradient::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3cdefs%3e%3clinearGradient id='pdfGrad' x1='0%25' y1='0%25' x2='100%25' y2='100%25'%3e%3cstop offset='0%25' style='stop-color:%23dc2626;stop-opacity:1' /%3e%3cstop offset='100%25' style='stop-color:%23b91c1c;stop-opacity:1' /%3e%3c/linearGradient%3e%3c/defs%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='url(%23pdfGrad)' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* PDF Icon with PDF Text - Shadow Effect */
.icon-pdf-shadow::before {
  content: '';
  display: inline-block;
  width: 24px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 20'%3e%3crect x='3' y='3' width='16' height='16' rx='2' fill='%23000000' opacity='0.3'/%3e%3crect x='2' y='2' width='16' height='16' rx='2' fill='%23dc2626' stroke='currentColor' stroke-width='1'/%3e%3ctext x='10' y='13' font-family='Arial, sans-serif' font-size='6' font-weight='bold' fill='white' text-anchor='middle'%3ePDF%3c/text%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Lock Icon */
.icon-lock::before {
  content: '';
  display: inline-block;
  width: 16px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 13a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2zM12 11V7a3 3 0 0 0-6 0v4'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Caret Down Icon */
.icon-caret-down::before {
  content: '';
  display: inline-block;
  width: 12px;
  height: 12px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 9l6 6 6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Caret Up Icon */
.icon-caret-up::before {
  content: '';
  display: inline-block;
  width: 12px;
  height: 12px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 15l-6-6-6 6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* ===== ICON SIZE VARIATIONS ===== */
.icon-sm::before {
  width: 14px !important;
  height: 14px !important;
}

.icon-lg::before {
  width: 20px !important;
  height: 20px !important;
}

.icon-xl::before {
  width: 24px !important;
  height: 24px !important;
}

/* ===== ICON COLOR VARIATIONS ===== */
.icon-primary::before {
  color: #1e6292 !important;
}

.icon-secondary::before {
  color: #6c757d !important;
}

.icon-success::before {
  color: #28a745 !important;
}

.icon-danger::before {
  color: #dc3545 !important;
}

.icon-warning::before {
  color: #ffc107 !important;
}

.icon-info::before {
  color: #17a2b8 !important;
}

.icon-light::before {
  color: #f8f9fa !important;
}

.icon-dark::before {
  color: #343a40 !important;
}

/* ===== RESPONSIVE ICON SIZING ===== */
@media (max-width: 768px) {
  .icon-menu::before,
  .icon-search::before {
    width: 16px !important;
    height: 16px !important;
  }
}

@media (max-width: 480px) {
  .icon-menu::before,
  .icon-search::before {
    width: 14px !important;
    height: 14px !important;
  }
}

/* ===== ACCESSIBILITY ===== */
.icon-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ===== FALLBACK FOR OLDER BROWSERS ===== */
@supports not (background-image: url('data:image/svg+xml,%3csvg%3e')) {
  /* Fallback to Bootstrap Icons for browsers that don't support data URIs */
  .icon-menu::before {
    content: '\f0c9';
    font-family: 'bootstrap-icons';
  }
  .icon-search::before {
    content: '\f52a';
    font-family: 'bootstrap-icons';
  }
  .icon-close::before {
    content: '\f62a';
    font-family: 'bootstrap-icons';
  }
  .icon-arrow-right::before {
    content: '\f285';
    font-family: 'bootstrap-icons';
  }
  .icon-calendar::before {
    content: '\f4c5';
    font-family: 'bootstrap-icons';
  }
  .icon-file::before {
    content: '\f74c';
    font-family: 'bootstrap-icons';
  }
  .icon-pdf::before {
    content: '\f74c';
    font-family: 'bootstrap-icons';
  }
  .icon-lock::before {
    content: '\f4d2';
    font-family: 'bootstrap-icons';
  }
  .icon-caret-down::before {
    content: '\f282';
    font-family: 'bootstrap-icons';
  }
  .icon-caret-up::before {
    content: '\f283';
    font-family: 'bootstrap-icons';
  }
}

/* ===== ICON ANIMATIONS ===== */
.icon-spin::before {
  animation: icon-spin 1s linear infinite;
}

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

.icon-pulse::before {
  animation: icon-pulse 1s ease-in-out infinite;
}

@keyframes icon-pulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

/* ===== ICON HOVER EFFECTS ===== */
.icon-hover-scale:hover::before {
  transform: scale(1.1);
  transition: transform 0.2s ease;
}

.icon-hover-rotate:hover::before {
  transform: rotate(90deg);
  transition: transform 0.2s ease;
}

/* ===== ICON BUTTON STYLES ===== */
.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  border: none;
  background: transparent;
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-icon:hover {
  background: rgba(0, 0, 0, 0.1);
  border-radius: 4px;
}

.btn-icon:active {
  transform: scale(0.95);
}

/* ===== ICON TOOLTIP ===== */
.icon-tooltip {
  position: relative;
  cursor: help;
}

.icon-tooltip::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0, 0, 0, 0.8);
  color: white;
  padding: 0.5rem;
  border-radius: 4px;
  font-size: 0.875rem;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  transition: all 0.2s ease;
  z-index: 1000;
}

.icon-tooltip:hover::after {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(-5px);
}

/* ===== ICON BADGE ===== */
.icon-badge {
  position: relative;
  display: inline-block;
}

.icon-badge::after {
  content: attr(data-count);
  position: absolute;
  top: -8px;
  right: -8px;
  background: #dc3545;
  color: white;
  border-radius: 50%;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: bold;
  border: 2px solid white;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

/* ===== ICON GROUP ===== */
.icon-group {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}

.icon-group .icon::before {
  width: 16px !important;
  height: 16px !important;
}

/* ===== ICON STACK (Layered Icons) ===== */
.icon-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}

.icon-stack .icon::before {
  position: absolute;
  width: 100% !important;
  height: 100% !important;
  text-align: center;
  width: 1em;
  height: 1em;
  line-height: inherit;
}

.icon-stack .icon-stack-2x::before {
  font-size: 2em;
}

.icon-stack .icon-stack-1x::before {
  font-size: 1em;
  line-height: inherit;
}

/* ===== ICON BORDER ===== */
.icon-border::before {
  padding: 0.2em;
  border: 0.08em solid currentColor;
  border-radius: 0.1em;
}

/* ===== ICON PULL ===== */
.icon-pull-left {
  float: left;
  margin-right: 0.3em;
}

.icon-pull-right {
  float: right;
  margin-left: 0.3em;
}

/* ===== ICON ROTATION ===== */
.icon-rotate-90::before {
  transform: rotate(90deg);
}

.icon-rotate-180::before {
  transform: rotate(180deg);
}

.icon-rotate-270::before {
  transform: rotate(270deg);
}

.icon-flip-horizontal::before {
  transform: scaleX(-1);
}

.icon-flip-vertical::before {
  transform: scaleY(-1);
}

/* ===== ICON INVERSE ===== */
.icon-inverse::before {
  color: white;
  background-color: currentColor;
  border-radius: 0.1em;
  padding: 0.1em;
}

/* ===== ICON LOADING STATE ===== */
.icon-loading::before {
  animation: icon-loading 1s linear infinite;
}

@keyframes icon-loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* ===== ICON SUCCESS/ERROR STATES ===== */
.icon-success::before {
  color: #28a745;
}

.icon-error::before {
  color: #dc3545;
}

.icon-warning::before {
  color: #ffc107;
}

.icon-info::before {
  color: #17a2b8;
}

/* ===== ICON FOCUS STATES ===== */
.icon:focus::before,
.icon:focus-within::before {
  outline: 2px solid currentColor;
  outline-offset: 2px;
  border-radius: 2px;
}

/* ===== ICON DISABLED STATE ===== */
.icon:disabled::before,
.icon[aria-disabled='true']::before {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ===== ICON RESPONSIVE UTILITY ===== */
@media (max-width: 576px) {
  .icon-mobile-hide {
    display: none !important;
  }
}

@media (min-width: 576px) {
  .icon-mobile-only {
    display: none !important;
  }
}

/* ===== ICON PRINT STYLES ===== */
@media print {
  .icon::before {
    /* Ensure icons are visible in print */
    -webkit-print-color-adjust: exact;
    color-adjust: exact;
  }
}

/* ===== ICON HIGH CONTRAST MODE ===== */
@media (prefers-contrast: high) {
  .icon::before {
    /* Enhance contrast for better accessibility */
    stroke-width: 2px;
  }
}

/* ===== ICON REDUCED MOTION ===== */
@media (prefers-reduced-motion: reduce) {
  .icon::before {
    animation: none !important;
    transition: none !important;
  }
}

/* ===== ICON DEBUGGING ===== */
/* Uncomment to debug icon positioning */
/*
.icon::before {
  background: rgba(255, 0, 0, 0.1);
  border: 1px solid red;
}
*/

/* ===== ICON LEGEND/KEY ===== */
.icon-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin: 1rem 0;
}

.icon-legend-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
}

.icon-legend-item::before {
  content: '';
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

/* ===== ICON THEME VARIATIONS ===== */
[data-theme='dark'] .icon::before {
  /* Dark theme adjustments */
  opacity: 0.9;
}

[data-theme='light'] .icon::before {
  /* Light theme adjustments */
  opacity: 1;
}

/* ===== ICON SIZE CLASSES ===== */
.icon-xs::before {
  width: 12px !important;
  height: 12px !important;
}
.icon-sm::before {
  width: 14px !important;
  height: 14px !important;
}
.icon-md::before {
  width: 16px !important;
  height: 16px !important;
}
.icon-lg::before {
  width: 18px !important;
  height: 18px !important;
}
.icon-xl::before {
  width: 20px !important;
  height: 20px !important;
}
.icon-2xl::before {
  width: 24px !important;
  height: 24px !important;
}
.icon-3xl::before {
  width: 32px !important;
  height: 32px !important;
}

/* ===== ICON WEIGHT VARIATIONS ===== */
.icon-light::before {
  stroke-width: 1px;
}

.icon-regular::before {
  stroke-width: 1.5px;
}

.icon-bold::before {
  stroke-width: 2px;
}

.icon-heavy::before {
  stroke-width: 3px;
}

/* ===== ICON SHAPE VARIATIONS ===== */
.icon-circle::before {
  border-radius: 50%;
  background: currentColor;
  color: white;
}

.icon-square::before {
  border-radius: 4px;
  background: currentColor;
  color: white;
}

.icon-rounded::before {
  border-radius: 6px;
  background: currentColor;
  color: white;
}

/* ===== ICON GRADIENT EFFECTS ===== */
.icon-gradient::before {
  background: linear-gradient(45deg, currentColor, transparent);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ===== ICON SHADOW EFFECTS ===== */
.icon-shadow::before {
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
}

.icon-glow::before {
  filter: drop-shadow(0 0 8px currentColor);
}

/* ===== ICON TRANSITION EFFECTS ===== */
.icon-smooth::before {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.icon-bounce::before {
  transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

.icon-elastic::before {
  transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

/* ===== ICON INTERACTION STATES ===== */
.icon-interactive::before {
  cursor: pointer;
  transition: all 0.2s ease;
}

.icon-interactive:hover::before {
  transform: scale(1.1);
  opacity: 0.8;
}

.icon-interactive:active::before {
  transform: scale(0.95);
}

/* ===== ICON LOADING SPINNER ===== */
.icon-spinner::before {
  animation: icon-spinner 1s linear infinite;
  border: 2px solid currentColor;
  border-top: 2px solid transparent;
  border-radius: 50%;
  background: transparent !important;
}

@keyframes icon-spinner {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* ===== ICON PROGRESS INDICATOR ===== */
.icon-progress::before {
  position: relative;
  overflow: hidden;
}

.icon-progress::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.4),
    transparent
  );
  animation: icon-shimmer 2s infinite;
}

@keyframes icon-shimmer {
  0% {
    left: -100%;
  }
  100% {
    left: 100%;
  }
}

/* ===== ICON STATUS INDICATORS ===== */
.icon-online::before {
  position: relative;
}

.icon-online::after {
  content: '';
  position: absolute;
  bottom: 2px;
  right: 2px;
  width: 6px;
  height: 6px;
  background: #28a745;
  border-radius: 50%;
  border: 1px solid white;
}

.icon-offline::after {
  background: #6c757d;
}

.icon-away::after {
  background: #ffc107;
}

.icon-busy::after {
  background: #dc3545;
}

/* ===== ICON NOTIFICATION BADGE ===== */
.icon-notification::before {
  position: relative;
}

.icon-notification[data-count]::after {
  content: attr(data-count);
  position: absolute;
  top: -8px;
  right: -8px;
  background: #dc3545;
  color: white;
  border-radius: 50%;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: bold;
  border: 2px solid white;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
  min-width: 18px;
}

/* ===== ICON TOOLTIP ENHANCED ===== */
.icon-tooltip-enhanced {
  position: relative;
  cursor: help;
}

.icon-tooltip-enhanced::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%) translateY(10px);
  background: rgba(0, 0, 0, 0.9);
  color: white;
  padding: 0.75rem 1rem;
  border-radius: 6px;
  font-size: 0.875rem;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  z-index: 1000;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.icon-tooltip-enhanced::before {
  content: '';
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%) translateY(5px);
  border: 5px solid transparent;
  border-top-color: rgba(0, 0, 0, 0.9);
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
  z-index: 1001;
}

.icon-tooltip-enhanced:hover::after,
.icon-tooltip-enhanced:hover::before {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(-5px);
}

.icon-tooltip-enhanced:hover::before {
  transform: translateX(-50%) translateY(-10px);
}

/* ===== ICON ACCESSIBILITY ===== */
.icon[aria-label]::before {
  /* Screen reader support */
  speak: none;
}

.icon[aria-hidden='true']::before {
  /* Hide from screen readers */
  speak: none;
}

/* ===== ICON FOCUS MANAGEMENT ===== */
.icon:focus {
  outline: 2px solid currentColor;
  outline-offset: 2px;
  border-radius: 4px;
}

/* ===== ICON KEYBOARD NAVIGATION ===== */
.icon[tabindex='0']:focus::before {
  outline: 2px solid currentColor;
  outline-offset: 2px;
  border-radius: 2px;
}

/* ===== ICON ARIA EXPANDED STATES ===== */
.icon[aria-expanded='true']::before {
  transform: rotate(180deg);
  transition: transform 0.2s ease;
}

.icon[aria-expanded='false']::before {
  transform: rotate(0deg);
  transition: transform 0.2s ease;
}

/* ===== ICON DRAG AND DROP ===== */
.icon[draggable='true'] {
  cursor: grab;
}

.icon[draggable='true']:active {
  cursor: grabbing;
}

/* ===== ICON CONTEXT MENU ===== */
.icon[contextmenu] {
  cursor: context-menu;
}

/* ===== ICON DOWNLOAD STATE ===== */
.icon[download]::before {
  cursor: pointer;
}

.icon[download]:hover::before {
  opacity: 0.8;
}

/* ===== ICON EXTERNAL LINK ===== */
.icon[rel='external']::after {
  content: '';
  display: inline-block;
  width: 10px;
  height: 10px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e%3cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6M15 3h6v6M10 14L21 3'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  margin-left: 4px;
  vertical-align: middle;
}

/* ===== ICON BOOKMARK STATE ===== */
.icon-bookmarked::before {
  color: #ffc107;
}

.icon-bookmarked:hover::before {
  color: #ff8c00;
}

/* ===== ICON FAVORITE STATE ===== */
.icon-favorited::before {
  color: #e74c3c;
}

.icon-favorited:hover::before {
  color: #c0392b;
}

/* ===== ICON SHARE STATE ===== */
.icon-shared::before {
  color: #3498db;
}

.icon-shared:hover::before {
  color: #2980b9;
}

/* ===== ICON PRINT STATE ===== */
.icon-print::before {
  cursor: pointer;
}

.icon-print:hover::before {
  color: #27ae60;
}

/* ===== ICON EMAIL STATE ===== */
.icon-email::before {
  cursor: pointer;
}

.icon-email:hover::before {
  color: #e67e22;
}

/* ===== ICON PHONE STATE ===== */
.icon-phone::before {
  cursor: pointer;
}

.icon-phone:hover::before {
  color: #9b59b6;
}

/* ===== ICON CHAT STATE ===== */
.icon-chat::before {
  cursor: pointer;
  position: relative;
}

.icon-chat:hover::before {
  color: #1abc9c;
}

.icon-chat[data-unread]::after {
  content: '';
  position: absolute;
  top: -2px;
  right: -2px;
  width: 8px;
  height: 8px;
  background: #e74c3c;
  border-radius: 50%;
  border: 1px solid white;
}

/* ===== ICON SETTINGS STATE ===== */
.icon-settings::before {
  cursor: pointer;
}

.icon-settings:hover::before {
  animation: icon-settings-rotate 0.5s ease;
}

@keyframes icon-settings-rotate {
  0% {
    transform: rotate(0deg);
  }
  25% {
    transform: rotate(90deg);
  }
  50% {
    transform: rotate(180deg);
  }
  75% {
    transform: rotate(270deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* ===== ICON HELP STATE ===== */
.icon-help::before {
  cursor: help;
}

.icon-help:hover::before {
  color: #f39c12;
}

/* ===== ICON INFO STATE ===== */
.icon-info::before {
  cursor: help;
}

.icon-info:hover::before {
  color: #3498db;
}

/* ===== ICON WARNING STATE ===== */
.icon-warning::before {
  color: #f39c12;
}

.icon-warning:hover::before {
  color: #e67e22;
}

/* ===== ICON ERROR STATE ===== */
.icon-error::before {
  color: #e74c3c;
}

.icon-error:hover::before {
  color: #c0392b;
}

/* ===== ICON SUCCESS STATE ===== */
.icon-success::before {
  color: #27ae60;
}

.icon-success:hover::before {
  color: #229954;
}

/* ===== ICON DISABLED STATE ===== */
.icon-disabled::before {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* ===== ICON LOADING STATE ===== */
.icon-loading::before {
  animation: icon-loading-pulse 1.5s ease-in-out infinite;
}

@keyframes icon-loading-pulse {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.7;
    transform: scale(1.1);
  }
}

/* ===== ICON PROGRESS STATE ===== */
.icon-progress::before {
  position: relative;
  overflow: hidden;
}

.icon-progress::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 0%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.6),
    transparent
  );
  animation: icon-progress-fill 2s ease-in-out infinite;
}

@keyframes icon-progress-fill {
  0% {
    width: 0%;
    left: 0%;
  }
  50% {
    width: 100%;
    left: 0%;
  }
  100% {
    width: 0%;
    left: 100%;
  }
}

/* ===== ICON COMPLETED STATE ===== */
.icon-completed::before {
  color: #27ae60;
  animation: icon-completed-check 0.6s ease;
}

@keyframes icon-completed-check {
  0% {
    transform: scale(0) rotate(0deg);
    opacity: 0;
  }
  50% {
    transform: scale(1.2) rotate(180deg);
    opacity: 1;
  }
  100% {
    transform: scale(1) rotate(360deg);
    opacity: 1;
  }
}

/* ===== ICON FAILED STATE ===== */
.icon-failed::before {
  color: #e74c3c;
  animation: icon-failed-shake 0.6s ease;
}

@keyframes icon-failed-shake {
  0%,
  100% {
    transform: translateX(0);
  }
  25% {
    transform: translateX(-5px);
  }
  75% {
    transform: translateX(5px);
  }
}

/* ===== ICON PENDING STATE ===== */
.icon-pending::before {
  color: #f39c12;
  animation: icon-pending-bounce 1s ease-in-out infinite;
}

@keyframes icon-pending-bounce {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-3px);
  }
}

/* ===== ICON ACTIVE STATE ===== */
.icon-active::before {
  color: #3498db;
  animation: icon-active-glow 2s ease-in-out infinite;
}

@keyframes icon-active-glow {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.7;
  }
}

/* ===== ICON INACTIVE STATE ===== */
.icon-inactive::before {
  color: #95a5a6;
  opacity: 0.6;
}

/* ===== ICON HOVER STATE ===== */
.icon-hover::before {
  transition: all 0.2s ease;
}

.icon-hover:hover::before {
  transform: scale(1.1);
  opacity: 0.8;
}

/* ===== ICON FOCUS STATE ===== */
.icon-focus::before {
  transition: all 0.2s ease;
}

.icon-focus:focus::before {
  outline: 2px solid currentColor;
  outline-offset: 2px;
  border-radius: 2px;
}

/* ===== ICON ACTIVE STATE ===== */
.icon-active::before {
  background-color: currentColor;
  color: white;
  border-radius: 50%;
  padding: 2px;
}

/* ===== ICON SELECTED STATE ===== */
.icon-selected::before {
  background-color: currentColor;
  color: white;
  border-radius: 4px;
  padding: 2px 4px;
}

/* ===== ICON EXPANDED STATE ===== */
.icon-expanded::before {
  transform: rotate(90deg);
  transition: transform 0.2s ease;
}

/* ===== ICON COLLAPSED STATE ===== */
.icon-collapsed::before {
  transform: rotate(0deg);
  transition: transform 0.2s ease;
}

/* ===== ICON SORTABLE STATE ===== */
.icon-sortable::before {
  cursor: grab;
}

.icon-sortable:active::before {
  cursor: grabbing;
}

/* ===== ICON DRAGGABLE STATE ===== */
.icon-draggable::before {
  cursor: grab;
}

.icon-draggable:active::before {
  cursor: grabbing;
}

/* ===== ICON DROPPABLE STATE ===== */
.icon-droppable::before {
  border: 2px dashed currentColor;
  border-radius: 4px;
  padding: 4px;
}

/* ===== ICON RESIZABLE STATE ===== */
.icon-resizable::before {
  cursor: nw-resize;
}

.icon-resizable-se::before {
  cursor: se-resize;
}

/* ===== GALLEY LINK PDF ICON STYLING ===== */
/* Updated: 2025-09-15 16:55 */

/* DISABLE OLD PSEUDO-ELEMENT PDF ICONS - HIGH SPECIFICITY */
.obj_galley_link.pdf:before,
.obj_galley_link.pdf::before,
.obj_galley_link[class*='pdf']:before,
.obj_galley_link[class*='pdf']::before,
a.obj_galley_link.pdf:before,
a.obj_galley_link.pdf::before,
a.obj_galley_link[class*='pdf']:before,
a.obj_galley_link[class*='pdf']::before {
  content: none !important;
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
  position: absolute !important;
  left: -9999px !important;
}

/* NEW FONTAWESOME 6 SOLID PDF ICON */
.obj_galley_link.pdf i.fa-solid.fa-file-pdf {
  margin-right: 4px; /* Reduced spacing */
  margin-left: 4px; /* Reduced spacing */
  /* color: #002311; */
  font-size: 16px !important; /* Increased size */
  vertical-align: middle;
}

.obj_galley_link.pdf:hover i.fa-solid.fa-file-pdf {
  color: #b91c1c;
  transform: scale(1.1);
  transition: all 0.2s ease;
}

/* Responsive adjustments for PDF icons in galley links */
@media (max-width: 768px) {
  .obj_galley_link.pdf i.fa-solid.fa-file-pdf {
    font-size: 14px;
    margin-right: 6px;
  }
}

@media (max-width: 480px) {
  .obj_galley_link.pdf i.fa-solid.fa-file-pdf {
    font-size: 12px;
    margin-right: 4px;
  }
}
