.ui-loading--block { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--spacing-8) var(--spacing-page-x); } .ui-loading--inline { display: inline-flex; align-items: center; } .ui-loading__spinner { width: 60rpx; height: 60rpx; display: flex; align-items: center; justify-content: center; } .ui-loading__spinner-icon { width: 48rpx; height: 48rpx; animation: ui-loading-spin 0.8s linear infinite; } @keyframes ui-loading-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .ui-loading__text { margin-top: var(--spacing-3); font-size: var(--font-size-sm); color: var(--color-text-tertiary); } /* Skeleton */ .ui-loading__skeleton { width: 100%; } .ui-loading__skeleton-row { display: flex; align-items: center; padding: var(--spacing-3) var(--spacing-page-x); background: var(--color-bg-card); border-bottom: 1rpx solid var(--color-divider); } .ui-loading__skeleton-avatar { width: 88rpx; height: 88rpx; border-radius: 50%; background: var(--color-bg-disabled); margin-right: var(--spacing-3); flex-shrink: 0; } .ui-loading__skeleton-content { flex: 1; min-width: 0; } .ui-loading__skeleton-line { height: 24rpx; background: var(--color-bg-disabled); border-radius: var(--radius-sm); position: relative; overflow: hidden; } .ui-loading__skeleton-line--title { width: 40%; margin-bottom: var(--spacing-2); } .ui-loading__skeleton-line--meta { width: 70%; } /* shimmer */ .ui-loading__skeleton-line::after, .ui-loading__skeleton-avatar::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent 0%, rgba(255, 255, 255, 0.55) 50%, transparent 100% ); animation: ui-loading-shimmer 1.4s ease-in-out infinite; } @keyframes ui-loading-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }