.root { display: flex; flex-direction: column; align-items: center; gap: 8px; user-select: none; } .circle { position: relative; border-radius: 50%; border: 4px solid #c9a227; overflow: hidden; background: #18181b; box-shadow: 0 4px 18px rgba(0, 0, 0, 0.45); flex-shrink: 0; } .circlePan { cursor: grab; touch-action: none; } .circlePan:active { cursor: grabbing; } .circlePick { cursor: pointer; } .circleDrop { border-color: var(--accent, #a78bfa); box-shadow: 0 0 0 3px var(--accent-fill-soft, rgba(167, 139, 250, 0.28)); } /* Width/height set in JS (syncAvatarCoverSize) for aspect-preserving cover. Do not force a square img box — that cropped tall/wide photos before pan/zoom. */ .avatar { position: absolute; left: 50%; top: 50%; max-width: none; max-height: none; object-fit: fill; pointer-events: none; } .avatarEmpty { position: absolute; inset: 0; background: repeating-linear-gradient( -45deg, #27272a, #27272a 6px, #3f3f46 6px, #3f3f46 12px ); } .avatarEmptySolid { background: #18181b; } .avatarEmptyHint { position: absolute; inset: 12px; display: flex; align-items: center; justify-content: center; text-align: center; font-size: 11px; font-weight: 700; line-height: 1.35; color: var(--text2, #a1a1aa); pointer-events: none; user-select: none; } .namePlate { width: max-content; min-width: 100%; max-width: none; padding: 4px 10px; border-radius: 6px; background: rgba(9, 9, 11, 0.88); color: #fafafa; font-size: 12px; font-weight: 600; line-height: 1.3; text-align: center; white-space: nowrap; }