:host {
  display: flex;
  justify-content: center;
  align-items: center;
  width: min(100%, 6rem);
  height: min(100%, 6rem);
  aspect-ratio: 1/1;
  position: relative;
  animation: none;
}

@media (prefers-reduced-motion) {
  :host {
    animation: none;
  }
}
:host([size=small]) {
  --r-image--size-base: 6rem;
  --r-image--size-max: 12.5rem;
}

:host([size=medium]) {
  --r-image--size-base: 13rem;
  --r-image--size-max: 20.5rem;
}

:host([size=large]) {
  --r-image--size-base: 21rem;
  --r-image--size-max: 30rem;
}

:host([size]) {
  width: min(100%, var(--r-image--size-base));
  height: min(100%, var(--r-image--size-base));
}

:host([width]) {
  width: clamp(var(--r-image--size-base), var(--width), var(--r-image--size-max));
  max-width: min(100%, var(--r-image--size-max));
}

:host([height]) {
  height: clamp(var(--r-image--size-base), var(--height), var(--r-image--size-max));
  min-height: min(100%, var(--r-image--size-base));
}

:host([data-loading=true]),
:host([data-error=true]) {
  background-color: var(--r-background-soft, var(--r-haze-200, #f3f1f0));
}

:host([data-loading=true]) {
  animation: 1.6s ease-in-out infinite skeleton-pulse;
}

@media (prefers-reduced-motion) {
  :host([data-loading=true]) {
    animation: none;
  }
}
@keyframes skeleton-pulse {
  0%, 100% {
    background-color: var(--r-background-soft, var(--r-haze-200, #f3f1f0));
  }
  50% {
    background-color: var(--r-background-interactive-softer, var(--r-haze-400, #e7e4e2));
  }
}
.r-image {
  width: var(--r-image--width, 100%);
  height: var(--r-image--height, 100%);
  object-fit: var(--object-fit, var(--r-image--fit, cover));
  object-position: var(--object-position, var(--r-image--position, center));
}
.r-image[aria-busy=true] {
  visibility: var(--r-image--hidden--visibility, hidden);
}
.r-image--picture {
  display: contents;
}
.r-image--states {
  position: var(--r-image--states--position, absolute);
  top: var(--r-image--states--top, 50%);
  left: var(--r-image--states--left, 50%);
  transform: var(--r-image--states--transform, translate(-50%, -50%));
}
.r-image--loading-state {
  color: var(--r-image--error-state--text--color, var(--r-text-soft, #686868));
}
.r-image--error-state {
  display: var(--r-image--error-state--display, flex);
  flex-direction: var(--r-image--error-state--flex-direction, column);
  justify-content: var(--r-image--error-state--justify-content, center);
  align-items: var(--r-image--error-state--align-items, center);
  gap: var(--r-image--error-state--gap, var(--r-spacing-050, 0.5rem));
  color: var(--r-image--error-state--text--color, var(--r-text-soft, #686868));
}
.r-image--error-state--text {
  font-size: var(--r-image--error-state--text--font-size, var(--r-font-size-300, 0.875rem));
  font-weight: var(--r-image--error-state--text--font-weight, var(--r-font-weight-semibold, 600));
  font-family: var(--r-font-family-text, system-ui);
}
