/* MoonTik — preview bubbles clip at the frame; mt_fit scales content to fill the bubble. */
.mt-fit-wrap {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  display: block;
  pointer-events: none;
}
.mt-fit-wrap > .mt-fit-inner,
.ov-cat-preview.mt-fit-wrap > .mt-fit-inner,
.ovlib-prev.mt-fit-wrap > .mt-fit-inner,
.mtbe-prev.mt-fit-wrap > .mt-fit-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform-origin: 0 0;
  pointer-events: auto;
}
/* A 1920×1080 iframe inside a 200px box must live on a 1920 layer, otherwise
   Chromium often fails to paint the translated slice (especially deviceScaleFactor ≠ 1). */
.mt-fit-wrap > .mt-fit-inner:has(iframe),
.ov-cat-preview.mt-fit-wrap > .mt-fit-inner:has(iframe),
.ovlib-prev.mt-fit-wrap > .mt-fit-inner:has(iframe),
.mtbe-prev.mt-fit-wrap > .mt-fit-inner:has(iframe) {
  position: absolute;
  left: 0;
  top: 0;
  width: 1920px;
  height: 1080px;
  will-change: transform;
  backface-visibility: hidden;
}
.ov-cat-preview iframe,
.ovlib-prev iframe,
.mtbe-prev iframe,
.ov-ifr-prev iframe {
  transform: translateZ(0);
  backface-visibility: hidden;
}
.ov-cat-preview.mt-fit-wrap,
.ovlib-prev.mt-fit-wrap,
.mtbe-prev.mt-fit-wrap,
#ovEdFrame.is-mt-fit,
.ov-cat-preview.is-mt-fit,
.ovlib-prev.is-mt-fit,
.cmf-preview.is-mt-fit,
[data-mt-fit].is-mt-fit {
  overflow: hidden;
}
.ovlib-prev, .ov-ifr-prev, .mtbe-prev { overflow: hidden; position: relative; width: 100%; height: 100%; }
#ovPersoLivePreview .mt-fit-wrap { pointer-events: none; }
#ovPersoLivePreview .mt-fit-wrap > .mt-fit-inner { pointer-events: auto; }

#ovEdFrame .mts-fit,
.ov-cat-preview .mts-fit,
.ovlib-prev .mts-fit,
.cmf-preview .mts-fit,
[data-mt-fit] .mts-fit {
  overflow: visible;
}
.cmf-ed.is-panning, .cmf-ed.is-panning * { cursor: grabbing; }
