/* v1.10: identical viewing space and undistorted adult body registration. */
body[data-character] .character-stage {
  height: 620px;
}
body[data-character] .portal {
  top: 28px;
  height: calc(100% - 60px);
  width: min(410px, 86%);
}
body[data-character] .orbit-figure {
  clip-path: none;
}
body[data-character] .stage-floor {
  bottom: 12px;
}
body[data-character="male"] .character-caption {
  padding-top: 20px;
}
body[data-character] .preview-label {
  position: static;
  transform: none;
  width: fit-content;
  max-width: calc(100% - 32px);
  margin: 12px auto 0;
  white-space: normal;
  text-align: center;
}
@media (max-width: 1100px) and (min-width: 761px) {
  body[data-character] .character-stage { height: 590px; }
}
@media (max-width: 760px) {
  body[data-character] .character-stage { height: 550px; }
}
@media (max-width: 370px) {
  body[data-character] .character-stage { height: 530px; }
}

/* Native half portraits supply facial detail at close range. Full-body art
   keeps its original aspect ratio; it is never stretched into a close-up. */
.character-detail {
  position: absolute;
  inset: 12px 0 0;
  z-index: 4;
  pointer-events: none;
}
.character-detail img {
  display: block;
  width: 100%;
  height: 100%;
  /* Fill the stage so the portrait canvas edges never cut the cape inside
     the gallery. Top alignment preserves the complete head at every width. */
  object-fit: cover;
  object-position: 50% 0;
}
.detail-active .character-sprite,
.detail-active .orbit-view,
.detail-active .gear-pins,
.detail-active .mount-companion,
.detail-active .stage-floor { visibility: hidden !important; }
.detail-active .character-stage .portal { opacity: .4; }
body[data-role="female"].detail-active .stage-identity { display: none; }
.character-detail[data-state="loading"]::after {
  content: '正在準備近景…';
  position: absolute;
  inset: 45% 0 auto;
  text-align: center;
  color: #715e52;
  font-size: 13px;
  letter-spacing: .12em;
}
.detail-active #orbit-status { color: #dac9aa; }

