
:root {
    --bulma-body-background-color: unset;
    --bulma-navbar-height: var(--navbar-height, 80px);
    --wp--style--global--content-size: 100%;
    --bulma-strong-color: none;
    --bulma-family-primary: var(--wp--preset--font-family--avenir-lt-pro, sans-serif);
}

a {
    color: unset;
}

.navbar-link,
a.navbar-item {
    background-color: unset;
}

 .has-shadow {
     box-shadow: 0 4px 12px rgba(0,0,0,0.15);
 }

/* Continue reading link (non-button display) */
.continue-reading-link {
    text-decoration: underline;
}
.continue-reading-link:hover {
    text-decoration: none;
}

/* Actions div inherits text alignment */
.card-content .actions {
    text-align: inherit;
}

.gform-theme--foundation .gfield  .ginput_container_email  input.medium {
     inline-size: 100%;
 }

/* Make Bulma .title inherit from WordPress typography settings */
.title {
    color: inherit;
}

/* Map heading levels to WordPress preset font sizes (overrides Bulma .title default) */
h1.title { font-size: var(--wp--preset--font-size--xx-large); }
h2.title { font-size: var(--wp--preset--font-size--x-large); }
h3.title { font-size: var(--wp--preset--font-size--large); }
h4.title { font-size: var(--wp--preset--font-size--medium); }
h5.title { font-size: var(--wp--preset--font-size--small); }
h6.title { font-size: var(--wp--preset--font-size--x-small); }

/* WordPress font-size classes take precedence over defaults above */
.title.has-x-small-font-size { font-size: var(--wp--preset--font-size--x-small); }
.title.has-small-font-size { font-size: var(--wp--preset--font-size--small); }
.title.has-medium-font-size { font-size: var(--wp--preset--font-size--medium); }
.title.has-large-font-size { font-size: var(--wp--preset--font-size--large); }
.title.has-x-large-font-size { font-size: var(--wp--preset--font-size--x-large); }
.title.has-xx-large-font-size { font-size: var(--wp--preset--font-size--xx-large); }

/* Hero and Section text color inheritance for WordPress color classes */
.hero.has-text-color .title,
.hero.has-text-color .title a,
.hero.has-text-color .subtitle,
.hero.has-text-color p,
.section.has-text-color .title,
.section.has-text-color .title a,
.section.has-text-color .subtitle,
.section.has-text-color p,
/* Card-based blocks (bulma-posts, bulma-loop, bulma-cards) */
.card.has-text-color .title,
.card.has-text-color .title a,
.card.has-text-color .subtitle,
.card.has-text-color p {
    color: inherit;
}

/* Card content links - clickable text that should inherit text color, not link color */
.card-content-link {
    color: inherit;
    text-decoration: none;
}

.card-content-link:hover {
    text-decoration: none;
}
 .box {
     box-shadow: none;
     color: inherit;
     --bulma-box-background-color: unset;
 }
/* NOTE: Gravity Forms styles moved to UNIFIED FORM SYSTEM section at end of file */

 /* ===================================
  * BULMA + WORDPRESS TYPOGRAPHY INTEGRATION
  * ===================================*/

/* Map element styles to WordPress typography system */
h1 {
    font-size: var(--wp--preset--font-size--xx-large);
}

h2 {
    font-size: var(--wp--preset--font-size--x-large);
}

h3 {
    font-size: var(--wp--preset--font-size--large);
}

h4 {
    font-size: var(--wp--preset--font-size--medium);
}

h5 {
    font-size: var(--wp--preset--font-size--small);
}

h6 {
    font-size: var(--wp--preset--font-size--x-small);
}

/* ===================================
 * TABLE DEFAULTS - TRANSPARENT BACKGROUND
 * ===================================*/

/* Override Bulma table CSS variables for transparency */
.table {
    --bulma-table-background-color: transparent;
    --bulma-table-color: inherit;
    --bulma-table-head-cell-color: inherit;
    --bulma-table-foot-cell-color: inherit;
    --bulma-table-cell-heading-color: inherit;
    --bulma-table-cell-background-color: transparent;
    --bulma-table-striped-row-even-background-color: rgba(0,0,0,0.03);
}

/* ===================================
 * NAVBAR POSITIONING & FIXED NAVBAR LOGIC
 * ===================================*/


/* Custom container width for narrow sections */
.container.is-max-desktop {
    max-width: 700px;
}

/* ===================================
 * LIGHT/DARK LOGO SWITCHING
 * ===================================*/

/* Hide dark logos by default */
.logo-dark {
    display: none;
}

/* Logo dark mode visibility is now handled per-block in render.php */
/* @media (prefers-color-scheme: dark) {
    .logo-light {
        display: none;
    }
    .logo-dark {
        display: block;
    }
} */

/* Fixed navbar - add top margin to first block to account for navbar height */
/*
.has-navbar-fixed-top .wp-site-blocks > *:first-child {
    margin-block-start: var(--bulma-navbar-height) !important;
}
*/

/* Navbar fixes */
@media screen and (min-width: 1024px) {
    .navbar-end-no-stretch {
        margin-inline-start: 0;
    }
    .navbar-dropdown {
        top: var(--bulma-navbar-height);
    }
}

.navbar {
    height: var(--navbar-height);
    min-height: var(--navbar-height);
}

.navbar.has-shadow {
    box-shadow: 0.305rem 0.405rem 1rem rgba(0, 0, 0, 0.06) !important;
}

/* Search Panel - Chubb Style */
.navbar-wrapper {
    position: relative;
    z-index: 30;
}

.navbar-wrapper.is-fixed-top {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
}

/* Transparent navbar - positioned over content */
.navbar-wrapper.is-transparent {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
}

.navbar-wrapper.is-transparent .navbar {
    background-color: transparent;
}

/* Admin bar offset for transparent navbar */
.admin-bar .navbar-wrapper.is-transparent {
    top: var(--wp-admin--admin-bar--height, 32px);
}

/* No body padding when navbar is transparent (hero goes under) */
body:has(.navbar-wrapper.is-transparent) {
    padding-top: 0 !important;
}

.navbar-search-panel {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--bulma-navbar-background-color, white);
    padding: 2rem 0;
    border-top: 1px solid rgba(0, 0, 0, 0.1);
    z-index: 31;
    opacity: 0;
    transform: translateY(-10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

/* Handle admin bar offset for fixed navbar wrapper */
.admin-bar .navbar-wrapper.is-fixed-top {
    top: 32px;
}

@media screen and (max-width: 782px) {
    .admin-bar .navbar-wrapper.is-fixed-top {
        top: 46px;
    }
}

.navbar-search-panel.is-active {
    display: block;
    opacity: 1;
    transform: translateY(0);
}

.navbar-search-panel-content {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.navbar-search-panel-icon {
    color: inherit;
    opacity: 0.6;
}

.navbar-search-panel-input {
    flex: 1;
    border: none;
    background: transparent;
    font-size: 1.5rem;
    font-style: italic;
    outline: none;
    padding: 0.5rem 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.2);
    color: inherit;
}

.navbar-search-panel-input::placeholder {
    font-style: italic;
    opacity: 0.6;
    color: inherit;
}

.navbar-search-panel-submit {
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0.5rem;
    color: inherit;
}

.navbar-search-panel-submit:hover {
    opacity: 0.7;
}

.navbar-search-top-searches {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(0, 0, 0, 0.1);
}

.navbar-search-suggestions {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    margin-top: 0.5rem;
}

.navbar-search-suggestions a {
    color: inherit;
    text-decoration: underline;
}

.navbar-search-suggestions a:hover {
    opacity: 0.7;
}

/* Search panel toggle icon styling */
.navbar-search-panel-toggle {
    cursor: pointer;
}

/* Secondary navbar sizing and positioning */
.navbar-secondary {
    height: var(--navbar-secondary-height);
    min-height: var(--navbar-secondary-height);
}

.navbar-secondary .navbar-item {
    height: var(--navbar-secondary-height);
}

/* Align first item in secondary navbar-start with logo in primary navbar-brand */
.navbar-secondary .navbar-start > .navbar-item:first-child {
    padding-left: 0;
}

/* Secondary navbar positioning when fixed */
.navbar-secondary.is-fixed-top {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 30;
}

/* When primary navbar is fixed and secondary is above, position primary below secondary */
.navbar-secondary.is-fixed-top + nav.navbar.is-fixed-top {
    top: var(--navbar-secondary-height);
}

/* When primary navbar is fixed and secondary is below, position secondary below primary */
nav.navbar.is-fixed-top + .navbar-secondary.is-fixed-top {
    top: var(--navbar-height);
}

/* When admin bar is present and secondary is below primary */
.admin-bar nav.navbar.is-fixed-top + .navbar-secondary.is-fixed-top {
    top: calc(var(--navbar-height) + 32px);
}

@media screen and (max-width: 782px) {
    .admin-bar nav.navbar.is-fixed-top + .navbar-secondary.is-fixed-top {
        top: calc(var(--navbar-height) + 46px);
    }
}

/* Admin bar adjustments for secondary navbar */
.admin-bar .navbar-secondary.is-fixed-top {
    top: 32px;
}

@media screen and (max-width: 782px) {
    .admin-bar .navbar-secondary.is-fixed-top {
        top: 46px;
    }
}

/* When admin bar is present and secondary is above primary */
.admin-bar .navbar-secondary.is-fixed-top + nav.navbar.is-fixed-top {
    top: calc(var(--navbar-secondary-height) + 32px);
}

@media screen and (max-width: 782px) {
    .admin-bar .navbar-secondary.is-fixed-top + nav.navbar.is-fixed-top {
        top: calc(var(--navbar-secondary-height) + 46px);
    }
}

/* Position the navbar correctly when admin bar is present */
.admin-bar .navbar.is-fixed-top {
    top: 32px;
}

@media screen and (max-width: 782px) {
    .admin-bar .navbar.is-fixed-top {
        top: 46px;
    }
}

/* ===================================
 * BODY PADDING FOR FIXED NAVBARS
 * ===================================*/
/* Uses :has() to detect navbar elements directly - no PHP/body classes needed */

/* Fixed primary navbar only (no secondary) - supports both old (.navbar.is-fixed-top) and new (.navbar-wrapper.is-fixed-top) patterns */
body:has(.navbar-wrapper.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)),
body:has(.navbar.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)) {
    padding-top: var(--navbar-height, 80px) !important;
}

/* Fixed primary + secondary navbar */
body:has(.navbar-wrapper.is-fixed-top):has(.navbar-secondary.is-fixed-top),
body:has(.navbar.is-fixed-top):has(.navbar-secondary.is-fixed-top) {
    padding-top: calc(var(--navbar-height, 80px) + var(--navbar-secondary-height, 60px)) !important;
}

/* ===================================
 * HTML MARGIN FOR FIXED NAVBARS + ADMIN BAR
 * ===================================*/
/* WordPress admin bar is position:fixed, so we add margin to html to prevent overlap */

/* Admin bar + fixed primary navbar only */
html.admin-bar:has(.navbar-wrapper.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)),
html.admin-bar:has(.navbar.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)) {
    margin-top: calc(32px + var(--navbar-height, 80px)) !important;
}

/* Admin bar + fixed primary + secondary navbar */
html.admin-bar:has(.navbar-wrapper.is-fixed-top):has(.navbar-secondary.is-fixed-top),
html.admin-bar:has(.navbar.is-fixed-top):has(.navbar-secondary.is-fixed-top) {
    margin-top: calc(32px + var(--navbar-height, 80px) + var(--navbar-secondary-height, 60px)) !important;
}

/* Mobile admin bar is 46px instead of 32px */
@media screen and (max-width: 782px) {
    html.admin-bar:has(.navbar-wrapper.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)),
    html.admin-bar:has(.navbar.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)) {
        margin-top: calc(46px + var(--navbar-height, 80px)) !important;
    }

    html.admin-bar:has(.navbar-wrapper.is-fixed-top):has(.navbar-secondary.is-fixed-top),
    html.admin-bar:has(.navbar.is-fixed-top):has(.navbar-secondary.is-fixed-top) {
        margin-top: calc(46px + var(--navbar-height, 80px) + var(--navbar-secondary-height, 60px)) !important;
    }
}

/* ===================================
 * SCROLL PADDING FOR FIXED NAVBARS
 * ===================================*/
/* Ensures anchor links scroll to correct position below fixed navbars */

/* Default: only admin bar */
html {
    scroll-padding-top: var(--wp-admin--admin-bar--height, 0px);
}

/* Fixed primary navbar only */
html:has(.navbar-wrapper.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)),
html:has(.navbar.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)) {
    scroll-padding-top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--navbar-height, 80px));
}

/* Fixed primary + secondary navbar */
html:has(.navbar-wrapper.is-fixed-top):has(.navbar-secondary.is-fixed-top),
html:has(.navbar.is-fixed-top):has(.navbar-secondary.is-fixed-top) {
    scroll-padding-top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--navbar-height, 80px) + var(--navbar-secondary-height, 60px));
}

/* ===================================
 * STICKY COLUMN SUPPORT
 * ===================================*/
.column.is-sticky {
    position: sticky;
    align-self: flex-start; /* Required for sticky in flexbox */
    top: var(--wp-admin--admin-bar--height, 0px);
}

/* Fixed primary navbar only */
html:has(.navbar-wrapper.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)) .column.is-sticky,
html:has(.navbar.is-fixed-top):not(:has(.navbar-secondary.is-fixed-top)) .column.is-sticky {
    top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--navbar-height, 80px));
}

/* Fixed primary + secondary navbar */
html:has(.navbar-wrapper.is-fixed-top):has(.navbar-secondary.is-fixed-top) .column.is-sticky,
html:has(.navbar.is-fixed-top):has(.navbar-secondary.is-fixed-top) .column.is-sticky {
    top: calc(var(--wp-admin--admin-bar--height, 0px) + var(--navbar-height, 80px) + var(--navbar-secondary-height, 60px));
}

/* Navbar burger color - applies to both mobile and desktop */
.navbar-burger {
    color: var(--color-secondary, #485fc7);
}

/* Desktop expanded navigation burger */
@media screen and (min-width: 1024px) {
    .navbar-burger-desktop {
        display: flex;
    }
}

/* Disable fixed navbar on mobile */
@media screen and (max-width: 768px) {
    .mb-0-mobile {
        margin-bottom: 0 !important;
    }
    .navbar.is-fixed-top {
        position: relative !important;
        top: auto !important;
    }

    /* Control navbar height on mobile */
    .navbar,
    .navbar .container {
        min-height: 80px !important;
        max-height: 80px !important;
    }

    .navbar-brand {
        min-height: 80px;
        max-height: 80px;
    }

    .navbar-brand .navbar-item {
        padding: 1rem 0.75rem;
        height: 80px;
        display: flex;
        align-items: center;
    }

    .navbar-brand .navbar-item img {
        max-height: 60px;
    }

    .navbar-burger {
        height: 80px;
        width: 80px;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    /* Restore Bulma's default mobile navbar behavior */
    .navbar-menu {
        display: none;
        position: absolute !important;
        top: 100% !important;
        left: 0 !important;
        right: 0 !important;
        box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1);
        background-color: white;
        z-index: 20;
    }

    .navbar-menu.is-active {
        display: block !important;
    }
    a.navbar-item.is-active.navbar-burger {
        background: none !important;
    }

    /* Remove navbar padding on mobile since it's not fixed */
    body.has-navbar-fixed-top,
    html.has-navbar-fixed-top {
        padding-top: 0 !important;
    }

    /* Remove flex from navbar-start on mobile */
    .navbar-start {
        display: block !important;
    }
}

/* Apply scroll margin to all direct children of #root for anchor links */
body.has-navbar-fixed-top #root > * {
    scroll-margin-top: var(--bulma-navbar-height);
}

body.has-navbar-fixed-top.has-secondary-navbar #root > * {
    scroll-margin-top: calc(var(--bulma-navbar-height) + var(--navbar-secondary-height));
}

body.admin-bar.has-navbar-fixed-top #root > * {
    scroll-margin-top: calc(var(--bulma-navbar-height) + 32px);
}

body.admin-bar.has-navbar-fixed-top.has-secondary-navbar #root > * {
    scroll-margin-top: calc(var(--bulma-navbar-height) + var(--navbar-secondary-height) + 32px);
}

@media screen and (max-width: 782px) {
    body.admin-bar.has-navbar-fixed-top #root > * {
        scroll-margin-top: calc(var(--bulma-navbar-height) + 46px);
    }

    body.admin-bar.has-navbar-fixed-top.has-secondary-navbar #root > * {
        scroll-margin-top: calc(var(--bulma-navbar-height) + var(--navbar-secondary-height) + 46px);
    }
}

/* Anchor link scroll margin adjustments */
#root [id] {
    scroll-margin-top: 0; /* Default for when no fixed navbar */
}

body.has-navbar-fixed-top #root [id] {
    scroll-margin-top: var(--bulma-navbar-height);
}

body.has-navbar-fixed-top.has-secondary-navbar #root [id] {
    scroll-margin-top: calc(var(--bulma-navbar-height) + var(--navbar-secondary-height));
}

body.admin-bar.has-navbar-fixed-top #root [id] {
    scroll-margin-top: calc(var(--bulma-navbar-height) + 32px);
}

body.admin-bar.has-navbar-fixed-top.has-secondary-navbar #root [id] {
    scroll-margin-top: calc(var(--bulma-navbar-height) + var(--navbar-secondary-height) + 32px);
}

@media screen and (max-width: 782px) {
    body.admin-bar.has-navbar-fixed-top #root [id] {
        scroll-margin-top: calc(var(--bulma-navbar-height) + 46px);
    }

    body.admin-bar.has-navbar-fixed-top.has-secondary-navbar #root [id] {
        scroll-margin-top: calc(var(--bulma-navbar-height) + var(--navbar-secondary-height) + 46px);
    }
}

/* ===================================
 * HERO FULLHEIGHT ADJUSTMENTS FOR FIXED NAVBAR
 * ===================================*/

/* Base: hero fullheight accounts for admin bar (0px when not present, 32px/46px when present) */
.hero.is-fullheight {
    min-height: calc(100vh - var(--wp-admin--admin-bar--height, 0px));
}

/* Primary navbar only (no secondary) */
body:has(.navbar):not(:has(.navbar-secondary)) .hero.is-fullheight {
    min-height: calc(100vh - var(--wp-admin--admin-bar--height, 0px) - var(--navbar-height, 80px));
}

/* Primary navbar with secondary navbar */
body:has(.navbar):has(.navbar-secondary) .hero.is-fullheight {
    min-height: calc(100vh - var(--wp-admin--admin-bar--height, 0px) - var(--navbar-height, 80px) - var(--navbar-secondary-height, 60px));
}

/* Hero flat bottom border - uses CSS variable from Customizer */
.hero.is-flatbottomed {
    border-bottom: 15px solid var(--color-flatbottom, var(--color-primary));
    position: relative;
}

/* Hero vertical alignment - flex chain fix */
.hero .hero-content-wrapper {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.hero .hero-inner-wrapper {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.hero .hero-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.hero.is-small .hero-body > .container,
.hero.is-medium .hero-body > .container,
.hero.is-large .hero-body > .container,
.hero.is-halfheight .hero-body > .container,
.hero.is-fullheight .hero-body > .container,
.hero.is-fullheight-with-navbar .hero-body > .container {
    flex: 0 0 auto;
}

.hero.hero-align-top .hero-body {
    justify-content: flex-start;
}

.hero.hero-align-bottom .hero-body {
    justify-content: flex-end;
}

.social-icons a {
    padding-left: 0;
}

.social-icons .icon {
    margin-left: 0 !important;
}

/* Expanded Menu - Full Screen */
.expanded-menu-modal .modal-card {
    width: 100%;
    height: 100%;
    max-height: 100vh;
    margin: 0;
    background-color: #fff;
}

.expanded-menu-modal .modal-card-body {
    display: flex;
    align-items: center;
    min-height: 100vh;
    padding: 3rem;
}

.expanded-menu-modal .modal-close {
    position: fixed;
    top: 2rem;
    right: 2rem;
    z-index: 10;
}

/* Social icons button styling */
.social-icons .button.is-text {
    text-decoration: none;
    background-color: transparent;
    color: inherit;
}

.social-icons .button.is-text:hover,
.social-icons .button.is-text:focus {
    background-color: transparent;
    text-decoration: none;
}

/* Horizontal Card Flexbox Layout */
.card-box.is-flex-direction-row {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    flex-wrap: wrap;
}

.card-box.is-flex-direction-row .card-content,
.card-box.is-flex-direction-row .card-image {
    flex: 1;
}

.card-box.is-flex-direction-row .card-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: var(--bulma-card-content-padding);
}

.card-box.is-flex-direction-row .card-image {
    max-width: 50%;
    display: flex;
    padding-left: 1.5rem; /* Gap between content and image (image on right) */
}

.card-box.is-flex-direction-row .card-image figure {
    height: 100%;
    width: 100%;
    padding-bottom: 0 !important; /* Override Bulma aspect ratio */
    display: flex;
}

.card-box.is-flex-direction-row .card-image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    position: relative !important; /* Override Bulma absolute positioning */
}

/* Order control for image position */
.card-box.is-flex-direction-row .card-image.order-first {
    order: -1;
    padding-left: 0;
    padding-right: 1.5rem; /* Gap between image and content (image on left) */
}

.card-box.is-flex-direction-row .card-footer {
    width: 100%;
}

/* Responsive: Stack on mobile */
@media screen and (max-width: 768px) {
    .card-box.is-flex-direction-row {
        flex-direction: column;
    }

    .card-box.is-flex-direction-row .card-image {
        max-width: 100%;
        padding-left: 0;
        padding-right: 0;
    }

    .card-box.is-flex-direction-row .card-image figure {
        padding-bottom: 56.25% !important; /* Restore 16:9 aspect ratio on mobile */
    }

    .card-box.is-flex-direction-row .card-image img {
        position: absolute !important; /* Restore Bulma positioning on mobile */
    }
}

/* ===================================
 * BOX SHADOW OVERRIDES
 * ===================================*/

/* Remove default Bulma box shadow */
.box {
    box-shadow: none;
}

/* Only add shadow when explicitly enabled */
.box.has-shadow {
    box-shadow: var(--bulma-box-shadow);
}

/* ===================================
 * DECORATIVE IMAGE POSITIONING
 * ===================================*/

/* Ensure section is positioned relatively when it contains a decorative image */
.section:has(.decorative-image) {
    position: relative;
}

/* Base class for positioned decorative images */
.decorative-image {
    position: absolute;
    z-index: 0;
    pointer-events: none;
    max-width: unset !important;
    max-height: unset;
}

/* Custom positioned images (no preset classes applied) */
.decorative-image.is-custom-positioned {
    /* Position handled via inline styles */
}

/* Overflow behavior */
.section:has(.decorative-image.is-overflow-clip) {
    overflow: hidden;
}

.section:has(.decorative-image.is-overflow-float) {
    overflow: visible;
}

/* Corner positions */
.is-positioned-top-left {
    top: 0;
    left: 0;
}

.is-positioned-top-right {
    top: 0;
    right: 0;
}

.is-positioned-bottom-left {
    bottom: 0;
    left: 0;
}

.is-positioned-bottom-right {
    bottom: 0;
    right: 0;
}

/* Edge center positions */
.is-positioned-top-center {
    top: 0;
    left: 50%;
    transform: translateX(-50%);
}

.is-positioned-bottom-center {
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
}

.is-positioned-center-left {
    top: 50%;
    left: 0;
    transform: translateY(-50%);
}

.is-positioned-center-right {
    top: 50%;
    right: 0;
    transform: translateY(-50%);
}

.card.card-box {
    min-width: unset;
    max-width: unset;
    padding: 0;
    margin-top: 0;
    box-shadow: unset;
    --bulma-card-radius: unset;
    --bulma-card-background-color: unset;
    --bulma-card-radius: unset;
    --bulma-card-header-padding: unset;
    --bulma-card-content-padding: unset;
    --bulma-card-footer-padding: unset;
    --bulma-card-background-color: unset;
}

/* Image Overlap - layer image behind content */
/* Works for both bulma-cards (.card) and bulma-posts/bulma-loop (.card.card-box) */
.card.has-image-overlap {
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    min-height: 300px;
}

.card.has-image-overlap > .card-image {
    position: absolute !important;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 0;
}

.card.has-image-overlap > .card-image figure.image {
    height: 100%;
    width: 100%;
    padding-bottom: 0 !important;
}

.card.has-image-overlap > .card-image figure.image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
}

.card.has-image-overlap > .card-content {
    position: relative;
    z-index: 1;
    margin-top: auto;
}

/* Make entire card clickable on image-overlap cards */
.card.has-image-overlap .card-title a::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
}

/* Horizontal cards with overlap - override horizontal layout, use full overlap styling */
.card-box.is-flex-direction-row.has-image-overlap {
    flex-direction: column;
}

.card-box.is-flex-direction-row.has-image-overlap > .card-image {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 0;
    max-width: 100%;
    flex: unset;
}

.card-box.is-flex-direction-row.has-image-overlap > .card-image figure.image {
    height: 100%;
    width: 100%;
    padding-bottom: 0 !important;
}

.card-box.is-flex-direction-row.has-image-overlap > .card-image figure.image a {
    display: block;
    height: 100%;
    width: 100%;
}

.card-box.is-flex-direction-row.has-image-overlap > .card-image figure.image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    position: relative !important;
}

.card-box.is-flex-direction-row.has-image-overlap > .card-content {
    position: relative;
    z-index: 1;
    flex: unset;
    width: 100%;
}

/* ===================================
 * VERTICAL ALIGNMENT FOR CARD CONTENT
 * ===================================*/

/* Base setup for vertical cards with alignment */
.card-box:not(.is-flex-direction-row) {
    height: 100%;
    display: flex;
    flex-direction: column;
}

/* Ensure card-content can flex when alignment is applied */
.card-box:not(.is-flex-direction-row) .card-content {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
}

/* Min-height for auto-height cards to enable flex behavior */
.card-box:not(.is-flex-direction-row).has-content-alignment {
    min-height: 300px;
}

/* CSS Grid for equal-height cards per row */
.bulma-loop-grid.has-auto-height {
    display: grid;
    grid-template-columns: repeat(var(--columns-per-row, 2), 1fr);
    gap: var(--bulma-column-gap, 0.75rem);
    margin: 0;
}

.bulma-loop-grid.has-auto-height > .column {
    width: auto;
    padding: 0;
    flex: none;
}

.bulma-loop-grid.has-auto-height .card-box {
    height: 100%;
}

/* Responsive: stack on mobile */
@media screen and (max-width: 768px) {
    .bulma-loop-grid.has-auto-height {
        grid-template-columns: 1fr;
    }
}

/* Override min-height for CSS Grid auto-height mode */
.bulma-loop-grid.has-auto-height .card-box:not(.is-flex-direction-row).has-content-alignment {
    min-height: auto;
}

/* Flexbox for Bulma Cards - fixed-width cards with wrapping */
.bulma-cards-grid {
    display: flex;
    flex-wrap: wrap;
    gap: var(--bulma-column-gap, 0.75rem);
    margin: 0;
}

.bulma-cards-grid > * {
    /* Fixed width based on columns-per-row, accounting for gaps */
    flex: 0 0 calc(100% / var(--columns-per-row, 3) - var(--bulma-column-gap, 0.75rem) * (var(--columns-per-row, 3) - 1) / var(--columns-per-row, 3));
    padding: 0;
}

/* Center incomplete rows when is-centered is set */
.bulma-cards-grid.is-centered {
    justify-content: center;
}

/* Equal-height cards when auto height is enabled - use CSS Grid for row-based heights */
.bulma-cards-grid.has-auto-height {
    display: grid;
    grid-template-columns: repeat(var(--columns-per-row, 3), 1fr);
}

.bulma-cards-grid.has-auto-height.is-centered {
    /* Grid can't easily center incomplete rows, use justify for grid items */
    justify-items: start;
}

.bulma-cards-grid.has-auto-height > * {
    flex: none;
    width: auto;
}

.bulma-cards-grid.has-auto-height .card {
    height: 100%;
}

/* Responsive: stack on mobile for Bulma Cards */
@media screen and (max-width: 768px) {
    .bulma-cards-grid {
        flex-direction: column;
    }
    .bulma-cards-grid > * {
        flex-basis: 100%;
    }
    .bulma-cards-grid.has-auto-height {
        grid-template-columns: 1fr;
    }
}

/* CSS Grid for Bulma Posts */
.bulma-posts-grid {
    display: grid;
    grid-template-columns: repeat(var(--columns-per-row, 3), 1fr);
    gap: var(--bulma-column-gap, 0.75rem);
    margin: 0;
}

.bulma-posts-grid > .card-box {
    height: 100%;
}

/* Responsive: stack on mobile for Bulma Posts */
@media screen and (max-width: 768px) {
    .bulma-posts-grid {
        grid-template-columns: 1fr;
    }
}

/* Editor: Reset grid on wrapper - grid should be on .block-editor-block-list__layout instead */
.bulma-cards-grid:has(> .block-editor-inner-blocks) {
    display: block !important;
}

/* Editor: Constrain inner blocks wrapper to parent width */
.bulma-cards-grid > .block-editor-inner-blocks {
    width: 100%;
    max-width: 100%;
}

/* Editor: Apply flexbox to WordPress inner blocks layout */
.bulma-cards-grid > .block-editor-inner-blocks > .block-editor-block-list__layout {
    display: flex;
    flex-wrap: wrap;
    gap: var(--bulma-column-gap, 0.75rem);
}

/* Editor: Fixed-width columns in flexbox layout */
.bulma-cards-grid > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block.column {
    flex: 0 0 calc(100% / var(--columns-per-row, 3) - var(--bulma-column-gap, 0.75rem) * (var(--columns-per-row, 3) - 1) / var(--columns-per-row, 3)) !important;
    display: flex !important;
    flex-direction: column !important;
}

/* Editor: Center incomplete rows */
.bulma-cards-grid.is-centered > .block-editor-inner-blocks > .block-editor-block-list__layout {
    justify-content: center;
}

/* Editor: Auto-height uses grid for equal row heights */
.bulma-cards-grid.has-auto-height > .block-editor-inner-blocks > .block-editor-block-list__layout {
    display: grid !important;
    grid-template-columns: repeat(var(--columns-per-row, 3), minmax(0, 1fr)) !important;
    gap: var(--bulma-column-gap, 0.75rem) !important;
}

.bulma-cards-grid.has-auto-height > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block {
    flex: none !important;
    width: auto !important;
    min-width: 0 !important;
}

.bulma-cards-grid.has-auto-height > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block .card {
    min-width: 0 !important;
    width: 100% !important;
}

.bulma-cards-grid.has-auto-height > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block > .card {
    flex: 1;
}

/* Bulma Cards - card image styling */
.bulma-cards-grid .card .card-image {
    overflow: hidden;
}

.bulma-cards-grid .card .card-image img.object-fit-cover {
    object-fit: cover;
    width: 100%;
    height: 100%;
}

/* Editor: Border-radius inheritance for Bulma Cards child blocks */
.bulma-cards-grid > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block .card {
    border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius)) !important;
    border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius)) !important;
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius)) !important;
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius)) !important;
}

.bulma-cards-grid > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block .card .card-content {
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
}

/* Editor: Border color and width inheritance for Bulma Cards child blocks */
.bulma-cards-grid > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block .card {
    border-color: var(--card-border-color, var(--bulma-card-border-color, transparent));
    border-width: var(--card-border-width, 0);
    border-style: solid;
}

/* Align Top - Default, content at top */
.card-box:not(.is-flex-direction-row) .card-content.align-content-top {
    justify-content: flex-start;
}

/* Align Bottom - Content at bottom */
.card-box:not(.is-flex-direction-row) .card-content.align-content-bottom {
    justify-content: flex-end;
}

/* Align Center - Equal spacing between field sections */
.card-box:not(.is-flex-direction-row) .card-content.align-content-center {
    justify-content: space-between;
}

/* Align Grouped Center - All content grouped and centered as a unit */
.card-box:not(.is-flex-direction-row) .card-content.align-content-grouped-center {
    justify-content: center;
}

/* ===================================
 * BULMA POSTS/LOOP BLOCK SPACING
 * ===================================*/

/* Block spacing is applied by setting --bulma-column-gap directly on .columns in PHP */

/* ===================================
 * OBJECT FIT UTILITIES
 * ===================================*/

/* Object fit cover for images (used by Bulma Posts block) */
img.object-fit-cover {
    object-fit: cover;
}

/* ===================================
 * BULMA MENU LIST STYLING
 * ===================================*/

.menu-list a {
    display: flex !important;
    align-items: center;
    background: white;
    border-radius: 0;
    border-top: 1px solid #dbdbdb;
    padding-left: 0;
    padding-right: 0;
}

.menu-list li:last-child a {
    border-bottom: 1px solid #dbdbdb;
}

.menu-list a .icon {
    opacity: 0;
    transition: opacity 0.2s ease;
}

.menu-list a:hover .icon {
    opacity: 1;
}

/* ===================================
 * BULMA IMAGE BLOCK FIXES
 * ===================================*/

/* Figure must have overflow hidden for border-radius to work properly */
/* Only apply to bulma-image block, not card images which need Bulma's aspect ratio system */
figure.wp-block-ironlight-bulma-image.image {
    display: inline-block;
    overflow: hidden;
}

/* Anchor tags inside image figures need to be block-level for proper overflow clipping */
figure.wp-block-ironlight-bulma-image.image a {
    display: block;
}

/* Bulma Image Carousel - border/shadow applied to wrapper */
.bulma-image-carousel-wrapper {
    display: inline-block;
    overflow: hidden;
}

/* Card images need overflow hidden for border-radius but must stay block for aspect ratios */
.card-image figure.image {
    overflow: hidden;
}

/* Border-radius control via CSS variables - defaults to Bulma's card radius */
.card-box {
    --card-radius-tl: var(--bulma-card-radius);
    --card-radius-tr: var(--bulma-card-radius);
    --card-radius-bl: var(--bulma-card-radius);
    --card-radius-br: var(--bulma-card-radius);
    /* Apply border-radius to wrapper in ALL modes */
    border-top-left-radius: var(--card-radius-tl);
    border-top-right-radius: var(--card-radius-tr);
    border-bottom-left-radius: var(--card-radius-bl);
    border-bottom-right-radius: var(--card-radius-br);
}

/* Pattern A: Standard Vertical Card - radius on image top, content bottom */
/* TOGGLE: Uncomment to apply border-radius to img elements */
/*
.card-box:not(.has-image-overlap):not(.is-flex-direction-row) .card-image:first-child img {
    border-top-left-radius: var(--card-radius-tl);
    border-top-right-radius: var(--card-radius-tr);
}
*/

.card-box:not(.has-image-overlap):not(.is-flex-direction-row) .card-content {
    border-bottom-left-radius: var(--card-radius-bl);
    border-bottom-right-radius: var(--card-radius-br);
}

/* Pattern B: Image Overlap - radius already applied from .card-box above */

/* Pattern C: Horizontal Card - Image on Right (default) */
/* TOGGLE: Uncomment to apply border-radius to img elements */
/*
.card-box.is-flex-direction-row:not(.has-image-overlap) .card-image:not(.order-first) img {
    border-top-right-radius: var(--card-radius-tr);
    border-bottom-right-radius: var(--card-radius-br);
}
*/

.card-box.is-flex-direction-row:not(.has-image-overlap) .card-content {
    border-top-left-radius: var(--card-radius-tl);
    border-bottom-left-radius: var(--card-radius-bl);
}

/* Pattern C: Horizontal Card - Image on Left (order-first) */
/* TOGGLE: Uncomment to apply border-radius to img elements */
/*
.card-box.is-flex-direction-row:not(.has-image-overlap) .card-image.order-first img {
    border-top-left-radius: var(--card-radius-tl);
    border-bottom-left-radius: var(--card-radius-bl);
}
*/

.card-box.is-flex-direction-row:not(.has-image-overlap) .card-image.order-first ~ .card-content {
    border-top-right-radius: var(--card-radius-tr);
    border-bottom-right-radius: var(--card-radius-br);
}

/* Border-radius control for Bulma Cards (parent/child block pattern) */
/* Uses fallback syntax so parent's CSS variables cascade through */
.bulma-cards-grid .card {
    border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius));
    border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius));
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
}

/* Standard vertical card in Bulma Cards - radius on content bottom */
.bulma-cards-grid .card .card-content {
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
}

/* Border color and width for Bulma Cards (parent/child block pattern) */
.bulma-cards-grid .card {
    border-color: var(--card-border-color, var(--bulma-card-border-color, transparent));
    border-width: var(--card-border-width, 0);
    border-style: solid;
    box-shadow: none; /* Shadow controlled by parent Bulma Cards block via inline styles */
}

/* Horizontal Card Layout for Bulma Cards (image left/right) */
.bulma-cards-grid .card.has-image-left,
.bulma-cards-grid .card.has-image-right {
    display: flex;
    flex-direction: row;
    align-items: stretch;
}

.bulma-cards-grid .card.has-image-left .card-content,
.bulma-cards-grid .card.has-image-left .card-image,
.bulma-cards-grid .card.has-image-right .card-content,
.bulma-cards-grid .card.has-image-right .card-image {
    flex: 1;
}

.bulma-cards-grid .card.has-image-left .card-content,
.bulma-cards-grid .card.has-image-right .card-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.bulma-cards-grid .card.has-image-left .card-image,
.bulma-cards-grid .card.has-image-right .card-image {
    max-width: 50%;
    display: flex;
}

.bulma-cards-grid .card.has-image-left .card-image figure,
.bulma-cards-grid .card.has-image-right .card-image figure {
    height: 100%;
    width: 100%;
    padding-bottom: 0 !important; /* Override Bulma aspect ratio */
    display: flex;
}

.bulma-cards-grid .card.has-image-left .card-image img,
.bulma-cards-grid .card.has-image-right .card-image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
    position: relative !important; /* Override Bulma absolute positioning */
}

/* Image on left - reorder and adjust border radius */
.bulma-cards-grid .card.has-image-left .card-image {
    order: -1;
}

.bulma-cards-grid .card.has-image-left .card-image img {
    border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius));
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.bulma-cards-grid .card.has-image-left .card-content {
    border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius));
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

/* Image on right - adjust border radius */
.bulma-cards-grid .card.has-image-right .card-image img {
    border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius));
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.bulma-cards-grid .card.has-image-right .card-content {
    border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius));
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* Responsive: Stack on mobile */
@media screen and (max-width: 768px) {
    .bulma-cards-grid .card.has-image-left,
    .bulma-cards-grid .card.has-image-right {
        flex-direction: column;
    }

    .bulma-cards-grid .card.has-image-left .card-image,
    .bulma-cards-grid .card.has-image-right .card-image {
        max-width: 100%;
        order: unset; /* Reset order on mobile - image always on top */
    }

    .bulma-cards-grid .card.has-image-left .card-image figure,
    .bulma-cards-grid .card.has-image-right .card-image figure {
        padding-bottom: 56.25% !important; /* Restore aspect ratio on mobile */
    }

    .bulma-cards-grid .card.has-image-left .card-image img,
    .bulma-cards-grid .card.has-image-right .card-image img {
        position: absolute !important; /* Restore Bulma positioning on mobile */
        border-radius: 0;
        border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius));
        border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius));
    }

    .bulma-cards-grid .card.has-image-left .card-content,
    .bulma-cards-grid .card.has-image-right .card-content {
        border-radius: 0;
        border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
        border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
    }
}

/* Icon Mode for Bulma Cards - fixed size centered icons */
.bulma-cards-grid .card.has-icon-mode {
    align-items: center;
}

/* Icon mode with top position - icon centered above content */
.bulma-cards-grid .card.has-icon-mode:not(.has-image-left):not(.has-image-right) .card-image {
    display: flex;
    justify-content: center;
    padding: var(--bulma-card-content-padding, 1.5rem);
    padding-bottom: 0;
}

.bulma-cards-grid .card.has-icon-mode:not(.has-image-left):not(.has-image-right) .card-image figure {
    width: var(--card-icon-size, 60px);
    height: auto;
    padding-bottom: 0 !important; /* Remove aspect ratio */
}

.bulma-cards-grid .card.has-icon-mode:not(.has-image-left):not(.has-image-right) .card-image img {
    position: relative !important;
    width: 100%;
    height: auto;
    object-fit: contain;
}

/* Icon mode with horizontal layout (left/right) - icon column shrinks to fit */
.bulma-cards-grid .card.has-icon-mode.has-image-left,
.bulma-cards-grid .card.has-icon-mode.has-image-right {
    align-items: center;
}

.bulma-cards-grid .card.has-icon-mode.has-image-left .card-image,
.bulma-cards-grid .card.has-icon-mode.has-image-right .card-image {
    flex: 0 0 auto; /* Don't stretch, shrink to fit */
    max-width: none; /* Remove 50% max-width */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--bulma-card-content-padding, 1.5rem);
}

.bulma-cards-grid .card.has-icon-mode.has-image-left .card-image figure,
.bulma-cards-grid .card.has-icon-mode.has-image-right .card-image figure {
    width: var(--card-icon-size, 60px);
    height: auto;
    padding-bottom: 0 !important;
}

.bulma-cards-grid .card.has-icon-mode.has-image-left .card-image img,
.bulma-cards-grid .card.has-icon-mode.has-image-right .card-image img {
    width: 100%;
    height: auto;
    object-fit: contain;
}

/* Icon mode content takes remaining space */
.bulma-cards-grid .card.has-icon-mode.has-image-left .card-content,
.bulma-cards-grid .card.has-icon-mode.has-image-right .card-content {
    flex: 1 1 auto;
}

/* Responsive: Icon mode on mobile */
@media screen and (max-width: 768px) {
    .bulma-cards-grid .card.has-icon-mode.has-image-left,
    .bulma-cards-grid .card.has-icon-mode.has-image-right {
        flex-direction: column;
        align-items: stretch;
    }

    .bulma-cards-grid .card.has-icon-mode.has-image-left .card-image,
    .bulma-cards-grid .card.has-icon-mode.has-image-right .card-image {
        padding-bottom: 0;
    }
}

/* ==========================================================================
   Bulma Cards - Carousel Mode
   ========================================================================== */

.bulma-cards-carousel {
    overflow: hidden;
    width: 100%;
    position: relative;
}

.bulma-cards-carousel .carousel-track {
    display: flex;
    width: max-content;
    animation: bulma-cards-scroll var(--carousel-speed, 30s) linear infinite;
    animation-direction: var(--carousel-direction, normal);
}

.bulma-cards-carousel .carousel-content {
    display: flex;
    gap: var(--bulma-column-gap, 1.5rem);
    padding-right: var(--bulma-column-gap, 1.5rem);
}

/* Pause animation on hover when enabled */
.bulma-cards-carousel[data-pause-hover="true"]:hover .carousel-track {
    animation-play-state: paused;
}

/* Scroll animation - moves 50% (one set of content) */
@keyframes bulma-cards-scroll {
    0% {
        transform: translateX(0);
    }
    100% {
        transform: translateX(-50%);
    }
}

/* Card styling in carousel mode - inherit border radius vars */
.bulma-cards-carousel .card {
    border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius));
    border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius));
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
    border-color: var(--card-border-color, var(--bulma-card-border-color, transparent));
    border-width: var(--card-border-width, 0);
    border-style: solid;
    flex-shrink: 0;
    margin-bottom: 0;
}

/* Card image in carousel - inherit border radius for image container */
.bulma-cards-carousel .card .card-image img {
    border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius));
    border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius));
}

.bulma-cards-carousel .card .card-content {
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius));
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius));
}

/* Editor styles for carousel mode */
.bulma-cards-carousel:has(> .block-editor-inner-blocks) {
    overflow: hidden;
}

.bulma-cards-carousel > .block-editor-inner-blocks > .block-editor-block-list__layout {
    display: flex;
    gap: var(--bulma-column-gap, 1.5rem);
    flex-wrap: nowrap;
}

.bulma-cards-carousel > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block {
    flex-shrink: 0;
}

/* Editor card styling for carousel */
.bulma-cards-carousel > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block .card {
    border-top-left-radius: var(--card-radius-tl, var(--bulma-card-radius)) !important;
    border-top-right-radius: var(--card-radius-tr, var(--bulma-card-radius)) !important;
    border-bottom-left-radius: var(--card-radius-bl, var(--bulma-card-radius)) !important;
    border-bottom-right-radius: var(--card-radius-br, var(--bulma-card-radius)) !important;
    border-color: var(--card-border-color, var(--bulma-card-border-color, transparent));
    border-width: var(--card-border-width, 0);
    border-style: solid;
}

/* Icon Mode for Bulma Posts */
.bulma-posts-grid .card.has-icon-mode {
    align-items: center;
}

/* Vertical cards (image on top) */
.bulma-posts-grid .card.has-icon-mode:not(.is-flex-direction-row) .card-image {
    display: flex;
    justify-content: center;
    padding: var(--bulma-card-content-padding, 1.5rem);
    padding-bottom: 0;
}

.bulma-posts-grid .card.has-icon-mode:not(.is-flex-direction-row) .card-image figure {
    width: var(--icon-size, 60px);
    height: auto;
    padding-bottom: 0 !important;
    border-radius: var(--icon-border-radius, 0);
    border: var(--icon-bdr-width, 0) solid var(--icon-bdr-color, transparent);
    overflow: hidden;
    margin-bottom: 15px;
}

.bulma-posts-grid .card.has-icon-mode:not(.is-flex-direction-row) .card-image img {
    position: relative !important;
    width: 100%;
    height: auto;
    object-fit: contain;
    border-radius: var(--icon-border-radius, 0);
}

/* Horizontal cards (image left/right) */
.bulma-posts-grid .card.has-icon-mode.is-flex-direction-row .card-image {
    flex: 0 0 auto;
    max-width: none !important;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--bulma-card-content-padding, 1.5rem);
}

.bulma-posts-grid .card.has-icon-mode.is-flex-direction-row .card-image figure {
    width: var(--icon-size, 60px);
    height: auto;
    padding-bottom: 0 !important;
    border-radius: var(--icon-border-radius, 0);
    border: var(--icon-bdr-width, 0) solid var(--icon-bdr-color, transparent);
    overflow: hidden;
}

.bulma-posts-grid .card.has-icon-mode.is-flex-direction-row .card-image img {
    position: relative !important;
    width: 100%;
    height: auto;
    object-fit: contain;
    border-radius: var(--icon-border-radius, 0);
}

.bulma-posts-grid .card.has-icon-mode.is-flex-direction-row .card-content {
    flex: 1 1 auto;
    min-width: 0; /* Allow content to shrink below natural width */
}

/* Prevent content from wrapping to new row in icon mode */
.bulma-posts-grid .card.has-icon-mode.is-flex-direction-row {
    flex-wrap: nowrap;
}

/* Mobile - stack horizontal cards to match vertical layout */
@media screen and (max-width: 768px) {
    .bulma-posts-grid .card.has-icon-mode.is-flex-direction-row {
        flex-direction: column !important; /* Override Bulma's is-flex-direction-row */
        align-items: center;
    }

    .bulma-posts-grid .card.has-icon-mode.is-flex-direction-row .card-image {
        max-width: none !important; /* Override inline max-width: 20% */
        padding-bottom: 0;
    }

    .bulma-posts-grid .card.has-icon-mode.is-flex-direction-row .card-image figure {
        margin-bottom: 15px;
    }

    .bulma-posts-grid .card.has-icon-mode.is-flex-direction-row .card-content .has-text-left {
        text-align: center !important;
    }
}

/* Remove margin from card title in icon mode */
.bulma-posts-grid .card.has-icon-mode h4.title.card-title {
    margin-bottom: 0 !important;
}

/* Carousel styles */
.bulma-image-carousel-wrapper {
    width: 100%;
}

.bulma-image-carousel-wrapper .carousel-slide {
    display: none;
}

.bulma-image-carousel-wrapper .carousel-slide.is-active {
    display: block;
}

.bulma-image-carousel-wrapper figure.image {
    position: relative;
    display: block;
    overflow: hidden;
}

.bulma-image-carousel-wrapper .carousel-index {
    position: absolute;
    bottom: 8px;
    left: 8px;
    background: rgb(255 255 255 / 37%);
    color: white;
    padding: 4px 8px;
    font-size: 0.875rem;
    border-radius: var(--bulma-radius-small);
}

.bulma-image-carousel-wrapper .carousel-nav {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    background: none;
}

.bulma-image-carousel-wrapper .carousel-nav .button {
    background: none;
}

/* WordPress Alignment Support */
.bulma-image-carousel-wrapper.aligncenter figure {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

.bulma-image-carousel-wrapper.alignleft figure {
    margin-left: 0;
    margin-right: auto;
}

.bulma-image-carousel-wrapper.alignright figure {
    margin-left: auto;
    margin-right: 0;
}

.bulma-image-carousel-wrapper.aligncenter .carousel-nav {
    justify-content: center;
}

.bulma-image-carousel-wrapper.alignleft .carousel-nav {
    justify-content: flex-start;
}

.bulma-image-carousel-wrapper.alignright .carousel-nav {
    justify-content: flex-end;
}

figure.image.aligncenter {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

/* Single image styles */
figure.image {
    display: block;
    overflow: hidden;
}

/* Object Fit */
img.object-fit {
    object-fit: contain;
}

img.object-fit-cover {
    object-fit: cover;
}

/* Image Hover Effects */
.has-hover-zoom,
.card-image.has-hover-zoom {
    overflow: hidden;
}

.has-hover-zoom img,
.card-image.has-hover-zoom img {
    transition: transform 0.4s ease-out;
}

.has-hover-zoom:hover img,
.card-image.has-hover-zoom:hover img {
    transform: scale(1.03);
}

/* Image Hover Overlay */
.has-hover-overlay,
.card-image.has-hover-overlay {
    position: relative;
    overflow: hidden;
}

.has-hover-overlay .hover-overlay,
.card-image.has-hover-overlay .hover-overlay {
    position: absolute;
    inset: 0;
    opacity: 0 !important;
    transition: opacity 0.3s ease-out;
    pointer-events: none;
    z-index: 2;
}

.has-hover-overlay:hover .hover-overlay,
.card-image.has-hover-overlay:hover .hover-overlay {
    opacity: var(--hover-overlay-opacity, 0.3) !important;
}

/* ===================================
 * IMAGE CAPTION OVERLAY
 * =================================== */

/* Caption base - requires position relative on figure */
figure.image.has-caption {
    position: relative;
    overflow: hidden;
}

/* Figcaption positioning */
figure.image.has-caption figcaption.image-caption {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 3;
    padding: 1rem;
}

/* Position variants */
figure.image.has-caption-bottom figcaption.image-caption {
    bottom: 0;
}

figure.image.has-caption-top figcaption.image-caption {
    top: 0;
}

/* Hover display mode - hidden by default, shown on hover */
figure.image.has-caption-on-hover figcaption.image-caption {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
}

figure.image.has-caption-on-hover:hover figcaption.image-caption {
    opacity: 1;
    transform: translateY(0);
}

/* Caption overlay background */
.image-caption .caption-overlay {
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
}

/* Caption content */
.image-caption .caption-content {
    position: relative;
    z-index: 1;
}

/* Default text styling for captions */
.image-caption .caption-content p {
    margin-bottom: 0.25rem;
    color: inherit;
}

.image-caption .caption-content p:last-child {
    margin-bottom: 0;
}

/* Remove margin from title elements in image captions */
figure.wp-block-ironlight-bulma-image .image-caption .title {
    margin-bottom: 0 !important;
}

/* Person Hover Alternative Image */
.has-hover-alt-image,
.card-image.has-hover-alt-image {
    position: relative;
    overflow: hidden;
}

.has-hover-alt-image .hover-alt-image,
.card-image.has-hover-alt-image .hover-alt-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    transition: opacity 0.3s ease-out;
    z-index: 1;
}

.has-hover-alt-image:hover .hover-alt-image,
.card-image.has-hover-alt-image:hover .hover-alt-image {
    opacity: 1;
}

/* Bulma Collage */
.bulma-collage {
    position: relative;
    display: block;
    overflow: hidden;
}

.bulma-collage img {
    display: block;
    height: auto;
    object-fit: cover;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* FAQ Gallery styles */
.faqs-gallery-wrapper .faq-gallery-column {
    position: sticky;
    top: 1rem;
    align-self: flex-start;
}

.faqs-gallery-wrapper .faq-gallery-image {
    position: relative;
}

.faqs-gallery-wrapper .faq-gallery-image img {
    width: 100%;
    height: auto;
    transition: opacity 0.3s ease;
}

.faqs-gallery-wrapper .faq-gallery-image img.faq-img-out {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
    pointer-events: none;
}

.faq-gallery-placeholder {
    background: #f5f5f5;
    padding: 2rem;
    text-align: center;
    color: #666;
}

/* FAQ Item styles - accordion mode only (not grid mode) */
/* Scoped to .faqs container to prevent bleeding into grid mode */
.faqs .faq-item,
.faqs-gallery-wrapper .faq-item {
    border-bottom: 1px solid hsl(0, 0%, 86%);
    padding-top: var(--faq-item-padding-top, 1.5rem);
    padding-right: var(--faq-item-padding-right, 0);
    padding-bottom: var(--faq-item-padding-bottom, 1.5rem);
    padding-left: var(--faq-item-padding-left, 0);
}

.faqs .faq-item:last-child,
.faqs-gallery-wrapper .faq-item:last-child {
    border-bottom: none;
}

.faq-item summary {
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: color 0.2s ease;
    user-select: none;
}

.faq-item summary::-webkit-details-marker {
    display: none;
}

.faq-item summary::after {
    content: '';
    display: inline-block;
    width: 1.25rem;
    height: 1.25rem;
    margin-left: 0.75rem;
    flex-shrink: 0;
    background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path fill="%23777" d="M331.3 475.3C325.1 481.5 314.9 481.5 308.7 475.3L100.7 267.3C94.5 261.1 94.5 250.9 100.7 244.7C106.9 238.5 117.1 238.5 123.3 244.7L320 441.4L516.7 244.7C522.9 238.5 533.1 238.5 539.3 244.7C545.5 250.9 545.5 261.1 539.3 267.3L331.3 475.3z"/></svg>');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    transition: background-image 0.2s ease;
}

.faq-item summary:hover {
    color: hsl(217, 71%, 53%);
}

.faq-item[open] {
    border-left-width: var(--faq-accent-width, 0);
    border-left-color: var(--faq-accent-color, transparent);
    border-left-style: solid;
}

/* Border on right when image is on left (posts carousel FAQ template) */
.faqs.has-border-right .faq-item[open] {
    border-left: none;
    border-right-width: var(--faq-accent-width, 0);
    border-right-color: var(--faq-accent-color, transparent);
    border-right-style: solid;
}

.faq-item[open] summary::after {
    background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path fill="%23777" d="M320.1 153.4L331.4 164.7L539.4 372.7L550.7 384L528.1 406.6L516.8 395.3L320.1 198.6L123.4 395.3L112.1 406.6L89.5 384L100.8 372.7L308.8 164.7L320.1 153.4z"/></svg>');
}

.faq-item .content {
    padding: 0;
    margin-top: 1rem;
}

.faq-item .content > *:last-child {
    margin-bottom: 0;
}

/* ===================================
 * BULMA BOX BLOCK FIXES
 * ===================================*/

/* Gradient overlay must inherit border-radius from parent to clip properly */
.box .box-overlay {
    border-radius: inherit;
}

/* Card image overlay inherits border-radius for proper clipping */
.card-image .card-image-overlay {
    border-radius: inherit;
}

/* ===================================
 * MEDIA REQUEST BLOCK STYLING
 * ===================================*/

.media-request-block .card {
    background: none;
    box-shadow: none;
}

.media-request-block .card-content {
    padding: 0rem;
}

/* ===================================
 * CASE DOWNLOADS LIST STYLING
 * ===================================*/

.case-downloads-list {
    margin-bottom: var(--bulma-block-spacing);
}

/* ===================================
 * BULMA CAROUSEL
 * ===================================*/

.bulma-carousel {
    position: relative;
    overflow: hidden;
}

.bulma-carousel .carousel-viewport {
    position: relative;
    width: 100%;
}

.bulma-carousel .carousel-slides {
    position: relative;
    width: 100%;
}

.bulma-carousel .carousel-slide {
    display: none;
    width: 100%;
}

.bulma-carousel .carousel-slide.is-active {
    display: block;
}

.bulma-carousel .carousel-slide > .hero {
    width: 100%;
}

/* Arrow Navigation */
.bulma-carousel .carousel-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 10;
    background: rgba(0, 0, 0, 0.5);
    border: none;
    color: white;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.2s ease;
}

.bulma-carousel .carousel-arrow:hover {
    background: rgba(0, 0, 0, 0.7);
}

.bulma-carousel .carousel-arrow:focus {
    outline: 2px solid white;
    outline-offset: 2px;
}

.bulma-carousel .carousel-arrow svg {
    width: 24px;
    height: 24px;
}

.bulma-carousel .carousel-prev {
    left: 1rem;
}

.bulma-carousel .carousel-next {
    right: 1rem;
}

/* Dot Navigation */
.bulma-carousel .carousel-dots {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    padding: 1rem 0;
}

.bulma-carousel .carousel-dots.is-top {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    z-index: 10;
}

.bulma-carousel .carousel-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    border: 2px solid black;
    background: transparent;
    cursor: pointer;
    padding: 0;
    transition: background-color 0.2s ease;
}

.bulma-carousel .carousel-dot.is-active,
.bulma-carousel .carousel-dot:hover {
    background: white;
}

.bulma-carousel .carousel-dot:focus {
    outline: 2px solid black;
    outline-offset: 2px;
}

/* Tab Navigation */
.bulma-carousel .carousel-tabs {
    display: flex;
    justify-content: flex-start;
    gap: 0;
}

.bulma-carousel .carousel-tabs.is-top {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    z-index: 10;
}

.bulma-carousel .carousel-tab {
    padding: 0.75rem 1.5rem;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 1rem;
    transition: all 0.2s ease;
    border-bottom: 3px solid transparent;
    color: inherit;
}

.bulma-carousel .carousel-tab.is-active {
    border-bottom-color: currentColor;
    font-weight: 600;
}

.bulma-carousel .carousel-tab:hover:not(.is-active) {
    background: rgba(0, 0, 0, 0.05);
}

.bulma-carousel .carousel-tab:focus {
    outline: 2px solid currentColor;
    outline-offset: -2px;
}

/* Carousel Transitions - Fade (bulma-carousel pattern) */
.bulma-carousel[data-transition="fade"] .carousel-slides {
    position: relative;
}

.bulma-carousel[data-transition="fade"] .carousel-slide {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    opacity: 0;
    z-index: -2;
    transition: opacity 0.5s ease;
}

.bulma-carousel[data-transition="fade"] .carousel-slide.is-active {
    position: relative;
    opacity: 1;
    z-index: 0;
}

/* Carousel Transitions - Slide (bulma-carousel pattern) */
/* All slides in flex row, move container to animate */
.bulma-carousel[data-transition="slide"] .carousel-viewport {
    overflow: hidden;
}

.bulma-carousel[data-transition="slide"] .carousel-slides {
    display: flex;
    flex-wrap: nowrap;
    transition: transform 0.5s ease;
}

.bulma-carousel[data-transition="slide"] .carousel-slide {
    display: block !important;
    flex: 0 0 100%;
    min-width: 100%;
}

/* Responsive */
@media screen and (max-width: 768px) {
    .bulma-carousel .carousel-arrow {
        width: 36px;
        height: 36px;
    }

    .bulma-carousel .carousel-arrow svg {
        width: 18px;
        height: 18px;
    }

    .bulma-carousel .carousel-prev {
        left: 0.5rem;
    }

    .bulma-carousel .carousel-next {
        right: 0.5rem;
    }

    .bulma-carousel .carousel-tab {
        padding: 0.5rem 1rem;
        font-size: 0.875rem;
    }
}

/* Editor Styles */
.bulma-carousel-editor {
    border: 1px dashed #ccc;
    padding: 0;
}

.bulma-carousel-editor .carousel-editor-tabs {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.5rem;
    border-bottom: none;
    background: #5462E9;
}

.bulma-carousel-editor .carousel-editor-tab-wrapper {
    display: flex;
}

.bulma-carousel-editor .carousel-editor-tab {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.5rem 0.75rem;
    border: none;
    background: black;
    color: white;
    cursor: pointer;
    font-size: 13px;
    border-radius: 4px;
}

.bulma-carousel-editor .carousel-editor-tab.is-active {
    background: white;
    color: black;
}

.bulma-carousel-editor .carousel-editor-tab-edit {
    opacity: 0.5;
    cursor: pointer;
    padding: 2px;
    display: flex;
    align-items: center;
}

.bulma-carousel-editor .carousel-editor-tab-edit:hover {
    opacity: 1;
}

.bulma-carousel-editor .carousel-editor-tab-input {
    padding: 0.4rem 0.5rem;
    border: 1px solid #007cba;
    border-radius: 4px;
    font-size: 13px;
    min-width: 100px;
}

.bulma-carousel-editor .carousel-editor-add-slide {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.5rem 0.75rem;
    border: none;
    background: transparent;
    color: white;
    cursor: pointer;
    font-size: 13px;
    border-radius: 4px;
    margin-left: 0.5rem;
}

.bulma-carousel-editor .carousel-editor-add-slide:hover {
    background: rgba(255, 255, 255, 0.1);
}

.bulma-carousel-editor .carousel-editor-add-slide svg {
    fill: white;
}

.bulma-carousel-editor .carousel-editor-counter {
    padding: 0.25rem 0.5rem;
    font-size: 12px;
    color: #666;
    text-align: center;
    background: #f0f0f0;
}

.bulma-carousel-editor .carousel-slides-editor {
    min-height: 200px;
}

.bulma-footer-menu .menu-list a {
	background: unset;
	border: 0;
	font-weight: bold;
}
.bulma-footer-menu .menu-list li:last-child a {
    border: 0;
}

.bulma-footer-menu .menu-list li ul {
	border: 0;
	margin: 0;
	padding-inline-start: unset;
}
.bulma-footer-menu .menu-list li ul a {
	font-weight: normal;
}

/* ===================================
   Bulma Posts Carousel
   =================================== */

.bulma-posts-carousel {
    position: relative;
    overflow: hidden;
}

.bulma-posts-carousel .carousel-viewport {
    position: relative;
    overflow: hidden;
}

.bulma-posts-carousel .carousel-slides {
    display: flex;
    transition: transform 0.5s ease;
}

.bulma-posts-carousel .carousel-slide {
    flex: 0 0 100%;
    min-width: 100%;
}

/* Fade transition */
.bulma-posts-carousel[data-transition="fade"] .carousel-slides {
    display: block;
}

.bulma-posts-carousel[data-transition="fade"] .carousel-slide {
    display: none;
    opacity: 0;
    transition: opacity 0.5s ease;
}

.bulma-posts-carousel[data-transition="fade"] .carousel-slide.is-active {
    display: block;
    opacity: 1;
}

/* None transition */
.bulma-posts-carousel[data-transition="none"] .carousel-slides {
    display: block;
}

.bulma-posts-carousel[data-transition="none"] .carousel-slide {
    display: none;
}

.bulma-posts-carousel[data-transition="none"] .carousel-slide.is-active {
    display: block;
}

/* Testimonial Template */
.testimonial-slide {
    background: white;
}

.testimonial-slide .image {
    height: 100%;
}

.testimonial-slide .image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
}

/* Carousel: padding between image column and content */
.testimonial-slide.columns.is-gapless > .column:first-child {
    padding-right: 1.5rem !important;
}

.testimonial-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 3rem;
}

.testimonial-quote {
    position: relative;
    margin-bottom: 1.5rem;
}

.testimonial-quote .quote-text {
    line-height: 1.5;
}

.testimonial-quote .quote-text p {
    margin-bottom: 0;
}

.testimonial-description {
    margin-bottom: 1.5rem;
    color: #4a4a4a;
    line-height: 1.6;
}

.testimonial-attribution {
    margin-top: 1.5rem;
}

.testimonial-name {
    margin-bottom: 0.25rem;
}

.testimonial-person-title {
    color: #666;
}

/* Posts Carousel Navigation - Bottom Center Arrows */
.posts-carousel-nav {
    display: flex;
    justify-content: center;
    gap: 1rem;
    padding: 1.5rem 0;
}

.posts-carousel-arrow {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: #f5f5f5;
    border: none;
    color: #333;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
}

.posts-carousel-arrow:hover {
    background: #e0e0e0;
}

.posts-carousel-arrow:focus {
    outline: 2px solid #333;
    outline-offset: 2px;
}

.posts-carousel-arrow svg {
    width: 24px;
    height: 24px;
}

/* Responsive */
@media screen and (max-width: 768px) {
    .testimonial-slide.columns {
        flex-direction: column;
    }

    .testimonial-slide .column {
        width: 100%;
        padding-right: 0 !important;
    }

    .testimonial-slide .image {
        min-height: 250px;
        max-height: 300px;
    }

    .testimonial-content {
        padding: 2rem;
    }

    .posts-carousel-nav {
        padding: 1rem 0;
    }

    .posts-carousel-arrow {
        width: 40px;
        height: 40px;
    }

    .posts-carousel-arrow svg {
        width: 20px;
        height: 20px;
    }
}

/* ===================================
 * BULMA HUBSPOT FORM BLOCK
 * Block-specific styles only - base form styling in UNIFIED FORM SYSTEM
 * =================================== */

/* Block-specific field alignment */
.bulma-hubspot-form-block .hs-form-field {
    text-align: left;
}

/* Block-specific submit spacing */
.bulma-hubspot-form-block .hs-submit {
    margin-top: 1.5rem;
}

/* Mini-image layout (block-specific feature) */
.bulma-hubspot-form-block img.is-mini-image {
    max-width: 100%;
    height: auto;
}

/* Mobile: stack block columns */
@media screen and (max-width: 768px) {
    .bulma-hubspot-form-block .columns {
        flex-direction: column;
    }
}

/* ===================================
 * DOWNLOAD GATE
 * =================================== */

.download-gate .gate-area.is-hidden {
    display: none;
}

.download-gate .gate-area.is-visible {
    display: block;
}

.download-gate .buttons {
    flex-direction: column;
    align-items: flex-start;
}

.download-gate .buttons .button {
    margin-bottom: 0.5rem;
}

/* Fade transition animations */
.download-gate .gate-area.is-fading-out {
    animation: gateKeeperFadeOut 0.3s ease-out forwards;
}

.download-gate .gate-area.is-fading-in {
    animation: gateKeeperFadeIn 0.3s ease-in forwards;
}

/* Slide transition animations */
.download-gate .gate-area.is-sliding-out {
    animation: gateKeeperSlideOut 0.3s ease-out forwards;
}

.download-gate .gate-area.is-sliding-in {
    animation: gateKeeperSlideIn 0.3s ease-in forwards;
}

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

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

@keyframes gateKeeperSlideOut {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(-20px);
    }
}

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

/* ===================================
 * UNIFIED FORM SYSTEM
 * Single source of truth for form styling across Bulma, Gravity Forms, and HubSpot
 * Uses CSS custom properties for easy customization and context-aware styling
 * =================================== */

/* --- STEP 1: CSS Custom Properties --- */
:root {
    /* Inputs */
    --form-input-background: var(--bulma-input-background-color, #fff);
    --form-input-border-color: var(--bulma-input-border-color, hsl(0, 0%, 86%));
    --form-input-border-width: 1px;
    --form-input-border-radius: var(--bulma-input-radius, 4px);
    --form-input-color: var(--bulma-input-color, hsl(0, 0%, 21%));
    --form-input-placeholder-color: hsla(0, 0%, 21%, 0.3);
    --form-input-padding: 0.5em 0.75em;
    --form-input-focus-border-color: var(--bulma-focus, hsl(217, 71%, 53%));
    --form-input-hover-border-color: hsl(0, 0%, 71%);

    /* Labels */
    --form-label-color: var(--bulma-label-color, hsl(0, 0%, 21%));
    --form-label-weight: 700;
    --form-sublabel-color: var(--form-label-color);
    --form-sublabel-weight: 400;

    /* Checkboxes/Radios */
    --form-checkbox-size: 1.25em;
    --form-checkbox-checked-bg: var(--bulma-primary, hsl(171, 100%, 41%));

    /* Errors */
    --form-error-color: var(--bulma-danger, hsl(348, 100%, 61%));

    /* Buttons - inherits from theme button system */
    --form-button-background: var(--bulma-primary);
    --form-button-color: var(--bulma-primary-invert, #fff);
    --form-button-border-radius: var(--bulma-button-border-radius, 4px);

    /* Spacing */
    --form-field-margin-bottom: 0.75rem;
}

/* --- STEP 2: Context-Aware Overrides --- */
/* Dark backgrounds - white labels */
.has-white-color,
.has-text-white {
    --form-label-color: #fff;
    --form-sublabel-color: rgba(255, 255, 255, 0.85);
    --form-input-border-color: transparent;
}

/* Light backgrounds - dark labels */
.has-black-color,
.has-text-black {
    --form-label-color: hsl(0, 0%, 4%);
    --form-sublabel-color: hsl(0, 0%, 21%);
}

/* Form labels inherit text color from parent section with WordPress style */
/* This works with ANY color set via WordPress style picker (white, black, brand-1, etc.) */
.section.has-text-color .label,
.section.has-text-color .gform_wrapper .gfield_label,
.section.has-text-color .gform_wrapper .gform-field-label,
.section.has-text-color .hs-form label,
.hero.has-text-color .label,
.hero.has-text-color .gform_wrapper .gfield_label,
.hero.has-text-color .gform_wrapper .gform-field-label,
.hero.has-text-color .hs-form label,
.box.has-text-color .label,
.box.has-text-color .gform_wrapper .gfield_label,
.box.has-text-color .gform_wrapper .gform-field-label,
.box.has-text-color .hs-form label {
    color: inherit;
}

/* --- STEP 3: Unified Input Selectors --- */
/* Reset: Prevent Bulma .input styles from hitting HubSpot wrapper div */
/* HubSpot uses <div class="input"> as a wrapper, Bulma uses .input on the actual input */
.hs-form div.input {
    background: none;
    border: none;
    box-shadow: none;
    padding: 0;
    border-radius: 0;
}

/* Text inputs - all systems */
/* Use element-qualified selectors to avoid div.input conflict */
input.input,
textarea.textarea,
.gform_wrapper input:not([type="radio"]):not([type="checkbox"]):not([type="submit"]):not([type="button"]):not([type="file"]),
.gform_wrapper textarea,
.hs-form input.hs-input,
.hs-form textarea.hs-input {
    background-color: var(--form-input-background);
    border: var(--form-input-border-width) solid var(--form-input-border-color);
    border-radius: var(--form-input-border-radius);
    color: var(--form-input-color);
    padding: var(--form-input-padding);
    width: 100%;
    font-size: 1rem;
    line-height: 1.5;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

/* Placeholder styling */
input.input::placeholder,
textarea.textarea::placeholder,
.gform_wrapper input::placeholder,
.gform_wrapper textarea::placeholder,
.hs-form input.hs-input::placeholder,
.hs-form textarea.hs-input::placeholder {
    color: var(--form-input-placeholder-color);
}

/* Focus states */
input.input:focus,
textarea.textarea:focus,
.gform_wrapper input:focus,
.gform_wrapper textarea:focus,
.hs-form input.hs-input:focus,
.hs-form textarea.hs-input:focus {
    border-color: var(--form-input-focus-border-color);
    box-shadow: 0 0 0 0.125em hsla(217, 71%, 53%, 0.25);
    outline: none;
}

/* Hover states */
input.input:hover:not(:focus),
textarea.textarea:hover:not(:focus),
.gform_wrapper input:hover:not(:focus),
.gform_wrapper textarea:hover:not(:focus),
.hs-form input.hs-input:hover:not(:focus),
.hs-form textarea.hs-input:hover:not(:focus) {
    border-color: var(--form-input-hover-border-color);
}

/* --- STEP 4: Unified Label Selectors --- */
/* Primary labels */
.label,
.gform_wrapper .gfield_label,
.gform_wrapper .gform-field-label,
.hs-form label {
    color: var(--form-label-color);
    font-weight: var(--form-label-weight);
    display: block;
    margin-bottom: 0.5em;
}

/* Sub-labels (Name: First/Last, Address fields, etc.) */
.gform_wrapper .gform-field-label--type-sub,
.gform_wrapper .ginput_complex label,
.hs-form .hs-field-desc {
    color: var(--form-sublabel-color);
    font-weight: var(--form-sublabel-weight);
    font-size: 0.875rem;
}

/* Required field indicator */
.gform_wrapper .gfield_required,
.hs-form .hs-form-required {
    color: var(--form-error-color);
}

/* --- STEP 5: Unified Select Styling --- */
.select select,
.gform_wrapper select,
.hs-form select.hs-input {
    background-color: var(--form-input-background);
    border: var(--form-input-border-width) solid var(--form-input-border-color);
    border-radius: var(--form-input-border-radius);
    color: var(--form-input-color);
    padding: var(--form-input-padding);
    padding-right: 2.5em;
    width: 100%;
    font-size: 1rem;
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23363636'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.75em center;
    background-size: 1em;
}

.select select:focus,
.gform_wrapper select:focus,
.hs-form select.hs-input:focus {
    border-color: var(--form-input-focus-border-color);
    box-shadow: 0 0 0 0.125em hsla(217, 71%, 53%, 0.25);
    outline: none;
}

/* --- STEP 6: Unified Checkbox/Radio Styling --- */
/* Wrapper alignment */
.checkbox,
.radio,
.gform_wrapper .gchoice,
.gform_wrapper .gfield_radio label,
.gform_wrapper .gfield_checkbox label,
.hs-form .hs-form-booleancheckbox label,
.hs-form .hs-form-radio label {
    display: flex;
    align-items: center;
    gap: 0.5em;
    cursor: pointer;
    color: var(--form-label-color);
    font-weight: 400;
}

/* Custom checkbox/radio appearance */
.checkbox input[type="checkbox"],
.radio input[type="radio"],
.gform_wrapper input[type="checkbox"],
.gform_wrapper input[type="radio"],
.hs-form input[type="checkbox"],
.hs-form input[type="radio"] {
    appearance: none;
    width: var(--form-checkbox-size);
    height: var(--form-checkbox-size);
    border: var(--form-input-border-width) solid var(--form-input-border-color);
    background-color: var(--form-input-background);
    cursor: pointer;
    flex-shrink: 0;
    transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
}

/* Checkbox - square with slight rounding */
.checkbox input[type="checkbox"],
.gform_wrapper input[type="checkbox"],
.hs-form input[type="checkbox"] {
    border-radius: 2px;
}

/* Radio - circle */
.radio input[type="radio"],
.gform_wrapper input[type="radio"],
.hs-form input[type="radio"] {
    border-radius: 50%;
}

/* Checked states */
.checkbox input[type="checkbox"]:checked,
.radio input[type="radio"]:checked,
.gform_wrapper input[type="checkbox"]:checked,
.gform_wrapper input[type="radio"]:checked,
.hs-form input[type="checkbox"]:checked,
.hs-form input[type="radio"]:checked {
    background-color: var(--form-checkbox-checked-bg);
    border-color: var(--form-checkbox-checked-bg);
}

/* Checkmark for checkbox */
.checkbox input[type="checkbox"]:checked,
.gform_wrapper input[type="checkbox"]:checked,
.hs-form input[type="checkbox"]:checked {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
    background-size: 80%;
    background-position: center;
    background-repeat: no-repeat;
}

/* Dot for radio */
.radio input[type="radio"]:checked,
.gform_wrapper input[type="radio"]:checked,
.hs-form input[type="radio"]:checked {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='6' fill='white'/%3E%3C/svg%3E");
    background-size: 60%;
    background-position: center;
    background-repeat: no-repeat;
}

/* --- STEP 7: Error States --- */
/* Field with error */
.gform_wrapper .gfield_error input,
.gform_wrapper .gfield_error textarea,
.gform_wrapper .gfield_error select,
.hs-form .invalid input.hs-input,
.hs-form .invalid textarea.hs-input {
    border-color: var(--form-error-color);
    background-color: hsla(348, 100%, 61%, 0.05);
}

/* Error label */
.gform_wrapper .gfield_error .gfield_label,
.hs-form .invalid label {
    color: var(--form-error-color);
}

/* Error message text */
.gform_wrapper .validation_message,
.gform_wrapper .gfield_description.validation_message,
.hs-form .hs-error-msgs li {
    color: var(--form-error-color);
    font-size: 0.875rem;
    margin-top: 0.25em;
}

/* Form-level validation message */
.gform_wrapper .gform_validation_errors {
    color: var(--form-error-color);
    background-color: hsla(348, 100%, 61%, 0.05);
    border: 1px solid var(--form-error-color);
    border-radius: var(--form-input-border-radius);
    padding: 1rem;
    margin-bottom: 1rem;
}

/* --- STEP 8: Submit Buttons --- */
.gform_wrapper .gform_button,
.gform_wrapper input[type="submit"],
.hs-form .hs-button,
.hs-form input[type="submit"] {
    background-color: var(--form-button-background);
    color: var(--form-button-color);
    border: none;
    border-radius: var(--form-button-border-radius);
    padding: 0.75em 1.5em;
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

/* Button hover state */
.gform_wrapper .gform_button:hover,
.gform_wrapper input[type="submit"]:hover,
.hs-form .hs-button:hover,
.hs-form input[type="submit"]:hover {
    filter: brightness(0.9);
}

/* Button focus state */
.gform_wrapper .gform_button:focus,
.gform_wrapper input[type="submit"]:focus,
.hs-form .hs-button:focus,
.hs-form input[type="submit"]:focus {
    outline: none;
    box-shadow: 0 0 0 0.125em hsla(217, 71%, 53%, 0.25);
}

/* Button disabled state */
.gform_wrapper .gform_button:disabled,
.hs-form .hs-button:disabled {
    opacity: 0.65;
    cursor: not-allowed;
}

/* --- STEP 9: Gravity Forms Specificity Overrides --- */
/* GF injects aggressive inline styles - override with !important where needed */

/* Reset GF description typography to inherit from WordPress theme */
body .gform-theme--framework .gfield_description {
    color: unset;
    font-size: unset;
    font-weight: unset;
    letter-spacing: unset;
    line-height: unset;
}

/* Override GF theme framework variables */
.gform-theme--framework.gform-theme,
.gform_wrapper.gravity-theme {
    --gf-ctrl-label-color-primary: var(--form-label-color);
    --gf-ctrl-label-font-weight-primary: var(--form-label-weight);
    --gf-ctrl-bg-color: var(--form-input-background);
    --gf-ctrl-border-color: var(--form-input-border-color);
    --gf-ctrl-border-width: var(--form-input-border-width);
    --gf-ctrl-border-radius: var(--form-input-border-radius);
}

/* Force context inheritance for GF labels */
.has-white-color .gform_wrapper .gfield_label,
.has-white-color .gform_wrapper .gform-field-label,
.has-white-color .gform_wrapper .gform-field-label--type-sub {
    color: var(--form-label-color) !important;
}

.has-black-color .gform_wrapper .gfield_label,
.has-black-color .gform_wrapper .gform-field-label,
.has-black-color .gform_wrapper .gform-field-label--type-sub {
    color: var(--form-label-color) !important;
}

/* Override GF input styling in contexts */
body.wp-theme-ironlight .gform_wrapper.gravity-theme input:not([type="radio"]):not([type="checkbox"]):not([type="submit"]):not([type="button"]):not([type="image"]),
body.wp-theme-ironlight .gform_wrapper.gravity-theme textarea,
body.wp-theme-ironlight .gform_wrapper.gravity-theme select {
    background-color: var(--form-input-background) !important;
    border-color: var(--form-input-border-color) !important;
    color: var(--form-input-color) !important;
}

/* --- Field Layout & Spacing --- */
/* Field containers */
.field,
.gform_wrapper .gfield,
.hs-form .hs-form-field {
    margin-bottom: var(--form-field-margin-bottom);
}

/* Help text */
.help,
.gform_wrapper .gfield_description:not(.validation_message),
.hs-form .hs-field-desc {
    color: var(--form-sublabel-color);
    margin-top: 0.25em;
}

/* Hide required field legend */
.gform_wrapper .gform_required_legend {
    display: none;
}

/* Multi-column layout for HubSpot */
.hs-form fieldset[class^="form-columns-"] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    max-width: unset;
}

.hs-form fieldset[class^="form-columns-"] > .hs-form-field {
    flex: 1;
    min-width: 200px;
}

/* Mobile: Stack all columns */
@media screen and (max-width: 768px) {
    .hs-form fieldset[class^="form-columns-"] {
        flex-direction: column;
    }

    .hs-form fieldset[class^="form-columns-"] > .hs-form-field {
        flex: 0 0 100%;
    }
}

/* Radio Button Style (il_radio_buttons) */
.gfield--type-name {
    margin-bottom: 0;
}

.il_radio_buttons input[type="radio"] {
    display: none !important;
}

.il_radio_buttons label {
    border: 1px solid var(--form-input-border-color);
    border-radius: var(--form-input-border-radius);
    padding: 8px 15px;
    background: var(--form-button-background);
}

.il_radio_buttons .gfield-choice-input:checked + label {
    background: var(--form-button-hover-background, var(--form-button-background));
    color: #fff;
}

.il_radio_buttons .gchoice label {
    margin-left: 0;
}

/* ===================================
 * FAQ GRID BLOCK STYLING
 * ===================================*/

/* FAQ Grid - CSS Grid for gap support (like bulma-cards-grid) */
.faq-grid {
    display: grid;
    grid-template-columns: repeat(var(--columns-per-row, 3), 1fr);
    gap: var(--bulma-column-gap, 0.75rem);
    margin: 0;
}

/* Override Bulma column styles - grid handles sizing */
.faq-grid > .column {
    width: auto;
    padding: 0;
    flex: none;
}

/* Editor: Apply grid to WordPress inner blocks layout */
.faq-grid > .block-editor-inner-blocks > .block-editor-block-list__layout {
    display: grid;
    grid-template-columns: repeat(var(--columns-per-row, 3), 1fr);
    gap: var(--bulma-column-gap, 0.75rem);
}

/* Editor: Override column width - grid handles sizing */
.faq-grid > .block-editor-inner-blocks > .block-editor-block-list__layout > .block-editor-block-list__block.column {
    width: auto !important;
}

/* Grid item box */
.faq-grid-item {
    position: relative;
    display: flex;
    align-items: flex-end;
    cursor: pointer;
    min-height: var(--faq-grid-box-min-height, 200px);
    overflow: hidden;
    /* Border radius - fallback to Bulma card radius */
    --card-radius-tl: var(--bulma-card-radius);
    --card-radius-tr: var(--bulma-card-radius);
    --card-radius-bl: var(--bulma-card-radius);
    --card-radius-br: var(--bulma-card-radius);
    border-top-left-radius: var(--card-radius-tl);
    border-top-right-radius: var(--card-radius-tr);
    border-bottom-left-radius: var(--card-radius-bl);
    border-bottom-right-radius: var(--card-radius-br);
}

/* Background image layer for zoom effect */
.faq-grid-item::before {
    content: '';
    position: absolute;
    inset: 0;
    background: inherit;
    background-size: inherit;
    background-position: inherit;
    transition: transform 0.4s ease-out;
    z-index: 0;
    border-radius: inherit;
}

.faq-grid-item:hover::before {
    transform: scale(1.05);
}

/* Overlay for background images */
.faq-grid-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    z-index: 1;
}

/* Question text */
.faq-grid-question {
    position: relative;
    z-index: 2;
    margin: 0;
}

/* Hide modal from document flow (Bulma handles visibility) */
.faq-grid .modal {
    /* Bulma handles modal positioning */
}

/* Mobile: Stack to single column */
@media screen and (max-width: 768px) {
    .faq-grid {
        grid-template-columns: 1fr;
    }
}

/* ==========================================================================
   FAQ IMAGE ACCORDION BLOCK STYLING
   ========================================================================== */

/* Main container - column layout */
.faq-image-accordion {
    display: flex;
    flex-direction: column;
    width: 100%;
}

/* Images row - horizontal with gap */
.faq-image-accordion-images {
    display: flex;
    flex-direction: row;
    gap: 0.5rem;
    min-height: 300px;
}

/* Individual image strip */
.faq-image-accordion-item {
    position: relative;
    flex: 1;
    min-width: 60px;
    overflow: hidden;
    cursor: pointer;
    transition: flex 0.5s ease;
}

/* Expanded item takes more space */
.faq-image-accordion-item.is-expanded {
    flex: 5;
}

/* Autoplay progress bar - only shows when autoplay is active */
.faq-image-accordion[data-autoplay="true"] .faq-image-accordion-item.is-expanded::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    height: 4px;
    width: 0%;
    background: #ffe08a;
    z-index: 10;
    animation: faq-accordion-progress var(--autoplay-interval, 5000ms) linear forwards;
}

/* Pause animation on hover */
.faq-image-accordion[data-autoplay="true"][data-pause-hover="true"]:hover .faq-image-accordion-item.is-expanded::before {
    animation-play-state: paused;
}

@keyframes faq-accordion-progress {
    from {
        width: 0%;
    }
    to {
        width: 100%;
    }
}

/* Image background layer */
.faq-image-accordion-item-image {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    transition: filter 0.5s ease, transform 0.5s ease;
}

/* GRAYSCALE for inactive items */
.faq-image-accordion-item:not(.is-expanded) .faq-image-accordion-item-image {
    filter: grayscale(100%);
}

/* Reduce grayscale on hover */
.faq-image-accordion-item:not(.is-expanded):hover .faq-image-accordion-item-image {
    filter: grayscale(50%);
    transform: scale(1.02);
}

/* Hidden content (extracted by JS) */
.faq-image-accordion-item-content[hidden] {
    display: none !important;
}

/* Shared content area - BELOW all images */
.faq-image-accordion-content {
    padding: 2rem;
    box-shadow: 0.305rem 0.405rem 1rem rgba(0, 0, 0, 0.06) !important;
    margin-top: 0;
}

/* Title styling in content area */
.faq-image-accordion-content .faq-image-accordion-item-title {
    margin-bottom: 0.75rem !important;
}

/* Description styling */
.faq-image-accordion-content .faq-image-accordion-item-description > *:last-child {
    margin-bottom: 0;
}

/* Placeholder for missing images */
.faq-image-accordion-placeholder {
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,0.5);
    font-size: 0.875rem;
}

/* Editor placeholder text */
.faq-image-accordion-placeholder-text {
    color: #666;
    font-style: italic;
}

/* ==========================================================================
   MOBILE: Card Carousel with Pagination Dots
   ========================================================================== */
@media screen and (max-width: 768px) {
    /* Hide desktop structure */
    .faq-image-accordion-images {
        display: none;
    }

    .faq-image-accordion-content {
        display: none;
    }

    /* Show mobile carousel */
    .faq-image-accordion-mobile {
        display: block;
    }

    /* Carousel container with scroll snap */
    .faq-image-accordion-mobile-carousel {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scroll-behavior: smooth;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .faq-image-accordion-mobile-carousel::-webkit-scrollbar {
        display: none;
    }

    /* Each card in carousel */
    .faq-image-accordion-mobile-card {
        flex: 0 0 100%;
        scroll-snap-align: start;
        padding: 0 1rem;
        box-sizing: border-box;
    }

    .faq-image-accordion-mobile-card-inner {
        background: white;
        border-radius: var(--bulma-card-radius, 0.25rem);
        overflow: hidden;
        box-shadow: var(--bulma-card-shadow, 0 0.5em 1em -0.125em rgba(10,10,10,.1));
    }

    /* Card image */
    .faq-image-accordion-mobile-image {
        width: 100%;
        aspect-ratio: 4/3;
        object-fit: cover;
    }

    /* Card content */
    .faq-image-accordion-mobile-content {
        padding: 1.5rem;
    }

    .faq-image-accordion-mobile-content .faq-image-accordion-item-title {
        margin-bottom: 0.75rem !important;
    }

    /* Pagination dots */
    .faq-image-accordion-dots {
        display: flex;
        justify-content: center;
        gap: 0.5rem;
        padding: 1rem 0;
    }

    .faq-image-accordion-dot {
        width: 10px;
        height: 10px;
        border-radius: 50%;
        background: #ddd;
        border: none;
        padding: 0;
        cursor: pointer;
        transition: background 0.3s ease;
    }

    .faq-image-accordion-dot.is-active {
        background: #0a0a0a;
    }
}

/* Desktop: Hide mobile carousel */
@media screen and (min-width: 769px) {
    .faq-image-accordion-mobile {
        display: none;
    }
}

/* Editor styles */
.faq-image-accordion .faq-image-accordion-item-content-editor {
    padding: 1rem;
    background: rgba(0,0,0,0.05);
    margin-top: 0.5rem;
}

/* ==========================================================================
   Bulma Loop Explore Mode
   ========================================================================== */

.bulma-loop-explore-bar {
    margin-bottom: 2rem;
}

.bulma-loop-explore-bar-inner {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

/* Search wrapper */
.bulma-loop-search-wrapper {
    flex: 1;
    min-width: 250px;
    display: flex;
    align-items: center;
    gap: 1rem;
    position: relative;
}

.bulma-loop-search-icon {
    color: inherit;
    opacity: 0.6;
    position: absolute;
    left: 0;
    pointer-events: none;
}

.bulma-loop-search-input {
    flex: 1;
    width: 100%;
    border: none;
    background: transparent;
    font-size: 1.25rem;
    font-style: italic;
    outline: none;
    padding: 0.5rem 0;
    padding-left: 2rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.2);
    color: inherit;
}

.bulma-loop-search-input::placeholder {
    font-style: italic;
    opacity: 0.6;
    color: inherit;
}

.bulma-loop-search-input:focus {
    border-bottom-color: var(--bulma-link, currentColor);
}

/* Taxonomy filter dropdowns */
.bulma-loop-filters {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.bulma-loop-filter {
    min-width: 150px;
}

.bulma-loop-filter-select {
    width: 100%;
}

/* Mobile adjustments */
@media screen and (max-width: 768px) {
    .bulma-loop-explore-bar-inner {
        flex-direction: column;
        align-items: stretch;
    }

    .bulma-loop-search-wrapper {
        min-width: 100%;
    }

    .bulma-loop-filters {
        width: 100%;
    }

    .bulma-loop-filter {
        flex: 1;
        min-width: calc(50% - 0.5rem);
    }
}

/* ==========================================================================
   Bulma Posts Modal Styling
   ========================================================================== */

.bulma-posts-modal .modal-card {
    max-width: 900px;
    width: 90%;
    position: relative;
    border-radius: 8px;
    overflow: hidden;
}

.bulma-posts-modal .modal-close-btn {
    position: absolute;
    top: 1.5rem;
    right: 1.5rem;
    z-index: 10;
    background-color: transparent;
}

.bulma-posts-modal .modal-close-btn::before,
.bulma-posts-modal .modal-close-btn::after {
    background-color: #333;
}

.bulma-posts-modal .modal-card-body {
    padding: 3rem;
    background: #fff;
}

.bulma-posts-modal .modal-image {
    width: 180px;
    height: 180px;
    object-fit: cover;
    /* border-radius is set via inline style from PHP */
}

/* Shadow for modal image when enabled */
.bulma-posts-modal .modal-image.has-shadow {
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}


.bulma-posts-modal .modal-subtitle {
    color: #888;
    font-style: italic;
    margin-bottom: 1.5rem;
    font-size: 1.1rem;
}

.bulma-posts-modal .modal-content {
    max-height: 300px;
    overflow-y: auto;
}

.bulma-posts-modal .modal-content p {
    margin-bottom: 1em;
}

.bulma-posts-modal .columns.is-gapless {
    --bulma-modal-content-width: auto;
}

/* Mobile adjustments for modal - full screen */
@media screen and (max-width: 768px) {
    .bulma-posts-modal {
        width: 100vw;
        max-width: 100vw;
        overflow: hidden;
    }

    .bulma-posts-modal .modal-card {
        width: 100vw;
        height: 100vh;
        max-width: 100vw;
        max-height: 100vh;
        border-radius: 0;
        margin: 0;
    }

    .bulma-posts-modal .modal-card-body {
        padding: 1.5rem;
        height: 100%;
        display: flex;
        flex-direction: column;
    }

    .bulma-posts-modal .modal-card-body > .columns {
        flex-direction: column;
        flex: 1;
        min-height: 0;
    }

    .bulma-posts-modal .modal-card-body > .columns > .column.is-3 {
        flex: 0 0 auto;
        text-align: center;
        padding-right: 0;
        margin-bottom: 1rem;
    }

    .bulma-posts-modal .modal-card-body > .columns > .column:last-child {
        flex: 1;
        min-height: 0;
        display: flex;
        flex-direction: column;
        padding-left: 0;
    }

    .bulma-posts-modal .modal-image {
        width: 100px;
        height: 100px;
    }

    .bulma-posts-modal .modal-title,
    .bulma-posts-modal .modal-subtitle {
        text-align: center;
    }

    .bulma-posts-modal .modal-content {
        margin: 0;
        flex: 1;
        max-height: none;
        overflow-y: auto;
        text-align: left;
    }

    .bulma-posts-modal .modal-close-btn {
        top: 0.75rem;
        right: 0.75rem;
    }
}

/* ===================================
 * SOCIAL ICONS
 * ===================================*/

/* Remove borders from social icon buttons */
.social-icons .button {
    border: none !important;
}

/* Bulma's .icon sizing only sets width/height on container.
   FA icons scale by font-size, so we need to set it explicitly. */
.social-icons .icon.is-small i {
    font-size: var(--bulma-icon-dimensions-small);
}
.social-icons .icon.is-medium i {
    font-size: var(--bulma-icon-dimensions-medium);
}
.social-icons .icon.is-large i {
    font-size: var(--bulma-icon-dimensions-large);
}
.expanded-menu-modal .social-icons .icon.is-large i {
    font-size: 2rem;
}

/* Hide admin bar items that overflow on mobile */
@media screen and (max-width: 768px) {
    #wp-admin-bar-wpseo-menu,
    #wp-admin-bar-duplicate-post,
    #wp-admin-bar-gform-forms,
    #wp-admin-bar-customize {
        display: none !important;
    }
}
