/* ========================================
   RFN FULLWIDTH IMAGE BLOCK STYLES
   ======================================== */

/* Winter Theme - Snowflakes Animation (Desktop) */
@keyframes snowfall {
    0% {
        transform: translateY(0) translateX(0) rotate(0deg);
        opacity: 1;
    }
    50% {
        transform: translateY(50vh) translateX(50px) rotate(180deg);
        opacity: 0.8;
    }
    100% {
        transform: translateY(100vh) translateX(-50px) rotate(360deg);
        opacity: 0;
    }
}

/* Winter Theme - Snowflakes Animation (Mobile) */
@keyframes snowfall-mobile {
    0% {
        transform: translateY(0) translateX(0) rotate(0deg);
        opacity: 1;
    }
    50% {
        transform: translateY(50vh) translateX(30px) rotate(180deg);
        opacity: 0.8;
    }
    100% {
        transform: translateY(100vh) translateX(-30px) rotate(360deg);
        opacity: 0;
    }
}

.rfn-fullwidth-image-block.winter-theme,
.rfn-fullwidth-image-block[data-winter-theme="true"] {
    position: relative;
    overflow: hidden;
}

.rfn-fullwidth-image-block .snowflakes-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 100;
    overflow: hidden;
}

/* Desktop snowflakes - only show on desktop */
.rfn-fullwidth-image-block .snowflake {
    position: absolute;
    background: white;
    border-radius: 50%;
    box-shadow: 0 0 2px rgba(255, 255, 255, 0.8);
    animation: snowfall linear infinite;
}

/* Desktop snowflake variations */
.rfn-fullwidth-image-block .snowflake:nth-child(3n) {
    animation-duration: 12s;
}

.rfn-fullwidth-image-block .snowflake:nth-child(3n+1) {
    animation-duration: 11s;
}

.rfn-fullwidth-image-block .snowflake:nth-child(3n+2) {
    animation-duration: 13s;
}

/* Mobile snowflakes - separate class and animation */
.rfn-fullwidth-image-block .snowflake-mobile {
    position: absolute;
    background: white;
    border-radius: 50%;
    box-shadow: 0 0 1px rgba(255, 255, 255, 0.8);
    animation: snowfall-mobile linear infinite;
    display: none; /* Hidden by default, shown only on mobile */
}

/* Mobile-specific styles - Winter theme disabled on mobile */
@media (max-width: 768px) {
    /* Hide all snowflakes on mobile - winter theme disabled */
    .rfn-fullwidth-image-block .snowflake,
    .rfn-fullwidth-image-block .snowflake-mobile,
    .rfn-fullwidth-image-block .snowflakes-container {
        display: none !important;
        visibility: hidden !important;
    }
}

/* Desktop - hide mobile snowflakes */
@media (min-width: 769px) {
    .rfn-fullwidth-image-block .snowflake-mobile {
        display: none !important;
    }
    
    .rfn-fullwidth-image-block .snowflake {
        display: block !important;
    }
}

/* Overlay opacity fix - only apply opacity to background, not text/button */
.rfn-fullwidth-image-block .overlay-css-variable,
.wp-block-rfn-fullwidth-image .overlay-css-variable,
.rfn-fullwidth-image-block [data-overlay-opacity],
.wp-block-rfn-fullwidth-image [data-overlay-opacity] {
    position: relative;
    background-color: transparent !important;
}

.rfn-fullwidth-image-block .overlay-css-variable::before,
.wp-block-rfn-fullwidth-image .overlay-css-variable::before,
.rfn-fullwidth-image-block [data-overlay-opacity]::before,
.wp-block-rfn-fullwidth-image [data-overlay-opacity]::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: var(--overlay-bg-color, #000000);
    opacity: var(--overlay-opacity, 1);
    border-radius: inherit;
    z-index: -1;
}

/* Hide CSS ::before when JavaScript background element exists */
.rfn-fullwidth-image-block .overlay-css-variable:has(.overlay-bg-element)::before,
.wp-block-rfn-fullwidth-image .overlay-css-variable:has(.overlay-bg-element)::before,
.rfn-fullwidth-image-block [data-overlay-opacity]:has(.overlay-bg-element)::before,
.wp-block-rfn-fullwidth-image [data-overlay-opacity]:has(.overlay-bg-element)::before,
.rfn-fullwidth-image-block .overlay-css-variable.has-js-bg-element::before,
.wp-block-rfn-fullwidth-image .overlay-css-variable.has-js-bg-element::before,
.rfn-fullwidth-image-block [data-overlay-opacity].has-js-bg-element::before,
.wp-block-rfn-fullwidth-image [data-overlay-opacity].has-js-bg-element::before {
    display: none !important;
    content: none !important;
}

.rfn-fullwidth-image-block .overlay-css-variable > *,
.wp-block-rfn-fullwidth-image .overlay-css-variable > *,
.rfn-fullwidth-image-block [data-overlay-opacity] > *,
.wp-block-rfn-fullwidth-image [data-overlay-opacity] > * {
    position: relative;
    z-index: 1;
}

.rfn-fullwidth-image-block-block {
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(-50vw + 50%);
    margin-right: calc(-50vw + 50%);
    position: relative;
    overflow: hidden;
}

/* First block positioning - stick to navbar */
.rfn-fullwidth-image-block:first-child {
    margin-top: 0;
}

/* Fallback for browsers that don't support :has() - only affects block margin */
body .rfn-fullwidth-image-block:first-child {
    margin-top: 0;
}

/* Additional fallback - target the first block in site-main */
.site-main .rfn-fullwidth-image-block:first-child,
main .rfn-fullwidth-image-block:first-child,
.content .rfn-fullwidth-image-block:first-child,
.entry-content .rfn-fullwidth-image-block:first-child {
    margin-top: 0;
}

/* JavaScript-based first block detection - PRIMARY METHOD (most reliable) */
body.rfn-first-block-fullwidth {
    padding-top: 0 !important;
}

/* CSS-only fallback using :has() - only if JavaScript class is not present */
body:has(.rfn-fullwidth-image-block.is-first-block):not(.rfn-first-block-fullwidth) {
    padding-top: 0 !important;
}

.site-main.rfn-first-block-fullwidth,
main.rfn-first-block-fullwidth,
.content.rfn-first-block-fullwidth,
.entry-content.rfn-first-block-fullwidth {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

/* First block class applied by JavaScript */
.rfn-fullwidth-image-block.is-first-block {
    margin-top: 0 !important;
}

/* Ensure first block sticks to top */
.rfn-fullwidth-image-block.is-first-block {
    position: relative;
    top: 0;
}

.rfn-fullwidth-image-block .image-container {
    width: 100%;
    height: 400px;
    position: relative;
    overflow: hidden;
}

.rfn-fullwidth-image-block .image-container img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

/* Image Visibility Controls */
.rfn-fullwidth-image-block.hide-on-mobile {
    display: none;
}

.rfn-fullwidth-image-block.hide-on-desktop {
    display: block;
}

.rfn-fullwidth-image-block.hide-on-tablet {
    display: block;
}

/* Desktop visibility */
@media (min-width: 1025px) {
    .rfn-fullwidth-image-block.hide-on-desktop {
        display: none;
    }
}

/* Tablet visibility */
@media (min-width: 769px) and (max-width: 1024px) {
    .rfn-fullwidth-image-block.hide-on-tablet {
        display: none;
    }
}

/* Mobile visibility */
@media (max-width: 768px) {
    .rfn-fullwidth-image-block.hide-on-mobile {
        display: block;
    }
}

/* Object Fit - Cover only */
.rfn-fullwidth-image-block .image-container img {
    object-fit: cover;
}

/* Additional mobile-specific styles */
@media (max-width: 768px) {
    /* Ensure the block breaks out of any container */
    .wp-block-rfn-fullwidth-image {
        width: 100vw !important;
        max-width: 100vw !important;
        margin-left: calc(-50vw + 50%) !important;
        margin-right: calc(-50vw + 50%) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    
    /* Target the block wrapper */
    .wp-block-rfn-fullwidth-image .rfn-fullwidth-image-block {
        width: 100vw !important;
        max-width: 100vw !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    
    
    /* Additional mobile container breakout fixes */
    .wp-block-rfn-fullwidth-image {
        margin-left: calc(-50vw + 50%) !important;
        margin-right: calc(-50vw + 50%) !important;
        width: 100vw !important;
        max-width: 100vw !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    
    /* Ensure parent containers don't add padding */
    .wp-block-rfn-fullwidth-image * {
        box-sizing: border-box !important;
    }
    
    /* Mobile-specific first block fixes */
    .rfn-fullwidth-image-block.is-first-block {
        margin-top: 0 !important;
        padding-top: 0 !important;
    }
    
    /* Remove mobile body padding when first block is fullwidth-image */
    /* NOTE: We do NOT remove body padding-left/right to avoid affecting navbar */
    
    /* Mobile container fixes - only remove padding from containers that directly wrap the fullwidth-image block */
    /* Only target containers that are direct parents of the fullwidth-image block */
    .site-main > .container:has(> .rfn-fullwidth-image-block.is-first-block),
    main > .container:has(> .rfn-fullwidth-image-block.is-first-block),
    .content > .container:has(> .rfn-fullwidth-image-block.is-first-block),
    .entry-content > .container:has(> .rfn-fullwidth-image-block.is-first-block),
    .site-main > .container:has(> .wp-block-rfn-fullwidth-image:first-child),
    main > .container:has(> .wp-block-rfn-fullwidth-image:first-child),
    .content > .container:has(> .wp-block-rfn-fullwidth-image:first-child),
    .entry-content > .container:has(> .wp-block-rfn-fullwidth-image:first-child) {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    
    /* Only remove top margin/padding when fullwidth-image is first block */
    /* Keep left/right padding to preserve spacing for other blocks */
    .site-main:has(.rfn-fullwidth-image-block.is-first-block),
    .site-main.rfn-first-block-fullwidth,
    main:has(.rfn-fullwidth-image-block.is-first-block),
    main.rfn-first-block-fullwidth,
    .content:has(.rfn-fullwidth-image-block.is-first-block),
    .content.rfn-first-block-fullwidth,
    .entry-content:has(.rfn-fullwidth-image-block.is-first-block),
    .entry-content.rfn-first-block-fullwidth {
        margin-top: 0 !important;
        padding-top: 0 !important;
        /* Do NOT remove left/right padding - this affects other blocks */
    }
    
    /* Fallback for browsers that don't support :has() */
    .site-main .rfn-fullwidth-image-block.is-first-block,
    main .rfn-fullwidth-image-block.is-first-block,
    .content .rfn-fullwidth-image-block.is-first-block,
    .entry-content .rfn-fullwidth-image-block.is-first-block {
        margin-top: 0 !important;
    }
}

/* Responsive Design */
@media (max-width: 768px) {
    /* Only remove top margin/padding when fullwidth-image is first block */
    /* Do NOT remove left/right padding to preserve spacing for other blocks */
    .site-main:has(.rfn-fullwidth-image-block.is-first-block),
    main:has(.rfn-fullwidth-image-block.is-first-block),
    .content:has(.rfn-fullwidth-image-block.is-first-block),
    .entry-content:has(.rfn-fullwidth-image-block.is-first-block),
    .site-main.rfn-first-block-fullwidth,
    main.rfn-first-block-fullwidth,
    .content.rfn-first-block-fullwidth,
    .entry-content.rfn-first-block-fullwidth {
        margin-top: 0 !important;
        padding-top: 0 !important;
        /* Keep left/right padding for other blocks */
    }
    
    /* Fallback for browsers that don't support :has() */
    .site-main .rfn-fullwidth-image-block.is-first-block,
    main .rfn-fullwidth-image-block.is-first-block,
    .content .rfn-fullwidth-image-block.is-first-block,
    .entry-content .rfn-fullwidth-image-block.is-first-block {
        margin-top: 0 !important;
    }
    
    .rfn-fullwidth-image-block {
        width: 100vw !important;
        max-width: 100vw !important;
        margin-left: calc(-50vw + 50%) !important;
        margin-right: calc(-50vw + 50%) !important;
        position: relative !important;
        overflow: hidden !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    
    .rfn-fullwidth-image-block .image-container {
        height: 400px;
        width: 100%;
        position: relative;
        overflow: hidden;
    }
    
    /* Ensure the block has enough height for overlay */
    .rfn-fullwidth-image-block {
        min-height: 400px;
        position: relative;
        overflow: hidden;
    }
    
    /* Mobile overlay positioning - force center within the block container */
    /* Exclude background element from mobile positioning */
    .rfn-fullwidth-image-block .overlay-custom-position:not(.overlay-bg-element),
    .rfn-fullwidth-image-block [style*="position: absolute"]:not(.overlay-bg-element) {
        position: absolute !important;
        top: 58% !important;
        left: 50% !important;
        right: auto !important;
        bottom: auto !important;
        transform: translate(-50%, -50%) !important;
        width: calc(100% - 2rem) !important;
        max-width: 400px !important;
        text-align: center !important;
        align-items: center !important;
        justify-content: center !important;
        padding: 1.5rem !important;
        z-index: 10 !important;
        display: flex !important;
        flex-direction: column !important;
        margin: 0 !important;
        /* Force override any conflicting styles */
        box-sizing: border-box !important;
    }
    
    /* More specific targeting for overlays with inline styles that override positioning */
    /* Exclude background element from mobile positioning */
    .rfn-fullwidth-image-block div[style*="top:"][style*="left:"]:not(.overlay-bg-element),
    .rfn-fullwidth-image-block div[style*="--overlay-top:"][style*="--overlay-left:"]:not(.overlay-bg-element) {
        top: 58% !important;
        left: 50% !important;
        right: auto !important;
        bottom: auto !important;
        transform: translate(-50%, -50%) !important;
        width: calc(100% - 2rem) !important;
        max-width: 400px !important;
        text-align: center !important;
        align-items: center !important;
        justify-content: center !important;
        padding: 1.5rem !important;
        z-index: 10 !important;
        display: flex !important;
        flex-direction: column !important;
        margin: 0 !important;
        box-sizing: border-box !important;
    }
    
    /* Force center any overlay with inline styles */
    /* Exclude background element from mobile positioning */
    .rfn-fullwidth-image-block div[style*="position: absolute"]:not(.overlay-bg-element),
    .rfn-fullwidth-image-block div[style*="position:absolute"]:not(.overlay-bg-element) {
        position: absolute !important;
        top: 58% !important;
        left: 50% !important;
        right: auto !important;
        bottom: auto !important;
        transform: translate(-50%, -50%) !important;
        width: calc(100% - 2rem) !important;
        max-width: 400px !important;
        text-align: center !important;
        align-items: center !important;
        justify-content: center !important;
        padding: 1.5rem !important;
        z-index: 10 !important;
        display: flex !important;
        flex-direction: column !important;
        margin: 0 !important;
        box-sizing: border-box !important;
    }
    
    /* Target overlay by class or any div inside the block */
    /* Exclude background element from mobile positioning */
    .rfn-fullwidth-image-block > div:not(img):not(.overlay-bg-element) {
        position: absolute !important;
        top: 58% !important;
        left: 50% !important;
        right: auto !important;
        bottom: auto !important;
        transform: translate(-50%, -50%) !important;
        width: calc(100% - 2rem) !important;
        max-width: 400px !important;
        text-align: center !important;
        align-items: center !important;
        justify-content: center !important;
        padding: 1.5rem !important;
        z-index: 10 !important;
        display: flex !important;
        flex-direction: column !important;
        margin: 0 !important;
        box-sizing: border-box !important;
    }
    
    /* Ensure the block container is the positioning context */
    .rfn-fullwidth-image-block {
        position: relative !important;
    }
    
    /* Ensure background element stays in place on mobile (768px) */
    .rfn-fullwidth-image-block .overlay-bg-element {
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        width: 100% !important;
        height: 100% !important;
        transform: none !important;
        margin: 0 !important;
        padding: 0 !important;
    }
    
    /* Mobile image adjustments - fill the entire block container */
    .rfn-fullwidth-image-block img {
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        width: 100% !important;
        height: 100% !important;
        object-fit: cover !important;
        object-position: center !important;
        display: block !important;
        border: none !important;
        margin: 0 !important;
        padding: 0 !important;
        transform: scale(1.2) !important;
        min-height: 100% !important;
        min-width: 100% !important;
        z-index: 1 !important;
    }
}

@media (max-width: 576px) {
    .rfn-fullwidth-image-block {
        width: 100vw !important;
        max-width: 100vw !important;
        margin-left: calc(-50vw + 50%) !important;
        margin-right: calc(-50vw + 50%) !important;
        position: relative !important;
        overflow: hidden !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    
    .rfn-fullwidth-image-block .image-container {
        height: 350px;
        width: 100%;
        position: relative;
        overflow: hidden;
    }
    
    /* Ensure the block has enough height for overlay on small mobile */
    .rfn-fullwidth-image-block {
        min-height: 350px;
        position: relative;
        overflow: hidden;
    }
    
    /* Small mobile overlay adjustments - force center */
    /* Exclude background element from mobile positioning */
    .rfn-fullwidth-image-block .overlay-custom-position:not(.overlay-bg-element),
    .rfn-fullwidth-image-block [style*="position: absolute"]:not(.overlay-bg-element),
    .rfn-fullwidth-image-block div[style*="position: absolute"]:not(.overlay-bg-element),
    .rfn-fullwidth-image-block div[style*="position:absolute"]:not(.overlay-bg-element),
    .rfn-fullwidth-image-block > div:not(img):not(.overlay-bg-element),
    .rfn-fullwidth-image-block div[style*="top:"][style*="left:"]:not(.overlay-bg-element),
    .rfn-fullwidth-image-block div[style*="--overlay-top:"][style*="--overlay-left:"]:not(.overlay-bg-element) {
        width: calc(100% - 1rem) !important;
        max-width: 350px !important;
        padding: 1rem !important;
        display: flex !important;
        flex-direction: column !important;
        position: absolute !important;
        top: 58% !important;
        left: 50% !important;
        right: auto !important;
        bottom: auto !important;
        transform: translate(-50%, -50%) !important;
        text-align: center !important;
        align-items: center !important;
        justify-content: center !important;
        z-index: 10 !important;
        margin: 0 !important;
        box-sizing: border-box !important;
    }
    
    /* Mobile overlay text sizing */
    .rfn-fullwidth-image-block .overlay-custom-position div,
    .rfn-fullwidth-image-block [style*="position: absolute"] div {
        font-size: 1.2rem !important;
        line-height: 1.3 !important;
    }
    
    .rfn-fullwidth-image-block .overlay-custom-position div:last-child,
    .rfn-fullwidth-image-block [style*="position: absolute"] div:last-child {
        font-size: 0.9rem !important;
    }
    
    /* Ensure background element stays in place on mobile */
    .rfn-fullwidth-image-block .overlay-bg-element {
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        width: 100% !important;
        height: 100% !important;
        transform: none !important;
        margin: 0 !important;
        padding: 0 !important;
    }
}

/* Safari iPhone fix - override 100vw approach */
/* Safari calculates 100vw as viewport + scrollbar width, causing horizontal overflow and content shift */
/* Solution: Use position-based breakout instead of 100vw + negative margins */
@supports (-webkit-touch-callout: none) {
    @media (max-width: 768px) {
        /* Clip overflow at root level */
        html {
            overflow-x: hidden !important;
        }
        
        body {
            overflow-x: hidden !important;
        }
        
        /* Ensure containers that wrap blocks also clip overflow */
        .site-main,
        .wp-block-group,
        .entry-content,
        .post-content,
        .page-content {
            overflow-x: hidden !important;
        }
        
        /* Override the 100vw approach for Safari - use container-relative breakout */
        .rfn-fullwidth-image-block,
        .wp-block-rfn-fullwidth-image {
            /* Remove the problematic calc margins that use 100vw */
            margin-left: 0 !important;
            margin-right: 0 !important;
            
            /* Break out of container using negative margins */
            /* Break out by container padding amount (typically 1-2rem) */
            margin-left: -2rem !important;
            margin-right: -2rem !important;
            padding-left: 0 !important;
            padding-right: 0 !important;
            
            /* Width accounts for the breakout, but we'll let overflow clipping handle the rest */
            width: calc(100% + 4rem) !important;
            
            /* Don't set max-width - let it break out, but clip overflow */
            /* The overflow-x: hidden on parent containers will clip any excess */
            
            /* Clip any overflow at block level */
            overflow-x: hidden !important;
            box-sizing: border-box !important;
        }
        
        /* Ensure child elements don't exceed block boundaries */
        .rfn-fullwidth-image-block .image-container,
        .rfn-fullwidth-image-block img,
        .wp-block-rfn-fullwidth-image .image-container,
        .wp-block-rfn-fullwidth-image img {
            max-width: 100% !important;
            box-sizing: border-box !important;
        }
        
        /* Ensure overlay elements don't cause overflow */
        .rfn-fullwidth-image-block .overlay-custom-position,
        .rfn-fullwidth-image-block [style*="position: absolute"]:not(.overlay-bg-element),
        .wp-block-rfn-fullwidth-image .overlay-custom-position,
        .wp-block-rfn-fullwidth-image [style*="position: absolute"]:not(.overlay-bg-element) {
            max-width: calc(100% - 2rem) !important;
            box-sizing: border-box !important;
        }
    }
}