@keyframes ux-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ux-shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes ux-fadein{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes ux-pulse{0%,to{opacity:1}50%{opacity:.45}}.ux-fadein{animation:.35s ease-out both ux-fadein}.ux-spinner{border-style:solid;border-color:currentColor #94a3b840 #94a3b840;border-radius:50%;flex-shrink:0;animation:.75s linear infinite ux-spin;display:inline-block}.ux-spinner-wrapper{color:var(--color-primary-500,#6366f1);justify-content:center;align-items:center;gap:.75rem;padding:2rem;display:flex}.ux-page-loader{flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:260px;animation:.3s ease-out ux-fadein;display:flex}.ux-page-loader-text{color:var(--color-text-secondary,#64748b);font-size:.875rem}.ux-skeleton{background:linear-gradient(90deg, var(--color-slate-100,#f1f5f9) 25%, var(--color-slate-200,#e2e8f0) 50%, var(--color-slate-100,#f1f5f9) 75%);background-size:800px 100%;border-radius:.375rem;animation:1.4s linear infinite ux-shimmer}@media (prefers-color-scheme:dark){.ux-skeleton{background:linear-gradient(90deg,#ffffff0d 25%,#ffffff1a 50%,#ffffff0d 75%) 0 0/800px 100%}}.ux-skeleton-card{background:var(--color-surface,#fff);border:1px solid var(--color-border,#e2e8f0);border-radius:var(--radius-lg,.75rem);flex-direction:column;gap:.875rem;padding:1.25rem;display:flex}.ux-skeleton-title{width:55%;height:18px}.ux-skeleton-sub{width:35%;height:13px}.ux-skeleton-line{width:100%;height:13px}.ux-skeleton-line-sm{width:70%;height:13px}.ux-skeleton-avatar{border-radius:50%;flex-shrink:0;width:40px;height:40px}.ux-skeleton-table{border-collapse:collapse;width:100%}.ux-skeleton-table-header{border-bottom:1px solid var(--color-border,#e2e8f0);background:var(--color-slate-50,#f8fafc);gap:1rem;padding:.75rem 1rem;display:flex}.ux-skeleton-table-row{border-bottom:1px solid var(--color-border,#e2e8f0);align-items:center;gap:1rem;padding:.875rem 1rem;display:flex}.ux-skeleton-col{flex:1;height:14px}.ux-skeleton-col-sm{flex:.4;height:14px}.ux-skeleton-col-xs{border-radius:9999px;flex:.25;height:26px}.ux-empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:3.5rem 1rem;animation:.3s ease-out ux-fadein;display:flex}.ux-empty-icon{background:var(--color-slate-100,#f1f5f9);width:72px;height:72px;color:var(--color-text-secondary,#94a3b8);border-radius:50%;justify-content:center;align-items:center;animation:2.5s ease-in-out infinite ux-pulse;display:flex}.ux-empty-title{color:var(--color-text-primary,#1e293b);margin:0;font-size:1rem;font-weight:700}.ux-empty-desc{color:var(--color-text-secondary,#64748b);max-width:380px;margin:0;font-size:.875rem;line-height:1.6}.ux-error-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:3rem 1rem;animation:.3s ease-out ux-fadein;display:flex}.ux-error-icon{color:#ef4444;background:#ef44441a;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;display:flex}.ux-error-title{color:var(--color-text-primary,#1e293b);margin:0;font-size:1rem;font-weight:700}.ux-error-desc{color:var(--color-text-secondary,#64748b);max-width:360px;margin:0;font-size:.875rem}.ux-retry-btn{background:var(--color-primary-500,#6366f1);color:#fff;border-radius:var(--radius-md,.5rem);cursor:pointer;border:none;align-items:center;gap:.5rem;padding:.5rem 1.25rem;font-size:.875rem;font-weight:600;transition:filter .15s;display:inline-flex}.ux-retry-btn:hover{filter:brightness(1.1)}.ux-refresh-btn{color:var(--color-text-secondary,#64748b);border:1px solid var(--color-border,#e2e8f0);border-radius:var(--radius-md,.5rem);cursor:pointer;background:0 0;align-items:center;gap:.5rem;padding:.5rem 1.25rem;font-size:.875rem;font-weight:600;transition:all .15s;display:inline-flex}.ux-refresh-btn:hover{background:var(--color-slate-100,#f1f5f9);color:var(--color-text-primary,#1e293b)}.btn-loading{opacity:.75;pointer-events:none;align-items:center;gap:.5rem;display:inline-flex}.ux-skeleton-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;display:grid}
