/**
 * WCAG Heading Widget Styles
 * 
 * @package DM_WCAG_Core
 */

/* ====================================
   HEADING WRAPPER
   ==================================== */
.dm-wcag-heading-wrapper {
    position: relative;
    width: 100%;
}

.dm-wcag-heading-wrapper a {
    text-decoration: none;
    color: inherit;
    transition: opacity 0.3s ease;
}

.dm-wcag-heading-wrapper a:hover {
    opacity: 0.8;
}

/* Focus styles managed by global WCAG settings */

/* ====================================
   HEADING
   ==================================== */
.dm-wcag-heading {
    margin: 0;
    padding: 0;
    display: block;
}

.dm-wcag-heading__line {
    display: inline;
}

.dm-wcag-heading__line--bold {
    font-weight: 700;
}

/* ====================================
   ANIMATIONS
   ==================================== */

/* Base animation state */
.dm-wcag-heading--animated {
    opacity: 0;
    will-change: transform, opacity;
}

/* Show immediately in Elementor editor */
.elementor-editor-active .dm-wcag-heading--animated,
.elementor-element-edit-mode .dm-wcag-heading--animated {
    opacity: 1 !important;
    transform: none !important;
}

/* Animated state (triggered by JavaScript) */
.dm-wcag-heading--animated.dm-wcag-heading--active {
    opacity: 1;
    animation-fill-mode: both;
    animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Fallback if JS doesn't load within 2 seconds */
.dm-wcag-heading--animated:not(.dm-wcag-heading--active) {
    animation: dm-wcag-fallback-show 0.5s ease forwards 2s;
}

@keyframes dm-wcag-fallback-show {
    to {
        opacity: 1;
    }
}

/* Fade In */
.dm-wcag-heading--fade-in.dm-wcag-heading--active {
    animation-name: dm-wcag-fade-in;
}

@keyframes dm-wcag-fade-in {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

/* Slide Up */
.dm-wcag-heading--slide-up.dm-wcag-heading--active {
    animation-name: dm-wcag-slide-up;
}

@keyframes dm-wcag-slide-up {
    from {
        opacity: 0;
        transform: translateY(30px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Slide Down */
.dm-wcag-heading--slide-down.dm-wcag-heading--active {
    animation-name: dm-wcag-slide-down;
}

@keyframes dm-wcag-slide-down {
    from {
        opacity: 0;
        transform: translateY(-30px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Slide Left */
.dm-wcag-heading--slide-left.dm-wcag-heading--active {
    animation-name: dm-wcag-slide-left;
}

@keyframes dm-wcag-slide-left {
    from {
        opacity: 0;
        transform: translateX(30px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Slide Right */
.dm-wcag-heading--slide-right.dm-wcag-heading--active {
    animation-name: dm-wcag-slide-right;
}

@keyframes dm-wcag-slide-right {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Zoom In */
.dm-wcag-heading--zoom-in.dm-wcag-heading--active {
    animation-name: dm-wcag-zoom-in;
}

@keyframes dm-wcag-zoom-in {
    from {
        opacity: 0;
        transform: scale(0.9);
    }

    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* ====================================
   WCAG: REDUCED MOTION
   ==================================== */
@media (prefers-reduced-motion: reduce) {
    .dm-wcag-heading--animated {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }

    .dm-wcag-heading--animated.dm-wcag-heading--active {
        animation: none !important;
    }

    .dm-wcag-heading-wrapper a {
        transition: none;
    }
}

/* Fallback when animations are disabled via WCAG plugin */
body.wcag-no-animations .dm-wcag-heading--animated,
body.wcag-animations-disabled .dm-wcag-heading--animated {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
}

body.wcag-no-animations .dm-wcag-heading--animated.dm-wcag-heading--active,
body.wcag-animations-disabled .dm-wcag-heading--animated.dm-wcag-heading--active {
    animation: none !important;
}

/* ====================================
   ACCESSIBILITY
   ==================================== */
/* Focus styles managed by global WCAG settings */

/* ====================================
   RESPONSIVE
   ==================================== */
@media screen and (max-width: 768px) {
    .dm-wcag-heading {
        word-break: break-word;
    }
}