.luotwo-skeleton{background:linear-gradient(90deg,var(--luotwo-carbon) 25%,var(--luotwo-steel) 50%,var(--luotwo-carbon) 75%);background-size:200% 100%;animation:luotwo-skeleton-pulse 1.5s ease-in-out infinite;border-radius:var(--luotwo-radius)}
@keyframes luotwo-skeleton-pulse{0%{background-position:200% 0}100%{background-position:-200% 0}}
.luotwo-empty-state{text-align:center;padding:80px 24px}
.luotwo-empty-state-icon{font-size:48px;margin-bottom:16px;opacity:0.3}
.luotwo-empty-state-title{font-family:var(--luotwo-font-heading);font-size:20px;color:var(--luotwo-silver);margin-bottom:8px}
.luotwo-empty-state-desc{color:var(--luotwo-titanium);font-size:14px;margin-bottom:24px}
.luotwo-error-state{text-align:center;padding:80px 24px;border:1px solid var(--luotwo-alert-red);border-radius:var(--luotwo-radius-lg);background:rgba(227,27,59,0.05)}
.luotwo-error-state-title{font-family:var(--luotwo-font-heading);font-size:20px;color:var(--luotwo-alert-red)}
.luotwo-success-state{text-align:center;padding:80px 24px;border:1px solid var(--luotwo-volt-green);border-radius:var(--luotwo-radius-lg);background:rgba(164,249,9,0.05)}
.luotwo-toast-error{position:fixed;top:80px;right:24px;z-index:9999;background:var(--luotwo-alert-red);color:#FFF;padding:12px 20px;border-radius:var(--luotwo-radius);font-size:13px;animation:luotwo-shake 0.3s ease;box-shadow:var(--luotwo-shadow-md)}
@keyframes luotwo-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}