.bottom-nav[data-v-dcdc5f16]{height:calc(var(--bottom-nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--color-border);z-index:100;background:#fffffff5;justify-content:space-around;align-items:center;max-width:480px;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item[data-v-dcdc5f16]{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:4px;padding:8px 0;font-size:11px;transition:color .2s;display:flex}.nav-item.active[data-v-dcdc5f16]{color:var(--color-primary-dark)}.icon[data-v-dcdc5f16]{font-size:22px;line-height:1}.label[data-v-dcdc5f16]{line-height:1}.badge-modal[data-v-ee60e1cf]{z-index:999;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.badge-card[data-v-ee60e1cf]{text-align:center;background:linear-gradient(160deg,#fff7fa,#f3edff);border-radius:24px;width:280px;padding:32px 24px 24px;position:relative;box-shadow:0 20px 60px #00000040}.confetti[data-v-ee60e1cf]{letter-spacing:6px;margin-bottom:6px;font-size:22px}.badge-label[data-v-ee60e1cf]{color:var(--color-secondary);letter-spacing:2px;margin:0 0 10px;font-size:13px;font-weight:700}.badge-icon[data-v-ee60e1cf]{margin-bottom:10px;font-size:64px;line-height:1.2;animation:1.2s infinite bounce-ee60e1cf}.badge-name[data-v-ee60e1cf]{color:var(--color-text);margin:0 0 6px;font-size:22px;font-weight:800}.badge-desc[data-v-ee60e1cf]{color:var(--color-text-secondary);margin:0 0 20px;font-size:13px}@keyframes bounce-ee60e1cf{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.pop-enter-active[data-v-ee60e1cf],.pop-leave-active[data-v-ee60e1cf]{transition:opacity .3s,transform .3s}.pop-enter-from[data-v-ee60e1cf],.pop-leave-to[data-v-ee60e1cf]{opacity:0;transform:scale(.9)}.app[data-v-368e9471]{background-color:var(--color-bg);min-height:100vh}.main-content[data-v-368e9471]{min-height:100vh}.fade-enter-active[data-v-368e9471],.fade-leave-active[data-v-368e9471]{transition:opacity .2s}.fade-enter-from[data-v-368e9471],.fade-leave-to[data-v-368e9471]{opacity:0}:root{--color-primary:#ff8fa3;--color-primary-dark:#e06c83;--color-secondary:#a78bfa;--color-bg:#fff5f7;--color-surface:#fff;--color-text:#4a3f4a;--color-text-secondary:#8a7d8a;--color-border:#f0e0e5;--color-success:#7fd8a8;--color-warning:#f9c89b;--radius-sm:12px;--radius-md:20px;--radius-lg:28px;--shadow:0 4px 20px #ff8fa31f;--shadow-lg:0 10px 40px #ff8fa32e;--bottom-nav-height:64px;--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}#app{min-height:100vh}.page{max-width:480px;padding:16px;padding-bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + 16px);margin:0 auto}.card{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow);margin-bottom:16px;padding:20px}.btn{border-radius:var(--radius-lg);cursor:pointer;background:linear-gradient(135deg, var(--color-primary), var(--color-secondary));color:#fff;border:none;justify-content:center;align-items:center;gap:6px;padding:12px 24px;font-size:15px;font-weight:600;transition:transform .1s,box-shadow .2s;display:inline-flex;box-shadow:0 4px 14px #ff8fa359}.btn:active{transform:scale(.98)}.btn-secondary{color:var(--color-primary-dark);border:1px solid var(--color-border);box-shadow:var(--shadow);background:#fff}.btn-block{width:100%}.input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);outline:none;width:100%;padding:12px 16px;font-size:15px;transition:border-color .2s}.input:focus{border-color:var(--color-primary)}.label{color:var(--color-text-secondary);margin-bottom:6px;font-size:14px;display:block}.text-center{text-align:center}.text-sm{font-size:13px}.text-muted{color:var(--color-text-secondary)}.fade-in{animation:.4s fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
