/* Deferred section painting creates paint containment even with overflow:
 * visible. An embedded viewport surface must be allowed to paint past its
 * constrained host. Keep the optimisation on ordinary later sections. */
.calculus-content-builder > .cb-section[data-cb-defer-render="true"]:has(.cb-widget--cms_block .cb-section--full_bleed),
.calculus-content-builder > .cb-section[data-cb-defer-render="true"]:has(.cb-cms-block--full_bleed) {
    content-visibility: visible;
    contain-intrinsic-size: none;
}

.calculus-content-builder .cb-cms-block {
    box-sizing: border-box;
    min-inline-size: 0;
}

.calculus-content-builder .cb-cms-block--constrained {
    max-inline-size: var(--cb-cms-content-width, 100%);
    margin-inline: auto;
}

.calculus-content-builder .cb-cms-block--full_width,
.calculus-content-builder .cb-cms-block--full_bleed {
    inline-size: 100%;
    max-inline-size: 100%;
}

@supports (inline-size: 100vi) and selector(html:has(*)) {
    .calculus-content-builder .cb-cms-block--full_bleed {
        inline-size: 100vi;
        max-inline-size: 100vi;
        margin-inline: calc(50% - 50vi);
    }
    html:has(.cb-cms-block--full_bleed) { overflow-x: clip; }
}

/* The placement owns the outer width when it has an explicit mode. Prevent
 * the block's section from performing a second viewport breakout. */
.calculus-content-builder .cb-cms-block:not(.cb-cms-block--inherit) > .calculus-content-builder > .cb-section {
    inline-size: 100% !important;
    max-inline-size: 100% !important;
    margin-inline: 0 !important;
}

.calculus-content-builder .cb-cms-block[data-cb-cms-content-width] > .calculus-content-builder > .cb-section > .cb-section__inner {
    max-width: var(--cb-cms-content-width) !important;
}

.calculus-content-builder .cb-cms-block[data-cb-cms-content-padding] > .calculus-content-builder > .cb-section > .cb-section__inner {
    padding-inline: var(--cb-cms-content-padding) !important;
}

@media (max-width: 640px) {
    .calculus-content-builder .cb-cms-block--full_bleed {
        inline-size: 100%;
        max-inline-size: 100%;
        margin-inline: 0;
    }
}
