/**
 * Tools Horizon Pro - Public Icon Styles
 * Extends WordPress Dashicons with custom icon classes for frontend use
 * @version 3.0.0
 */

:root {
    --th-icon-size: 20px;
    --th-icon-size-xs: 14px;
    --th-icon-size-sm: 16px;
    --th-icon-size-lg: 24px;
    --th-icon-size-xl: 32px;
    --th-icon-size-2xl: 48px;
}

[class^="th-icon-"],
[class*=" th-icon-"] {
    display: inline-block;
    width: var(--th-icon-size);
    height: var(--th-icon-size);
    font-size: var(--th-icon-size);
    line-height: 1;
    vertical-align: middle;
    text-align: center;
    font-family: dashicons;
    font-weight: normal;
    font-style: normal;
    speak: never;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.th-icon-xs {
    width: var(--th-icon-size-xs);
    height: var(--th-icon-size-xs);
    font-size: var(--th-icon-size-xs);
}

.th-icon-sm {
    width: var(--th-icon-size-sm);
    height: var(--th-icon-size-sm);
    font-size: var(--th-icon-size-sm);
}

.th-icon-lg {
    width: var(--th-icon-size-lg);
    height: var(--th-icon-size-lg);
    font-size: var(--th-icon-size-lg);
}

.th-icon-xl {
    width: var(--th-icon-size-xl);
    height: var(--th-icon-size-xl);
    font-size: var(--th-icon-size-xl);
}

.th-icon-2xl {
    width: var(--th-icon-size-2xl);
    height: var(--th-icon-size-2xl);
    font-size: var(--th-icon-size-2xl);
}

.th-icon-tools:before { content: "\f107"; }
.th-icon-categories:before { content: "\f318"; }
.th-icon-search:before { content: "\f179"; }
.th-icon-filter:before { content: "\f536"; }
.th-icon-sort:before { content: "\f156"; }
.th-icon-grid:before { content: "\f509"; }
.th-icon-list:before { content: "\f163"; }
.th-icon-star:before { content: "\f154"; }
.th-icon-star-filled:before { content: "\f155"; }
.th-icon-star-half:before { content: "\f459"; }
.th-icon-heart:before { content: "\f487"; }
.th-icon-heart-filled:before { content: "\f487"; }
.th-icon-share:before { content: "\f237"; }
.th-icon-link:before { content: "\f103"; }
.th-icon-external:before { content: "\f504"; }
.th-icon-copy:before { content: "\f105"; }
.th-icon-check:before { content: "\f147"; }
.th-icon-close:before { content: "\f158"; }
.th-icon-plus:before { content: "\f132"; }
.th-icon-minus:before { content: "\f460"; }
.th-icon-arrow-up:before { content: "\f142"; }
.th-icon-arrow-down:before { content: "\f140"; }
.th-icon-arrow-left:before { content: "\f141"; }
.th-icon-arrow-right:before { content: "\f139"; }
.th-icon-chevron-up:before { content: "\f142"; }
.th-icon-chevron-down:before { content: "\f140"; }
.th-icon-chevron-left:before { content: "\f341"; }
.th-icon-chevron-right:before { content: "\f345"; }
.th-icon-calculator:before { content: "\f239"; }
.th-icon-converter:before { content: "\f463"; }
.th-icon-generator:before { content: "\f182"; }
.th-icon-info:before { content: "\f348"; }
.th-icon-warning:before { content: "\f534"; }
.th-icon-error:before { content: "\f534"; }
.th-icon-success:before { content: "\f147"; }
.th-icon-clock:before { content: "\f469"; }
.th-icon-calendar:before { content: "\f145"; }
.th-icon-views:before { content: "\f177"; }
.th-icon-users:before { content: "\f307"; }
.th-icon-user:before { content: "\f110"; }
.th-icon-email:before { content: "\f465"; }
.th-icon-print:before { content: "\f193"; }
.th-icon-download:before { content: "\f316"; }
.th-icon-refresh:before { content: "\f463"; }
.th-icon-loading:before { content: "\f463"; }
.th-icon-menu:before { content: "\f333"; }
.th-icon-more:before { content: "\f533"; }
.th-icon-tag:before { content: "\f323"; }
.th-icon-folder:before { content: "\f322"; }
.th-icon-image:before { content: "\f128"; }
.th-icon-code:before { content: "\f475"; }
.th-icon-facebook:before { content: "\f305"; }
.th-icon-twitter:before { content: "\f301"; }
.th-icon-linkedin:before { content: "\f339"; }
.th-icon-pinterest:before { content: "\f192"; }
.th-icon-whatsapp:before { content: "\f525"; }
.th-icon-telegram:before { content: "\f466"; }

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

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

.th-icon-pulse {
    animation: th-icon-pulse 1.5s ease-in-out infinite;
}

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

.th-icon-bounce {
    animation: th-icon-bounce 0.6s ease infinite;
}

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

.th-icon-circle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--th-gradient, linear-gradient(135deg, #667eea 0%, #764ba2 100%));
    color: #fff;
}

.th-icon-circle.th-icon-sm {
    width: 32px;
    height: 32px;
}

.th-icon-circle.th-icon-lg {
    width: 56px;
    height: 56px;
}

.th-icon-box {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 8px;
    background: var(--th-primary-light, rgba(102, 126, 234, 0.1));
    color: var(--th-primary, #667eea);
    transition: all 0.2s ease;
}

.th-icon-box:hover {
    background: var(--th-gradient, linear-gradient(135deg, #667eea 0%, #764ba2 100%));
    color: #fff;
}

.th-icon-muted {
    opacity: 0.5;
}

.th-icon-primary {
    color: var(--th-primary, #667eea);
}

.th-icon-secondary {
    color: var(--th-text-muted, #6b7280);
}

.th-icon-success {
    color: var(--th-success, #10b981);
}

.th-icon-danger {
    color: var(--th-danger, #ef4444);
}

.th-icon-warning {
    color: var(--th-warning, #f59e0b);
}

.th-icon-info {
    color: var(--th-info, #3b82f6);
}

.th-icon-gradient {
    background: var(--th-gradient, linear-gradient(135deg, #667eea 0%, #764ba2 100%));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.th-icon-interactive {
    cursor: pointer;
    transition: transform 0.2s ease, color 0.2s ease;
}

.th-icon-interactive:hover {
    transform: scale(1.1);
    color: var(--th-primary, #667eea);
}

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