/* ==========================================================================
   Featured Banner Widget Styles
   ========================================================================== */

/* Prevent horizontal scrollbars from 100vw breakout */
body {
    overflow-x: hidden;
}

/* Remove default Elementor container padding/margin when Featured Banner is active */
.e-con:has(.elementor-widget-featured_banner),
.e-con-full:has(.elementor-widget-featured_banner),
.e-con-boxed:has(.elementor-widget-featured_banner),
.e-con:has(.elementor-widget-featured_banner) > .e-con-inner,
.e-con-inner:has(.elementor-widget-featured_banner),
.elementor-column-wrap:has(.elementor-widget-featured_banner),
.elementor-widget-wrap:has(.elementor-widget-featured_banner) {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    padding-block-start: 0 !important;
    padding-block-end: 0 !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.elementor-widget-featured_banner {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.elementor-widget-featured_banner .elementor-widget-container {
    padding: 0 !important;
    margin: 0 !important;
}

/* Main Section Wrapper */
.featured-banner {
    position: relative;
    height: 600px; /* Default height */
    display: flex;
    flex-direction: column;
    justify-content: center; /* Vertically centered */
    align-items: center;     /* Horizontally centered */
    overflow: hidden;
    box-sizing: border-box;
}

/* Full Width Viewport Layout */
.featured-banner.featured-banner-layout-full-width {
    width: 100vw;
    margin-left: calc(-50vw + 50%);
}

/* Boxed Layout */
.featured-banner.featured-banner-layout-boxed {
    width: 100%;
    margin-left: auto;
    margin-right: auto;
}

/* Background Image Layer */
.featured-banner-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    z-index: 1;
    pointer-events: none;
}

/* Semi-Transparent Overlay Layer */
.featured-banner-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.20); /* Default overlay color */
    z-index: 2;
    pointer-events: none;
}

/* Content Container */
.featured-banner-content {
    position: relative;
    z-index: 3;
    width: 100%;
    max-width: 1200px;
    padding: 0 20px;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    justify-content: inherit;
    align-items: inherit;
    text-align: center; /* Default text center */
}

/* Title Styling */
.featured-banner h1.featured-banner-title {
    color: #ffffff;
    font-family: "Jost", sans-serif;
    font-size: 36px; /* Default desktop size */
    font-weight: 500;
    text-transform: uppercase;
    margin: 0 0 10px 0; /* Default 15px spacing between title & breadcrumb */
    padding: 0;
    line-height: 45px !important;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    backface-visibility: hidden;
    transform: translate3d(0, 0, 0);
}

/* Breadcrumb Container */
.featured-banner .featured-banner-breadcrumb,
.featured-banner .featured-banner-breadcrumb a,
.featured-banner .featured-banner-breadcrumb span,
.featured-banner .featured-banner-breadcrumb p,
.featured-banner .featured-banner-breadcrumb li {
    color: #ffffff;
    font-family: inherit;
    font-size: 16px; /* Default breadcrumb size */
    line-height: 1.5 !important;
    text-decoration: none;
}

/* Breadcrumb Links Hover effect */
.featured-banner .featured-banner-breadcrumb a {
    transition: opacity 0.25s ease-in-out;
}

.featured-banner .featured-banner-breadcrumb a:hover {
    opacity: 0.8;
}

/* Default Separator Margin */
.featured-banner-breadcrumb-separator {
    margin: 0 8px;
    opacity: 0.7;
}

/* ==========================================================================
   Entrance Animations (Pure CSS Keyframes)
   ========================================================================== */

@keyframes fbFadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes fbFadeUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fbSlideUp {
    from {
        transform: translateY(50px);
    }
    to {
        transform: translateY(0);
    }
}

@keyframes fbZoomIn {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* Animation Classes */
.featured-banner-animation-fade-in {
    opacity: 0;
    animation: fbFadeIn 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.featured-banner-animation-fade-up {
    opacity: 0;
    animation: fbFadeUp 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.featured-banner-animation-slide-up {
    animation: fbSlideUp 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

.featured-banner-animation-zoom-in {
    opacity: 0;
    animation: fbZoomIn 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards;
}

/* ==========================================================================
   Responsive Breakpoints (Fallbacks for default style without Elementor DB values)
   ========================================================================== */

/* Tablet (Max 1024px) */
@media (max-width: 1024px) {
    .featured-banner h1.featured-banner-title {
        font-size: 42px; /* Tablet default */
    }
}

/* Mobile (Max 767px) */
@media (max-width: 767px) {
    .featured-banner h1.featured-banner-title {
        font-size: 32px; /* Mobile default */
    }
    .featured-banner {
        height: 476px; /* Sensible mobile fallback height */
    }
}

/* Background Image Animation (Ken Burns) */
.featured-banner-bg.featured-banner-bg-animated {
    animation: fbKenburns 14s ease-in-out infinite alternate;
    transform-origin: center;
}

@keyframes fbKenburns {
    0% {
        transform: scale(1);
    }
    100% {
        transform: scale(1.2);
    }
}
