/* ============================================================================
   PLAZA LIVE FLOOR — a bounded "paper" floor of wandering avatars.

   Positions are cosmetic ambient motion (web/src/floor/world.js); identities are
   real (SSE). Everything reads from the --rd-* tokens, so a venue's branding
   (applied at runtime via core/theme.js) re-skins the floor automatically.
   ============================================================================ */

/* The plaza page lays its content out as a column: the floor takes the room, the
   roster sits beneath it. */
.plaza-fill { display: flex; flex-direction: column; gap: .6rem; }
.floor-wrap { flex: 1 1 auto; min-height: 9rem; }
.floor-roster { flex: 0 0 auto; max-height: 34%; }

.floor {
  position: relative;
  width: 100%;
  height: 100%;
  background:
    radial-gradient(circle at 32% 24%, var(--rd-accent-soft), transparent 60%),
    var(--rd-paper-2);
  border: 1px solid var(--rd-rule);
  border-radius: var(--rd-radius);
  box-shadow: inset 0 0 2.6rem rgba(60, 35, 5, .10);
  overflow: hidden;
}

/* One avatar node. Positioned by the engine via left/top %, centred on its point. */
.floor-entity {
  position: absolute;
  left: 50%; top: 50%;
  width: 3.4rem; height: 3.4rem;
  transform: translate(-50%, -50%);
  display: flex; flex-direction: column; align-items: center;
  cursor: pointer;
  -webkit-user-select: none; user-select: none;
}
.floor-entity .stage { width: 2.6rem; height: 2.6rem; pointer-events: none; }
.floor-entity .floor-name {
  margin-top: -.18rem;
  max-width: 5.5rem;
  font-family: var(--rd-font-mono);
  font-size: .54rem;
  letter-spacing: .02em;
  color: var(--rd-ink-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* Mascot: a SUBTLE badge over an otherwise-normal avatar (no prominent fixture). */
.floor-entity[data-kind="mascot"] .floor-badge {
  position: absolute; top: -.1rem; right: .55rem; z-index: 2;
  font-size: .72rem; line-height: 1; color: var(--rd-accent);
  filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .25));
}
.floor-entity[data-kind="mascot"] .stage { filter: drop-shadow(0 0 .25rem var(--rd-accent-soft)); }

/* Cosmetic tap popover — NAME ONLY. Never shows another patron's tier/standing
   (progression is private + discovered, not displayed). */
.floor-popover {
  position: absolute; z-index: 5;
  transform: translate(-50%, -135%);
  padding: .2rem .55rem;
  background: var(--rd-card);
  border: 1px solid var(--rd-rule);
  border-radius: var(--rd-radius);
  font-family: var(--rd-font-display); font-size: .72rem; color: var(--rd-ink);
  box-shadow: .1rem .15rem .5rem -.2rem rgba(60, 35, 5, .4);
  white-space: nowrap; pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .floor-entity { transition: none; }
}
