/*
 * PageBuilder contract layer.
 * Loaded after theme CSS so editor settings render the same in the builder and public pages.
 * Themes should style ce-* visuals; this file protects sizing, placement, and settings.
 */

.cb-page-stage,
.cb-public-stage{
    display:flex!important;
    flex-wrap:wrap!important;
    align-items:stretch!important;
    align-content:flex-start!important;
    gap:0!important;
    width:100%!important;
    box-sizing:border-box!important;
}

.cb-block,
.cb-public-block{
    box-sizing:border-box!important;
    min-width:160px!important;
    max-width:100%!important;
    container-name:ce-block!important;
    container-type:inline-size!important;
}

.cb-block[data-ce-width="25"],
.cb-public-block[data-ce-width="25"]{
    width:25%!important;
    flex:0 0 25%!important;
    max-width:25%!important;
}

.cb-block[data-ce-width="33"],
.cb-public-block[data-ce-width="33"]{
    width:33.333%!important;
    flex:0 0 33.333%!important;
    max-width:33.333%!important;
}

.cb-block[data-ce-width="50"],
.cb-public-block[data-ce-width="50"]{
    width:50%!important;
    flex:0 0 50%!important;
    max-width:50%!important;
}

.cb-block[data-ce-width="66"],
.cb-public-block[data-ce-width="66"]{
    width:66.666%!important;
    flex:0 0 66.666%!important;
    max-width:66.666%!important;
}

.cb-block[data-ce-width="75"],
.cb-public-block[data-ce-width="75"]{
    width:75%!important;
    flex:0 0 75%!important;
    max-width:75%!important;
}

.cb-block[data-ce-width="100"],
.cb-public-block[data-ce-width="100"],
.cb-block:not([data-ce-width]),
.cb-public-block:not([data-ce-width]){
    width:100%!important;
    flex:0 0 100%!important;
    max-width:100%!important;
}

.cb-block[data-ce-width="Auto"],
.cb-public-block[data-ce-width="Auto"]{
    width:auto!important;
    flex:0 1 auto!important;
    max-width:100%!important;
}

.cb-block[data-ce-align-self="stretch"],
.cb-public-block[data-ce-align-self="stretch"]{align-self:stretch!important}

.cb-block[data-ce-align-self="flex-start"],
.cb-public-block[data-ce-align-self="flex-start"]{align-self:flex-start!important}

.cb-block[data-ce-align-self="center"],
.cb-public-block[data-ce-align-self="center"]{align-self:center!important}

.cb-block[data-ce-align-self="flex-end"],
.cb-public-block[data-ce-align-self="flex-end"]{align-self:flex-end!important}

.cb-block:has(.ce-free-canvas),
.cb-public-block:has(.ce-free-canvas){
    width:100%!important;
    flex:0 0 100%!important;
    max-width:100%!important;
    align-self:stretch!important;
}

.cb-block>.cb-render,
.cb-public-block>.cb-render{
    height:100%!important;
}

.cb-render.ce-block{
    box-sizing:border-box!important;
    padding:var(--ce-block-padding-y,64px) var(--ce-block-padding-x,60px)!important;
    min-height:var(--ce-block-min-height)!important;
    border-radius:var(--ce-block-radius)!important;
    color:var(--ce-block-text-color)!important;
    background:var(--ce-block-bg-color)!important;
    font-family:var(--ce-block-font-family)!important;
    font-size:var(--ce-block-font-size)!important;
}

.cb-render.ce-block,
.cb-render.ce-block *,
.ce-block-card,
.ce-card,
.ce-service-card,
.ce-faq-item,
.cb-col{
    min-width:0!important;
}

.cb-render.ce-block img,
.cb-render.ce-block video,
.cb-render.ce-block iframe{
    max-width:100%!important;
}

.ce-block-title,
.ce-card-title,
.ce-post-card-title,
.ce-service-title,
.ce-column-title,
.ce-faq-question,
.ce-block-text,
.ce-post-card-excerpt,
.ce-service-text,
.ce-column-text,
.ce-faq-answer{
    max-width:100%!important;
    overflow-wrap:break-word!important;
}

.ce-block-inner{
    box-sizing:border-box!important;
    max-width:var(--ce-block-max-width,none)!important;
    margin-left:auto!important;
    margin-right:auto!important;
    gap:var(--ce-token-gap,24px)!important;
}

.ce-block.is-left{text-align:left!important}
.ce-block.is-center{text-align:center!important}
.ce-block.is-right{text-align:right!important}

.ce-block.is-left .ce-block-actions,
.ce-block.is-left .ce-cta-actions,
.ce-block.is-left .ce-stack-actions,
.ce-block.is-left .ce-button-wrap{justify-content:flex-start!important}

.ce-block.is-center .ce-block-actions,
.ce-block.is-center .ce-cta-actions,
.ce-block.is-center .ce-stack-actions,
.ce-block.is-center .ce-button-wrap{justify-content:center!important}

.ce-block.is-right .ce-block-actions,
.ce-block.is-right .ce-cta-actions,
.ce-block.is-right .ce-stack-actions,
.ce-block.is-right .ce-button-wrap{justify-content:flex-end!important}

.ce-block.is-left .ce-post-feed-header,
.ce-block.is-left .ce-block-header{justify-content:flex-start!important}

.ce-block.is-center .ce-post-feed-header,
.ce-block.is-center .ce-block-header{justify-content:center!important;text-align:center!important}

.ce-block.is-right .ce-post-feed-header,
.ce-block.is-right .ce-block-header{justify-content:flex-end!important;text-align:right!important}

.ce-block.is-left .ce-post-feed-grid{text-align:left!important}
.ce-block.is-center .ce-post-feed-grid{text-align:center!important}
.ce-block.is-right .ce-post-feed-grid{text-align:right!important}

.cb-button.is-left>.ce-block-inner{display:flex!important;justify-content:flex-start!important}
.cb-button.is-center>.ce-block-inner{display:flex!important;justify-content:center!important}
.cb-button.is-right>.ce-block-inner{display:flex!important;justify-content:flex-end!important}

.ce-columns,
.ce-services-grid,
.ce-faq-list,
.ce-post-feed-grid,
.ce-block-grid,
.ce-block-list,
.ce-block-actions{
    gap:var(--ce-token-gap,24px)!important;
}

.ce-orient-row>.ce-block-inner,
.ce-orient-row-reverse>.ce-block-inner{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    align-items:center!important;
}

.ce-orient-row-reverse .ce-block-media,
.ce-orient-row-reverse .cb-hero-media,
.ce-orient-row-reverse .cb-image-text-media,
.ce-orient-row-reverse .ce-hero-media,
.ce-orient-row-reverse .ce-image-text-media{
    order:-1!important;
}

.ce-orient-stack>.ce-block-inner,
.ce-orient-stack.ce-block-columns .ce-columns,
.ce-orient-stack .ce-columns,
.ce-orient-stack.ce-block-services .ce-services-grid,
.ce-orient-stack .ce-services-grid,
.ce-orient-stack.ce-block-faq .ce-faq-list,
.ce-orient-stack .ce-faq-list,
.ce-orient-stack.ce-block-posts-feed .ce-post-feed-grid,
.ce-orient-stack .ce-post-feed-grid{
    display:grid!important;
    grid-template-columns:1fr!important;
}

.ce-orient-row.ce-block-posts-feed .ce-post-feed-grid,
.ce-orient-row-reverse.ce-block-posts-feed .ce-post-feed-grid,
.ce-orient-row.ce-block-services .ce-services-grid,
.ce-orient-row-reverse.ce-block-services .ce-services-grid,
.ce-orient-row.ce-block-columns .ce-columns,
.ce-orient-row-reverse.ce-block-columns .ce-columns{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
}

.cb-block[data-ce-width="25"] .ce-orient-row>.ce-block-inner,
.cb-block[data-ce-width="25"] .ce-orient-row-reverse>.ce-block-inner,
.cb-block[data-ce-width="33"] .ce-orient-row>.ce-block-inner,
.cb-block[data-ce-width="33"] .ce-orient-row-reverse>.ce-block-inner,
.cb-block[data-ce-width="50"] .ce-orient-row>.ce-block-inner,
.cb-block[data-ce-width="50"] .ce-orient-row-reverse>.ce-block-inner,
.cb-public-block[data-ce-width="25"] .ce-orient-row>.ce-block-inner,
.cb-public-block[data-ce-width="25"] .ce-orient-row-reverse>.ce-block-inner,
.cb-public-block[data-ce-width="33"] .ce-orient-row>.ce-block-inner,
.cb-public-block[data-ce-width="33"] .ce-orient-row-reverse>.ce-block-inner,
.cb-public-block[data-ce-width="50"] .ce-orient-row>.ce-block-inner,
.cb-public-block[data-ce-width="50"] .ce-orient-row-reverse>.ce-block-inner{
    grid-template-columns:1fr!important;
}

.cb-block[data-ce-width="25"] .ce-post-feed-grid,
.cb-block[data-ce-width="25"] .ce-services-grid,
.cb-block[data-ce-width="25"] .ce-columns,
.cb-block[data-ce-width="25"] .ce-block-grid,
.cb-block[data-ce-width="33"] .ce-post-feed-grid,
.cb-block[data-ce-width="33"] .ce-services-grid,
.cb-block[data-ce-width="33"] .ce-columns,
.cb-block[data-ce-width="33"] .ce-block-grid,
.cb-block[data-ce-width="50"] .ce-post-feed-grid,
.cb-block[data-ce-width="50"] .ce-services-grid,
.cb-block[data-ce-width="50"] .ce-columns,
.cb-block[data-ce-width="50"] .ce-block-grid,
.cb-public-block[data-ce-width="25"] .ce-post-feed-grid,
.cb-public-block[data-ce-width="25"] .ce-services-grid,
.cb-public-block[data-ce-width="25"] .ce-columns,
.cb-public-block[data-ce-width="25"] .ce-block-grid,
.cb-public-block[data-ce-width="33"] .ce-post-feed-grid,
.cb-public-block[data-ce-width="33"] .ce-services-grid,
.cb-public-block[data-ce-width="33"] .ce-columns,
.cb-public-block[data-ce-width="33"] .ce-block-grid,
.cb-public-block[data-ce-width="50"] .ce-post-feed-grid,
.cb-public-block[data-ce-width="50"] .ce-services-grid,
.cb-public-block[data-ce-width="50"] .ce-columns,
.cb-public-block[data-ce-width="50"] .ce-block-grid{
    grid-template-columns:1fr!important;
}

.cb-block[data-ce-width="66"] .ce-post-feed-grid,
.cb-block[data-ce-width="66"] .ce-services-grid,
.cb-block[data-ce-width="66"] .ce-block-grid,
.cb-block[data-ce-width="75"] .ce-post-feed-grid,
.cb-block[data-ce-width="75"] .ce-services-grid,
.cb-block[data-ce-width="75"] .ce-block-grid,
.cb-public-block[data-ce-width="66"] .ce-post-feed-grid,
.cb-public-block[data-ce-width="66"] .ce-services-grid,
.cb-public-block[data-ce-width="66"] .ce-block-grid,
.cb-public-block[data-ce-width="75"] .ce-post-feed-grid,
.cb-public-block[data-ce-width="75"] .ce-services-grid,
.cb-public-block[data-ce-width="75"] .ce-block-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
}

.cb-block[data-ce-width="25"]>.cb-render.ce-block,
.cb-public-block[data-ce-width="25"]>.cb-render.ce-block{
    padding:min(var(--ce-block-padding-y,64px),44px) min(var(--ce-block-padding-x,60px),22px)!important;
}

.cb-block[data-ce-width="33"]>.cb-render.ce-block,
.cb-public-block[data-ce-width="33"]>.cb-render.ce-block{
    padding:min(var(--ce-block-padding-y,64px),50px) min(var(--ce-block-padding-x,60px),28px)!important;
}

.cb-block[data-ce-width="50"]>.cb-render.ce-block,
.cb-public-block[data-ce-width="50"]>.cb-render.ce-block{
    padding:min(var(--ce-block-padding-y,64px),58px) min(var(--ce-block-padding-x,60px),36px)!important;
}

@container ce-block (max-width: 900px){
    .ce-orient-row>.ce-block-inner,
    .ce-orient-row-reverse>.ce-block-inner{
        grid-template-columns:1fr!important;
    }

    .ce-post-feed-grid,
    .ce-services-grid,
    .ce-columns,
    .ce-block-grid{
        grid-template-columns:1fr!important;
    }

    .cb-render.ce-block{
        padding:min(var(--ce-block-padding-y,64px),52px) min(var(--ce-block-padding-x,60px),32px)!important;
    }

    .ce-post-feed-header,
    .ce-block-header{
        flex-wrap:wrap!important;
    }
}

@container ce-block (min-width: 901px) and (max-width: 1180px){
    .ce-post-feed-grid,
    .ce-services-grid,
    .ce-block-grid{
        grid-template-columns:repeat(2,minmax(0,1fr))!important;
    }
}

.ce-post-button-left .ce-post-card-link{
    align-self:flex-start!important;
    width:auto!important;
}

.ce-post-button-center .ce-post-card-link{
    align-self:center!important;
    width:auto!important;
}

.ce-post-button-right .ce-post-card-link{
    align-self:flex-end!important;
    width:auto!important;
}

.ce-post-button-stretch .ce-post-card-link{
    align-self:stretch!important;
    width:100%!important;
    text-align:center!important;
}

.ce-post-button-stretch .ce-post-public-actions{
    width:100%!important;
}

.ce-space-compact{--ce-token-gap:14px}
.ce-space-comfortable{--ce-token-gap:28px}
.ce-space-spacious{--ce-token-gap:40px}

@media(max-width:980px){
    .cb-page-stage,
    .cb-public-stage{
        display:block!important;
    }

    .cb-block,
    .cb-public-block,
    .cb-block[data-ce-width],
    .cb-public-block[data-ce-width]{
        width:100%!important;
        flex:0 0 100%!important;
        max-width:100%!important;
    }

    .ce-orient-row>.ce-block-inner,
    .ce-orient-row-reverse>.ce-block-inner{
        grid-template-columns:1fr!important;
    }

    .ce-orient-row-reverse .ce-block-media,
    .ce-orient-row-reverse .cb-hero-media,
    .ce-orient-row-reverse .cb-image-text-media,
    .ce-orient-row-reverse .ce-hero-media,
    .ce-orient-row-reverse .ce-image-text-media{
        order:initial!important;
    }

    .ce-orient-row.ce-block-posts-feed .ce-post-feed-grid,
    .ce-orient-row-reverse.ce-block-posts-feed .ce-post-feed-grid,
    .ce-orient-row.ce-block-services .ce-services-grid,
    .ce-orient-row-reverse.ce-block-services .ce-services-grid,
    .ce-orient-row.ce-block-columns .ce-columns,
    .ce-orient-row-reverse.ce-block-columns .ce-columns,
    .ce-post-feed-grid{
        grid-template-columns:1fr!important;
    }
}
