/* Asset-aligned refinements for the existing chrome card design.
   frame-hq.webp aperture starts at y=12.92%; keep the picture bottom at 65.8%. */
.card-pic {
  top: 12.8%;
  height: 53%;
}

/* Keep the existing typefaces, fitted names, badge, ribbon and 3D motion.
   A tighter shadow preserves letter edges over the sharper carbon texture. */
.card-name {
  text-shadow: 0 .16cqw .24cqw #000, 0 0 .1cqw #000;
}

.card-handle {
  font-weight: 700;
  color: #c8c1ae;
  letter-spacing: .045em;
  text-shadow: 0 .12cqw .18cqw #000;
}

/* Account labels on the roster and moving wall should not drop below 6.5px.
   The compact Barlow face still fits the existing card plate. */
.wall-set .card-handle,
.roster-grid .card-handle {
  font-size: max(6.5px, 3cqw);
}


/* Lists stay flat until a card is actually being inspected.
   Keep the full 3D scene on the seven-card fan and member detail. */
.wall-set .card,
.roster-grid .card {
  perspective: none;
}
.wall-set .card-3d,
.roster-grid .card-3d {
  transform: none;
  transform-style: flat;
  will-change: auto;
}
.wall-set .card:is(:hover, :focus-within),
.roster-grid .card:is(:hover, :focus-within) {
  perspective: 1500px;
}
.wall-set .card:is(:hover, :focus-within) .card-3d,
.roster-grid .card:is(:hover, :focus-within) .card-3d {
  transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) scale(var(--sc, 1));
  transform-style: preserve-3d;
  will-change: transform;
}
.roster-grid .card {
  content-visibility: auto;
}
.roster-grid .card:is(:hover, :focus-within) {
  content-visibility: visible;
}

/* Keep pre-framed portrait art from creating a card inside another card. */
.card-pic.is-cropped { overflow: hidden; }
.card-crop-image { position: absolute; display: block; max-width: none; object-fit: fill; }

/* The fixed detail stage must not scroll internally when its controls receive focus. */
.detail { overflow: clip; }
