.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%); } }