/* 人物跟随只移动内部演员层；外层滚动镜头继续由 app.js 管理。 */
.hero-portrait .portrait-actor {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  transform-origin: 50% 78%;
  backface-visibility: hidden;
  pointer-events: none;
}
.hero-portrait .portrait-actor[data-follow-ready="true"] {
  will-change: transform;
}
.hero-portrait .portrait-actor img {
  pointer-events: none;
}
.person-follow-toggle {
  border: 1px solid #bbc9dd;
  border-radius: 30px;
  padding: 7px 13px;
  background: #fff8;
  color: inherit;
  font: inherit;
  font-size: 11px;
  white-space: nowrap;
}
.person-follow-toggle[aria-pressed="true"] {
  background: #e4edfb;
  border-color: #95accf;
}
.person-follow-toggle:focus-visible {
  outline: 2px solid #365b92;
  outline-offset: 4px;
}
.person-follow-toggle:disabled {
  opacity: .52;
  cursor: default;
}
.cursor-companion {
  position: fixed;
  top: 0;
  left: 0;
  width: 108px;
  height: 150px;
  display: block;
  z-index: 32;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  user-select: none;
  contain: layout style;
  transform: translate3d(-200px, -200px, 0);
  transition: opacity 160ms ease, visibility 160ms ease;
}
.cursor-companion.is-visible {
  opacity: .96;
  visibility: visible;
  will-change: transform;
}
.cursor-companion img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  object-fit: contain;
  object-position: center bottom;
  filter: drop-shadow(0 7px 9px #10203d20);
  pointer-events: none;
  -webkit-user-drag: none;
}
body.simple .cursor-companion,
body:has(dialog[open]) .cursor-companion {
  opacity: 0;
  visibility: hidden;
}
@media (hover: hover) and (pointer: fine) {
  .person-follow-toggle:hover:not(:disabled) { background: white; }
}
@media (max-width: 800px), (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  .cursor-companion { display: none; }
  .person-follow-toggle { display: none; }
  .hero-portrait .portrait-actor { transform: none !important; will-change: auto !important; }
}
