*{margin:0;padding:0;box-sizing:border-box}
:root{--primary:#1a73e8;--primary-dark:#1557b0;--bg:#f5f7fa;--card:#fff;--border:#e0e0e0;--text:#333;--text2:#666;--nav-bg:#fff;--nav-hover:#e8f0fe;--th-bg:#f8f9fa;--tr-hover:#f5f7fa;--modal-overlay:rgba(0,0,0,.5);--modal-bg:#fff;--sec-bg:#f8f9fa;--cat-bg:#f8f9fa;--cat-hover:#e8f0fe;--shadow:rgba(0,0,0,.08);--header-text:#fff;--header-link:rgba(255,255,255,.7);--tag-985-bg:#e3f2fd;--tag-985-text:#1565c0;--tag-211-bg:#e8f5e9;--tag-211-text:#2e7d32;--tag-dc-bg:#fff3e0;--tag-dc-text:#e65100;--danger:#e53935;--danger-hover:#c62828;--green:#10b981;--orange:#ff9800;--blue:#2196f3}
[data-theme="dark"]{--primary:#5b9cf6;--primary-dark:#3b82f6;--bg:#0f1117;--card:#1a1d28;--border:#2d3140;--text:#e0e0e0;--text2:#9ca3af;--nav-bg:#1a1d28;--nav-hover:#1e293b;--th-bg:#1e2235;--tr-hover:#1a1d28;--modal-overlay:rgba(0,0,0,.7);--modal-bg:#1a1d28;--sec-bg:#1e2235;--cat-bg:#1e2235;--cat-hover:#2d3140;--shadow:rgba(0,0,0,.3);--header-text:#fff;--header-link:rgba(255,255,255,.6);--tag-985-bg:#1e3a5f;--tag-985-text:#90caf9;--tag-211-bg:#1b4332;--tag-211-text:#81c784;--tag-dc-bg:#3e2723;--tag-dc-text:#ffb74d;--danger:#ef5350;--danger-hover:#f44336;--green:#34d399;--orange:#fbbf24;--blue:#60a5fa}
[data-theme="ivory"]{--primary:#b8860b;--primary-dark:#a0720a;--bg:#faf6f0;--card:#fffdf8;--border:#e8e0d0;--text:#4a4238;--text2:#8a8070;--nav-bg:#fffdf8;--nav-hover:#f5ede0;--th-bg:#f5ede0;--tr-hover:#faf6f0;--modal-overlay:rgba(0,0,0,.4);--modal-bg:#fffdf8;--sec-bg:#f5ede0;--cat-bg:#f5ede0;--cat-hover:#ede0cc;--shadow:rgba(139,115,85,.1);--header-text:#fff;--header-link:rgba(255,255,255,.7);--tag-985-bg:#f0e6d3;--tag-985-text:#7a5c3a;--tag-211-bg:#e8f0d8;--tag-211-text:#5a7a3a;--tag-dc-bg:#f0d8d8;--tag-dc-text:#8a3a3a;--danger:#c0392b;--danger-hover:#a93226;--green:#7a9a5a;--orange:#d4a030;--blue:#5a8aaa}
[data-theme="gray"]{--primary:#546e7a;--primary-dark:#455a64;--bg:#f0f2f5;--card:#fff;--border:#cfd8dc;--text:#37474f;--text2:#78909c;--nav-bg:#fff;--nav-hover:#eceff1;--th-bg:#eceff1;--tr-hover:#f5f7fa;--modal-overlay:rgba(0,0,0,.5);--modal-bg:#fff;--sec-bg:#eceff1;--cat-bg:#eceff1;--cat-hover:#dde3e7;--shadow:rgba(0,0,0,.06);--header-text:#fff;--header-link:rgba(255,255,255,.7);--tag-985-bg:#e3f2fd;--tag-985-text:#1565c0;--tag-211-bg:#e8f5e9;--tag-211-text:#2e7d32;--tag-dc-bg:#fff3e0;--tag-dc-text:#e65100;--danger:#e53935;--danger-hover:#c62828;--green:#66bb6a;--orange:#ffa726;--blue:#42a5f5}
[data-theme="green"]{--primary:#2e7d32;--primary-dark:#1b5e20;--bg:#f1f8e9;--card:#fff;--border:#c8e6c9;--text:#1b3a1b;--text2:#558b2f;--nav-bg:#fff;--nav-hover:#e8f5e9;--th-bg:#e8f5e9;--tr-hover:#f1f8e9;--modal-overlay:rgba(0,0,0,.4);--modal-bg:#fff;--sec-bg:#e8f5e9;--cat-bg:#e8f5e9;--cat-hover:#c8e6c9;--shadow:rgba(0,0,0,.06);--header-text:#fff;--header-link:rgba(255,255,255,.7);--tag-985-bg:#e3f2fd;--tag-985-text:#1565c0;--tag-211-bg:#e8f5e9;--tag-211-text:#2e7d32;--tag-dc-bg:#fff3e0;--tag-dc-text:#e65100;--danger:#e53935;--danger-hover:#c62828;--green:#43a047;--orange:#ef6c00;--blue:#1e88e5}
[data-theme="warm"]{--primary:#d4742a;--primary-dark:#b85e1a;--bg:#fef9f0;--card:#fffdf5;--border:#f0dcc0;--text:#4a3520;--text2:#a08060;--nav-bg:#fffdf5;--nav-hover:#fdf0e0;--th-bg:#fdf0e0;--tr-hover:#fef9f0;--modal-overlay:rgba(0,0,0,.4);--modal-bg:#fffdf5;--sec-bg:#fdf0e0;--cat-bg:#fdf0e0;--cat-hover:#f5e0cc;--shadow:rgba(0,0,0,.06);--header-text:#fff;--header-link:rgba(255,255,255,.8);--tag-985-bg:#ffe0b2;--tag-985-text:#bf6a1a;--tag-211-bg:#fff3e0;--tag-211-text:#d4742a;--tag-dc-bg:#ffe0b2;--tag-dc-text:#bf6a1a;--danger:#e64a19;--danger-hover:#bf360c;--green:#8d6e3a;--orange:#ff8f00;--blue:#5a8aaa}
body{font-family:-apple-system,"Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);font-size:14px}
.header{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:var(--header-text);padding:12px 20px 8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.header h1{font-size:17px;margin:0}.header .info{font-size:12px;opacity:.8;flex:1}.header .link{color:var(--header-link);font-size:12px;text-decoration:none;border:1px solid rgba(255,255,255,.2);padding:2px 10px;border-radius:4px}.header .link:hover{color:var(--header-text)}
.nav{display:flex;background:var(--nav-bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50;overflow-x:auto}
.nav-item{padding:10px 16px;cursor:pointer;font-size:13px;color:var(--text2);border-bottom:2px solid transparent;white-space:nowrap}
.nav-item:hover{color:var(--primary);background:var(--nav-hover)}.nav-item.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
.page{display:none;max-width:1280px;margin:0 auto;padding:12px}.page.active{display:block}
.card{background:var(--card);border-radius:8px;box-shadow:0 1px 3px var(--shadow);padding:14px;margin-bottom:10px}
.card h3{font-size:15px;margin-bottom:8px}.filter-row{display:flex;gap:8px;flex-wrap:wrap;align-items:end;margin-bottom:8px}
.filter-group{flex:1;min-width:110px}.filter-group label{display:block;font-size:11px;color:var(--text2);margin-bottom:3px}
.filter-group select,.filter-group input{width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:5px;font-size:13px;background:var(--card);color:var(--text)}
.filter-group select:focus,.filter-group input:focus{outline:none;border-color:var(--primary)}
.btn{padding:5px 14px;background:var(--primary);color:var(--header-text);border:none;border-radius:5px;font-size:13px;cursor:pointer}
.btn:hover{background:var(--primary-dark)}.btn-sm{padding:3px 10px;font-size:11px}.btn-outline{background:transparent;color:var(--primary);border:1px solid var(--primary)}
.btn-danger{background:var(--danger)}.btn-danger:hover{background:var(--danger-hover)}
table{width:100%;border-collapse:collapse;font-size:13px}
th{background:var(--th-bg);color:var(--text2);font-weight:600;padding:6px 8px;text-align:left;border-bottom:2px solid var(--border);white-space:nowrap}
td{padding:5px 8px;border-bottom:1px solid var(--border)}tr:hover{background:var(--tr-hover)}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--nav-hover)}
.pagination{display:flex;justify-content:center;align-items:center;gap:8px;padding:10px 0}
.pagination .info{color:var(--text2);font-size:12px}
.tag{display:inline-block;padding:1px 7px;border-radius:8px;font-size:10px;font-weight:500}
.tag-985{background:var(--tag-985-bg);color:var(--tag-985-text)}.tag-211{background:var(--tag-211-bg);color:var(--tag-211-text)}.tag-dc{background:var(--tag-dc-bg);color:var(--tag-dc-text)}

/* Step2 专业选择 */
.v2-tag{cursor:pointer;display:inline-block;padding:4px 12px;margin:3px;border-radius:14px;font-size:12px;border:1px solid var(--border);background:var(--card);color:var(--text);transition:all .15s;user-select:none}
.v2-tag:hover{border-color:var(--primary);color:var(--primary)}
.v2-tag.active{background:var(--primary);color:var(--header-text);border-color:var(--primary)}
.v2-psycho-tag{cursor:pointer;display:inline-block;padding:4px 12px;margin:3px;border-radius:14px;font-size:12px;border:1px solid var(--green);color:var(--green);background:rgba(16,185,129,.08);transition:all .15s;user-select:none}
.v2-psycho-tag:hover{background:rgba(16,185,129,.18)}
.v2-psycho-tag.active{background:var(--green);color:var(--header-text)}
.v2-selected-item{display:flex;align-items:center;gap:6px;padding:5px 8px;margin:2px 0;background:var(--card);border:1px solid var(--border);border-radius:6px;font-size:12px}
.v2-selected-item .v2-move-btn{cursor:pointer;padding:2px 5px;border-radius:3px;border:1px solid var(--border);background:transparent;color:var(--text2);font-size:11px;line-height:1;transition:all .1s}
.v2-selected-item .v2-move-btn:hover{border-color:var(--primary);color:var(--primary)}
.v2-selected-item .v2-rm-btn{cursor:pointer;color:var(--danger);font-size:13px;margin-left:auto;padding:0 4px}
.v2-selected-item .v2-rm-btn:hover{text-decoration:underline}
.v2-section-label{font-size:11px;color:var(--text2);margin:8px 0 3px}
.plan-tabs{display:flex;gap:4px;margin-bottom:6px}.plan-tab{cursor:pointer;padding:4px 12px;border-radius:6px;font-size:12px;border:1px solid var(--border);color:var(--text2);transition:all .15s;user-select:none}.plan-tab:hover{border-color:var(--primary);color:var(--primary)}.plan-tab.active{background:var(--primary);color:var(--header-text);border-color:var(--primary)}
.modal{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:var(--modal-overlay);z-index:10000;overflow:auto}
.modal-content{background:var(--modal-bg);margin:30px auto;max-width:800px;border-radius:10px;padding:20px;position:relative;color:var(--text)}
.modal-close{position:absolute;top:10px;right:14px;font-size:22px;cursor:pointer;color:var(--text2)}
.tabs{display:flex;gap:2px;margin-bottom:8px;border-bottom:1px solid var(--border);overflow-x:auto}
.tab{padding:5px 12px;cursor:pointer;font-size:12px;color:var(--text2);border-bottom:2px solid transparent;white-space:nowrap}
.tab:hover{color:var(--primary)}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
.sec-col{border-radius:8px;background:var(--sec-bg);border-left:4px solid var(--primary);margin-bottom:8px;max-height:400px;overflow-y:auto}
.sec-col.chong{border-left-color:var(--orange)}.sec-col.wen{border-left-color:var(--green)}.sec-col.bao{border-left-color:var(--blue)}
.sec-col-title{padding:8px 12px;font-weight:700;font-size:14px;position:sticky;top:0;background:var(--sec-bg);z-index:1;border-bottom:1px solid var(--border)}
.sec-col-content{padding:4px 8px 8px}
.sec-col-content table th{position:sticky;top:36px;z-index:1;background:var(--th-bg)}
.sub-tag{display:inline-block;padding:3px 12px;border-radius:12px;font-size:12px;cursor:pointer;border:1px solid var(--border);margin:3px;color:var(--text2)}
.sub-tag:hover{border-color:var(--primary);color:var(--primary);background:var(--nav-hover)}
.cat-card{background:var(--cat-bg);border-radius:8px;padding:12px;cursor:pointer;margin:4px;min-width:180px;flex:1}
.cat-card:hover{background:var(--cat-hover)}.empty{text-align:center;padding:30px;color:var(--text2);font-size:13px}
.scroll-wrap{max-height:60vh;overflow-y:auto;padding-right:2px;scrollbar-width:thin}
.scroll-wrap::-webkit-scrollbar{width:2px}
.scroll-wrap::-webkit-scrollbar-track{background:transparent}
.scroll-wrap::-webkit-scrollbar-thumb{background:rgba(26,115,232,0.25);border-radius:1px}
@media(max-width:600px){.filter-group{min-width:100%}.page{padding:8px}.header{padding:8px 12px}}

/* Theme toggle */
.theme-btn{cursor:pointer;font-size:14px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:2px 8px;color:rgba(255,255,255,.8);line-height:1.6;transition:all .2s}
.theme-btn:hover{background:rgba(255,255,255,.25);color:#fff}

/* ── 方案详情（内嵌 SPA） ────────────────────────────── */
.detail-header{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.detail-header h2{font-size:17px;margin-bottom:4px}
.detail-header .meta{font-size:11px;color:var(--text2)}
.back-link{display:inline-block;margin-bottom:12px;color:var(--primary);cursor:pointer;font-size:13px;text-decoration:none}
.plan-tab-pane{display:none}.plan-tab-pane.active{display:block}
.plan-summary{font-size:11px;color:var(--text2);margin-bottom:6px}
.plan-tier-header{font-size:11px;font-weight:600;color:var(--text);padding:4px 0}
.tier-badge{display:inline-block;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:600;margin-right:4px}
.tier-badge.rush,.stat-rush{background:#fee2e2;color:#ef4444}
.tier-badge.safe,.stat-safe{background:#fef3c7;color:#f59e0b}
.tier-badge.bottom,.stat-bottom{background:#d1fae5;color:#10b981}
.card-stats{display:flex;gap:12px;font-size:12px}
.card-stats span{padding:2px 8px;border-radius:4px}
.card-footer{font-size:11px;color:var(--text2);margin-top:4px}
.btn-action{padding:3px 10px;border:1px solid var(--border);border-radius:4px;background:var(--card);cursor:pointer;font-size:11px;color:var(--text)}
.btn-action:hover{border-color:var(--primary);color:var(--primary)}
.btn-danger{border-color:var(--danger);color:var(--danger)}
.btn-danger:hover{border-color:var(--danger-hover);color:var(--danger-hover)}
.page-controls{display:flex;align-items:center;justify-content:center;gap:8px;margin:10px 0 4px}
.page-btn{padding:4px 12px;border:1px solid var(--border);border-radius:5px;background:var(--card);cursor:pointer;font-size:12px;color:var(--text);user-select:none}
.page-btn:hover{border-color:var(--primary);color:var(--primary)}
.page-btn:disabled{opacity:0.4;cursor:default;border-color:var(--border);color:var(--text2)}
.page-info{font-size:11px;color:var(--text2)}

/* 院校卡片（方案详情内） */
.school-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 10px;margin-bottom:6px;font-size:12px;line-height:1.5}
.school-card-header{display:flex;justify-content:space-between;align-items:center;gap:4px}
.school-card-name{font-weight:600;font-size:13px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.school-card-actions{display:flex;gap:4px;align-items:center;flex-shrink:0;font-size:11px;color:var(--text2)}
.school-card-actions .action{cursor:pointer;color:var(--danger)}
.prob-bar{margin-top:4px;height:6px;border-radius:3px;background:linear-gradient(to right,#ef4444,#f59e0b,#10b981);position:relative;overflow:visible}
.prob-dot{position:absolute;top:-2px;width:10px;height:10px;border-radius:50%;transform:translateX(-50%);border:2px solid var(--card);box-shadow:0 1px 3px var(--shadow)}
.psy-row{margin-top:4px;font-size:11px;color:var(--green);cursor:pointer}
.psy-detail,.match-detail{display:none;margin-top:4px;padding:6px 8px;background:var(--sec-bg);border-radius:6px;font-size:10px;color:var(--text)}
.psy-detail .tag,.match-detail .tag{display:inline-block;padding:1px 6px;border-radius:4px;margin-right:4px;margin-bottom:2px;font-size:9px}
.match-info{margin-top:4px;font-size:11px;color:var(--text2)}
.emp-info{margin-top:4px;font-size:11px;color:#8b5cf6}
.card-title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:4px}
.card-meta{font-size:11px;color:var(--text2);margin-bottom:6px}
