/* Adamas Digital — real case study covers.
   The reference ships only the abstract placeholder cover (.case-shape). A
   published engagement carries a photograph instead, which has to fill the
   same 1.32 frame without distorting a portrait source. */

.case-visual.has-photo { background: var(--ink); }

/* A cutout shot on a white ground dissolves into the light sections these
   cards sit in. The white is baked into the JPEG, so a background alone is
   hidden behind it — multiply lets the card's own tint replace the white
   while leaving the subject essentially untouched (the tint is ~97% white).
   The hairline edge then follows the card's radius. */
.case-visual.has-photo.tone-light {
  background: var(--mist);
  box-shadow: inset 0 0 0 1px var(--line);
}
.case-visual.has-photo.tone-light img { mix-blend-mode: multiply; }

.case-visual.has-photo img {
  width: 100%;
  height: 100%;
  /* Sources are portrait, the frame is landscape, so cover crops vertically
     only (the width already fits). 50% keeps the subject's face near the
     middle of the frame while retaining context above them. */
  object-fit: cover;
  object-position: center 50%;
  display: block;
}

/* ---- Hover -------------------------------------------------------------
   The placeholder covers already lean on hover (.case-shape rotates 4deg and
   scales 1.06), so photographs answer in the same language — just quieter,
   because a real face tilting four degrees reads as a mistake rather than as
   motion.

   The scale is not decorative. Rotating inside .case-visual's overflow:hidden
   frame swings the image's corners inward and would expose the card's
   background behind them; at the 1.32 frame ratio a 1.6deg tilt needs roughly
   1.035 to stay covered, so 1.07 keeps a margin at every breakpoint. */
.case-visual.has-photo img {
  transition: transform .55s cubic-bezier(.22, 1, .36, 1);
}

/* Two triggers, one for each place these cards appear: the homepage grid,
   where hovering anywhere on the card should move the image, and the work
   page, where the visual stands alone. */
@media (hover: hover) and (pointer: fine) {
  .case-card:hover .case-visual.has-photo img,
  .case-visual.has-photo:hover img {
    transform: scale(1.07) rotate(1.6deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .case-visual.has-photo img { transition: none; }

  .case-card:hover .case-visual.has-photo img,
  .case-visual.has-photo:hover img { transform: none; }
}

/* Keep the corner label legible over a photograph. */
.case-visual.has-photo > span {
  z-index: 1;
  background: #0d0d0dad;
  border-radius: 999px;
  padding: 6px 11px;
  top: 18px;
  left: 18px;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}

/* A live engagement reads as current, not as a pending placeholder. */
.case-meta p .status-live,
.work-details > span.status-live { color: var(--blue); }

.work-details dd.pending { opacity: .55; }
