:root{--bg:#f6f7fb;--surface:#fff;--surface-2:#f0f1f8;--border:#e4e6f0;--border-strong:#d3d6e4;--text:#1b2233;--text-2:#5c6478;--text-3:#8a91a5;--primary:#087ea4;--primary-hover:#066a8a;--primary-soft:#e6f5fa;--success:#0e9f6e;--warning:#c27803;--danger:#dc2626;--radius:10px;--radius-lg:14px;--shadow:0 1px 2px #1b22330d, 0 4px 16px #1b22330f;--shadow-lg:0 8px 32px #1b22331f;--gradient:linear-gradient(135deg, #087ea4, #06b6d4)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,system-ui,sans-serif;font-size:15px;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3,h4,p{margin:0}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 20px}.btn{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);-webkit-user-select:none;user-select:none;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-size:14px;font-weight:500;line-height:1.5;transition:border-color .15s,background .15s,color .15s,box-shadow .15s;display:inline-flex}.btn:hover{border-color:var(--primary);color:var(--primary)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--gradient);color:#fff;border-color:#0000;box-shadow:0 2px 8px #087ea44d}.btn-primary:hover{color:#fff;filter:brightness(1.06)}.btn-ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--primary);background:var(--primary-soft)}.btn-sm{border-radius:8px;padding:4px 10px;font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.badge{background:var(--primary-soft);color:var(--primary);border-radius:999px;align-items:center;gap:4px;padding:2px 10px;font-size:12px;font-weight:500;line-height:1.6;display:inline-flex}.badge-neutral{background:var(--surface-2);color:var(--text-2)}.badge-success{color:var(--success);background:#e6f7f0}.text-secondary{color:var(--text-2)}.text-small{font-size:13px}.divider{background:var(--border);border:0;height:1px;margin:0}.fade-enter-active,.fade-leave-active{transition:opacity .15s}.fade-enter-from,.fade-leave-to{opacity:0}
