/* Product pixels must composite normally; glass belongs to the surroundings.
   Load after the storefront styles. Important is intentionally limited to the
   product layers: it also survives the product island's lazy-loaded stylesheet.
   Original photo backgrounds remain intact. Do not replace this with white-key
   filters, contrast/brightness tricks or a different product's silhouette. */
:is(
  .product-card,
  .product-image-link,
  .model-visual,
  .model-object,
  .scene-aircraft,
  .scene-object,
  .detail-visual,
  .cart-image,
  .cmp-option-photo,
  .cmp-table-photo,
  .calc-pick-image,
  .hero-product,
  .home-airspace,
  .home-aircraft,
  .drone-visual,
  .category-product,
  .fv-scene-poster,
  .fv-model-host,
  .fv-scene-canvas,
  .fv-native-power-canvas
) {
  mix-blend-mode: normal !important;
  opacity: 1 !important;
}

:is(
  .product-image-link,
  .model-object,
  .scene-aircraft,
  .scene-object,
  .detail-visual,
  .cart-image,
  .compare-table,
  .cmp-option-photo,
  .cmp-table-photo,
  .calc-pick-image,
  .hero-product,
  .category-product
) img,
.power-silhouette,
.aircraft-image,
.category-product--dji > svg,
.fv-scene-poster {
  mix-blend-mode: normal !important;
  opacity: 1 !important;
}

/* The hover glint stays on the glass behind the equipment, never across the
   airframe/body. Keep the photograph's controls above its foreground layer. */
.product-card > .product-image-link {
  position: relative;
  z-index: 3;
}
.product-card > .product-kicker,
.product-card > .compare-toggle {
  z-index: 4;
}

/* Reaching the comparison limit disables selection, not the appearance of the
   photographed equipment. Retain the disabled cue on the label and price. */
.cmp-option:has(input:disabled) {
  opacity: 1;
  border-style: dashed;
}
.cmp-option:has(input:disabled) .cmp-option-copy,
.cmp-option:has(input:disabled) > b {
  opacity: .55;
}

/* The fallback poster used to be globally faded to 72%. Keep its real colour
   during loading/error states, even after the React island CSS is appended. */
.fv-scene-poster {
  filter: none !important;
}

/* Preserve the resting/moving layer toggle; forcing both visible doubles the
   propellers. An instant switch avoids the semi-transparent airframe produced
   by overlapping opacity fades. Rotation and braking remain in mavic-rotors.js. */
.mavic-rotor-art .mavic-resting,
.mavic-rotor-art .mavic-moving {
  transition: none;
  mix-blend-mode: normal;
}
.mavic-rotor-art .mavic-propeller,
.mavic-rotor-art.rotors-running .mavic-propeller {
  filter: none;
}

/* Intentional drop shadows, model ground shadows, glows, glass backgrounds,
   SVG masks/clip paths and material transparency inside 3D scenes are retained.
   The PNG alpha channel is source content, not a CSS opacity correction. */

/* Source-preserving silhouettes in compact product previews. */
:is(.cart-image,.cmp-option-photo,.cmp-table-photo,.calc-pick-image) > svg {width:100%;height:100%;object-fit:contain;max-width:100%;max-height:100%;}
