/* kernfabrikat · reusable single-artwork slots
   Markup contract: .visual-asset > picture.visual-asset__picture > img.visual-asset__image
   Slot identity: data-visual-slot="hero-master|vision|problem".
   Each picture may later include mobile sources without changing page layout.
   See docs/VISUAL_SLOTS.md for asset dimensions, safe area and replacement steps. */
.design-foundation .visual-asset {
  --visual-art-width: 100%;
  --visual-ratio: 1;
  --visual-focus: 50% 50%;
  --visual-mask-x: 50%;
  --visual-mask-y: 50%;
  --visual-solid: 40%;
  --visual-mid: 62%;
  --visual-feather: 82%;
  --visual-glow: rgba(12,151,211,.16);
  --visual-saturation: .94;
  position: relative;
  isolation: isolate;
  inset: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  margin-inline: 0;
  z-index: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  pointer-events: none;
}
/* Ambient layer is separate from the artwork and has no rectangular boundary. */
.design-foundation .visual-asset::before {
  content: '';
  position: absolute;
  inset: 3% -3%;
  width: auto;
  height: auto;
  aspect-ratio: auto;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(ellipse 47% 45% at var(--visual-mask-x) var(--visual-mask-y), var(--visual-glow), transparent 100%);
  filter: none;
}
.design-foundation .visual-asset__picture {
  display: block;
  position: relative;
  flex: none;
  width: min(100%, var(--visual-art-width));
  height: auto;
  aspect-ratio: var(--visual-ratio);
  margin: 0;
  min-width: 0;
  max-width: 100%;
  /* The aspect-ratio reserves space while an asset is loading. */
}
.design-foundation .visual-asset__image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: var(--visual-ratio);
  object-fit: cover;
  object-position: var(--visual-focus);
  border: 0;
  border-radius: 0;
  background: transparent;
  filter: saturate(var(--visual-saturation));
  /* Apply mask to the actual image box, not a letterboxed parent: avoids
     visible inner image edges when aspect ratios change between slots. */
  -webkit-mask-image: radial-gradient(ellipse 50% 50% at var(--visual-mask-x) var(--visual-mask-y), #000 var(--visual-solid), rgba(0,0,0,.9) var(--visual-mid), rgba(0,0,0,.36) var(--visual-feather), transparent 100%);
  mask-image: radial-gradient(ellipse 50% 50% at var(--visual-mask-x) var(--visual-mask-y), #000 var(--visual-solid), rgba(0,0,0,.9) var(--visual-mid), rgba(0,0,0,.36) var(--visual-feather), transparent 100%);
}
/* Hero master: one replaceable image; a future composite stays one asset. */
.design-foundation .visual-asset--hero {
  --visual-ratio: 1.08;
  --visual-focus: 55% 42%;
  --visual-mask-x: 51%;
  --visual-mask-y: 49%;
  --visual-solid: 45%;
  --visual-mid: 66%;
  --visual-feather: 84%;
  --visual-glow: rgba(17,153,220,.23);
  --visual-saturation: .95;
  height: auto;
  aspect-ratio: var(--visual-ratio);
}
/* Paired section artwork: more image presence, identical stage dimensions.
   Grid, headings, body copy and page width remain controlled by the foundation. */
.design-foundation .foundation-perspective__visual.visual-asset {
  --visual-art-width: 420px;
  height: 420px;
  margin-block: 20px 22px;
}
.design-foundation .visual-asset--vision {
  --visual-glow: rgba(9,163,209,.19);
  --visual-solid: 47%;
  --visual-mid: 69%;
}
.design-foundation .visual-asset--problem {
  --visual-glow: rgba(22,119,187,.14);
  --visual-solid: 43%;
  --visual-mid: 65%;
  --visual-saturation: .87;
}
@media (max-width: 1450px) {
  .design-foundation .foundation-perspective__visual.visual-asset { --visual-art-width: 390px; height: 390px; }
}
@media (max-width: 1100px) {
  .design-foundation .foundation-perspective__visual.visual-asset { --visual-art-width: 350px; height: 350px; }
}
@media (max-width: 900px) {
  .design-foundation .visual-asset--hero { --visual-art-width: 610px; max-width: 610px; margin: 0 auto; }
  .design-foundation .foundation-perspective__visual.visual-asset { --visual-art-width: 300px; height: 300px; }
}
@media (max-width: 620px) {
  .design-foundation .visual-asset--hero {
    --visual-ratio: 1;
    --visual-focus: 52% 44%;
    --visual-solid: 44%;
    --visual-mid: 67%;
    margin-top: 0;
  }
  .design-foundation .foundation-perspective__visual.visual-asset {
    --visual-art-width: 320px;
    height: auto;
    min-height: 0;
    aspect-ratio: 1;
    margin-block: 18px 22px;
  }
  .design-foundation .foundation-perspective__visual .visual-asset__picture { width: min(100%, 320px); }
}
@media print {
  .design-foundation .visual-asset { display: none; }
}
