/* BJC Smart Studio — Frame Media control layer.
 *
 * 0.16.66: only Media Size / Width is reconnected.
 * The proven 0.16.66 frame remains shrink-wrapped; this control limits the
 * maximum width available to that frame/media pair. All other Frame Media
 * controls remain dormant.
 */

.bjc-studio-frame-design .bjc-frame-baseline-box {
    max-width: 100%;
}

.bjc-studio-frame-design .bjc-frame-baseline-media,
.bjc-studio-frame-design .bjc-frame-baseline-media > img,
.bjc-studio-frame-design .bjc-frame-baseline-media > video,
.bjc-studio-frame-design .bjc-frame-baseline-media > iframe {
    max-width: 100%;
}

/* 0.16.66 — Media Container Shape reconnect.
 * Shape geometry belongs to the selected shape module. This file only supplies
 * the split-Frame media contract required by every non-natural shape. */
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media {
    overflow: hidden;
}
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media > img,
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media > video {
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;

    object-fit: var(--bjc-frame-media-fit, cover);

    object-position: var(--bjc-frame-media-focus, 50% 50%);
}

/* 0.16.66 — Embedded/shortcode media inside Frame shapes.
 * Shortcode players render wrapper markup rather than a direct media element.
 * Centre that rendered block inside the isolated Frame media viewport. */
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media {
    display: flex;
    align-items: center;
    justify-content: center;
}
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media > :not(img):not(video) {
    width: 100%;
    max-width: 100%;
    margin: auto;
}
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media > :not(img):not(video) iframe,
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media > :not(img):not(video) video {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: auto;
    object-fit: var(--bjc-frame-media-fit, cover);

    object-position: var(--bjc-frame-media-focus, 50% 50%);
}

/* 0.16.66 — Cover / Contain for wrapped shortcode media.
 * The dedicated Frame script calculates the scale required because object-fit
 * cannot size arbitrary shortcode/plugin HTML. */
.bjc-studio-frame-design:not(.bjc-studio-shape-natural) .bjc-frame-baseline-media > .bjc-studio-shortcode-embed {
    transform-origin: center center;
}


/* 0.16.66 — Frame-only Rich Text media contract.
 * Rich text is content, not image/video geometry: restore normal text flow
 * inside the already isolated Frame media container. */
.bjc-studio-frame-design .bjc-frame-baseline-media > .bjc-studio-frame-rich-text {
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0;
    line-height: normal;
    white-space: normal;
    overflow-wrap: anywhere;
}
.bjc-studio-frame-design .bjc-studio-frame-rich-text > :first-child { margin-top: 0; }
.bjc-studio-frame-design .bjc-studio-frame-rich-text > :last-child { margin-bottom: 0; }

/* 0.16.69: background image behind Frame Rich Text uses existing fit/focus. */
.bjc-studio-frame-design .bjc-frame-baseline-media.bjc-frame-rich-text-background {
    background-repeat: no-repeat;
    background-size: var(--bjc-frame-media-fit, cover);
    background-position: var(--bjc-frame-media-focus, 50% 50%);
}
