/* Homepage idle motion: category hall art breathes slowly so the grid never looks frozen.
   Scale only (never translate), so the art stays inside its card. Off for reduced motion. */
@media (prefers-reduced-motion: no-preference) {
  body:not(.reduce) .lb-hall-art { animation: lbHallBreathe 9s ease-in-out infinite; will-change: transform; }
  body:not(.reduce) .lb-hall:nth-child(even) .lb-hall-art { animation-delay: -4.5s; }
}
@keyframes lbHallBreathe {
  0%, 100% { transform: scale(1.02); }
  50% { transform: scale(1.06); }
}

/* Game tiles in the rails breathe like the category cards (scale only; off for reduced motion). */
@media (prefers-reduced-motion: no-preference) {
  body:not(.reduce) .lb-railsec .lb-tile .lb-art { animation: lbHallBreathe 10s ease-in-out infinite; will-change: transform; }
  body:not(.reduce) .lb-railsec .lb-tile:nth-child(3n) .lb-art { animation-delay: -3.3s; }
  body:not(.reduce) .lb-railsec .lb-tile:nth-child(3n+1) .lb-art { animation-delay: -6.6s; }
}

/* Hero: a warm glow on the floor under the avatar pedestal, so the figure sits on a lit surface.
   This is a floor glow, not a mirrored reflection. */
.lb-me { isolation: isolate; }
.lb-me::before {
  content: ""; position: absolute; left: 50%; bottom: -4px; width: 230px; height: 36px;
  transform: translateX(-50%); border-radius: 50%; z-index: -1; pointer-events: none;
  background: radial-gradient(closest-side, rgba(255, 140, 50, .34), rgba(255, 140, 50, .08) 60%, transparent);
  filter: blur(3px);
}
@media (prefers-reduced-motion: no-preference) {
  body:not(.reduce) .lb-me::before { animation: lbFloorGlow 6s ease-in-out infinite; }
}
@keyframes lbFloorGlow {
  0%, 100% { opacity: .75; }
  50% { opacity: 1; }
}

/* Tile preview on hover or keyboard focus: the art drifts like a short camera move and a light
   sweeps across once. The art stays inside its frame. Off for reduced motion and on touch screens. */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  body:not(.reduce) .lb-tile:hover .lb-art img.is-in,
  body:not(.reduce) .lb-tile:focus-within .lb-art img.is-in { animation: lbTilePreview 3.4s ease-in-out infinite alternate; }
  body:not(.reduce) .lb-tile .lb-art::before {
    content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: 0;
    background: linear-gradient(105deg, transparent 35%, rgba(255, 240, 220, .22) 50%, transparent 65%);
    transform: translateX(-100%);
  }
  body:not(.reduce) .lb-tile:hover .lb-art::before,
  body:not(.reduce) .lb-tile:focus-within .lb-art::before { animation: lbTileSweep .9s ease-out .1s 1 both; }
}
@keyframes lbTilePreview {
  0% { transform: scale(1.08) translate(-2%, 1%); }
  100% { transform: scale(1.12) translate(2%, -1%); }
}
@keyframes lbTileSweep {
  0% { opacity: 1; transform: translateX(-100%); }
  100% { opacity: 1; transform: translateX(100%); }
}
