<img src="https://picsum.photos/id/660/300/300" alt="Fireworks">
<img src="https://picsum.photos/id/696/300/300" alt="Flowers" class="alt">
@property --h {
  syntax: "<length>";
  initial-value: 0px;
  inherits: true;
}

img {
  --s: 150px; /* image size */
  --b: 12px;  /* the border */
  --d: 30px;  /* the 3D depth */
  --c: #d81a14;
  --_c: color-mix(in srgb,var(--c),#fff 25%);
  
  --_w: calc(var(--s) + 2*var(--b));
  width: calc(var(--_w) + var(--d));
  aspect-ratio: 1;
  padding-top: min(var(--h) - var(--b),var(--s));
  border: solid #0000;
  border-width: var(--b) calc(var(--b) + var(--d)) calc(var(--b) + var(--d)) var(--b);
  box-sizing: border-box;
  object-fit: cover;
  object-position: bottom;
  background: 
    linear-gradient(var(--_c) 0 0) no-repeat
     0 0/calc(100% - var(--d)) calc(100% - var(--d) + var(--h) - var(--_w)),
    conic-gradient(at right var(--d) bottom var(--d),
     #0004 37.5%,#0008 0 75%,#0000 0) var(--c);
  background-origin: border-box;
  clip-path: polygon(0 calc(var(--h) - var(--_w)),calc(100% - var(--d)) calc(var(--h) - var(--_w)),calc(100% - var(--d)) 0,100% var(--d),100% 100%,var(--d) 100%,0 calc(100% - var(--d)));
  box-shadow: 0 0 0 999px var(--_c);
  --h: var(--_w);
  transition: --h .6s linear;
  cursor: pointer;
}
.alt {
  --c: #8A9B0F;
  border-width: var(--b) var(--b) calc(var(--b) + var(--d)) calc(var(--b) + var(--d));
  background: 
    linear-gradient(var(--_c) 0 0) no-repeat
     100% 0/calc(100% - var(--d)) calc(100% - var(--d) + var(--h) - var(--_w)),
    conic-gradient(at left var(--d) bottom var(--d),
     #0000 25%,#0008 0 62.5%,#0004 0) var(--c);
  background-origin: border-box;
  clip-path: polygon(100% calc(var(--h) - var(--_w)),var(--d) calc(var(--h) - var(--_w)),var(--d) 0,0 var(--d),0 100%,calc(100% - var(--d)) 100%,100% calc(100% - var(--d)));
}

img:hover {
  --h: 0px;
}

/* for firefox you will have a small missalignement */
@supports (-moz-appearance: none) {
  img {
    transition: .6s linear;
  }
}

body {
  margin: 0;
  min-height: 100vh;
  display: grid;
  place-content: center;
  grid-auto-flow: column;
  gap: 80px;
  background: #F1D4AF;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.