:root{
  --bg:#f5f7fb; --panel:#ffffff; --ink:#1f2733; --muted:#8a93a3;
  --line:#e6e9f0; --brand:#1565a8; --brand2:#1976c2; --accent:#e08a1e;
  --chip:#eef4fb; --chip-ink:#1d4e7a; --ok:#2e8b57;
  --shadow:0 2px 10px rgba(28,46,80,.06);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  background:var(--bg); color:var(--ink); font-size:15px; line-height:1.55;
}
/* 顶栏 */
.topbar{
  display:flex; align-items:center; justify-content:space-between; gap:18px;
  padding:14px 22px; background:linear-gradient(120deg,#0f4c81,#1565a8 60%,#1d7bc2);
  color:#fff; box-shadow:var(--shadow); position:sticky; top:0; z-index:20; flex-wrap:wrap;
}
.brand{display:flex; align-items:center; gap:14px}
.logo{
  width:42px;height:42px;border-radius:10px;background:rgba(255,255,255,.16);
  display:grid;place-items:center;font-size:22px;font-weight:700;
}
.topbar h1{font-size:19px;margin:0;font-weight:700;letter-spacing:.5px}
.topbar .sub{margin:2px 0 0;font-size:12.5px;opacity:.9}
.topbar .sub b{color:#ffe2b0}
.search{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.search input{
  width:min(420px,60vw);padding:10px 14px;border-radius:22px;border:0;outline:none;
  font-size:14px;background:rgba(255,255,255,.95);color:#1f2733;
}
.chk{font-size:13px;color:#eaf3fb;display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none}
.chk input{accent-color:var(--accent)}

/* 布局 */
main{display:flex;align-items:flex-start;gap:0;min-height:calc(100vh - 72px)}
.sidebar{
  width:300px;flex:0 0 300px;background:var(--panel);border-right:1px solid var(--line);
  height:calc(100vh - 72px);position:sticky;top:72px;overflow:auto;padding:14px 10px 30px;
}
.side-head{display:flex;justify-content:space-between;align-items:center;padding:4px 8px 10px;color:var(--muted);font-size:13px}
.link-btn{background:none;border:0;color:var(--brand);cursor:pointer;font-size:13px}
.link-btn:hover{text-decoration:underline}

.content{flex:1;padding:18px 24px 60px;min-width:0}
.content-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:14px;flex-wrap:wrap}
.content-head h2{margin:0;font-size:20px}
.count{color:var(--muted);font-size:13px;margin-left:8px}
.actions{display:flex;gap:8px}

/* 树 */
.tree ul{list-style:none;margin:0;padding:0}
.tree>.tree-root>ul{padding-left:0}
.tree-children{padding-left:16px;border-left:1px dashed var(--line);margin-left:7px}
.tree-row{display:flex;align-items:center;gap:4px;padding:5px 8px;border-radius:8px;cursor:pointer;user-select:none}
.tree-row:hover{background:var(--chip)}
.tree-row.active{background:var(--chip);box-shadow:inset 3px 0 0 var(--brand)}
.caret{width:14px;display:inline-block;color:var(--muted);font-size:11px;transition:transform .15s}
.caret.open{transform:rotate(90deg)}
.caret.leaf{visibility:hidden}
.tree-label{font-size:14px}
.tree-row .badge{margin-left:auto;font-size:11px;color:var(--muted);background:var(--bg);border-radius:10px;padding:0 7px}

/* 专业列表 */
.major-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.major-item{
  background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:13px 15px;
  cursor:pointer;transition:.15s;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:4px;
}
.major-item:hover{border-color:var(--brand2);transform:translateY(-1px)}
.major-item .name{font-weight:600;font-size:15.5px}
.major-item .meta{font-size:12px;color:var(--muted)}
.major-item .filled{font-size:11px;color:var(--ok);margin-top:2px}

.empty-hint{color:var(--muted);text-align:center;padding:40px}

/* 按钮 */
.btn{border:0;border-radius:20px;padding:8px 16px;font-size:13.5px;cursor:pointer;font-weight:600}
.btn.primary{background:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand2)}
.btn.ghost{background:var(--chip);color:var(--chip-ink)}
.btn.ghost:hover{background:#e1ebf6}

/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(20,30,50,.45);display:grid;place-items:center;z-index:50;padding:18px}
.modal[hidden]{display:none}
.modal-card{background:#fff;border-radius:16px;padding:24px 26px;width:min(960px,95vw);max-height:92vh;overflow:auto;position:relative;box-shadow:0 18px 50px rgba(0,0,0,.25)}
.modal-card h2{margin:0 0 6px;font-size:21px}
.modal .close{position:absolute;top:12px;right:14px;border:0;background:none;font-size:26px;line-height:1;color:var(--muted);cursor:pointer}
.path{color:var(--muted);font-size:13px;margin-bottom:14px}
.path b{color:var(--brand)}
.conds{display:grid;gap:12px}
.cond{border:1px solid var(--line);border-radius:10px;padding:10px 13px;background:#fbfcfe}
.cond .k{font-size:12.5px;color:var(--brand);font-weight:700;margin-bottom:3px}
.cond .v{font-size:14px;white-space:pre-wrap;word-break:break-word;cursor:pointer;transition:background .15s;border-radius:6px;padding:4px 6px;margin:-4px -6px}
.cond .v:hover{background:#eef4fb}
.cond .v.copied{background:#d4edda;color:#155724}
.cond .v.empty{color:var(--muted);font-style:italic;cursor:default}
.cond .v.empty:hover{background:transparent}
.copy-hint{font-size:11px;color:var(--muted);margin-left:8px;font-weight:normal}
.pdf-btn{background:var(--accent);color:#fff;border:0;border-radius:18px;padding:6px 14px;font-size:13px;cursor:pointer;font-weight:600;margin-left:8px}
.pdf-btn:hover{background:#c57a10}
.src-btn{background:transparent;border:1px solid var(--border);border-radius:10px;padding:2px 8px;font-size:12px;cursor:pointer;margin-left:8px;color:var(--text2);transition:all .2s}
.src-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}

/* 层级切换标签（详情与编辑弹窗共用，助理/中级/副高/正高） */
.lv-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 14px}
.lv-tab{
  background:var(--chip);color:var(--chip-ink);border:1px solid var(--line);border-radius:18px;
  padding:6px 14px;font-size:13.5px;cursor:pointer;font-weight:600;
  display:inline-flex;align-items:center;gap:6px;transition:.12s;
}
.lv-tab:hover{border-color:var(--brand2)}
.lv-tab.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.lv-tab .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);display:inline-block}
.lv-tab.active .dot{background:#bff0cf}

/* 列表里已填层级的迷你标签 */
.lv-minis{display:flex;gap:5px;flex-wrap:wrap;margin-top:3px}
.lv-mini{font-size:10.5px;color:#fff;background:var(--accent);border-radius:8px;padding:0 6px;line-height:16px}
.major-item .filled{font-size:11px;color:var(--ok);margin-top:2px}
.modal-card label{display:block;font-size:13px;color:var(--brand);font-weight:600;margin-top:12px}
.modal-card textarea{width:100%;margin-top:5px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:14px;font-family:inherit;resize:vertical;color:var(--ink)}
.modal-card textarea:focus{outline:none;border-color:var(--brand2)}

@media(max-width:820px){
  .sidebar{position:static;width:100%;height:auto;border-right:0;border-bottom:1px solid var(--line)}
  main{flex-direction:column}
  .major-list{grid-template-columns:1fr}
}
