/* ============ CSS OPTIMIZATIONS ============ */

/* will-change on animated elements */
.btn { will-change: transform; }
.shape { will-change: transform; }

/* CSS containment for paint isolation */
.navbar { contain: layout style; }
.page { contain: layout style paint; }
/* Gym page uses position:fixed children — paint containment breaks fixed positioning
   in Chrome; override to layout+style only to avoid scrollbar repaint bug */
#page-gym.page { contain: layout style; }
.upload-area { contain: layout style paint; }
.loading-container { contain: layout style paint; }

/* Drag-over scale (overrides style.css translateY for dragover only) */
.upload-area.dragover {
  transform: scale(1.02);
  border-color: #ff5e91;
}

/* Shimmer loading skeleton */

/* Hide decorative shapes on mobile to reduce GPU work */
@media (max-width: 768px) {
  .shape { display: none; }
  .navbar { contain: layout style; }
}
