/* Base styling for the <image-slot> wrapper rendered by components/_imageslot.jsx.
   The design's site.css targets the `image-slot` element directly in a handful of
   places (sizing, radius, aspect); rendering a real <image-slot> wrapper around a
   plain <img> keeps every one of those selectors matching. */
image-slot {
  display: block;
  position: relative;
  overflow: hidden;
}
image-slot > img {
  display: block;
  width: 100%;
  height: 100%;
}
/* Unfilled slots (e.g. the Optical Resource Center photo on the Platform/Why
   visual) degrade to a labelled placeholder until a real asset is supplied. */
image-slot[data-empty] {
  background: var(--mb-panel, #f5f0ff);
  border: 1px dashed var(--mb-rule-strong, #dcd9e3);
  border-radius: 12px;
  min-height: 140px;
}
image-slot .mb-slot-ph {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  text-align: center;
  color: var(--mb-fg-4, #9a96a6);
  font: 13px/1.5 "Roboto", system-ui, sans-serif;
}
