/* ============================================================
   zhiyuan_site · 简洁主题
   主色：蓝 #3B82F6；春考切换强调用 紫 #7C3AED
   档位：冲 #FF6A33 / 稳 #14B8A6 / 保 #3B82F6
   ============================================================ */
:root {
    --c-purple:#7C3AED; --c-blue:#3B82F6;
    --c-orange:#FF6A33; --c-teal:#14B8A6;
    --c-bg:#f4f5f7;     --c-card:#fff;
    --c-text:#1f2330;   --c-muted:#7a818f;
    --c-line:#e7e9ee;   --c-line-2:#f0f1f5;
    --accent:var(--c-blue);
}
body[data-tab="chunkao"] { --accent:var(--c-purple); }

* { box-sizing:border-box; }
html,body { margin:0; padding:0; }
body {
    font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
    background:var(--c-bg); color:var(--c-text); font-size:14px;
    -webkit-tap-highlight-color:transparent;
    padding-bottom:80px; line-height:1.5;
}
a { color:inherit; text-decoration:none; }
button,input,select { font-family:inherit; }

/* ============ Header ============ */
.hdr {
    background:var(--c-card); border-bottom:1px solid var(--c-line);
    position:sticky; top:0; z-index:10;
}
.hdr-inner {
    display:flex; align-items:center; gap:12px; max-width:1080px;
    margin:0 auto; padding:14px 16px;
}
.hdr-title { font-size:17px; font-weight:600; flex:1; }
.hdr-meta { font-size:12px; color:var(--c-muted); }
.back {
    width:30px; height:30px; border-radius:50%;
    background:var(--c-bg); color:var(--c-text);
    display:flex; align-items:center; justify-content:center;
    font-size:20px; line-height:1; flex-shrink:0;
}

/* 院校优先 / 专业优先 */
.view-toggle {
    display:flex; max-width:260px; margin:6px auto 10px;
    background:var(--c-bg); border-radius:8px; padding:3px;
}
.view-toggle .vt {
    flex:1; padding:7px 0; border:0; background:transparent;
    color:var(--c-muted); font-size:13px; font-weight:500;
    border-radius:6px; cursor:pointer;
}
.view-toggle .vt.on { background:var(--c-card); color:var(--c-text); box-shadow:0 1px 2px rgba(0,0,0,.06); }

/* 冲 / 稳 / 保 */
.bucket-tabs {
    display:flex; gap:24px; max-width:1080px; margin:0 auto;
    padding:0 16px 8px; border-bottom:1px solid var(--c-line);
}
.bucket-tabs .bt {
    background:transparent; border:0; padding:8px 0; cursor:pointer;
    color:var(--c-muted); font-size:14px; position:relative;
}
.bucket-tabs .bt.on { color:var(--c-text); font-weight:600; }
.bucket-tabs .bt.on::after {
    content:''; position:absolute; left:0; right:0; bottom:-9px;
    height:2px; background:var(--accent);
}
.bucket-tabs .bt i {
    background:var(--c-bg); color:var(--c-muted); border-radius:10px;
    padding:1px 7px; font-size:11px; font-style:normal; margin-left:3px;
}
.bucket-tabs .bt.on i { background:var(--accent); color:#fff; }

/* ============ Main ============ */
.main { max-width:1080px; margin:0 auto; padding:14px 12px 30px; }

.alert {
    background:#fff7e6; border:1px solid #fde2b0;
    color:#7a5a14; padding:10px 14px; border-radius:6px;
    margin-bottom:14px; font-size:13px;
}
.alert a { color:var(--accent); font-weight:600; }

/* ============ Index 表单 ============ */
.qform { background:var(--c-card); border-radius:10px; padding:18px 18px 22px; border:1px solid var(--c-line); }
.fld { margin-bottom:18px; }
.fld:last-child { margin-bottom:0; }
.lbl { display:block; font-size:13px; color:var(--c-muted); margin-bottom:8px; font-weight:500; }
.lbl-hint { color:var(--c-orange); font-weight:400; font-size:12px; }

.seg { display:flex; gap:8px; }
.seg label {
    flex:1; padding:11px 10px; border:1px solid var(--c-line);
    border-radius:8px; cursor:pointer; text-align:center;
    font-size:14px; transition:all .12s;
}
.seg input { display:none; }
.seg label:has(input:checked) {
    border-color:var(--accent); color:var(--accent);
    background:rgba(59,130,246,.05); font-weight:600;
}
body[data-tab="chunkao"] .seg label:has(input:checked) { background:rgba(124,58,237,.05); }

.inp,.sel {
    width:100%; padding:11px 12px; border:1px solid var(--c-line);
    border-radius:8px; background:var(--c-card); font-size:14px;
    outline:0; transition:border-color .12s;
    appearance:none; -webkit-appearance:none;
}
.inp:focus,.sel:focus { border-color:var(--accent); }
.sel {
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%237a818f' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");
    background-repeat:no-repeat;
    background-position:right 14px center;
    padding-right:30px;
}
.hint { font-size:12px; color:var(--c-muted); margin-top:6px; }
.hint b { color:var(--accent); font-weight:600; }

.btn-primary {
    width:100%; padding:13px; border:0; border-radius:8px;
    background:var(--accent); color:#fff; font-size:15px; font-weight:600;
    cursor:pointer; margin-top:6px;
}
.btn-primary:hover { filter:brightness(.95); }

/* ============ Result 顶部筛选 ============ */
.filter-row { display:flex; gap:8px; margin-bottom:10px; flex-wrap:wrap; }
.fp {
    padding:7px 14px; border:1px solid var(--c-line); background:var(--c-card);
    color:var(--c-text); border-radius:6px; cursor:pointer; font-size:13px;
}
.fp:hover { border-color:var(--accent); color:var(--accent); }
.fp.active {
    border-color:var(--accent); color:var(--accent); font-weight:600;
    background:#eef4fe;
}
body[data-tab="chunkao"] .fp.active { background:#f4efff; }
.fp-search {
    flex:1; min-width:140px; padding:7px 12px;
    border:1px solid var(--c-line); border-radius:6px;
    background:var(--c-card); font-size:13px; outline:0;
}
.fp-search:focus { border-color:var(--accent); }
.feature-hint {
    margin:-2px 0 12px; padding:8px 11px; border-left:3px solid var(--accent);
    background:var(--c-card); color:var(--c-muted); font-size:12px;
    border-radius:0 6px 6px 0;
}
.feature-hint b { color:var(--accent); }

/* 夏考 选科紧凑 chips */
.subj-chips { display:flex; flex-wrap:wrap; gap:6px; }
.subj-chips label {
    display:inline-flex; align-items:center; gap:6px;
    padding:6px 10px; border:1px solid var(--c-line);
    border-radius:6px; font-size:12px; cursor:pointer;
    background:var(--c-card); user-select:none;
}
.subj-chips input {
    display:block; width:13px; height:13px; margin:0;
    accent-color:var(--accent);
}
.subj-chips label:has(input:checked) {
    border-color:var(--accent); color:var(--accent);
    background:rgba(59,130,246,.06);
}

/* 滑块提示 */
.slider-tip { font-size:11px; color:var(--c-muted); margin-left:6px; }

/* 滑块 */
.slider-row {
    display:flex; align-items:center; gap:14px;
    background:var(--c-card); border:1px solid var(--c-line);
    border-radius:8px; padding:13px 16px; margin-bottom:12px;
}
.slider-lab { font-size:12px; color:var(--c-muted); flex-shrink:0; }
.dual-slider { position:relative; flex:1; height:24px; }
.ds-track { position:absolute; top:11px; left:0; right:0; height:3px; background:var(--c-line); border-radius:2px; }
.ds-fill  { position:absolute; top:0; bottom:0; background:var(--accent); border-radius:2px; }
.ds-thumb { position:absolute; top:0; transform:translateX(-50%); width:40px; height:24px; cursor:grab; }
.ds-thumb::before {
    content:''; position:absolute; left:11px; top:3px;
    width:16px; height:16px; border-radius:50%;
    background:#fff; border:2px solid var(--accent);
}
.ds-val {
    position:absolute; top:-18px; left:50%; transform:translateX(-50%);
    font-size:11px; color:var(--c-text); background:var(--c-card);
    border:1px solid var(--c-line); padding:1px 6px; border-radius:8px;
    min-width:32px; text-align:center;
}

/* ============ 卡片 ============ */
.result-list { display:flex; flex-direction:column; gap:8px; }
.loading,.empty-hint { text-align:center; padding:40px 16px; color:var(--c-muted); font-size:13px; }

.card {
    background:var(--c-card); border:1px solid var(--c-line);
    border-radius:8px; padding:14px;
}
.card-head { display:flex; align-items:flex-start; gap:12px; }
.card-body { flex:1; min-width:0; }

.logo {
    width:42px; height:42px; border-radius:6px;
    display:flex; align-items:center; justify-content:center;
    overflow:hidden; flex-shrink:0; object-fit:cover;
    background:var(--c-bg);
}
.logo.fb { color:#fff; font-weight:600; font-size:18px; }

.card-school { font-size:15px; font-weight:600; }
.card-school i { font-size:11px; color:var(--c-muted); font-style:normal; font-weight:400; }
.card-major { font-size:13px; color:var(--c-text); margin-top:3px; }
.card-major i { font-size:11px; color:var(--c-muted); font-style:normal; }

.card-meta { display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }
.card-meta span {
    font-size:11px; color:var(--c-muted);
    border-right:1px solid var(--c-line); padding-right:8px;
}
.card-meta span:last-child { border:0; padding-right:0; }
.card-meta .tag {
    background:#f4f0fb; color:var(--c-purple); padding:0 6px;
    border-radius:3px; border:0;
}

.card-prob {
    flex-shrink:0; text-align:center; min-width:48px;
    padding:6px 4px; border-radius:6px;
}
.card-prob.c-reach { background:rgba(255,106,51,.08); color:var(--c-orange); }
.card-prob.c-match { background:rgba(20,184,166,.08); color:var(--c-teal); }
.card-prob.c-safe  { background:rgba(59,130,246,.08); color:var(--c-blue); }
.card-prob .pp { font-size:15px; font-weight:700; line-height:1.2; }
.card-prob .pb { font-size:11px; color:inherit; margin-top:1px; }

.card-num {
    margin-top:10px; padding-top:10px; border-top:1px solid var(--c-line-2);
    display:flex; gap:18px; font-size:12px; color:var(--c-muted);
}
.card-num b { color:var(--c-text); font-weight:600; }

.card-exp {
    margin-top:8px; padding:8px 10px; background:var(--c-bg);
    border-radius:6px; display:flex; flex-direction:column; gap:4px;
}
.exp-major {
    display:flex; align-items:center; gap:10px;
    font-size:12px; padding:6px 0; border-bottom:1px solid var(--c-line-2);
}
.exp-major:last-child { border-bottom:0; }
.em-name { flex:1; min-width:150px; }
.em-name i { color:var(--c-muted); font-style:normal; font-size:11px; }
.em-badges { display:flex; flex-wrap:wrap; gap:3px; }
.em-badges i {
    padding:1px 5px; background:#f4f0fb; color:var(--c-purple);
    border-radius:3px; font-size:10px; font-style:normal;
}
.em-tuit,.em-plan,.em-score { color:var(--c-muted); font-variant-numeric:tabular-nums; white-space:nowrap; }
.em-add {
    width:22px; height:22px; border-radius:50%; border:1px solid var(--accent);
    background:transparent; color:var(--accent); cursor:pointer; font-size:14px;
    line-height:1; flex-shrink:0;
}
.em-add.done { background:var(--accent); color:#fff; }

.card-foot {
    margin-top:10px; padding-top:10px; border-top:1px solid var(--c-line-2);
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    font-size:12px;
}
.cf-link { color:var(--accent); }
.cf-add {
    padding:6px 14px; border:1px solid var(--accent); background:var(--c-card);
    color:var(--accent); border-radius:14px; cursor:pointer;
    font-size:12px;
}
.cf-add:hover { background:var(--accent); color:#fff; }
.cf-add.done  { background:var(--accent); color:#fff; }

/* ============ 浮动栏 ============ */
.fab-bar {
    position:fixed; bottom:12px; left:12px; right:12px;
    max-width:1056px; margin:0 auto;
    background:var(--c-card); border-radius:8px;
    border:1px solid var(--c-line);
    box-shadow:0 4px 16px rgba(0,0,0,.08);
    padding:6px 10px 6px 16px; z-index:20;
    display:flex; align-items:center; gap:8px;
}
.fab-loc { flex:1; font-size:12px; color:var(--c-muted); }
.fab-btn {
    padding:8px 16px; border:0; border-radius:6px;
    background:var(--accent); color:#fff; font-size:13px;
    cursor:pointer; text-decoration:none; display:inline-block;
}
.fab-btn.alt { background:var(--c-text); }
.fab-btn:hover { filter:brightness(.95); }

/* ============ 模态 ============ */
.modal { position:fixed; inset:0; z-index:50; }
.m-mask { position:absolute; inset:0; background:rgba(0,0,0,.4); }
.m-body {
    position:absolute; left:0; right:0; bottom:0;
    background:var(--c-card); border-radius:12px 12px 0 0;
    padding:16px; max-height:80vh; display:flex; flex-direction:column;
}
.m-title {
    font-size:15px; font-weight:600; margin-bottom:12px;
    display:flex; align-items:center; gap:8px;
}
.m-back {
    width:26px; height:26px; border-radius:50%; border:0;
    background:var(--c-bg); color:var(--c-text);
    font-size:18px; line-height:1; cursor:pointer;
}
.loc-row { cursor:pointer; }
.loc-name { display:flex; flex-direction:column; flex:1; }
.loc-name .loc-hint { font-size:11px; color:var(--c-muted); font-style:normal; margin-top:2px; }
.loc-arrow { color:var(--c-muted); font-size:18px; line-height:1; margin-left:6px; }
.m-search {
    width:100%; padding:9px 12px; border:1px solid var(--c-line);
    border-radius:6px; font-size:13px; background:var(--c-bg);
    margin-bottom:8px; outline:0;
}
.m-list { overflow-y:auto; max-height:60vh; }
.m-group { font-size:12px; color:var(--c-muted); padding:8px 0 4px; }
.m-cell {
    display:flex; align-items:center; justify-content:space-between;
    padding:11px 4px; border-bottom:1px solid var(--c-line-2);
    cursor:pointer; font-size:14px;
}
.m-cell input[type=checkbox] { width:18px; height:18px; accent-color:var(--accent); }
.m-foot {
    display:flex; align-items:center; gap:10px;
    padding-top:10px; border-top:1px solid var(--c-line); margin-top:8px;
}
.m-cnt { flex:1; font-size:13px; color:var(--c-muted); }
.m-cnt b { color:var(--c-text); }
.m-clear { background:var(--c-card); border:1px solid var(--c-line); border-radius:6px; padding:7px 14px; cursor:pointer; font-size:13px; color:var(--c-muted); }
.m-ok { background:var(--accent); color:#fff; border:0; border-radius:6px; padding:8px 18px; cursor:pointer; font-size:13px; font-weight:600; }

/* ============ 志愿表（表格视图）============ */
.zybiao-summary {
    background:var(--c-card); border:1px solid var(--c-line);
    border-radius:8px; padding:14px 16px;
    margin:0 0 10px; display:flex; align-items:baseline; gap:8px;
}
.zs-cnt { font-size:22px; font-weight:700; color:var(--accent); }
.zs-tot { font-size:13px; color:var(--c-muted); }
.zs-lab { font-size:12px; color:var(--c-muted); }
.zybiao-hint {
    background:#eef4fe; color:var(--accent);
    padding:10px 12px; border-radius:6px; font-size:12px; margin-bottom:10px;
    line-height:1.6; display:grid; gap:3px;
}
.zybiao-hint b { margin-right:4px; }

.zybiao-table-wrap {
    background:var(--c-card); border:1px solid var(--c-line);
    border-radius:8px; overflow:auto;
}
.zy-table {
    width:100%; border-collapse:collapse; font-size:13px;
    min-width:760px;
}
.zy-table thead th {
    background:var(--c-bg); color:var(--c-muted);
    font-weight:500; font-size:12px;
    padding:10px 8px; text-align:left;
    border-bottom:1px solid var(--c-line);
    white-space:nowrap;
    position:sticky; top:0; z-index:1;
}
.zy-table tbody td {
    padding:10px 8px; border-bottom:1px solid var(--c-line-2);
    vertical-align:middle;
}
.zy-table tbody tr:last-child td { border-bottom:0; }
.zy-table td.num { text-align:right; font-variant-numeric:tabular-nums; }
.zy-table td.act { text-align:right; white-space:nowrap; }
.zy-table tr.filled td { background:var(--c-card); }
.zy-table tr.filled:hover td { background:#fafcff; }
.zy-table tr.empty td { color:var(--c-muted); background:#fafbfc; }
.zy-table tr.filled td:first-child {
    width:36px; color:var(--accent); font-weight:600;
    text-align:center;
}
.zy-table tr.empty td:first-child {
    width:36px; text-align:center; color:var(--c-muted);
}
.zy-table b { font-weight:600; }
.zy-code {
    display:inline-block; min-width:50px; margin-right:7px; padding:1px 5px;
    border-radius:3px; background:var(--c-bg); color:var(--c-muted);
    font-size:11px; font-variant-numeric:tabular-nums; text-align:center;
}
.zy-name { white-space:nowrap; }
.zy-table .add-link { color:var(--accent); font-size:12px; }
.t-up,.t-del {
    width:26px; height:26px; border-radius:50%; border:0; cursor:pointer;
    background:var(--c-bg); color:var(--c-muted); font-size:12px;
    margin-left:4px;
}
.t-up:hover { background:rgba(59,130,246,.1); color:var(--accent); }
.t-del:hover { background:#fdecec; color:#c33; }

.hdr-btn {
    padding:5px 12px; border:1px solid var(--c-line); background:var(--c-card);
    color:var(--c-text); border-radius:14px; cursor:pointer; font-size:12px;
    flex-shrink:0;
}
.hdr-btn:hover { border-color:var(--accent); color:var(--accent); }

/* ============ Detail page ============ */
.d-card { background:var(--c-card); border:1px solid var(--c-line); border-radius:8px; padding:16px; margin-bottom:10px; }
.d-title { font-size:14px; font-weight:600; margin-bottom:10px; }
.d-header { display:flex; align-items:flex-start; gap:14px; margin-bottom:14px; }
.d-logo { width:56px; height:56px; border-radius:8px; object-fit:cover; display:flex; align-items:center; justify-content:center; overflow:hidden; flex-shrink:0; }
.d-logo.fb { color:#fff; font-weight:700; font-size:24px; }
.d-name-block { flex:1; min-width:0; }
.d-name { font-size:17px; font-weight:700; }
.d-code { font-size:12px; color:var(--c-muted); font-weight:400; margin-left:4px; }
.d-meta { font-size:12px; color:var(--c-muted); margin-top:4px; }
.d-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; }
.d-tag { padding:2px 8px; border-radius:3px; color:var(--accent); background:rgba(59,130,246,.08); font-size:12px; }
.d-tag.plain { background:var(--c-bg); color:var(--c-muted); }
.d-vr {
    display:inline-block; padding:8px 14px; border:1px solid var(--accent);
    color:var(--accent); border-radius:6px; font-size:13px; margin-bottom:12px;
}
.d-vr:hover { background:var(--accent); color:#fff; }
.d-badges { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:12px; }
.d-badge {
    padding:3px 10px; border-radius:3px; font-size:12px;
    background:var(--c-bg); color:var(--c-muted);
}
.d-badge.doc { background:rgba(255,106,51,.10); color:var(--c-orange); font-weight:600; }
.d-badge.mas { background:rgba(20,184,166,.10); color:var(--c-teal); font-weight:600; }
.d-badge.lvl { background:rgba(124,58,237,.08); color:var(--c-purple); }
.d-intro-title { font-size:13px; font-weight:600; color:var(--c-text); margin-bottom:6px; }
.d-intro { color:var(--c-text); font-size:13px; line-height:1.8; }
.d-intro.muted { color:var(--c-muted); font-size:12px; }
.d-line { font-size:13px; line-height:1.7; margin-bottom:4px; }
.d-line b { color:var(--c-muted); font-weight:500; }
.tbl { width:100%; border-collapse:collapse; font-size:13px; }
.tbl th,.tbl td { padding:8px; border-bottom:1px solid var(--c-line); text-align:left; }
.tbl th { background:var(--c-bg); color:var(--c-muted); font-weight:500; font-size:12px; }
.tbl td.num { text-align:right; font-variant-numeric:tabular-nums; }
.tbl td.empty { text-align:center; color:var(--c-muted); padding:20px; }
.table-wrap { overflow:auto; }
.major-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:8px; }
.major-cell { padding:10px 12px; border:1px solid var(--c-line-2); border-radius:6px; background:#fafbfc; }
.major-name { font-size:13px; font-weight:600; }
.major-name i { margin-left:5px; color:var(--c-muted); font-size:11px; font-style:normal; font-weight:400; }
.major-meta { display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; }
.major-meta .mt { padding:1px 6px; border-radius:3px; background:var(--c-card); color:var(--c-muted); font-size:11px; }
.major-meta .c-cat { color:var(--c-purple); }
.major-meta .c-subj { color:var(--c-blue); }

/* ============ Foot ============ */
.foot { text-align:center; padding:20px 16px; color:var(--c-muted); font-size:12px; }
.foot a { color:var(--accent); }
.foot .sep { margin:0 6px; color:var(--c-line); }
.foot .copy { margin-top:6px; font-size:11px; }

/* ============ 响应 ============ */
@media (max-width:720px) {
    .card-meta span { font-size:11px; padding-right:6px; }
    .card-num { gap:14px; flex-wrap:wrap; }
    .exp-major { flex-wrap:wrap; gap:5px 8px; }
    .em-name { flex-basis:calc(100% - 32px); }
    .em-badges { order:2; }
    .em-tuit,.em-plan,.em-score { order:3; }
    .em-add { margin-left:auto; }
}

/* ============ v7 视觉与交互升级 ============ */
body {
    background:
        radial-gradient(circle at 8% 0%, rgba(59,130,246,.10), transparent 24rem),
        radial-gradient(circle at 92% 12%, rgba(124,58,237,.08), transparent 26rem),
        linear-gradient(180deg, #f7f9ff 0, #f4f6fb 48%, #f5f7f9 100%);
}
.hdr { background:rgba(255,255,255,.94); backdrop-filter:blur(14px); }
.qform,.card,.zybiao-summary,.zybiao-table-wrap {
    box-shadow:0 10px 30px rgba(39,62,110,.06);
}

.btn-primary {
    background:linear-gradient(135deg,var(--accent),var(--c-purple));
    box-shadow:0 8px 20px rgba(59,130,246,.22);
}
body[data-tab="chunkao"] .btn-primary { background:linear-gradient(135deg,var(--c-purple),var(--c-blue)); }
.subj-chips { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.subj-chips label { justify-content:center; min-height:38px; }
.filter-row .fp { font-weight:600; background:#fff; box-shadow:0 3px 10px rgba(39,62,110,.04); }
.filter-row .fp:nth-child(1) { border-color:rgba(59,130,246,.35); color:var(--c-blue); }
.filter-row .fp:nth-child(2) { border-color:rgba(124,58,237,.35); color:var(--c-purple); }
.filter-row .fp:nth-child(3) { border-color:rgba(20,184,166,.38); color:#0f8f80; }
.filter-row .fp:nth-child(4) { border-color:rgba(255,106,51,.38); color:#df5422; }
.filter-row .fp.active { color:#fff; background:linear-gradient(135deg,var(--accent),var(--c-purple)); border-color:transparent; }
.feature-hint { box-shadow:0 6px 18px rgba(39,62,110,.04); }
.card { border-color:rgba(220,225,236,.9); transition:transform .16s,box-shadow .16s; }
.card:hover { transform:translateY(-1px); box-shadow:0 14px 34px rgba(39,62,110,.10); }
.card-exp { margin-top:10px; padding:0; background:transparent; gap:7px; }
.exp-major {
    border-radius:7px;
    padding:9px 10px; background:linear-gradient(90deg,rgba(124,58,237,.035),#fff 34%);
}
.exp-major:last-child { border-bottom:1px solid #e5eaf3; }
.exp-major:nth-child(4n+2) { border-left-color:var(--c-blue); background:linear-gradient(90deg,rgba(59,130,246,.035),#fff 34%); }
.exp-major:nth-child(4n+3) { border-left-color:var(--c-teal); background:linear-gradient(90deg,rgba(20,184,166,.04),#fff 34%); }
.exp-major:nth-child(4n+4) { border-left-color:var(--c-orange); background:linear-gradient(90deg,rgba(255,106,51,.035),#fff 34%); }
.dorm-mini { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:9px; font-size:11px; }
.dorm-mini b { color:#0f8f80; margin-right:2px; }
.dorm-mini span { padding:3px 7px; border-radius:10px; background:rgba(20,184,166,.08); color:#147d72; }
.cf-link { border:0; padding:5px 0; background:transparent; font-size:12px; cursor:pointer; font-weight:600; }
.tuition-options .m-cell > span { display:flex; flex-direction:column; }
.tuition-options .m-cell small { color:var(--c-muted); font-size:11px; margin-top:2px; }
.tuition-options input { width:18px; height:18px; accent-color:var(--accent); }

/* 院校详情底部弹层 */
.modal-open { overflow:hidden; }
.school-detail-modal .m-mask { background:rgba(20,27,45,.55); backdrop-filter:blur(3px); }
.school-detail-sheet {
    width:100%; max-width:820px; margin:0 auto; max-height:90vh; padding:0;
    overflow:hidden; border-radius:18px 18px 0 0; box-shadow:0 -18px 60px rgba(22,30,51,.22);
}
.detail-sheet-head {
    display:flex; align-items:center; justify-content:space-between; gap:16px;
    padding:18px 20px 14px; border-bottom:1px solid var(--c-line-2);
    background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(124,58,237,.08),rgba(255,106,51,.04));
}
.detail-kicker { color:var(--c-blue); font-size:11px; font-weight:700; letter-spacing:.12em; }
.detail-sheet-head h2 { margin:2px 0 0; font-size:20px; }
.detail-close {
    width:38px; height:38px; border:0; border-radius:50%; background:#fff; color:var(--c-muted);
    font-size:26px; line-height:1; cursor:pointer; box-shadow:0 4px 14px rgba(39,62,110,.10);
}
.school-detail-content { overflow-y:auto; padding:0 20px 28px; }
.detail-school-meta { display:flex; flex-wrap:wrap; gap:7px; padding:14px 0 2px; }
.detail-school-meta span { padding:4px 9px; border-radius:12px; background:#f0f4ff; color:#52617d; font-size:11px; }
.detail-section { padding:18px 0 2px; }
.detail-section h3 { display:flex; align-items:center; gap:8px; margin:0 0 11px; font-size:15px; }
.detail-section h3 i { width:4px; height:18px; border-radius:3px; background:var(--c-blue); }
.detail-section h3 .tone-purple { background:var(--c-purple); }
.detail-section h3 .tone-orange { background:var(--c-orange); }
.detail-section h3 .tone-green { background:var(--c-teal); }
.detail-intro { margin:0; padding:14px 16px; border-radius:10px; background:#f8f9fc; line-height:1.85; font-size:13px; color:#394052; }
.academic-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.academic-card { border:1px solid #e6e9f2; border-radius:10px; padding:13px; background:#fff; }
.academic-card.master { border-top:3px solid var(--c-teal); }
.academic-card.doctor { border-top:3px solid var(--c-orange); }
.academic-card-top { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.academic-card-top span { padding:2px 7px; border-radius:10px; background:#f1f4f9; color:var(--c-muted); font-size:10px; }
.academic-card p { margin:8px 0 0; color:var(--c-muted); font-size:12px; line-height:1.7; }
.academic-note { margin-top:9px; padding:10px 12px; border-radius:8px; background:#faf8ff; color:var(--c-muted); font-size:11px; }
.academic-note b { color:var(--c-purple); }
.academic-note p { margin:4px 0 0; line-height:1.6; }
.detail-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; }
.detail-metrics > div { padding:13px 8px; text-align:center; border-radius:10px; background:linear-gradient(145deg,#f4f6ff,#fff); border:1px solid #e9ecf5; }
.detail-metrics b { display:block; color:var(--c-purple); font-size:18px; }
.detail-metrics span { display:block; margin-top:3px; color:var(--c-muted); font-size:11px; }
.dorm-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }
.dorm-fact { display:flex; align-items:center; gap:11px; min-height:70px; padding:12px; border-radius:10px; background:#f8f9fc; border:1px solid #edf0f6; }
.dorm-icon { display:grid; place-items:center; width:36px; height:36px; border-radius:9px; background:#eef4ff; font-size:18px; }
.dorm-fact b,.dorm-fact small { display:block; }
.dorm-fact b { font-size:13px; }
.dorm-fact small { margin-top:2px; color:var(--c-muted); font-size:10px; }
.dorm-fact.is-empty { opacity:.58; }
.dorm-tags { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.dorm-tags span { padding:4px 8px; border-radius:12px; background:rgba(20,184,166,.09); color:#147d72; font-size:11px; }
.detail-note { color:var(--c-muted); font-size:10px; margin:10px 0 0; }
.detail-loading,.detail-error { padding:50px 16px; text-align:center; color:var(--c-muted); }
.detail-error { color:#c33; }

/* 志愿表广告与移动卡片 */
.zy-ad-banner {
    display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; margin-bottom:10px; padding:12px 15px;
    border-radius:10px; color:#fff; background:linear-gradient(110deg,var(--c-purple),var(--c-blue) 55%,var(--c-teal));
    box-shadow:0 10px 24px rgba(73,71,191,.18);
}
.zy-ad-banner b { font-size:16px; }
.zy-ad-banner span { flex:1; min-width:160px; opacity:.92; }
.zy-ad-banner em { font-style:normal; padding:4px 9px; border-radius:12px; background:rgba(255,255,255,.18); font-size:11px; }

@media (max-width:720px) {
    .filter-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
    .filter-row .fp { min-height:38px; padding:7px 9px; }
    .fp-search { grid-column:1/-1; min-height:40px; }
    .slider-row { align-items:flex-start; flex-direction:column; gap:11px; padding-top:12px; }
    .dual-slider { width:100%; flex:none; }
    .academic-grid,.detail-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .school-detail-content { padding-left:15px; padding-right:15px; }
    .detail-sheet-head { padding-left:15px; padding-right:15px; }
    .zybiao-table-wrap { border:0; background:transparent; box-shadow:none; overflow:visible; }
    .zy-table { min-width:0; display:block; }
    .zy-table thead { display:none; }
    .zy-table tbody { display:grid; gap:8px; }
    .zy-table tbody tr { background:#fff; border:1px solid var(--c-line); border-radius:10px; overflow:hidden; box-shadow:0 7px 20px rgba(39,62,110,.05); }
    .zy-table tr.filled { display:grid; grid-template-columns:42px minmax(0,1fr); padding:8px 9px 8px 0; }
    .zy-table tr.filled td { grid-column:2; border:0; padding:5px 7px; min-width:0; }
    .zy-table tr.filled td:first-child { grid-column:1; grid-row:1/8; width:auto; display:grid; place-items:center; padding:0; background:linear-gradient(180deg,var(--c-blue),var(--c-purple)); color:#fff; }
    .zy-table tr.filled td[data-label] { display:grid; grid-template-columns:70px minmax(0,1fr); gap:7px; align-items:start; text-align:left; }
    .zy-table tr.filled td[data-label]::before { content:attr(data-label); color:var(--c-muted); font-size:11px; font-weight:500; }
    .zy-table tr.filled td.act { text-align:left; }
    .zy-name { white-space:normal; }
    .zy-code { min-width:auto; }
    .zy-table tr.empty { display:grid; grid-template-columns:42px 1fr; min-height:48px; }
    .zy-table tr.empty td { border:0; display:flex; align-items:center; padding:8px 12px; }
    .zy-table tr.empty td:first-child { width:auto; justify-content:center; padding:0; background:#f2f5fa; }
    .fab-bar { left:8px; right:8px; bottom:8px; padding:7px; gap:6px; }
    .fab-bar .fab-btn { flex:1; padding:9px 7px; text-align:center; white-space:nowrap; }
    .fab-loc { display:none; }
}

/* ============ 打印 ============ */
@media print {
    body { padding:0; background:#fff; }
    .hdr,.fab-bar,.zybiao-hint,.zybiao-summary,.slot-actions { display:none !important; }
    .slot { border:none; border-bottom:1px solid #ccc; border-radius:0; padding:8px 0; }
}

/* ============ v8：按修改文档重构 ============ */
.code-badge {
    display:inline-flex; align-items:center; justify-content:center; flex:none;
    min-width:42px; margin-right:7px; padding:2px 7px; border-radius:5px;
    background:#eef4ff; color:#2563eb; border:1px solid #cfe0ff;
    font-size:11px; line-height:1.35; font-style:normal; font-weight:700;
    font-variant-numeric:tabular-nums; vertical-align:middle;
}
.result-hero {
    color:#13213b; border:0; background:linear-gradient(135deg,#b9d5ff,#9ec6fb 58%,#aed5ff);
    box-shadow:0 10px 30px rgba(59,130,246,.13);
}
.result-hero .hdr-inner { padding-bottom:5px; }
.result-hero .back { background:rgba(255,255,255,.65); }
.result-hero .hdr-meta { color:#53657f; }
.result-view-toggle { background:rgba(255,255,255,.78); border-radius:18px; padding:2px; margin-top:2px; }
.result-view-toggle .vt { border-radius:16px; }
.result-view-toggle .vt.on { background:var(--c-blue); color:#fff; box-shadow:0 5px 14px rgba(59,130,246,.28); }
.result-bucket-tabs { border:0; padding-bottom:0; gap:10px; }
.result-bucket-tabs .bt { flex:0 1 96px; padding:10px 10px 12px; color:#21334f; border-radius:9px 9px 0 0; }
.result-bucket-tabs .bt.on { background:#fff; color:var(--c-blue); }
.result-bucket-tabs .bt.on::after { display:none; }
.result-bucket-tabs .bt i { background:transparent; color:inherit; padding:0; }
.result-bucket-tabs .bt.on i { background:transparent; color:inherit; }
.recommend-tools {
    margin-bottom:10px; padding:9px; background:#fff; border:1px solid var(--c-line);
    border-radius:10px; box-shadow:0 8px 20px rgba(39,62,110,.05);
}
.filter-primary { margin:0; display:grid; grid-template-columns:1fr 1fr 42px; }
.filter-primary .fp { min-height:36px; border:0 !important; background:#f4f5f7 !important; color:#596274 !important; box-shadow:none !important; }
.filter-search-toggle {
    border:0; border-radius:8px; background:#f4f5f7; color:#6b7280; font-size:24px; line-height:1; cursor:pointer;
}
.filter-search-box { margin-top:8px; }
.filter-search-box .fp-search { width:100%; min-height:40px; }
.more-filters { margin-top:7px; }
.more-filters summary { color:var(--c-muted); font-size:11px; cursor:pointer; list-style:none; text-align:right; }
.more-filters summary::-webkit-details-marker { display:none; }
.filter-secondary { margin:7px 0 0; }
.filter-secondary .fp { flex:1; }
.card-school,.card-major,.em-name { display:flex; align-items:center; min-width:0; }
.card-school > span,.card-major > b,.em-name > b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.card-major { margin-top:7px; font-size:15px; }
.card-major .major-code { background:#f1edff; color:#6d3bd1; border-color:#dfd2ff; }
.em-name .code-badge { min-width:36px; padding:2px 5px; }
.major-extra { display:none; }
.card-exp.is-expanded .major-extra { display:flex; }
.major-fold {
    width:100%; border:0; border-radius:7px; padding:8px; color:var(--accent); background:#f4f7fd;
    cursor:pointer; font-size:12px; font-weight:600;
}

/* 一键填报三步选择页 */
.oneclick-page { padding-bottom:84px; background:#f7f8fb; }
.oneclick-head {
    display:flex; align-items:center; gap:11px; padding:14px 16px; background:#fff; border-bottom:1px solid var(--c-line);
    position:sticky; top:0; z-index:12;
}
.oneclick-head > div:last-child { flex:1; min-width:0; }
.oneclick-head b,.oneclick-head small { display:block; }
.oneclick-head small { margin-top:2px; color:var(--c-muted); font-size:11px; }
.assistant-mark {
    width:42px; height:42px; display:grid; place-items:center; border-radius:50% 50% 44% 44%;
    background:linear-gradient(145deg,#ff9b4a,#ff6a33); color:#fff; font-size:12px; font-weight:800;
    box-shadow:0 6px 14px rgba(255,106,51,.25);
}
.wizard-tabs { display:grid; grid-template-columns:repeat(3,1fr); position:sticky; top:71px; z-index:11; background:#fff; border-bottom:1px solid var(--c-line); }
.wizard-tabs button { border:0; background:#fff; padding:12px 6px; color:var(--c-muted); cursor:pointer; position:relative; }
.wizard-tabs button.on { color:var(--c-blue); font-weight:700; }
.wizard-tabs button.on::after { content:''; position:absolute; left:22%; right:22%; bottom:0; height:2px; background:var(--c-blue); }
.wizard-main { max-width:760px; margin:0 auto; padding:12px 14px 30px; }
.wizard-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; color:var(--c-muted); font-size:12px; }
.wizard-toolbar input { width:min(52%,260px); border:1px solid var(--c-line); border-radius:8px; padding:8px 10px; outline:0; }
.wizard-toolbar input:focus { border-color:var(--c-blue); }
.wizard-list { display:grid; gap:8px; }
.wizard-option {
    display:flex; align-items:center; justify-content:space-between; gap:14px; min-height:62px;
    padding:11px 13px; border:1px solid #e6e9f1; border-radius:10px; background:#fff; cursor:pointer;
}
.wizard-option:hover { border-color:#a9c9fa; box-shadow:0 6px 18px rgba(39,62,110,.06); }
.wizard-option > span { min-width:0; }
.wizard-option b,.wizard-option small { display:block; }
.wizard-option b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wizard-option small { margin-top:4px; color:var(--c-muted); font-size:11px; }
.wizard-option input { width:19px; height:19px; accent-color:var(--c-blue); flex:none; }
.wizard-note { margin:15px 0; color:var(--c-muted); font-size:11px; text-align:center; }
.wizard-foot {
    position:fixed; left:0; right:0; bottom:0; z-index:20; display:grid; grid-template-columns:1fr 3fr; gap:14px;
    padding:8px max(14px,calc((100vw - 760px)/2)); background:#fff; border-top:1px solid var(--c-line);
}
.wizard-foot button { min-height:42px; border-radius:7px; cursor:pointer; font-weight:600; }
.wizard-prev { border:1px solid var(--c-blue); color:var(--c-blue); background:#fff; }
.wizard-next { border:0; color:#fff; background:var(--c-blue); }

/* 志愿表卡片 */
.zy-summary-top { display:flex; align-items:baseline; gap:8px; }
.zybiao-summary { display:block; }
.zy-gradient { display:flex; height:6px; margin-top:12px; overflow:hidden; border-radius:5px; background:#e9edf4; }
.zy-gradient i { display:block; width:0; transition:width .2s; }
.zy-gradient .reach { background:var(--c-orange); }.zy-gradient .match { background:var(--c-teal); }.zy-gradient .safe { background:var(--c-blue); }
.zy-gradient-labels { display:flex; justify-content:space-between; margin-top:6px; color:var(--c-muted); font-size:11px; }
.zy-gradient-labels b { color:var(--c-text); }
.zybiao-cards { display:grid; gap:10px; }
.zy-card { display:grid; grid-template-columns:42px minmax(0,1fr); background:#fff; border:1px solid var(--c-line); border-radius:11px; overflow:hidden; box-shadow:0 8px 24px rgba(39,62,110,.06); }
.zy-card-no { padding-top:13px; text-align:center; color:#55637a; font-weight:700; font-size:12px; background:#f7f9fc; }
.zy-card-main { padding:12px; min-width:0; }
.zy-school-line { display:flex; align-items:center; gap:8px; }
.zy-school-line > b { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.risk { flex:none; padding:3px 7px; border-radius:5px; color:#fff; font-size:10px; font-weight:700; }
.risk.reach { background:var(--c-orange); }.risk.match { background:var(--c-teal); }.risk.safe { background:var(--c-blue); }
.zy-school-meta { margin:4px 0 9px; color:var(--c-muted); font-size:11px; }
.zy-major-panel { padding:10px; border-radius:8px; background:#f8f9fc; }
.zy-major-panel > b { display:flex; align-items:center; }
.zy-major-panel > div { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:8px; color:var(--c-muted); font-size:11px; }
.zy-major-panel > div span:nth-child(even) { text-align:right; }
.zy-major-panel > div b { color:var(--c-text); }
.zy-card-actions { display:flex; justify-content:flex-end; gap:7px; margin-top:9px; }
.zy-card-actions button { width:auto; min-width:30px; height:28px; padding:0 9px; border-radius:7px; border:1px solid var(--c-line); background:#fff; color:var(--c-muted); cursor:pointer; }
.zy-card-actions .t-del { color:#d44; }
.zy-add-more { display:block; padding:14px; border:1px dashed #a9c9fa; border-radius:10px; text-align:center; color:var(--c-blue); background:#f7faff; }

/* 院校介绍：压缩层级、增强扫读 */
.d-card { border:0; border-radius:12px; box-shadow:0 8px 26px rgba(39,62,110,.06); }
.d-header { padding-bottom:13px; border-bottom:1px solid var(--c-line-2); }
.d-name { display:flex; align-items:center; flex-wrap:wrap; gap:2px; }
.d-code.code-badge { margin-left:0; }
.d-intro { max-height:22em; overflow:auto; padding:12px 14px; border-radius:8px; background:#f8f9fc; }
.major-name { display:flex; align-items:center; }
.major-name .code-badge { margin-left:0; }
.d-line { padding:8px 0; border-bottom:1px solid var(--c-line-2); }
.d-line:last-child { border-bottom:0; }

@media (max-width:720px) {
    .result-hero .hdr-meta { max-width:48%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .result-bucket-tabs { gap:0; justify-content:space-between; }
    .result-bucket-tabs .bt { flex:1; }
    .filter-primary { display:grid; grid-template-columns:1fr 1fr 42px; }
    .filter-secondary { display:flex; }
    .card-school > span,.card-major > b,.em-name > b { white-space:normal; }
    .wizard-tabs { top:71px; }
    .zy-card { grid-template-columns:34px minmax(0,1fr); }
    .zy-card-main { padding:10px; }
    .zy-major-panel > div { gap:4px; }
}

/* ============ v9：固定筛选、激活预览 ============ */
.recommend-tools .filter-search-box { margin:0; }
.recommend-tools .fp-search {
    width:100%; min-height:44px; padding:0 14px; border:1px solid #dce3ef; border-radius:8px;
    background:#fff; color:var(--c-text); outline:0;
}
.recommend-tools .fp-search:focus { border-color:#8bb7fb; box-shadow:0 0 0 3px rgba(59,130,246,.09); }
.recommend-tools .fp-search[readonly] { cursor:pointer; background:#fbfcff; }
.filter-always-visible { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:8px 0 0; }
.filter-always-visible .fp { min-width:0; min-height:38px; padding:7px 8px; }
.filter-always-visible .type-purple {
    border-color:rgba(124,58,237,.46) !important; color:#6d3bd1 !important;
    background:rgba(124,58,237,.045) !important;
}
.filter-always-visible .type-purple.active { color:#fff !important; background:linear-gradient(135deg,#8b5cf6,#7c3aed) !important; }
.detail-vr-link {
    display:inline-flex; align-items:center; margin-top:10px; padding:8px 13px; border:1px solid #d9c9ff;
    border-radius:8px; color:#6d3bd1; background:#f7f3ff; font-weight:700; text-decoration:none;
}
.detail-vr-link:hover { color:#fff; border-color:#7c3aed; background:#7c3aed; }
.activate-entry { color:#fff !important; border-color:#ff7b42 !important; background:linear-gradient(135deg,#ff8b4d,#ff6336) !important; }
.activate-entry.is-active { color:#147d72 !important; border-color:#a7dfd6 !important; background:#edfbf8 !important; }

.preview-locked { position:relative; min-height:180px; }
.preview-locked > :not(.preview-lock-overlay) { filter:blur(7px); pointer-events:none; user-select:none; }
.preview-lock-overlay {
    position:absolute; z-index:3; inset:0; width:100%; border:0; cursor:pointer;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px;
    color:#fff; background:rgba(31,41,69,.34); backdrop-filter:blur(1px);
}
.preview-lock-overlay b { padding:8px 16px; border-radius:18px; background:linear-gradient(135deg,#ff8b4d,#ff6336); box-shadow:0 8px 18px rgba(255,99,54,.25); }
.preview-lock-overlay span { font-size:11px; text-shadow:0 1px 5px rgba(0,0,0,.35); }
.locked-more {
    width:100%; min-height:40px; border:1px dashed #ffae87; border-radius:8px; cursor:pointer;
    color:#df5422; background:#fff8f4; font-weight:600;
}

.activation-modal .m-mask { background:rgba(24,32,54,.64); backdrop-filter:blur(4px); }
.activation-sheet {
    left:50%; right:auto; top:50%; bottom:auto; transform:translate(-50%,-50%);
    width:min(92vw,430px); max-height:92vh; margin:0; padding:25px 24px 20px;
    border-radius:18px; text-align:center; overflow:auto; box-shadow:0 24px 80px rgba(14,24,50,.3);
}
.activation-close {
    position:absolute; right:14px; top:11px; width:34px; height:34px; border:0; border-radius:50%;
    color:#748097; background:#f3f5f9; cursor:pointer; font-size:22px;
}
.activation-mark { color:#ff6336; font-size:11px; font-weight:800; letter-spacing:.08em; }
.activation-sheet h2 { margin:5px 0 3px; font-size:22px; }
.activation-tip { margin:0 0 14px; color:var(--c-muted); font-size:12px; }
.activation-form { display:grid; grid-template-columns:minmax(0,1fr) 92px; gap:8px; }
.activation-form input { min-width:0; height:44px; padding:0 13px; border:1px solid #ccd3df; border-radius:8px; outline:0; font-size:16px; }
.activation-form input:focus { border-color:var(--c-teal); box-shadow:0 0 0 3px rgba(20,184,166,.1); }
.activation-form button { border:0; border-radius:8px; color:#fff; background:var(--c-teal); cursor:pointer; font-weight:700; }
.activation-error { min-height:21px; padding-top:5px; color:#d33; font-size:11px; }
.activation-qr { position:relative; width:230px; height:230px; margin:0 auto 8px; overflow:hidden; background:#fff; }
.activation-qr img { position:absolute; width:360px; max-width:none; left:50%; top:-112px; transform:translateX(-50%); }
.activation-note { margin:0; color:var(--c-muted); font-size:11px; line-height:1.6; }

@media (max-width:720px) {
    .filter-always-visible { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .activation-sheet { padding-left:18px; padding-right:18px; }
}
