:root{--primary:#2563eb;--primary-dark:#1d4ed8;--primary-light:#3b82f6;--primary-soft:#dbeafe;--accent:#0ea5e9;--text:#0f172a;--text-secondary:#475569;--text-tertiary:#94a3b8;--bg:#fff;--bg-soft:#f8fafc;--bg-mute:#f1f5f9;--border:#e2e8f0;--border-strong:#cbd5e1;--danger:#ef4444;--success:#10b981;--warning:#f59e0b;--radius:10px;--shadow-sm:0 1px 2px #0f172a0a;--shadow:0 4px 12px #0f172a0f;--shadow-lg:0 12px 32px #0f172a14;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background-color:var(--bg-soft);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#app{margin:0;padding:0}body{background:var(--bg-soft);min-height:100vh;color:var(--text)}a{color:inherit;text-decoration:none}a:hover{color:var(--primary)}button{font-family:inherit}img{max-width:100%;display:block}.container{width:100%;max-width:1240px;margin:0 auto;padding:0 24px}.btn{background:var(--primary);color:#fff;cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:6px;height:40px;padding:0 20px;font-size:14px;font-weight:500;transition:all .2s;display:inline-flex}.btn:hover{background:var(--primary-dark);box-shadow:var(--shadow);transform:translateY(-1px)}.btn.btn-plain{color:var(--primary);border-color:var(--border-strong);background:0 0}.btn.btn-plain:hover{background:var(--primary-soft);border-color:var(--primary)}.btn.btn-ghost{color:var(--text-secondary);background:0 0}.btn.btn-ghost:hover{background:var(--bg-mute);color:var(--text)}.card{border:1px solid var(--border);border-radius:var(--radius);background:#fff;transition:box-shadow .2s,transform .2s,border-color .2s}.card:hover{box-shadow:var(--shadow-lg);border-color:#0000;transform:translateY(-2px)}.section-title{justify-content:space-between;align-items:center;margin:0 0 20px;display:flex}.section-title .st-left{align-items:baseline;gap:14px;display:flex}.section-title .st-title{color:var(--text);letter-spacing:-.3px;font-size:22px;font-weight:700}.section-title .st-sub{color:var(--text-tertiary);font-size:13px}.section-title .st-more{color:var(--primary);cursor:pointer;align-items:center;gap:4px;font-size:13px;display:inline-flex}.section-title .st-more:hover{color:var(--primary-dark)}.empty-state{color:var(--text-tertiary);text-align:center;padding:60px 20px;font-size:14px}.text-clamp-1{-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text-clamp-2{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text-clamp-3{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.msg-container[data-v-9e6e18cd]{z-index:9999;pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:fixed;top:20px;left:50%;transform:translate(-50%)}.msg[data-v-9e6e18cd]{border:1px solid var(--border);background:#fff;border-radius:10px;align-items:center;gap:8px;min-width:240px;padding:10px 18px;font-size:14px;display:inline-flex;box-shadow:0 8px 24px #0f172a1f}.msg-icon[data-v-9e6e18cd]{flex-shrink:0}.msg-success[data-v-9e6e18cd]{color:var(--success);background:#ecfdf5;border-color:#86efac}.msg-error[data-v-9e6e18cd]{color:var(--danger);background:#fef2f2;border-color:#fca5a5}.msg-warning[data-v-9e6e18cd]{color:var(--warning);background:#fffbeb;border-color:#fcd34d}.msg-info[data-v-9e6e18cd]{color:var(--primary);background:#eff6ff;border-color:#93c5fd}.msg-enter-active[data-v-9e6e18cd],.msg-leave-active[data-v-9e6e18cd]{transition:all .3s}.msg-enter-from[data-v-9e6e18cd],.msg-leave-to[data-v-9e6e18cd]{opacity:0;transform:translateY(-10px)}
