.loading-view .loading-spinner{width:44px;height:44px;border:4px solid rgba(232,139,157,.15);border-top-color:#e88b9d;border-radius:50%;animation:ari-spin .9s linear infinite}
.loading-view p{margin:4px 0 0;font-size:15px;color:#909399}
@keyframes ari-spin{to{transform:rotate(360deg)}}
.error-view{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:24px}
.error-card{width:100%;max-width:420px;padding:40px 28px;text-align:center;background:#fff;border-radius:20px;box-shadow:0 8px 32px rgba(232,139,157,.12)}
.error-card .error-icon{width:56px;height:56px;margin:0 auto 16px;color:#e88b9d}
.error-card .error-title{font-size:1.375rem;font-weight:700;color:#303133;margin:0 0 10px}
.error-card .error-message{font-size:14px;line-height:1.7;color:#606266;margin:0 0 24px}
.primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 28px;font-size:15px;font-weight:600;color:#fff;background:linear-gradient(135deg,#e88b9d,#f4a7b4);border-radius:999px;box-shadow:0 6px 18px rgba(232,139,157,.3);transition:transform .2s,box-shadow .2s}
.primary-btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(232,139,157,.4)}
.chart-container canvas{display:block;width:100%;height:100%}
.tips-list{margin:0;padding-left:18px;list-style:disc}
.tips-list li{font-size:14px;line-height:1.8;color:#606266;margin-bottom:6px}
.tips-list li:last-child{margin-bottom:0}
.tips-empty{font-size:14px;color:#909399;margin:0}
@media (prefers-reduced-motion:reduce){.loading-view .loading-spinner{animation:none}.primary-btn{transition:none}}
