.app-shell[data-v-fefd8514]{min-height:100vh;background:var(--page-bg)}.page-fade-enter-active[data-v-fefd8514],.page-fade-leave-active[data-v-fefd8514]{transition:opacity .22s ease,transform .22s ease}.page-fade-enter-from[data-v-fefd8514]{opacity:0;transform:translateY(8px)}.page-fade-leave-to[data-v-fefd8514]{opacity:0}:root{--primary: #3b6cff;--primary-light: #6a8bff;--primary-gradient: linear-gradient(135deg, #3b6cff 0%, #6a5cff 100%);--success: #16a34a;--warning: #f59e0b;--danger: #ef4444;--info: #64748b;--page-bg: #f4f6fa;--card-bg: #ffffff;--text-main: #1a1d26;--text-sub: #6b7280;--text-light: #9ca3af;--border: #eef0f4;--radius: 14px;--shadow: 0 4px 16px rgba(17, 24, 39, .05)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:#e9ecf2;color:var(--text-main);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,Microsoft YaHei,Arial,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#app{max-width:480px;min-height:100vh;margin:0 auto;background:var(--page-bg);box-shadow:0 0 40px #0f172a14;overflow-x:hidden}button{font-family:inherit;font-size:inherit;border:none;outline:none;background:none;cursor:pointer;color:inherit}input{font-family:inherit;font-size:inherit;border:none;outline:none;background:transparent;color:inherit;-webkit-appearance:none}input::placeholder{color:var(--text-light)}img{display:block;max-width:100%}.page{min-height:100vh;padding-bottom:calc(24px + env(safe-area-inset-bottom))}.card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:44px;padding:0 18px;border-radius:22px;font-size:15px;font-weight:500;transition:opacity .15s,transform .1s}.btn:active{opacity:.85;transform:scale(.98)}.btn-primary{background:var(--primary-gradient);color:#fff;box-shadow:0 6px 16px #3b6cff47}.btn-block{display:flex;width:100%}.btn-ghost{background:#f1f3f8;color:var(--text-sub)}.btn[disabled]{opacity:.5;box-shadow:none;cursor:not-allowed}.tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:11px;font-size:12px;font-weight:500}.tag-success{color:var(--success);background:#16a34a1a}.tag-warning{color:#b45309;background:#f59e0b24}.tag-info{color:var(--info);background:#64748b1f}.tag-danger{color:var(--danger);background:#ef44441a}.tag-primary{color:var(--primary);background:#3b6cff1a}.loading-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 0;color:var(--text-light);font-size:13px}.spinner{width:26px;height:26px;margin-bottom:10px;border:3px solid rgba(59,108,255,.15);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-wrap{padding:70px 20px;text-align:center;color:var(--text-light)}.empty-wrap .empty-icon{font-size:40px;margin-bottom:10px;opacity:.5}.app-toast{position:fixed;top:42%;left:50%;transform:translate(-50%,-50%);max-width:76%;padding:12px 18px;border-radius:10px;background:#111827db;color:#fff;font-size:14px;line-height:1.5;text-align:center;z-index:3000;animation:toast-in .2s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-46%)}}.dlg-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:2000;padding:24px}.dlg-box{width:100%;max-width:320px;background:#fff;border-radius:16px;overflow:hidden;animation:dlg-in .22s cubic-bezier(.2,.9,.3,1.2)}@keyframes dlg-in{0%{opacity:0;transform:scale(.92)}}.dlg-title{padding:22px 20px 8px;font-size:17px;font-weight:600;text-align:center}.dlg-content{padding:4px 20px 22px;font-size:14px;color:var(--text-sub);text-align:center;line-height:1.6}.dlg-actions{display:flex;border-top:1px solid var(--border)}.dlg-btn{flex:1;height:48px;font-size:15px;color:var(--text-sub)}.dlg-btn+.dlg-btn{border-left:1px solid var(--border)}.dlg-btn.primary{color:var(--primary);font-weight:600}.dlg-btn.danger{color:var(--danger);font-weight:600}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}
