/* RC9 interior composition: one reading lane and one component lane.
 * Ordinary page content and the native editor share these rules. Scope stops at
 * authored layouts; Home, news templates and named platform components retain
 * their existing contracts. No text, attachment or stored block is changed.
 */
:where(.page-entry:not(.page-entry--home)) .entry-content--interior,
.editor-styles-wrapper {
  --bwcet-reading-lane: 48rem;
  --bwcet-component-lane: 78rem;
  --bwcet-composition-gap: clamp(1.5rem, 3vw, 2.5rem);
}

/* Core layouts are components even when an editor has not selected Wide.
 * Inline width/max-width and explicit full alignment retain normal precedence.
 * The structural Group marker excludes custom layout sizing and named systems.
 */
:where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(.wp-block-columns, .wp-block-media-text, .wp-block-gallery, .wp-block-cover, .wp-block-image, .wp-block-video, .wp-block-embed, .wp-block-group.is-layout-grid, .bwcet-interior-composition):not(:where(.alignfull, .alignleft, .alignright, .is-style-person-card, .bwcet-section, .bwcet-hero, .bwcet-hero-v1)) {
  width: min(calc(100% - var(--bwcet-gutter) * 2), var(--bwcet-component-lane));
  max-width: var(--bwcet-component-lane);
  margin-inline: auto;
  clear: both;
}
.editor-styles-wrapper .is-root-container > :is(.wp-block-columns, .wp-block-media-text, .wp-block-gallery, .wp-block-cover, .wp-block-image, .wp-block-video, .wp-block-embed, .wp-block-group.is-layout-grid, .bwcet-interior-composition):not(:where(.alignfull, [data-align="full"], .alignleft, .alignright, [data-align="left"], [data-align="right"], .is-style-person-card, .bwcet-section, .bwcet-hero, .bwcet-hero-v1)) {
  width: 100%;
  max-width: var(--bwcet-component-lane);
  margin-inline: auto;
}

/* Unstyled flow Groups can carry prose and wider components together. Core
 * constrained layouts already do this in their own CSS; these rules supply the
 * same geometry to older default Groups without unwrapping or rebuilding them.
 * Custom contentSize/wideSize, flex/grid Groups and unknown classes are excluded
 * by the marker predicate. Native inline dimensions and margins still win.
 */
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) .bwcet-interior-composition {
  --wp--style--global--content-size: var(--bwcet-reading-lane);
  --wp--style--global--wide-size: var(--bwcet-component-lane);
  display: flow-root;
}
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.bwcet-interior-composition, .bwcet-interior-composition > .wp-block-group__inner-container) > :where(p, h1, h2, h3, h4, h5, h6, ul, ol, blockquote, pre, .wp-block-buttons, .wp-block-button, .wp-block-file, .wp-block-details, .wp-block-separator, .wp-block-group:not(.bwcet-interior-composition):not(.is-layout-grid)):not(:where(.alignwide, .alignfull, .alignleft, .alignright)) {
  max-width: min(100%, var(--bwcet-reading-lane));
  margin-inline: auto;
}
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.bwcet-interior-composition, .bwcet-interior-composition > .wp-block-group__inner-container) > :is(.wp-block-columns, .wp-block-media-text, .wp-block-gallery, .wp-block-cover, .wp-block-image, .wp-block-video, .wp-block-embed, .wp-block-group.is-layout-grid, .bwcet-interior-composition):not(:where(.alignfull, .alignleft, .alignright, .is-style-person-card)) {
  max-width: 100%;
  margin-inline: auto;
  clear: both;
}

/* A heading immediately labelling a component belongs to that component lane.
 * This is block adjacency, not a guess about the heading's words. Prose before
 * and after it keeps the reading measure. A heading with intervening prose
 * remains part of that prose until its editor chooses a different alignment.
 */
:where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(h2, h3):has(+ :is(.wp-block-columns, .wp-block-group.is-layout-grid, .bwcet-interior-composition)):not(.alignfull) {
  width: min(calc(100% - var(--bwcet-gutter) * 2), var(--bwcet-component-lane));
  max-width: var(--bwcet-component-lane);
  margin-inline: auto;
}
.editor-styles-wrapper .is-root-container > :is(h2, h3):has(+ :is(.wp-block-columns, .wp-block-group.is-layout-grid, .bwcet-interior-composition)):not(:where(.alignfull, [data-align="full"])) { width: 100%; max-width: var(--bwcet-component-lane); margin-inline: auto; }
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.bwcet-interior-composition, .bwcet-interior-composition > .wp-block-group__inner-container) > :is(h2, h3):has(+ :is(.wp-block-columns, .wp-block-group.is-layout-grid, .bwcet-interior-composition)) { max-width: 100%; }

/* Constrain intrinsic sizes without changing chosen column fractions, grid
 * spans, inline gaps, Cover focal points, or Media & Text's image placement.
 */
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.wp-block-column, .wp-block-media-text__content, .wp-block-group.is-layout-grid > *) { min-width: 0; }
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) .bwcet-interior-composition > :is(.wp-block-columns, .wp-block-media-text, .wp-block-gallery, .wp-block-cover, .wp-block-group.is-layout-grid) { margin-block: 2rem 2.75rem; }
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) .bwcet-interior-composition > :first-child { margin-block-start: 0; }
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) .bwcet-interior-composition > :last-child { margin-block-end: 0; }

/* Floated native Images sit at the edge of the associated reading lane rather
 * than the viewport. Following paragraphs wrap naturally. Each Group contains
 * its floats; the next heading or component starts a new section below them.
 */
:where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(.wp-block-image, .wp-caption, img):is(.alignleft, .alignright) {
  width: auto;
  max-width: min(40%, 20rem);
  margin-block: .35rem 1.5rem;
}
:where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(.wp-block-image, .wp-caption, img).alignleft {
  float: left;
  margin-inline: max(var(--bwcet-gutter), calc((100% - var(--bwcet-reading-lane)) / 2)) 1.75rem;
}
:where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(.wp-block-image, .wp-caption, img).alignright {
  float: right;
  margin-inline: 1.75rem max(var(--bwcet-gutter), calc((100% - var(--bwcet-reading-lane)) / 2));
}
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) .wp-block-group:not(:where(.is-layout-flex, .is-layout-grid, .bwcet-section, .bwcet-section *, .bwcet-hero-v1, .bwcet-hero-v1 *)):has(> :is(.alignleft, .alignright)) { display: flow-root; }
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.bwcet-interior-composition, .bwcet-interior-composition > .wp-block-group__inner-container) > :is(.wp-block-image, .wp-caption, img):is(.alignleft, .alignright) {
  width: auto;
  max-width: min(40%, 20rem);
  margin-block: .35rem 1.5rem;
}
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.bwcet-interior-composition, .bwcet-interior-composition > .wp-block-group__inner-container) > :is(.wp-block-image, .wp-caption, img).alignleft { margin-inline: max(0px, calc((100% - var(--bwcet-reading-lane)) / 2)) 1.75rem; }
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.bwcet-interior-composition, .bwcet-interior-composition > .wp-block-group__inner-container) > :is(.wp-block-image, .wp-caption, img).alignright { margin-inline: 1.75rem max(0px, calc((100% - var(--bwcet-reading-lane)) / 2)); }
:where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(h1, h2, h3, h4, h5, h6),
:where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) .bwcet-interior-composition > :is(h1, h2, h3, h4, h5, h6) { clear: both; }

@media (max-width: 600px) {
  :where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(.wp-block-image, .wp-caption, img):is(.alignleft, .alignright) {
    float: none;
    width: fit-content;
    max-width: calc(100% - var(--bwcet-gutter) * 2);
    margin: 1.5rem auto;
  }
  :where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.wp-block-image, .wp-caption, img):is(.alignleft, .alignright) {
    float: none;
    max-width: 100%;
    margin: 1.5rem auto;
  }
  :where(.page-entry:not(.page-entry--home) .entry-content--interior, .editor-styles-wrapper) :is(.bwcet-interior-composition, .bwcet-interior-composition > .wp-block-group__inner-container) > :is(.wp-block-image, .wp-caption, img):is(.alignleft, .alignright) { float: none; max-width: 100%; margin: 1.5rem auto; }
}
@media print {
  :where(.page-entry:not(.page-entry--home)) .entry-content--interior > :is(.wp-block-image, .wp-caption, img):is(.alignleft, .alignright) { float: none; max-width: 100%; margin-inline: 0; }
}
