.tab-bar[data-v-2bf0613b]{padding:8px 0;padding-bottom:calc(8px + env(safe-area-inset-bottom));z-index:100;background:#fff;border-top:1px solid #f0f0f0;display:flex;position:fixed;bottom:0;left:0;right:0}.tab-item[data-v-2bf0613b]{color:#999;cursor:pointer;flex-direction:column;flex:1;align-items:center;gap:2px;font-size:10px;transition:color .2s;display:flex}.tab-item.active[data-v-2bf0613b]{color:#667eea}.tab-icon[data-v-2bf0613b]{font-size:20px}.tab-label[data-v-2bf0613b]{font-size:10px}:root{--primary:#667eea;--primary-dark:#764ba2;--bg:#f5f5f7;--card:#fff;--text:#1a1a2e;--text-secondary:#666;--text-muted:#999;--border:#f0f0f0;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--radius:16px;--radius-lg:24px;--shadow:0 2px 12px rgba(0,0,0,.06)}*{box-sizing:border-box;margin:0;padding:0}html,body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,sans-serif;font-size:14px;overflow-x:hidden}#app{max-width:480px;min-height:100vh;padding-bottom:calc(60px + env(safe-area-inset-bottom));margin:0 auto}.page{padding:16px}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;cursor:pointer;text-align:center;border:none;border-radius:50px;width:100%;padding:14px 32px;font-size:15px;font-weight:600;transition:transform .15s,box-shadow .15s;display:block;box-shadow:0 4px 16px rgba(102,126,234,.3)}.btn-primary:active{transform:scale(.97);box-shadow:0 2px 8px rgba(102,126,234,.2)}.btn-secondary{width:100%;color:var(--primary);border:1.5px solid var(--primary);cursor:pointer;text-align:center;background:#fff;border-radius:50px;padding:14px 32px;font-size:15px;display:block}.card{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);margin-bottom:12px;padding:20px}.tag{color:var(--primary);background:#f0f0ff;border-radius:20px;padding:3px 10px;font-size:12px;display:inline-block}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.3s ease-out fadeIn}.loading-dots{justify-content:center;gap:6px;padding:40px 0;display:flex}.loading-dots span{background:var(--primary);border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite both bounce}.loading-dots span:first-child{animation-delay:-.32s}.loading-dots span:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}
