/* ==================== SHARED ICON SYSTEM ==================== */
/* Monochromatic, stroke-based, currentColor. 24x24 default viewbox. */

.icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    color: inherit;
}

.icon svg {
    width: 100%;
    height: 100%;
    stroke: currentColor;
    fill: none;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.icon-sm { width: 16px; height: 16px; }
.icon-md { width: 20px; height: 20px; }
.icon-lg { width: 32px; height: 32px; }
.icon-xl { width: 48px; height: 48px; }

/* Ensure any inline svg in icon slots inherits stroke style */
.badge-icon svg,
.section-badge svg,
.feature-card-icon svg,
.trade-icon svg,
.tech-icon svg,
.featured-icon svg,
.mission-icon svg,
.perk-icon svg,
.info-icon svg,
.float-icon svg,
.feature-icon svg,
.feature-check svg,
.check-icon svg,
.logo-icon-wrapper svg,
.node-icon svg,
.hub-icon svg,
.stat-icon svg,
.upload-icon svg,
.format-icon svg,
.export-item-icon svg,
.export-hub svg,
.integration-item svg,
.integration-center-icon svg,
.trade-pill-icon svg,
.comparison-icon svg,
.benefit-icon svg,
.demo-icon svg,
.quick-btn-icon svg,
.reviewer-avatar svg,
.cookie-icon svg,
.qa-check svg,
.check svg,
.related-icon svg,
.detected-item svg,
.takeoff-title svg,
.takeoff-badge svg,
.form-success-icon svg,
.trade-hero-icon svg {
    stroke: currentColor;
    fill: none;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* ==================== PREMIUM ANIMATION SYSTEM ==================== */

/* Gradient shimmer on any .gradient-text element */
.gradient-text {
    background-size: 200% auto;
    animation: gradientShimmer 8s ease-in-out infinite;
}

@keyframes gradientShimmer {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

/* Button shine sweep */
.btn-primary,
.btn-border-trail {
    position: relative;
    overflow: hidden;
}

.btn-primary::after,
.btn-border-trail::after {
    content: '';
    position: absolute;
    top: 0;
    left: -75%;
    width: 50%;
    height: 100%;
    background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.18) 50%, transparent 100%);
    transform: skewX(-20deg);
    transition: left 0.7s cubic-bezier(0.2, 0.8, 0.2, 1);
    pointer-events: none;
}

.btn-primary:hover::after,
.btn-border-trail:hover::after {
    left: 120%;
}

/* Magnetic base transition */
.magnetic {
    transition: transform 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
    will-change: transform;
}

/* Text reveal word wrapper */
.text-reveal {
    display: inline-block;
}
.text-reveal .tr-word {
    display: inline-block;
    transform: translateY(22px);
    opacity: 0;
    transition: transform 0.9s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.9s cubic-bezier(0.2, 0.8, 0.2, 1);
    will-change: transform, opacity;
}
.text-reveal.revealed .tr-word {
    transform: translateY(0);
    opacity: 1;
}

/* Count-up inherits color & layout */
[data-count] {
    font-variant-numeric: tabular-nums;
}

/* Smoother orb parallax baseline */
.orb {
    transition: transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1);
    will-change: transform;
}
