
/* A catalogue photo drawn as a cutout (utils/trim.ts). The box it sits in is a
   size container, so the trimmed photo can scale to fit either axis. Callers
   position the outer box and may set --ka-fit (share of the height to fill). */
/* Centred, not top-aligned.
   Top alignment suited a grid of garments cut from their own photographs: every
   shirt hung from the same line. It does not suit a mixed catalogue — a shoe is
   half as tall as a tee, so cropped and pinned to the top it left an obvious
   hole beneath it.
   It also has to match where this is heading. A processed image is centred in
   its own canvas, so an unprocessed one pinned to the top sits differently from
   a processed one in the same row, and the catalogue is converted product by
   product. Centring both makes the transition invisible. */
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut { container-type: size; display: flex; justify-content: center; align-items: center; }
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut-in, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut-in { flex: none; width: 100%; height: 100%; max-height: 100%; background-repeat: no-repeat; background-size: contain; background-position: center; mix-blend-mode: multiply; }
/* A finished cut is drawn opaque, like the design's PNGs: the garment covers
   the brand title behind it instead of letting it show through. */
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut-in.is-cut, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut-in.is-cut { height: auto; background-size: 100% 100%; mix-blend-mode: normal; }
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut-in, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut-in { transition: opacity .2s ease-out; }
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut-in.is-pending, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut-in.is-pending { opacity: 0; }
/* A shot with no white ground: cover its box instead of cutting. */
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut.is-bleed .ka-cut-in, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut.is-bleed .ka-cut-in { background-size: cover; background-position: center; mix-blend-mode: normal; }

/* The skeleton is garment-shaped rather than frame-filling: a full-box block
   read as a grey card, which is exactly what the cutout exists to avoid. */
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut-skel, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut-skel { position: absolute; left: 18%; right: 18%; top: 12%; bottom: 12%; border-radius: 18px; }

/* ─── Drawn as-is ─────────────────────────────────────────────
 * The photo arrives already cut and composed to a fixed share of its canvas, so
 * it is shown whole and centred: contain, not cover, or the normalised margin
 * would be cropped straight back off.
 *
 * mix-blend-mode is explicitly normal. The base rule multiplies, which existed
 * to sink a white studio backdrop into the page — with real transparency there
 * is no backdrop, and multiplying would darken the product and swallow white
 * garments into the paper.
 *
 * Last in the file so it beats the base .ka-cut-in rule at equal specificity.
 */
.cc_pfQKlERh3P_ZklZT4T7lv .ka-cut-in.is-plain, .cc_pfQKlERh3P_APfMi3FPHZ .ka-cut-in.is-plain {
  height: 100%;
  background-size: contain;
  background-position: center;
  mix-blend-mode: normal;
  opacity: 1;
}
