/* V1727: 화면 밖의 대형 카드 목록은 DOM을 유지하되 레이아웃·페인트를 건너뛴다. */
.dex-section,
.pve-grade-group,
.pvp-grade-group,
.high-grade-feed,
.inventory-section{
  content-visibility:auto;
  contain-intrinsic-size:auto 520px;
}

.dex-section.collapsed{contain-intrinsic-size:auto 74px}

/* V1729: 편성 카드 목록은 인접한 묶음만 실제 DOM으로 유지한다. */
.virtual-card-chunk{
  box-sizing:border-box;
  overflow:hidden;
  contain:layout style paint;
  contain-intrinsic-size:auto 760px;
}
.virtual-card-chunk.virtual-card-continuation{margin-top:0!important}
.virtual-card-chunk:not([data-virtual-materialized="1"]){
  pointer-events:none;
}
.virtual-card-placeholder{
  width:100%;height:100%;min-height:1px;
  border-radius:14px;
  background:linear-gradient(180deg,rgba(16,35,61,.16),rgba(7,18,34,.04));
}
.virtual-card-chunk[data-virtual-materialized="1"]{overflow:visible}
.responsive-card-picture{display:contents}
.responsive-game-picture{display:contents}
.mini-pack>.responsive-game-picture>img{
  position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);
  object-fit:contain;object-position:center;filter:drop-shadow(0 4px 7px rgba(0,0,0,.55));transition:transform .2s ease;
}
.pack-choice:hover .mini-pack>.responsive-game-picture>img,
.pack-choice.active .mini-pack>.responsive-game-picture>img{transform:scale(1.05)}

/* IntersectionObserver가 화면 밖으로 판정한 장식은 GPU/CPU 애니메이션을 완전히 쉰다. */
.runtime-offscreen,
.runtime-offscreen::before,
.runtime-offscreen::after,
.runtime-offscreen *{
  animation-play-state:paused!important;
}

.route-feature-loader{
  min-height:clamp(280px,48vh,520px);
  display:grid;
  place-content:center;
  justify-items:center;
  gap:12px;
  margin:18px 0;
  padding:32px;
  color:#d8f6ff;
  text-align:center;
  background:linear-gradient(145deg,rgba(7,19,34,.96),rgba(13,8,31,.96));
  border:1px solid rgba(100,210,255,.2);
  border-radius:18px;
  box-shadow:inset 0 1px rgba(255,255,255,.04),0 24px 70px rgba(0,0,0,.28);
}
.route-feature-loader>span{
  width:42px;height:42px;border-radius:50%;
  border:3px solid rgba(117,218,255,.18);border-top-color:#73dcff;border-right-color:#a979ff;
  animation:runtimeFeatureSpin .72s linear infinite;
}
.route-feature-loader>b{font-size:clamp(17px,2vw,23px);letter-spacing:-.02em}
.route-feature-loader>small{color:#8da7ba;font-size:13px}
.route-feature-loader.is-error{border-color:rgba(255,91,117,.35)}
.route-feature-loader.is-error>b{color:#ff9bac}
.route-feature-loader.is-error>.btn{min-width:150px;margin-top:8px}
.battle-resource-loader{min-height:100%;margin:0;border:0;border-radius:0;background:radial-gradient(circle at 50% 44%,rgba(52,96,139,.28),transparent 42%),#070d17}
@keyframes runtimeFeatureSpin{to{transform:rotate(360deg)}}

@media (max-width:760px){
  .dex-section,
  .pve-grade-group,
  .pvp-grade-group,
  .inventory-section{contain-intrinsic-size:auto 680px}
  .dex-section.collapsed{contain-intrinsic-size:auto 68px}
  .route-feature-loader{min-height:52vh;margin:10px 0;padding:24px 16px;border-radius:14px}
}
