:root {
  --brand: #50c4bc;          /* 主色：青绿（用户指定） */
  --brand-dark: #2f9a91;
  --brand-light: #e8f7f5;
  --accent: #ef7d4f;         /* 强调：暖珊瑚，用于热门/CTA */
  --accent-dark: #d9642f;
  --gold: #d4a017;
  --ink: #1f2937;
  --ink-soft: #4b5563;
  --muted: #8b95a5;
  --line: #e4e8ef;
  --bg: #f5f7fb;
  --card: #ffffff;
  --ok: #1f9d55;
  --shadow: 0 6px 24px rgba(26, 79, 160, 0.08);
  --shadow-lg: 0 12px 40px rgba(26, 79, 160, 0.14);
  --radius: 14px;
  --radius-sm: 9px;
  --maxw: 1180px;
  /* 六大统考类别配色 */
  --c-music: #7c5cff;
  --c-dance: #ff7a98;
  --c-perform: #ff9a3d;
  --c-broadcast: #19b3c9;
  --c-art: #2f9e57;
  --c-calligraphy: #b8860b;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", system-ui, -apple-system, sans-serif;
  color: var(--ink);
  background: var(--bg);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
button, input, select, textarea { font-family: inherit; font-size: 1rem; }
.container { max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }

/* ---------- 顶部导航 ---------- */
.topbar {
  background: var(--brand);
  color: #fff;
  font-size: 0.85rem;
}
.topbar .container { display: flex; justify-content: space-between; align-items: center; height: 38px; }
.topbar a { opacity: .85; }
.topbar a:hover { opacity: 1; }
.topbar .links span { margin-left: 18px; }

.navbar {
  background: #fff;
  box-shadow: 0 2px 12px rgba(0,0,0,.06);
  position: sticky; top: 0; z-index: 50;
  transition: background .25s ease, box-shadow .25s ease;
}
/* 向下滚动时：半透明毛玻璃 */
.navbar.scrolled {
  background: rgba(255,255,255,0.7);
  -webkit-backdrop-filter: blur(12px) saturate(160%);
  backdrop-filter: blur(12px) saturate(160%);
  box-shadow: 0 4px 18px rgba(0,0,0,.08);
}
.navbar .container { display: flex; align-items: center; height: 66px; gap: 30px; }
.logo { display: flex; align-items: center; gap: 11px; font-weight: 800; color: var(--brand); font-size: 1.22rem; white-space: nowrap; text-decoration: none; }
.logo-img {
  width: 34px; height: 34px; border-radius: 8px; object-fit: cover; flex-shrink: 0; background: #fff;
  box-shadow: none;
}
.logo-text { display: flex; flex-direction: column; justify-content: center; align-items: center; line-height: 1.12; }
.logo-cn {
  font-family: "FZXiaoBiaoSong-B05S","方正小标宋简体","STZhongsong","Songti SC","SimSun",serif;
  font-size: 1.02rem; font-weight: 700; color: var(--brand); letter-spacing: .5px; white-space: nowrap;
}
.logo-en {
  font-size: .55rem; font-weight: 600; color: var(--muted); letter-spacing: .19em;
  white-space: nowrap; margin-top: 3px;
}
.nav-links { display: flex; gap: 4px; margin-left: 0; flex-wrap: wrap; align-items: center; }
.nav-links > a, .nav-links .has-drop > a {
  padding: 8px 14px; border-radius: 8px; color: var(--ink-soft); font-weight: 600; font-size: .95rem;
  transition: .18s; white-space: nowrap;
}
.nav-links > a:hover, .nav-links .has-drop > a:hover { background: var(--brand-light); color: var(--brand); }
.nav-links > a.active, .nav-links .has-drop > a.active { background: var(--brand); color: #fff; }
/* 二级下拉导航 */
.nav-links .has-drop { position: relative; }
.nav-links .has-drop > a { display:inline-flex; align-items:center; gap:5px; cursor:pointer; }
.nav-links .has-drop .dropdown {
  position:absolute; top:calc(100% + 8px); left:0; min-width:172px; z-index:60;
  background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow:var(--shadow-lg);
  padding:6px; display:none; flex-direction:column;
}
.nav-links .has-drop:hover .dropdown, .nav-links .has-drop.open .dropdown { display:flex; }
.nav-links .dropdown a {
  padding:9px 14px; border-radius:7px; color:var(--ink-soft); font-weight:600; font-size:.9rem;
  white-space:nowrap; transition:.15s;
}
.nav-links .dropdown a:hover { background:var(--brand-light); color:var(--brand); }
.nav-links .dropdown a.active { background:var(--brand); color:#fff; }
.nav-links .has-drop > a .fa-caret-down { font-size:.72rem; opacity:.6; transition:transform .2s; }
.nav-links .has-drop:hover > a .fa-caret-down { transform:rotate(180deg); }
/* 导航项图标（每个标题左侧） */
.nav-links .nav-ico { width:18px; text-align:center; color:var(--brand); font-size:.95rem; }
/* 选中态（父级高亮）图标变白 */
.nav-links > a.active .nav-ico, .nav-links .has-drop > a.active .nav-ico { color:#fff; }
.nav-links > a, .nav-links .has-drop > a { display:inline-flex; align-items:center; gap:6px; }
.nav-toggle { display: none; margin-left: auto; background: var(--brand); color:#fff; border:0; width:34px; height:34px; border-radius:6px; font-size:1rem; cursor:pointer; transition: transform .2s ease; }
.nav-toggle.open { transform: rotate(90deg); }
/* 导航条搜索框（桌面居于导航栏目最右侧） */
.nav-search-wrap { position:relative; display:flex; flex:1 1 200px; max-width:320px; margin:0; margin-left:auto; }
.nav-search { display:flex; align-items:center; position:relative; flex:1 1 auto; margin:0; }
.nav-search input { width:100%; height:38px; border:1px solid var(--line); border-radius:20px; padding:0 42px 0 16px; font-size:.9rem; background:#f6f8fa; color:var(--ink); outline:none; transition:.18s; }
.nav-search input:focus { border-color:var(--brand); background:#fff; box-shadow:0 0 0 3px var(--brand-light); }
.nav-search button { position:absolute; right:4px; top:4px; height:30px; width:34px; border:0; background:transparent; color:var(--brand); cursor:pointer; border-radius:50%; font-size:.95rem; }
.nav-search button:hover { background:var(--brand-light); }
/* 搜索联想下拉 */
.nav-suggest {
  position:absolute; top:calc(100% + 8px); right:0; z-index:70;
  width:380px; max-width:calc(100vw - 24px);
  background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-lg);
  padding:6px; overflow:auto; max-height:70vh; display:none; text-align:left;
}
.nav-suggest:not([hidden]) { display:block; }
.ns-group { display:none; }
.ns-item { display:flex; align-items:center; gap:8px; padding:9px 12px; cursor:pointer; border-bottom:1px solid rgba(0,0,0,.04); }
.ns-item:last-child { border-bottom:0; }
.ns-item:hover, .ns-item.active { background:var(--brand-light); }
.ns-type { font-size:.64rem; font-weight:700; padding:1px 6px; border-radius:4px; flex-shrink:0; letter-spacing:.5px; }
.ns-type-college { background:#e8f5e9; color:#2e7d32; }
.ns-type-major { background:#e3f2fd; color:#1565c0; }
.ns-type-article { background:#fff3e0; color:#e65100; }
.ns-name { font-weight:600; font-size:.92rem; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ns-sub { font-size:.78rem; color:var(--muted); margin-left:auto; flex-shrink:0; white-space:nowrap; }
.ns-foot { padding:10px; text-align:center; font-size:.85rem; color:var(--brand); cursor:pointer; border-top:1px solid rgba(0,0,0,.04); margin-top:0; font-weight:600; }
.ns-foot:hover { text-decoration:underline; }
.ns-empty { padding:14px; text-align:center; color:var(--muted); font-size:.88rem; }
/* 手机版搜索图标（默认隐藏，点击在右上角导航条展开搜索框） */
.nav-search-toggle { display:none; }
/* 桌面二级下拉：透明桥接，避免鼠标穿过间隙时下拉收起（仅桌面，下拉为绝对定位时生效） */
@media (min-width: 681px) {
  .nav-links .has-drop .dropdown::before { content:''; position:absolute; top:-12px; left:0; right:0; height:12px; }
}
/* 搜索结果页 */
.search-bar { display:flex; align-items:center; gap:8px; max-width:560px; margin:4px 0 18px; position:relative; }
.search-bar i.fa-search { position:absolute; left:16px; color:var(--muted); }
.search-bar input { flex:1; height:46px; border:1px solid var(--line); border-radius:24px; padding:0 16px 0 42px; font-size:1rem; background:#fff; color:var(--ink); outline:none; transition:.18s; }
.search-bar input:focus { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-light); }
.search-bar button { height:46px; padding:0 22px; border:0; border-radius:24px; background:var(--brand); color:#fff; font-weight:700; cursor:pointer; font-size:.95rem; }
.search-bar button:hover { background:var(--brand-dark); }
.search-sum { color:var(--ink-soft); margin:6px 0 14px; font-size:.92rem; }
.search-sum b { color:var(--brand); }

/* 全局选中文字：底色为主题色 */
::selection { background: var(--brand); color: #fff; }
::-moz-selection { background: var(--brand); color: #fff; }

/* ---------- Hero ---------- */
.hero {
  background: radial-gradient(1200px 400px at 80% -10%, rgba(200,16,46,.18), transparent 60%),
              linear-gradient(135deg, var(--brand-dark), var(--brand));
  color: #fff; padding: 54px 0 60px; position: relative; overflow: hidden;
}
.hero::after {
  content: ""; position: absolute; right: -60px; top: -60px; width: 280px; height: 280px;
  background: radial-gradient(circle, rgba(255,255,255,.12), transparent 70%); border-radius: 50%;
}
.hero h1 { font-size: 2.5rem; line-height: 1.2; margin-bottom: 14px; font-weight: 800; letter-spacing: 1px; }
.hero p { font-size: 1.05rem; opacity: .92; max-width: 640px; }
.hero .quick {
  margin-top: 30px; display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px;
}
.hero .quick a {
  background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.22); border-radius: var(--radius-sm);
  padding: 16px 12px; text-align: center; backdrop-filter: blur(4px); transition: .2s; display: block;
}
.hero .quick a:hover { background: rgba(255,255,255,.22); transform: translateY(-3px); }
.hero .quick .ic { font-size: 1.7rem; display: block; margin-bottom: 6px; }
.hero .quick .t { font-weight: 700; font-size: .95rem; }
.hero .quick .s { font-size: .72rem; opacity: .8; }

/* ---------- 通用区块 ---------- */
.section { padding: 46px 0; }
.section.alt { background: #fff; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.section-head { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 26px; gap: 16px; flex-wrap: wrap; }
.section-head h2 { font-size: 1.55rem; color: var(--ink); position: relative; padding-left: 15px; }
.section-head h2::before { content:""; position:absolute; left:0; top:6px; bottom:6px; width:5px; border-radius:3px; background: var(--accent); }
.section-head .more { color: var(--brand); font-weight: 600; font-size: .9rem; }
.section-head .more:hover { text-decoration: underline; }

/* ---------- 卡片网格 ---------- */
.grid { display: grid; gap: 18px; }
.grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
.grid.cols-2 { grid-template-columns: repeat(2, 1fr); }

.card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 20px; transition: .2s; box-shadow: var(--shadow);
}
.card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: #cfdcf2; }
.card h3 { font-size: 1.08rem; margin-bottom: 8px; color: var(--ink); }
.card .meta { font-size: .8rem; color: var(--muted); margin-bottom: 8px; }
.card p { font-size: .9rem; color: var(--ink-soft); }

/* 类别徽标 */
.tag { display: inline-block; font-size: .72rem; font-weight: 700; padding: 2px 9px; border-radius: 20px; color: #fff; }
.tag.music { background: var(--c-music); }
.tag.dance { background: var(--c-dance); }
.tag.perform { background: var(--c-perform); }
.tag.broadcast { background: var(--c-broadcast); }
.tag.art { background: var(--c-art); }
.tag.calligraphy { background: var(--c-calligraphy); }
.tag.gray { background: #94a3b8; }
.tag.brand { background: var(--brand); }
.tag.accent { background: var(--accent); }

/* ---------- 统计条 ---------- */
.stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 18px; }
.stat { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; text-align: center; box-shadow: var(--shadow); }
.stat .num { font-size: 2.1rem; font-weight: 800; color: var(--brand); }
.stat .lbl { color: var(--ink-soft); font-size: .9rem; margin-top: 4px; }

/* ---------- 文章列表 ---------- */
.article-list { display: grid; gap: 16px; }
.article-item {
  display: grid; grid-template-columns: 120px 1fr; gap: 18px; background: #fff; border: 1px solid var(--line);
  border-radius: var(--radius); padding: 18px; transition: .2s;
}
.article-item:hover { box-shadow: var(--shadow); border-color: #cfdcf2; }
.article-item .thumb { background: linear-gradient(135deg,var(--brand),var(--brand-dark)); border-radius: 10px; display:grid; place-items:center; color:#fff; font-size: 2rem; }
.article-item h3 { font-size: 1.1rem; margin-bottom: 6px; }
.article-item h3 a:hover { color: var(--brand); }
.article-item .meta { font-size: .8rem; color: var(--muted); margin-bottom: 8px; }
.article-item p { font-size: .9rem; color: var(--ink-soft); }

/* ---------- 搜索/筛选条 ---------- */
.toolbar { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; align-items: center; padding:14px 16px; background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow: 0 1px 3px rgba(15,30,50,.04); }
.toolbar input[type="search"], .toolbar select, .toolbar input[type="text"] {
  padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; background: #fff; font-size:.88rem; min-width:140px;
}
.toolbar input:focus, .toolbar select:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(80,196,188,.12); }
.chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.chip {
  padding: 7px 15px; border-radius: 20px; background: #fff; border: 1px solid var(--line);
  font-size: .86rem; cursor: pointer; color: var(--ink-soft); transition: .15s; font-weight: 600;
}
.chip:hover { border-color: var(--brand); color: var(--brand); }
.chip.active { background: var(--brand); color: #fff; border-color: var(--brand); }

/* ---------- 院校/专业详情与表格 ---------- */
.detail-head { display: flex; gap: 20px; align-items: flex-start; flex-wrap: wrap; }
.detail-head .avatar {
  width: 76px; height: 76px; border-radius: 16px; display: grid; place-items: center; color: #fff;
  font-size: 1.7rem; font-weight: 800; background: linear-gradient(135deg,var(--brand),var(--accent)); flex: none;
}
.table { width: 100%; border-collapse: collapse; background: #fff; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
.table th, .table td { padding: 13px 16px; text-align: left; border-bottom: 1px solid var(--line); font-size: .92rem; }
.table th { background: var(--brand-light); color: var(--brand-dark); font-weight: 700; }
.table tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: #fafcff; }
.table a { color: var(--brand); font-weight: 600; }

.kv { display: grid; grid-template-columns: 130px 1fr; gap: 10px 16px; background:#fff; padding:18px 20px; border:1px solid var(--line); border-radius: var(--radius); }
.kv dt { color: var(--muted); font-weight: 600; }
.kv dd { color: var(--ink); }

/* ---------- 计算器 ---------- */
.calc { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; align-items: start; }
.calc .form-box, .calc .result-box { background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding: 24px; box-shadow: var(--shadow); }
.field { margin-bottom: 16px; }
.field label { display: block; font-weight: 600; margin-bottom: 7px; font-size: .92rem; }
.field input, .field select { width: 100%; padding: 11px 13px; border: 1px solid var(--line); border-radius: 10px; }
.field input:focus, .field select:focus { outline: 2px solid var(--brand-light); border-color: var(--brand); }
.btn {
  display: inline-flex; align-items:center; justify-content:center; gap:6px;
  padding: 9px 18px; border-radius: 9px; border: 0; cursor: pointer;
  background: var(--brand); color: #fff; font-weight: 600; font-size:.88rem;
  transition: all .15s; line-height:1.2; white-space:nowrap;
  box-shadow: 0 1px 2px rgba(15,30,50,.04);
}
.btn:hover { background: var(--brand-dark); transform: translateY(-1px); box-shadow: 0 4px 10px rgba(80,196,188,.22); }
.btn:active { transform: translateY(0); box-shadow: none; }
.btn.accent { background: var(--accent); }
.btn.accent:hover { background: var(--accent-dark); }
.btn.ghost { background: #fff; color: var(--brand); border: 1px solid var(--brand); box-shadow:none; }
.btn.ghost:hover { background: var(--brand-light); transform: translateY(-1px); }
/* 橙色描边按钮（专业库"开设院校"等操作按钮） */
.btn.primary-outline { background:#fff; color:#ea580c; border:1.5px solid #f97316; box-shadow:none; font-weight:700; }
.btn.primary-outline:hover { background:#f97316; color:#fff; transform:translateY(-1px); }
.btn.danger { background:#e74c3c; }
.btn.danger:hover { background:#c0392b; transform: translateY(-1px); box-shadow: 0 4px 10px rgba(231,76,60,.26); }
.btn.sm { padding:6px 12px; font-size:.8rem; border-radius:7px; }
.btn.xs { padding:4px 9px; font-size:.74rem; border-radius:6px; gap:4px; }
.btn i { font-size:.9em; }
/* 表格内操作按钮（编辑/删除/上下移） */
td.ops { display:flex; gap:5px; align-items:center; }
td.ops button, td.ops a {
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:6px; border:1px solid var(--line);
  background:#fff; color:var(--ink-soft); cursor:pointer; font-size:.82rem;
  transition:all .15s;
}
td.ops button:hover, td.ops a:hover { color:var(--brand); border-color:var(--brand); background:var(--brand-light); }
td.ops .del:hover { color:#e74c3c; border-color:#e74c3c; background:#fdecea; }
td.ops button.title-btn, td.ops a.title-btn { width:auto; padding:0 9px; font-size:.78rem; }
td.ops button:disabled { opacity:.38; cursor:not-allowed; background:#f4f6f7; }
td.ops button:disabled:hover { color:var(--ink-soft); border-color:var(--line); background:#f4f6f7; }
.result-box .big { font-size: 2.6rem; font-weight: 800; color: var(--accent); }
.result-box .formula { background: var(--bg); border-radius: 10px; padding: 14px; font-family: ui-monospace, Menlo, monospace; font-size: .9rem; margin-top: 14px; color: var(--ink-soft); white-space: pre-wrap; }
.note { font-size: .82rem; color: var(--muted); margin-top: 12px; }

/* ---------- 问答 ---------- */
.qa-banner { background-image: url("/public/qa_banner.jpg"); }

.qa-tabs { margin-bottom:18px; }
.qa-tabs-scroll { display:flex; gap:8px; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; padding-bottom:4px; }
.qa-tabs-scroll::-webkit-scrollbar { display:none; }
.qa-tab { flex:0 0 auto; white-space:nowrap; padding:7px 18px; border:1px solid var(--line); border-radius:20px; background:#fff; color:var(--ink-soft); font-size:.85rem; font-weight:600; cursor:pointer; transition:all .2s; }
.qa-tab:hover { border-color:var(--brand); color:var(--brand-dark); }
.qa-tab.active { background:var(--brand); color:#fff; border-color:var(--brand); }

.qa-item { background:#fff; border:1px solid var(--line); border-radius:14px; margin-bottom:12px; box-shadow:0 1px 4px rgba(0,0,0,.04); overflow:hidden; transition:box-shadow .2s; }
.qa-item:hover { box-shadow:0 3px 12px rgba(80,196,188,.10); }
.qa-head { display:flex; align-items:center; gap:10px; padding:12px 16px; cursor:pointer; user-select:none; }
.qa-cat-tag { font-size:.72rem; font-weight:700; padding:3px 11px; border-radius:10px; white-space:nowrap; flex-shrink:0;
  background:var(--brand-light); color:var(--brand-dark); }
.cat-signup   { background:#e8f5e9; color:#2e7d32; }
.cat-exam     { background:#e3f2fd; color:#1565c0; }
.cat-admission{ background:#fff3e0; color:#e65100; }
.cat-volunteer{ background:#fce4ec; color:#c62828; }
.cat-other    { background:#f3e5f5; color:#7b1fa2; }
.qa-q-wrap { flex:1; min-width:0; display:flex; align-items:center; gap:9px; }
.qa-q-icon { width:26px; height:26px; border-radius:50%; background:var(--brand); color:#fff; font-size:.75rem; font-weight:800; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.qa-q-text { font-size:.96rem; font-weight:600; color:var(--ink); line-height:1.45; word-break:break-word; }
.qa-toggle { width:34px; height:34px; border:0; border-radius:50%; background:rgba(80,196,188,.08); color:var(--brand-dark); font-size:1.15rem; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .2s, transform .25s; flex-shrink:0; }
.qa-toggle:hover { background:rgba(80,196,188,.18); }
.qa-item.open .qa-toggle { transform:rotate(180deg); }

.qa-body { max-height:0; overflow:hidden; transition:max-height .35s ease, padding .15s ease; }
.qa-item.open .qa-body { max-height:500px; padding:0 16px 14px; }
.qa-a-wrap { display:flex; gap:10px; padding-top:4px; border-top:1px dashed var(--line); }
.qa-a-icon { width:26px; height:26px; border-radius:50%; background:var(--accent); color:#fff; font-size:.75rem; font-weight:800; display:flex; align-items:center; justify-content:center; flex-shrink:0; margin-top:2px; }
.qa-a-text { font-size:.92rem; color:var(--ink-soft); line-height:1.78; word-break:break-word; }
.qa-pending { color:var(--muted); font-style:italic; }
.qa-meta { display:flex; flex-wrap:wrap; gap:10px 16px; padding:6px 0 8px; font-size:.78rem; color:var(--muted); }
.qa-meta-name, .qa-meta-time { display:inline-flex; align-items:center; gap:4px; }
.qa-meta i { font-size:.72rem; }

.qa-form { background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding: 22px; box-shadow: var(--shadow); }
.qa-form textarea { width: 100%; min-height: 90px; padding: 11px 13px; border: 1px solid var(--line); border-radius: 10px; resize: vertical; background:#fafbfc; transition:border-color .15s, box-shadow .15s; }
.qa-form textarea:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(80,196,188,.14); background:#fff; }
.qa-form input { padding: 11px 13px; border: 1px solid var(--line); border-radius: 10px; background:#fafbfc; transition:border-color .15s, box-shadow .15s; }
.qa-form input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(80,196,188,.14); background:#fff; }
.qa-row { display:flex; gap:12px; margin-top:12px; flex-wrap:wrap; align-items:center; }
.qa-row input { flex:1; min-width:200px; }

/* banner 标题右侧“我要提问”按钮 */
.qa-banner-overlay { flex-direction:row; align-items:center; justify-content:space-between; width:100%; }
.qa-banner-title { max-width:72%; }
.ask-btn { flex-shrink:0; box-shadow:0 4px 14px rgba(0,0,0,.18); }
.ask-btn:hover { transform:translateY(-1px); }

/* 提问弹窗内的表单与验证码 */
.ask-modal .modal-body { overflow-y:auto; }
.ask-modal .edit-form { box-shadow:none; border:0; padding:0; }
.captcha-wrap { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.captcha-code { display:inline-flex; align-items:center; justify-content:center; min-width:88px; height:42px; padding:0 12px; background:linear-gradient(180deg,#f3f8f7,#eaf4f2); border:1px solid var(--line); border-radius:9px; font-weight:800; color:var(--brand-dark); letter-spacing:1px; font-size:1.02rem; user-select:none; }
.captcha-wrap input { flex:1; min-width:150px; padding:10px 13px; border:1px solid var(--line); border-radius:9px; background:#fafbfc; transition:border-color .15s, box-shadow .15s; }
.captcha-wrap input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(80,196,188,.14); background:#fff; }
.captcha-refresh { width:42px; height:42px; border:1px solid var(--line); background:#fff; border-radius:9px; cursor:pointer; color:var(--ink-soft); transition:all .15s; }
.captcha-refresh:hover { color:var(--brand); border-color:var(--brand); }

/* 解答富文本渲染 */
.qa-a-text p { margin:0 0 8px; }
.qa-a-text ul, .qa-a-text ol { margin:0 0 8px; padding-left:22px; }
.qa-a-text li { margin:3px 0; }
.qa-a-text a { color:var(--brand); text-decoration:underline; }
.qa-a-text img { max-width:100%; border-radius:6px; margin:6px 0; }
.qa-a-text strong { color:var(--ink); }
.muted { color:var(--muted); font-size:.78rem; }

/* ---------- 面包屑 ---------- */
.crumb { font-size: .85rem; color: var(--muted); margin: 18px 0; }
.crumb a:hover { color: var(--brand); }
.crumb span { margin: 0 7px; }

/* ---------- 政策 ---------- */
.policy-card { display: grid; grid-template-columns: 90px 1fr auto; gap: 16px; align-items: center; background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding: 18px; margin-bottom: 14px; box-shadow: var(--shadow); }
.policy-card .date { background: var(--brand-light); color: var(--brand-dark); border-radius: 10px; text-align: center; padding: 10px 6px; font-weight: 700; }
.policy-card .date small { display:block; font-size:.72rem; color: var(--muted); font-weight:600; }
.policy-card h3 { font-size: 1.05rem; }
.policy-card .src { font-size:.8rem; color: var(--muted); margin-top:4px; }

/* ---------- 文章正文 ---------- */
.prose { background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding: 34px 38px; box-shadow: var(--shadow); max-width: 820px; margin: 0 auto; }
.prose h1 { font-size: 1.7rem; margin-bottom: 10px; }
.prose .meta { color: var(--muted); font-size: .85rem; margin-bottom: 22px; border-bottom: 1px solid var(--line); padding-bottom: 14px; }
.prose h2 { font-size: 1.25rem; margin: 26px 0 12px; color: var(--brand-dark); }
.prose h3 { font-size: 1.05rem; margin: 18px 0 8px; }
.prose p { margin-bottom: 13px; color: var(--ink-soft); }
.prose ul, .prose ol { margin: 0 0 14px 22px; color: var(--ink-soft); }
.prose li { margin-bottom: 6px; }
.prose strong { color: var(--ink); }

/* ---------- 页脚 ---------- */
.footer { background: var(--brand-dark); color: #e3f6f3; padding: 40px 0 24px; margin-top: 10px; }
.footer .cols { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr 1fr; gap: 28px; }
.footer h4 { color: #fff; font-size: .98rem; margin-bottom: 14px; }
.footer a { color: #e3f6f3; font-size: .88rem; display: block; margin-bottom: 8px; }
.footer a:hover { color: #fff; }
.footer .copy { border-top: 1px solid rgba(255,255,255,.16); margin-top: 28px; padding-top: 18px; font-size: .82rem; color: #b6e2dc; text-align: center; }
.footer .disclaimer { font-size: .78rem; color: #9fd4cd; margin-top: 8px; line-height: 1.5; }

/* ---------- 页脚：关注我们 + 公众号二维码 ---------- */
.ft-about { font-size: .88rem; color: rgba(227,246,243,.85); line-height: 1.7; }
.ft-follow .follow-row { display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.qr-col { display: flex; flex-direction: column; align-items: center; gap: 6px; }
/* 二维码卡片：白色圆角卡片（矩形），"关注我们的公众号"文字在卡片外 */
.qr-btn { display: block; padding: 0; border: 0; background: transparent; cursor: pointer; line-height: 0; }
.qr-btn img {
  width: 88px; height: 88px; border-radius: 10px; display: block; border: 4px solid #fff;
  box-shadow: 0 4px 14px rgba(0,0,0,.22); background: #fff; transition: .18s;
}
.qr-btn:hover img { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,.3); }
.qr-cap { font-size: .76rem; color: #d9f1ec; text-align: center; }
/* 社媒：图标圆钮，排在二维码右侧 */
.social-links { display:flex; flex-direction:row; align-items:center; gap:10px; }
.footer .social { display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; font-size:1rem; color:#fff; margin:0; padding:0; border-radius:50%; overflow:hidden; transition:.18s; }
.footer .social img { width:100%; height:100%; object-fit:cover; display:block; }
.footer .social.xhs { background: linear-gradient(135deg, #ff6a8e, #ff2e4d); }
.footer .social.wb { background: linear-gradient(135deg, #ff9a3d, #e6162d); }
.footer .social:hover { transform:translateY(-2px); box-shadow:0 6px 16px rgba(0,0,0,.28); color:#fff; }
/* 文章页页脚关注区 */
.site-footer .sf-cols { display: flex; justify-content: center; padding: 18px 0 6px; }
.site-footer .sf-follow { display: flex; align-items: center; gap: 16px; }
.site-footer .sf-follow .social-links { flex-direction: row; }
.site-footer .sf-follow .social { color: #cdd9ee; }
.site-footer .sf-follow .social:hover { color: #fff; }
.site-footer .sf-copy { text-align: center; font-size: .82rem; color: #b6e2dc; padding: 6px 0 0; }

/* ---------- 公众号二维码弹窗（全局） ---------- */
.qr-modal { position: fixed; inset: 0; z-index: 300; display: none; }
.qr-modal.open { display: block; }
.qr-modal .qr-mask { position: absolute; inset: 0; background: rgba(15,30,40,.55); }
.qr-modal .qr-box {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);
  background: #fff; border-radius: 16px; padding: 22px 22px 18px; width: 280px; max-width: 86vw;
  box-shadow: 0 20px 60px rgba(0,0,0,.35); text-align: center; animation: qrPop .22s ease;
}
@keyframes qrPop { from { opacity: 0; transform: translate(-50%,-46%) scale(.94); } to { opacity: 1; transform: translate(-50%,-50%) scale(1); } }
.qr-modal .qr-box img { width: 220px; height: 220px; border-radius: 10px; display: block; margin: 0 auto; }
.qr-modal .qr-tip { margin: 14px 0 0; font-size: .95rem; font-weight: 600; color: var(--brand-dark); }
.qr-modal .qr-close { position: absolute; right: 10px; top: 8px; border: 0; background: transparent; font-size: 1.4rem; line-height: 1; color: var(--muted); cursor: pointer; }
.qr-modal .qr-close:hover { color: var(--brand); }
/* 后台网站设置：二维码预览 */
.qr-prev-wrap { margin-top: 8px; }
.qr-prev { width: 96px; height: 96px; border: 1px solid var(--line); border-radius: 8px; background: #fff; object-fit: contain; }

/* ---------- 分页/空态 ---------- */
.empty { text-align: center; padding: 50px; color: var(--muted); }
.count { font-size: .88rem; color: var(--muted); margin-bottom: 14px; }

/* ========== 页面通用 ========== */
.page-title { font-size: 1.15rem; color: var(--ink); margin: 0; position: relative; font-weight: 700; letter-spacing: .3px; font-family:"FZXiaoBiaoSong-B05S","方正小标宋简体","STZhongsong","Songti SC","SimSun",serif; line-height: 1.25; }
.page-t-wrap { margin: 14px 0 10px; }
.panel { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; box-shadow: var(--shadow); margin-bottom: 22px; }
.panel .sec-t { margin-bottom: 12px; }
.hint { font-size: .82rem; color: var(--muted); margin-top: 10px; }
/* 板块标题：中文（方正小标宋）+ 英文副标题 */
.sec-t-wrap { display:flex; align-items:center; gap:9px; margin:4px 0; }
.sec-ico { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; flex-shrink:0; border-radius:9px; background:var(--brand-light); color:var(--brand); font-size:1.3rem; transition:.2s; }
.blk:hover .sec-ico { background:var(--brand); color:#fff; transform:rotate(-6deg) scale(1.05); }
.sec-t-text { display:flex; flex-direction:column; min-width:0; }
.sec-t { font-size: 1.08rem; color: var(--ink); margin: 0; position: relative; font-weight: 700; letter-spacing: .5px; line-height: 1.2; font-family:"FZXiaoBiaoSong-B05S","方正小标宋简体","STZhongsong","Songti SC","SimSun",serif; }
.sec-en { font-size:.7rem; letter-spacing:2.5px; color:var(--brand); text-transform:uppercase; font-weight:700; opacity:.82; margin-top:3px; }
.page-sub { font-size:.65rem; letter-spacing:2px; color:var(--muted); text-transform:uppercase; font-weight:700; margin-top:6px; }
/* 列表页头图（徽风皖韵）—— 全宽铺满，标题+图标浮于左下角，图作 CSS 背景（无法新标签打开） */
.list-banner {
  position: relative; width: 100%; min-height: 230px; line-height: 0;
  background-image: url("/public/list_banner.jpg"); background-size: cover; background-position: center;
  margin: 0 0 16px; display: flex; align-items: flex-end;
}
/* 底部遮罩：加深保证左下角标题可读 */
.list-banner .banner-mask { position:absolute; inset:0; pointer-events:none; background:linear-gradient(to top, rgba(0,0,0,.62) 0%, rgba(0,0,0,.28) 40%, rgba(0,0,0,0) 70%); }
.list-banner .banner-overlay { position:relative; z-index:1; width:100%; padding:20px 22px 18px 40px; }
.list-banner .page-t-wrap { margin:0; }
.list-banner .sec-t-wrap { gap:11px; margin:0; }
.list-banner .page-title, .list-banner .sec-t { color:#fff; text-shadow:0 1px 5px rgba(0,0,0,.5); }
.list-banner .page-sub { color:rgba(255,255,255,.92); text-shadow:0 1px 3px rgba(0,0,0,.45); }
.list-banner .sec-ico { background:rgba(255,255,255,.22); color:#fff; backdrop-filter:blur(2px); }
/* 数据页 Banner：科技感头图 + 标题右侧小字提醒 */
.data-banner { background-image: url("/public/data_banner.jpg"); }
.list-banner .banner-overlay { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.list-banner .banner-tip { flex-shrink:0; max-width:48%; text-align:right; font-size:.82rem; color:rgba(255,255,255,.92); text-shadow:0 1px 3px rgba(0,0,0,.45); line-height:1.5; }
/* 选项卡：居中并与 Banner 拉开距离 */
.data-tabs { justify-content:center; margin-top:22px; margin-bottom:22px; }
/* 查询按钮下方富文本提醒 */
.data-tip { margin-top:16px; padding:12px 14px; background:var(--bg); border:1px dashed var(--line); border-radius:var(--radius); font-size:.88rem; color:var(--muted); line-height:1.75; }
.data-tip:empty { display:none; }
.data-tip a { color:var(--brand); }
/* 后台：迷你富文本编辑器 */
.mini-rte { border:1px solid var(--line); border-radius:10px; overflow:hidden; box-shadow:0 1px 3px rgba(15,30,50,.04); }
.mini-rte-bar { display:flex; gap:4px; padding:7px 9px; background:linear-gradient(180deg,#fafdfc 0%,#f3f8f7 100%); border-bottom:1px solid var(--line); flex-wrap:wrap; align-items:center; }
.mini-rte-bar button { min-width:32px; height:32px; padding:0 7px; border:1px solid transparent; background:transparent; border-radius:6px; cursor:pointer; font-size:.9rem; color:var(--ink-soft); display:inline-flex; align-items:center; justify-content:center; font-weight:600; transition:all .15s; }
.mini-rte-bar button:hover { background:#fff; color:var(--brand); border-color:var(--brand-light); box-shadow:0 1px 3px rgba(80,196,188,.18); }
.mini-rte-area { min-height:120px; padding:14px 18px; background:#fff; outline:none; font-size:.92rem; line-height:1.85; }
.mini-rte-area:focus { box-shadow:inset 0 0 0 2px rgba(80,196,188,.18); }
.mini-rte-area a { color:var(--brand); }
.mini-rte-area img { max-width:100%; border-radius:6px; }
.rte-color-label { position:relative; width:32px; height:30px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--line); border-radius:6px; background:#fff; font-size:.9rem; user-select:none; }
.rte-color-label:hover { background:var(--brand-light); border-color:var(--brand); }
.rte-color { position:absolute; opacity:0; width:0; height:0; }
/* 广告位 */
.ad-slot { margin:0 0 18px; display:flex; flex-direction:column; gap:12px; }
.ad-slot:empty { display:none; }
.ad-link { position:relative; display:block; border-radius:var(--radius); overflow:hidden; border:1px solid var(--line); box-shadow:var(--shadow); transition:.18s; }
.ad-link:hover { transform:translateY(-2px); box-shadow:var(--shadow-lg); }
.ad-link img { display:block; width:100%; height:auto; }
.ad-textbox { display:flex; align-items:center; justify-content:center; min-height:86px; padding:14px 18px; background:linear-gradient(135deg,#fff7f1,#fff); text-align:center; font-size:.95rem; color:var(--ink); line-height:1.6; }
.ad-textbox strong { color:var(--accent-dark); }
.ad-flag { position:absolute; top:8px; right:8px; background:rgba(0,0,0,.4); color:#fff; font-size:.64rem; padding:2px 7px; border-radius:5px; letter-spacing:1px; }
.more { color: var(--brand); font-weight: 600; font-size: .88rem; margin-left: auto; }
.more:hover { text-decoration: underline; }
.back { display:inline-block; color: var(--brand); font-weight:600; margin: 18px 0; }
.back:hover { text-decoration: underline; }
.chk-line { display:inline-flex; align-items:center; gap:6px; font-weight:600; font-size:.9rem; cursor:pointer; }
.topbtn { border:1px solid var(--line); background:var(--bg); color:var(--brand); border-radius:6px; padding:3px 10px; font-size:.78rem; cursor:pointer; font-weight:600; }
.topbtn.on { background:var(--brand); color:#fff; border-color:var(--brand); }
.tag.sm.ok { background:var(--brand); color:#fff; border-color:var(--brand); }

/* ========== 首页 ========== */
/* 轮播 */
.carousel { position: relative; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); margin-bottom: 12px; }
/* 桌面：aspect-ratio 定 16:7（新浏览器）；老浏览器靠 min-height 兜底 */
.carousel .slides { position: relative; aspect-ratio: 16 / 7; min-height: 240px; max-height: 420px; }
.carousel .slide { position: absolute; top:0; left:0; width:100%; bottom:0; opacity: 0; transition: opacity .6s; display:flex; align-items:flex-end; text-decoration:none; color:#fff; pointer-events:none; }
.carousel .slide.active { opacity: 1; pointer-events:auto; }
.carousel .slide-img { position:absolute !important; top:0 !important; left:0 !important; width:100% !important; height:100% !important; object-fit:fill !important; object-position:center !important; z-index:0 !important; display:block !important; }
/* 兜底：即便线上仍跑旧版 home.js（用 background 渲染图片），也强制 100% 100% 拉伸铺满、绝不裁切 */
.carousel .slide { background-size: 100% 100% !important; background-repeat:no-repeat !important; background-position:center center !important; }
.slide-inner { position:relative; z-index:2; width:100%; padding:34px 38px; background:linear-gradient(to top, rgba(0,0,0,.5), rgba(0,0,0,0) 100%); }
.slide-inner h2 { font-size: 1.9rem; font-weight: 800; text-shadow: 0 2px 12px rgba(0,0,0,.25); font-family:"FZXiaoBiaoSong-B05S","方正小标宋简体","STZhongsong","Songti SC","SimSun",serif; line-height:1.25; }
.slide-cta { display:inline-block; margin-top:10px; background: rgba(255,255,255,.22); padding:6px 16px; border-radius:20px; font-weight:700; font-size:.9rem; }
.car-dots { position:absolute; bottom:14px; left:50%; transform:translateX(-50%); display:flex; gap:8px; z-index:3; }
.car-dots .dot { width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,.5); cursor:pointer; }
.car-dots .dot.active { background:#fff; width:22px; border-radius:6px; }
/* 首页首屏：轮播 + 快捷入口（电脑版并排，手机版堆叠） */
.container.home { padding-top: 16px; }
.home-hero { display:grid; grid-template-columns: minmax(0,1fr) 320px; gap:18px; align-items:stretch; margin-bottom:12px; }
/* 快捷入口面板（轮播右侧）——干净白底卡片，图标+文字；桌面与轮播齐平 */
.qe-panel {
  background: var(--bg); border:1px solid var(--line); border-radius: var(--radius);
  padding:16px 18px; box-shadow: var(--shadow); display:flex; flex-direction:column;
}
.qe-panel .sec-t-wrap { margin-bottom:14px; }
.qe-grid { display:grid; grid-template-columns: repeat(2, 1fr); gap:10px; flex:1; grid-auto-rows:1fr; }
.qe { position:relative; overflow:hidden; display:flex; align-items:center; gap:10px; padding:10px 12px; text-decoration:none; color:var(--ink);
  background:#fff; border:1px solid var(--line); border-radius: var(--radius-sm); transition:.2s; }
.qe::after { content:''; position:absolute; right:-14px; top:-14px; width:42px; height:42px; border-radius:50%;
  background: radial-gradient(circle at 30% 30%, var(--brand-light), rgba(47,154,145,0) 70%); opacity:.55; pointer-events:none; }
.qe:hover { transform:translateY(-2px); box-shadow:0 6px 16px rgba(20,40,60,.08); border-color:var(--brand); }
.qe .ic { font-size:1.3rem; color:var(--brand); flex:none; line-height:1; }
.qe .t { font-size:.9rem; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* 两栏布局 */
.home-cols { display:grid; grid-template-columns: minmax(0,1fr) 320px; gap: 18px; align-items:start; }
.col-side { position: sticky; top: 86px; display:flex; flex-direction:column; gap:18px; }

/* 通知公告 / 考试日程：桌面在左栏顶部 / 右侧栏；手机端 flex 重排（日程在通知之上） */
.desk-notice { display:block; }
.desk-cal { display:block; }
/* 桌面端：若侧栏顶部有广告位，考试日程卡片外顶部 gap 清零（贴紧上方） */
@media (min-width: 1001px){ .col-side > .desk-cal:not(:first-child){ margin-top:-18px; } }
.mob-only { display:none; }
@media (max-width: 1000px) {
  .desk-notice, .desk-cal { display:none; }
  .col-side { display:none; }
  .home-cols { grid-template-columns: minmax(0,1fr); order:4; margin-bottom:0; }
  .mob-only { display:block; }
  /* 手机版首页各板块卡片间距统一（轮播↔导航条、通知↔广告、两广告均 16px） */
  .container.home { display:flex; flex-direction:column; gap:12px; padding-top:14px; }
  /* 手机版首页首屏：轮播与快捷入口纵向堆叠，去掉轮播多余的 margin-bottom，行间距统一为 12px（否则 16px 行间距+12px margin=28px 过大） */
  .home-hero { order:1; margin-bottom:0; gap:12px; }
  .home-hero .carousel { margin-bottom:0; }
  .mob-cal { order:2; margin-bottom:0; }
  .mob-notice { order:3; margin-bottom:0; display:flex; flex-direction:column; gap:16px; }
  .mob-notice .blk { margin:0; }
  .blk { margin-bottom:16px; }
  /* 手机版轮播：用 padding-top 撑出精确 16/7 高度（43.75% = 7/16），兼容所有浏览器，不依赖 aspect-ratio */
  .carousel .slides { aspect-ratio: auto; height: 0; width: 100%; padding-top: 43.75%; min-height: 0; max-height: none; }
  .carousel .slide-img { object-fit: fill; }
  .ad-slot { margin:0 0 16px; }
  .ad-banner { margin:0 0 16px; }
  .slide-inner { padding:22px 26px; }
  .slide-inner h2 { font-size:1.45rem; }
  /* 手机端：文章列表页各板块间距统一缩小（保持一致） */
  .count { margin-bottom:8px; }
  .ch-layout { gap:8px; margin-top:4px; }
  .ch-side { gap:8px; }
  .ch-side .ad-slot { margin:0; }
  .art-list .al-item { padding:9px 4px; }
  .pager { margin-top:10px; }
}
/* 区块 */
.blk { background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); margin-bottom: 18px; }
.blk-head { display:flex; align-items:flex-start; gap:14px; margin-bottom:16px; flex-wrap:wrap; }
/* 板块加载动画：打开页面时各区块淡入上移 */
@keyframes sectionIn { from { opacity:0; transform: translateY(18px); } to { opacity:1; transform:none; } }
/* 骨架屏加载动画（列表页/详情页进入时显示） */
@keyframes skeletonShimmer { 0%{ background-position:-400px 0; } 100%{ background-position:400px 0; } }
.skeleton { background:linear-gradient(90deg, #f0f0f0 25%, #e8e8e8 37%, #f0f0f0 63%); background-size:800px 100%; animation:skeletonShimmer 1.6s ease-in-out infinite; border-radius:6px; }
.skel-banner-wrap { width:100%; min-height:230px; display:flex; align-items:flex-end; margin:0 0 16px; }
.skel-title { width:180px; height:22px; margin:14px 0 6px; }
.skel-sub { width:120px; height:12px; margin-bottom:16px; }
.skel-tabs { display:flex; gap:8px; margin-bottom:14px; }
.skel-tab { width:56px; height:28px; border-radius:20px; }
.skel-bar { height:16px; margin-bottom:12px; }
.skel-bar-lg { height:20px; margin-bottom:14px; }
.skel-bar-sm { width:40%; height:14px; margin-bottom:10px; }
.skel-side { width:100%; height:200px; }
@media(max-width:680px){
  .skel-banner-wrap { min-height:160px; }
  .skel-side { height:160px; }
}
/* 骨架屏舞台 / 平滑淡出淡入（所有页面通用） */
.skel-stage { animation: skelStageIn .22s ease both; }
.skel-fade-out { opacity:0; transition: opacity .22s ease; pointer-events:none; }
@keyframes skelStageIn { from { opacity:0; } to { opacity:1; } }
.content-stage { } /* 真实内容包裹层 */
.content-fade-in { animation: contentFadeIn .38s ease both; }
@keyframes contentFadeIn { from { opacity:0; transform: translateY(8px); } to { opacity:1; transform:none; } }
/* 通用骨架元素尺寸 */
.skel-hero { width:100%; height:300px; border-radius:var(--radius); }
/* 首页骨架：快捷入口卡片网格（贴合 .qe-panel） */
.skel-qe-panel { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:16px; box-shadow:var(--shadow); }
.skel-qe-head { width:40%; height:20px; border-radius:6px; margin-bottom:14px; }
.skel-qe-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.skel-qe { border-radius:10px; min-height:58px; }
/* 首页骨架：文章卡片板块（白色卡片壳 + 标题 + 列表行，贴合 .blk） */
.skel-card-block { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; box-shadow:var(--shadow); margin-bottom:16px; }
.skel-block-head { display:flex; align-items:center; gap:10px; margin-bottom:14px; }
.skel-sec-ico { width:26px; height:26px; border-radius:8px; flex:0 0 auto; }
.skel-sec-title { width:42%; height:18px; border-radius:5px; }
.skel-line { width:100%; height:14px; border-radius:5px; margin-bottom:12px; }
.skel-line:last-child { width:62%; }
.skel-tl { width:100%; height:14px; border-radius:5px; margin-bottom:12px; }
.skel-tl:last-child { width:55%; }
.skel-block { width:100%; height:140px; border-radius:var(--radius); margin-bottom:16px; }
.skel-card { width:100%; height:150px; border-radius:var(--radius); }
.skel-row { width:100%; height:54px; border-radius:8px; margin-bottom:10px; }
.skel-policy { width:100%; height:96px; border-radius:var(--radius); margin-bottom:14px; }
/* 问答骨架屏：与真实常见问答页同步（banner 灰块，与文章列表页骨架一致） */
.qa-skel-banner { position:relative; min-height:200px; display:flex; align-items:flex-end; margin:0 0 16px; }
.skel-ask-btn { width:96px; height:38px; border-radius:20px; flex-shrink:0; }
.skel-qai { width:100%; height:56px; border-radius:14px; margin-bottom:12px; display:flex; align-items:center; gap:12px; padding:0 16px; box-shadow:0 1px 4px rgba(0,0,0,.04); }
.skel-q-ico { width:22px; height:22px; border-radius:50%; flex-shrink:0; }
.skel-q-line { width:55%; height:13px; border-radius:5px; }
.skel-qa-pager { display:flex; gap:6px; align-items:center; margin-top:14px; }
.skel-pg-info { margin-right:auto; width:80px; height:14px; border-radius:5px; }
.skel-pg { height:30px; border-radius:7px; }
@media(max-width:680px){
  .skel-hero { height:200px; }
  .skel-card { height:130px; }
  .skel-block { height:120px; }
}
/* 服务端整页（文章/通知详情）骨架屏遮罩：DOM 就绪后淡出（内容已在初始 HTML，用较短最小延时） */
.article-shell { position:relative; }
/* 服务端文章/通知详情页骨架屏：铺满全高，且版式与真实文章一致（双栏 + 配图块） */
.page-skeleton { position:absolute; left:0; right:0; top:0; bottom:0; min-height:100%; background:#fff; z-index:50; padding:16px 0 40px; overflow:hidden; }
.page-skeleton.skel-fade-out { opacity:0; pointer-events:none; }
.ps-wrap { max-width:1120px; margin:0 auto; padding:0 20px; }
.ps-crumb { width:220px; height:14px; border-radius:4px; margin:6px 0 18px; }
.ps-layout { display:grid; grid-template-columns:minmax(0,720px) 280px; justify-content:center; gap:30px; align-items:start; }
.ps-main { min-width:0; }
.ps-title { width:70%; height:34px; border-radius:8px; margin:0 0 14px; }
.ps-meta { width:46%; height:14px; border-radius:4px; margin:0 0 22px; }
.ps-hero { width:100%; height:300px; border-radius:12px; margin:0 0 22px; }
.ps-sub { width:36%; height:20px; border-radius:6px; margin:22px 0 14px; }
.ps-line { width:100%; height:16px; border-radius:6px; margin:0 0 13px; }
.ps-side { display:flex; flex-direction:column; gap:18px; }
.ps-card { background:#fff; border:1px solid #f1f1f1; border-radius:12px; padding:14px; }
.ps-card-qr { display:flex; gap:14px; align-items:center; }
.ps-qr { width:74px; height:74px; border-radius:8px; flex:0 0 auto; }
.ps-qr-t { flex:1; display:flex; flex-direction:column; gap:9px; }
.ps-qr-t .skeleton { width:100%; height:12px; border-radius:4px; }
.ps-side-h { width:52%; height:18px; border-radius:6px; margin-bottom:12px; }
.ps-side-item { width:100%; height:30px; border-radius:6px; margin-bottom:10px; }
.ps-side-item:last-child { margin-bottom:0; }
@media (max-width:860px){ .ps-layout { grid-template-columns:1fr; } .ps-hero { height:200px; } }
@media (max-width:680px){ .ps-wrap { padding:0 14px; } .ps-title { height:26px; width:80%; } .ps-meta { width:60%; } .ps-hero { height:160px; } .page-skeleton { padding:12px 0 30px; } }
.blk, .qe-panel, .cal-box, .mob-notice, .ad-banner, .page-title, .ch-layout, .cd-hero { animation: sectionIn .5s ease both; }
.subtabs { display:flex; gap:8px; flex-wrap:wrap; }
.subtab { padding:6px 14px; border-radius:20px; background:var(--bg); border:1px solid var(--line); font-size:.85rem; cursor:pointer; color:var(--ink-soft); font-weight:600; }
.subtab.active { background:var(--brand); color:#fff; border-color:var(--brand); }
/* 手机端：分类标签可左右滑动显示 */
@media (max-width: 680px){
  .subtabs { flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:4px; scrollbar-width:thin; }
  .subtab { flex-shrink:0; }
  .list-banner { min-height:160px; }
  .list-banner .banner-overlay { padding:13px 14px 12px; }
}
/* 卡片网格 */
.card-grid { display:grid; grid-template-columns: repeat(3, 1fr); gap:16px; }
/* 院校库列表：桌面固定两卡（覆盖上面的 .card-grid 三列；写进 style.css 保证最后加载必胜）*/
.col-card-grid { grid-template-columns: repeat(2, 1fr); }
.art-card { display:flex; flex-direction:column; padding:0; overflow:hidden; }
.art-cover { height:96px; display:grid; place-items:center; font-size:2.4rem; background: linear-gradient(135deg, var(--brand-light), #fff); }
.art-body { padding:14px 16px; }
.art-body h4 { font-size:1.02rem; line-height:1.4; margin:6px 0; color:var(--ink); }
.art-body .summary { font-size:.85rem; color:var(--ink-soft); margin:0 0 8px; }
.art-meta { font-size:.78rem; color:var(--muted); }
/* 子版块卡片 */
.subcard-grid { display:grid; grid-template-columns: repeat(5, 1fr); gap:12px; }
.subcard { background:var(--brand-light); border-radius: var(--radius-sm); padding:14px; display:block; transition:.18s; border:1px solid transparent; }
.subcard:hover { border-color:var(--brand); transform:translateY(-2px); }
.sc-top { display:flex; justify-content:space-between; align-items:center; font-weight:800; color:var(--brand-dark); }
.sc-more { color:var(--brand); }
.sc-latest { font-size:.8rem; color:var(--ink-soft); margin-top:8px; line-height:1.45; }
/* 政策列表 */
.pol-list { list-style:none; }
.pol-list li { display:flex; justify-content:space-between; gap:14px; padding:11px 4px; border-bottom:1px dashed var(--line); font-size:.92rem; }
.pol-list li a:hover { color:var(--brand); }
.pol-list .n-date { color:var(--muted); font-size:.8rem; white-space:nowrap; }

/* 普通文章列表（首页各板块） */
.art-list { list-style:none; }
.art-list .al-item { display:flex; align-items:baseline; gap:10px; padding:11px 4px; border-bottom:1px dashed var(--line); font-size:.94rem; }
.art-list .al-item:last-child { border-bottom:0; }
.art-list .al-title { flex:1; min-width:0; color:var(--ink); text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.art-list .al-title:hover { color:var(--brand); }
.art-list .al-cat { font-size:.74rem; background:var(--brand-light); color:var(--brand-dark); padding:2px 9px; border-radius:20px; white-space:nowrap; }
.art-list .al-date { color:var(--muted); font-size:.8rem; white-space:nowrap; }
.art-list .al-date-full { display:inline; }
.art-list .al-date-short { display:none; }
.art-list .al-empty { color:var(--muted); padding:12px 4px; }
/* 考试日程时间线 */
.timeline { list-style:none; position:relative; padding-left:18px; }
.timeline::before { content:""; position:absolute; left:5px; top:6px; bottom:6px; width:2px; background:var(--line); }
.timeline li { position:relative; padding:9px 0; display:grid; grid-template-columns: 86px 1fr; gap:10px; align-items:start; }
.tl-date { font-weight:700; font-size:.82rem; color:var(--brand-dark); }
.tl-dot { position:absolute; left:-17px; top:14px; width:11px; height:11px; border-radius:50%; background:var(--brand); }
.tl-dot.signup { background:var(--accent); } .tl-dot.exam { background:var(--brand); }
.tl-dot.score { background:var(--gold); } .tl-dot.apply { background:var(--c-music); }
.tl-event { font-size:.86rem; color:var(--ink-soft); }
/* 通知 */
.notice-box, .cal-box { background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding:18px; box-shadow:var(--shadow); width:100%; box-sizing:border-box; }
.timeline .tl-event { word-break: break-word; }
.notice-list { list-style:none; }
.notice-list li { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:9px 2px; border-bottom:1px dashed var(--line); font-size:.9rem; }
.notice-list li a { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ink-soft); font-weight:400; }
.notice-list li a:hover { color:var(--brand); }
.notice-list .n-date { color:var(--muted); font-size:.78rem; white-space:nowrap; flex-shrink:0; }
.notice-list li.empty { border-bottom:0; color:var(--muted); }
.pin { background:var(--accent); color:#fff; font-size:.68rem; padding:1px 7px; border-radius:5px; margin-right:6px; }
/* 通知公告向上滚动（视窗约 6 条，循环 10 条无缝滚动） */
.notice-list.scrollable { max-height: 235px; overflow: hidden; position: relative; }
.notice-list.scrollable .notice-track { animation: noticeScroll 20s linear infinite; }
.notice-list.scrollable:hover .notice-track { animation-play-state: paused; }
@keyframes noticeScroll { from { transform: translateY(0); } to { transform: translateY(-50%); } }
/* 广告横幅 */
.ad-banner { display:flex; align-items:center; gap:14px; flex-wrap:wrap; background: linear-gradient(135deg, #fff7f1, #fff); border:1px dashed var(--accent); border-radius: var(--radius); padding:14px 18px; width:100%; box-sizing:border-box; }
.ad-tag { background:var(--accent); color:#fff; font-size:.7rem; padding:2px 8px; border-radius:5px; flex-shrink:0; }
.ad-text { flex:1 1 200px; min-width:0; font-size:.92rem; }
.ad-btn { background:var(--accent); color:#fff; padding:9px 18px; border-radius:9px; font-weight:700; flex-shrink:0; }
.ad-btn:hover { background:var(--accent-dark); }

/* ========== 文章伪静态页 ========== */
.site-header { background:#fff; box-shadow:0 2px 12px rgba(0,0,0,.06); position:sticky; top:0; z-index:50; }
.site-header .wrap { max-width:var(--maxw); margin:0 auto; padding:0 20px; display:flex; align-items:center; height:64px; gap:24px; }
.site-header .brand { font-weight:800; color:var(--brand); font-size:1.2rem; }
.site-header .nav-links { display:flex; gap:4px; margin-left:auto; flex-wrap:wrap; }
.site-header .nav-links a { padding:8px 12px; border-radius:8px; color:var(--ink-soft); font-weight:600; font-size:.9rem; }
.site-header .nav-links a:hover { background:var(--brand-light); color:var(--brand); }
/* 文章页：纯白背景，取消卡片/边框/阴影 */
.article-page { background:#fff; }
.article-shell { max-width: 1120px; margin: 0 auto; padding: 16px 20px 40px; }
.crumb { font-size:.85rem; color:var(--muted); margin:16px 0; }
.crumb a:hover { color:var(--brand); }
/* 文章页美化面包屑（带图标） */
.crumb--art { display:flex; align-items:center; flex-wrap:wrap; gap:6px; font-size:.78rem; }
.crumb--art a {
  display:inline-flex; align-items:center; gap:5px;
  color:var(--ink-soft); text-decoration:none; font-weight:600;
  padding:4px 11px; border-radius:999px; background:var(--brand-light);
  transition:.18s; white-space:nowrap;
}
.crumb--art a:hover { background:var(--brand); color:#fff; box-shadow:0 3px 10px rgba(47,154,145,.25); }
.crumb--art a i { font-size:.82em; opacity:.85; }
.crumb--art .sep { color:var(--brand); font-size:.7rem; opacity:.55; }
.crumb--art .cur { color:var(--brand-dark); font-weight:700; padding:4px 4px; max-width:360px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:inline-block; vertical-align:middle; }
/* 回到顶部按钮（适时显示） */
.back-top {
  position:fixed; right:22px; bottom:26px; z-index:80;
  width:46px; height:46px; border-radius:50%;
  background:var(--brand); color:#fff; border:0; cursor:pointer;
  display:grid; place-items:center; font-size:1.15rem;
  box-shadow:0 6px 18px rgba(47,154,145,.35);
  opacity:0; transform:translateY(18px) scale(.9); pointer-events:none;
  transition:opacity .28s ease, transform .28s ease, background .2s;
}
.back-top.show { opacity:1; transform:translateY(0) scale(1); pointer-events:auto; }
.back-top:hover { background:var(--brand-dark); }
.back-top:active { transform:translateY(0) scale(.94); }
.article-layout { display:grid; grid-template-columns: minmax(0, 720px) 280px; justify-content:center; gap:30px; align-items:start; margin-top:6px; }
.article-detail { background:transparent; padding:18px 0; }
.article-detail h1 { font-size:1.7rem; line-height:1.35; margin-bottom:10px; text-align:center; font-weight:700; font-family:"方正小标宋简体","FZXiaoBiaoSong-B15","STZhongsong","SimSun",serif; letter-spacing:1px; }
.article-detail .meta { color:var(--muted); font-size:.85rem; margin-bottom:22px; border-bottom:1px solid var(--line); padding-bottom:14px; text-align:center; }
.article-body { font-size:1rem; color:var(--ink-soft); line-height:1.8; }
.article-body h2 { font-size:1.25rem; margin:26px 0 12px; color:var(--brand-dark); }
.article-body h3 { font-size:1.05rem; margin:18px 0 8px; }
.article-body p { margin-bottom:13px; }
.article-body ul, .article-body ol { margin:0 0 14px 22px; }
.article-body li { margin-bottom:6px; }
.article-body .note { background:var(--brand-light); border-radius:10px; padding:12px 14px; color:var(--brand-dark); font-size:.88rem; }
.article-body .src-note { font-size:.82rem; color:var(--muted); border-top:1px dashed var(--line); margin-top:20px; padding-top:14px; }
.article-body img { max-width:100%; height:auto; border-radius:8px; margin:12px 0; display:block; }
/* 文章正文表格：所有线条 #50c4bc + 表头底色 #50c4bc 白字 + 自动换行 + 平铺水印
   !important 强制覆盖富文本内联样式（编辑器/粘贴可能自带 border 颜色） */
.article-body .table-wrap-watermark { border:1px solid #50c4bc !important; border-radius:9px; overflow-x:auto; margin:12px 0; }
.article-body table { width:100% !important; border-collapse:collapse !important; font-size:.92rem; margin:0; }
.article-body table th, .article-body table td { padding:9px 12px; text-align:left; border:1px solid #50c4bc !important; white-space:normal; word-break:break-word; }
.article-body table th { background:#50c4bc !important; color:#fff !important; font-weight:700; font-size:.85rem; }
.article-detail .back { margin-top:24px; }
.article-side { position:sticky; top:84px; display:flex; flex-direction:column; gap:12px; }
/* 侧栏广告与二维码卡片间距收紧（避免 gap 与 ad-slot 的 margin-bottom 叠加） */
.article-side .ad-slot { margin-bottom:0; }
/* 竖版广告位 */
.ad-v { background: linear-gradient(160deg, #fff7f1, #fff); border:1px dashed var(--accent); border-radius:var(--radius); padding:18px 16px; text-align:center; }
.ad-v .ad-tag { display:inline-block; background:var(--accent); color:#fff; font-size:.68rem; padding:2px 8px; border-radius:5px; margin-bottom:10px; }
.ad-v-txt { font-size:.9rem; color:var(--ink-soft); line-height:1.7; }
.ad-v-txt strong { display:block; color:var(--accent-dark); font-size:1.05rem; margin-bottom:6px; }
/* 热门文章：取消卡片样式 */
.side-card { padding:6px 0; }
.side-t { font-size:.95rem; margin:0 0 10px; color:var(--brand-dark); }
.side-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px; }
.side-list li { font-size:.86rem; line-height:1.4; border-bottom:1px dashed var(--line); padding-bottom:8px; }
.side-list li:last-child { border-bottom:0; padding-bottom:0; }
.side-list a { color:var(--ink-soft); }
.side-list a:hover { color:var(--brand); }
.side-list .n-date { display:block; font-size:.74rem; color:var(--muted); margin-top:2px; }
.side-list .empty { color:var(--muted); font-size:.82rem; border:0; padding:0; }

/* 浏览量旁：分享图标按钮 */
.meta-act { display:inline-flex; align-items:center; gap:6px; margin-left:8px; vertical-align:middle; }
.ic-btn { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border-radius:50%; border:1px solid var(--line); background:#fff; color:var(--muted); cursor:pointer; font-size:.85rem; transition:.16s; flex-shrink:0; }
.ic-btn:hover { border-color:var(--brand); color:var(--brand); }
.ic-btn.wx { background:linear-gradient(135deg,#3cc163,#09b83e); border-color:transparent; color:#fff; }
.ic-btn.wx:hover { opacity:.88; color:#fff; }
.ic-btn.edit-art-btn { background:var(--brand); border-color:transparent; color:#fff; }
.ic-btn.edit-art-btn:hover { opacity:.88; color:#fff; }

/* 侧栏二维码关注卡片（始终一行两码并排，文字在二维码下方，图片宽度自适应） */
.side-qr-card { background:linear-gradient(135deg,#ff8a2e,#ff6b00); border-radius:var(--radius); padding:14px 12px; display:flex; flex-direction:row; justify-content:center; align-items:flex-start; gap:12px; }
.side-qr-item { display:flex; flex-direction:column; align-items:center; gap:7px; color:#fff; flex:1 1 0; min-width:0; text-align:center; }
.side-qr-item img { width:100%; max-width:84px; height:auto; aspect-ratio:1 / 1; border-radius:6px; background:#fff; object-fit:cover; }
.side-qr-text { font-size:.74rem; line-height:1.45; font-weight:600; letter-spacing:.3px; min-width:0; }

@media (max-width:860px){
  .side-qr-card { gap:14px; padding:16px 14px; }
  .side-qr-item img { max-width:108px; }
  .side-qr-text { font-size:.8rem; }
}

/* 分享弹窗（微信扫码）美化 */
.shr-modal { position:fixed; inset:0; z-index:200; display:none; }
.shr-modal.open { display:block; }
.shr-mask { position:absolute; inset:0; background:rgba(15,30,40,.55); backdrop-filter:blur(2px); }
.shr-box {
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:300px; max-width:88vw; background:#fff; border-radius:20px;
  padding:0 22px 26px; text-align:center; overflow:hidden;
  box-shadow:0 24px 70px rgba(15,30,45,.32);
  animation:shrPop .26s cubic-bezier(.2,.8,.3,1.1);
}
@keyframes shrPop { from { opacity:0; transform:translate(-50%,-46%) scale(.92); } to { opacity:1; transform:translate(-50%,-50%) scale(1); } }
.shr-box::before {
  content:""; display:block; height:6px; margin:0 -22px 18px;
  background:linear-gradient(90deg,#07c160,#50c4bc);
}
.shr-close {
  position:absolute; right:12px; top:14px; width:30px; height:30px; border:0;
  background:rgba(15,30,40,.05); border-radius:50%; font-size:1.2rem; line-height:1;
  color:var(--muted); cursor:pointer; transition:.2s; z-index:2;
}
.shr-close:hover { background:var(--brand); color:#fff; transform:rotate(90deg); }
.shr-box h4 {
  margin:0 0 16px; font-size:1.05rem; color:var(--ink); font-weight:700;
  display:flex; align-items:center; justify-content:center; gap:8px;
}
.shr-box h4::before {
  content:""; width:9px; height:9px; border-radius:50%; background:#07c160;
  box-shadow:0 0 0 3px rgba(7,193,96,.16); flex:none;
}
.shr-box img {
  display:block; margin:0 auto; width:210px; height:210px; max-width:100%; box-sizing:border-box;
  padding:12px; background:#fff; border:1px solid var(--line); border-radius:14px;
  box-shadow:0 8px 22px rgba(20,40,60,.10);
}
.shr-box p { font-size:.82rem; color:var(--muted); margin:16px 0 14px; word-break:break-all; line-height:1.6; }
.shr-box code { background:var(--brand-light); color:var(--brand-dark); padding:3px 7px; border-radius:6px; font-size:.78rem; }
.shr-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  width:100%; padding:11px 16px; border:0; border-radius:12px; cursor:pointer;
  background:linear-gradient(135deg,#07c160,#0aa85a); color:#fff; font-weight:700; font-size:.92rem;
  box-shadow:0 6px 16px rgba(7,193,96,.28); transition:.18s;
}
.shr-btn:hover { background:linear-gradient(135deg,#0aa85a,#079c54); transform:translateY(-1px); box-shadow:0 8px 20px rgba(7,193,96,.36); }
.shr-btn:active { transform:translateY(0); }

/* 轻提示 toast */
.toast { position:fixed; left:50%; bottom:40px; transform:translateX(-50%) translateY(20px); background:rgba(20,30,50,.9); color:#fff; padding:10px 18px; border-radius:22px; font-size:.85rem; opacity:0; pointer-events:none; transition:.25s; z-index:300; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

/* 公众号复制内容（如 xk-admit）：强制自适应，避免手机端宽度溢出 */
.article-body { overflow-wrap:break-word; word-break:break-word; }
.article-body img, .article-body table, .article-body iframe, .article-body video, .article-body embed, .article-body object { max-width:100% !important; height:auto !important; }
.article-body section, .article-body div, .article-body p, .article-body span, .article-body table { max-width:100% !important; box-sizing:border-box; }
.article-body [style*="width"] { max-width:100% !important; }
.article-body [style*="white-space:nowrap"], .article-body [style*="white-space: nowrap"] { white-space:normal !important; }
.article-body table { width:100% !important; }
.article-body img { margin:12px auto; }

@media (max-width:860px){ .article-layout { grid-template-columns:1fr; gap:16px; } .article-side { position:static; } .article-main .ad-slot { margin-bottom:0; } }
@media (max-width:680px){
  .article-shell { padding:12px 14px 30px; }
  .article-detail { padding:8px 0; }
  .article-detail h1 { font-size:1.25rem; letter-spacing:.5px; line-height:1.3; }
  .back-top { right:14px; bottom:18px; width:42px; height:42px; font-size:1.05rem; }
  .crumb--art { font-size:.72rem; gap:5px; }
  .crumb--art .cur { max-width:46vw; }
  .article-body section, .article-body div { width:auto !important; max-width:100% !important; }
  .article-body img, .article-body table, .article-body iframe, .article-body video { max-width:100% !important; }
}
.site-footer { background:var(--brand-dark); color:#cdd9ee; padding:30px 0; margin-top:30px; text-align:center; font-size:.85rem; }

/* ========== 数据查询 ========== */
.calc-panel .calc-row { display:grid; grid-template-columns: 130px 1fr; gap:12px; align-items:center; margin-bottom:14px; }
.calc-panel label { font-weight:600; font-size:.92rem; }
.calc-panel input, .calc-panel select { padding:11px 13px; border:1px solid var(--line); border-radius:10px; }
.calc-panel input:focus, .calc-panel select:focus { outline:2px solid var(--brand-light); border-color:var(--brand); }
.calc-result { margin-top:16px; font-size:1.05rem; }
.calc-result .big { font-size:2.4rem; font-weight:800; color:var(--accent); }
.filter-grid { display:grid; grid-template-columns: repeat(4, 1fr); gap:14px; margin-bottom:16px; }
.filter-grid label { display:block; font-weight:600; font-size:.85rem; margin-bottom:6px; }
.filter-grid select, .filter-grid input { width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:9px; }
.filter-grid select:focus, .filter-grid input:focus { outline:2px solid var(--brand-light); border-color:var(--brand); }
/* 院校详情页「历年统考录取」筛选行：与 /#/data 同款下拉，横排可换行 */
.hist-filter-grid { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
.hist-filter-grid > .ddown { flex:1 1 180px; min-width:160px; }
.hist-filter-grid > .btn { flex:0 0 auto; height:45px; }
/* 重要：.blk 默认 overflow:hidden 会裁掉下拉浮层，此处必须 visible */
.hist-filter { overflow:visible; }
.blk:has(.hist-filter-grid) { overflow:visible; }
/* 弹窗式筛选按钮 */
.fpick { display:flex; flex-direction:column; }
.fpick > label { font-weight:600; font-size:.85rem; margin-bottom:6px; }
/* ddown 内的 label */
.ddown { display:flex; flex-direction:column; }
.ddown > label { font-weight:600; font-size:.85rem; margin-bottom:6px; }
/* 院校库筛选：一行2个 */
.col-filter-grid { grid-template-columns: repeat(2, 1fr) !important; }
.fpick-btn { display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; padding:10px 13px; border:1px solid var(--line); border-radius:9px; background:#fff; cursor:pointer; color:var(--ink-soft); font-size:.92rem; text-align:left; }
.fpick-btn:hover { border-color:var(--brand); }
.fpick-btn.ph { color:var(--muted); border-style:dashed; }
.fpick-btn i { color:var(--muted); font-size:.8rem; }
.query-bar { display:flex; align-items:center; gap:14px; margin-top:4px; }
.filter-opts { display:flex; flex-direction:column; gap:8px; max-height:52vh; overflow:auto; }
.filter-opts label { display:flex; align-items:center; gap:10px; padding:11px 13px; border:1px solid var(--line); border-radius:9px; cursor:pointer; font-size:.92rem; }
.filter-opts label:hover { border-color:var(--brand); background:var(--brand-light); }
.filter-opts input { width:16px; height:16px; accent-color:var(--brand); }

/* 数据表格（通用） */
.table-wrap { overflow-x:auto; border-radius:12px; box-shadow: 0 1px 3px rgba(15,30,50,.04); border:1px solid var(--line); background:#fff; }
.data-table { width:100%; min-width:max-content; border-collapse:collapse; background:#fff; font-size:.88rem; }
.data-table th, .data-table td { padding:10px 13px; text-align:left; border-bottom:1px solid var(--line); white-space:nowrap; }
.data-table th { background:#f7fafa; color:var(--ink); font-weight:700; font-size:.82rem; position:sticky; top:0; border-bottom:2px solid var(--line); }
.data-table tbody tr:hover { background:#fafdfc; }
.data-table tbody tr:last-child td { border-bottom:0; }
.data-table .score { color:var(--accent); font-weight:700; }
.data-table .rank-strong { color:#ff7a1a; font-weight:700; }
.data-table .batch { color:var(--brand-dark); }
.data-table a { color:var(--brand); font-weight:600; }
.data-table input { padding:6px 10px; border:1px solid var(--line); border-radius:7px; font-size:.85rem; background:#fff; }
.data-table input:focus { outline:none; border-color:var(--brand); }
/* 操作列：始终可见 */
.data-table .ops { position:sticky; right:0; background:inherit; z-index:1; box-shadow:-4px 0 8px rgba(0,0,0,.04); }
.data-table tr:hover .ops { background:#fafdfc; }
.data-table th.ops { background:#f7fafa; box-shadow:-4px 0 8px rgba(0,0,0,.06); }

/* 院校/专业库筛选条 */
.filter-bar { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:16px; }
.filter-bar input, .filter-bar select { padding:10px 13px; border:1px solid var(--line); border-radius:9px; min-width:150px; }
.filter-bar input:focus, .filter-bar select:focus { outline:2px solid var(--brand-light); border-color:var(--brand); }
.filter-bar.sm { margin:0 0 12px; }
.filter-bar.sm select { padding:7px 10px; min-width:auto; font-size:.85rem; }
.filter-bar .hint { align-self:center; }

/* 院校卡片 */
.col-card { display:flex; gap:14px; align-items:center; padding:16px; min-width:0; }
.col-info { min-width:0; }
.col-logo { width:54px; height:54px; border-radius:12px; background:linear-gradient(135deg,var(--brand),var(--accent)); color:#fff; display:grid; place-items:center; font-size:1.4rem; font-weight:800; flex:none; overflow:hidden; }
.col-logo img { width:100%; height:100%; object-fit:cover; }
.col-info h4 { font-size:1.02rem; color:var(--ink); word-break:break-word; }
.col-sub { font-size:.8rem; color:var(--muted); margin:3px 0 6px; }
.badge { background:var(--gold); color:#fff; font-size:.68rem; padding:1px 7px; border-radius:5px; margin-left:6px; }
.col-cats { display:flex; gap:5px; flex-wrap:wrap; }
.tag.sm { font-size:.68rem; padding:1px 7px; }
/* 院校详情 */
.col-detail .cd-head { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:20px 22px; margin-bottom:18px; box-shadow:var(--shadow); }
.cd-top { display:flex; gap:18px; align-items:center; flex-wrap:wrap; }
.cd-body { display:flex; gap:24px; margin-top:18px; align-items:stretch; }
.cd-col { display:flex; flex-direction:column; gap:12px; flex:1; min-width:0; }
.cd-divider { width:1px; align-self:stretch; background:var(--line); flex:none; }
.cd-logo { width:88px; height:88px; border-radius:18px; background:linear-gradient(135deg,var(--brand),var(--accent)); color:#fff; display:grid; place-items:center; font-size:2rem; font-weight:800; flex:none; overflow:hidden; }
.cd-logo img { width:100%; height:100%; object-fit:cover; }
.cd-meta h2 { font-size:1.6rem; }
.cd-sub { color:var(--ink-soft); margin:6px 0; }
.cd-site { color:var(--brand); font-weight:600; font-size:.9rem; }
.cd-info-grid { display:grid; grid-template-columns: repeat(3,1fr); gap:12px; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:18px; margin-bottom:18px; }
.cd-info-grid > div { display:flex; flex-direction:column; gap:4px; }
.cd-info-grid .lbl { font-size:.78rem; color:var(--muted); }
.cd-info-grid span:last-child { font-weight:600; color:var(--ink); }
.cd-block { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; margin-bottom:16px; }
.cd-block h4 { font-size:1.02rem; color:var(--brand-dark); margin-bottom:8px; }
.cd-block p { color:var(--ink-soft); font-size:.92rem; }
.xiaokao-links { display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }
.xiaokao-link-box { margin-top:16px; padding:16px 18px; background:var(--brand-light); border:1px solid var(--brand); border-radius:var(--radius); }
.xk-main-link { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; padding:14px; font-size:1.05rem; margin-bottom:12px; }
.xiaokao-sub-links { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }
/* 院校详情：卡片间距统一 + 标题与内容间隔（补全此前未样式化的类） */
/* 页内所有卡片间隙统一 18px：flex gap:18px（卡片间）+ cd-head margin-bottom:18px（校徽块→首卡），margin-top:0 避免双倍叠加 */
.ch-layout--detail { display:flex; flex-direction:column; gap:18px; margin-top:0; width:100%; }
.ch-layout--detail .blk { margin-bottom:0; }
.ch-layout--detail > .blk { width:100%; min-width:0; }
.col-detail .cd-head { margin-bottom:18px; }
.cd-name { font-size:1.5rem; font-weight:800; color:var(--ink); margin:0; line-height:1.25; word-break:break-word; }
.cd-line2 { color:var(--ink-soft); font-size:.92rem; margin-top:6px; }
.cd-tags { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }
.cc-item { display:flex; align-items:baseline; gap:8px; }
.cc-item > i { color:var(--brand); font-size:.92rem; flex:none; margin-top:1px; }
.cc-text { display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; min-width:0; }
.cc-lbl { font-size:.82rem; color:var(--ink); font-weight:600; flex:none; }
.cc-val { font-size:.9rem; color:var(--ink-soft); font-weight:400; word-break:break-word; line-height:1.4; }
.cc-val a { color:var(--brand); font-weight:600; }
.cc-val-link { color:var(--brand); font-weight:600; text-decoration:none; }
.cc-val-link:hover { text-decoration:underline; }
/* 卡片内：项目标题与下方内容的间隔 */
.cd-sec { margin-bottom:14px; }
.cd-desc { color:var(--ink-soft); font-size:.94rem; line-height:1.75; }
.cd-note { color:var(--muted); font-size:.82rem; line-height:1.7; margin-top:12px; }
/* 院校详情：相关文章 */
.rel-articles { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.rel-articles li { display: flex; align-items: baseline; gap: 10px; border-bottom: 1px dashed var(--line); padding-bottom: 9px; }
.rel-articles li:last-child { border-bottom: 0; padding-bottom: 0; }
.rel-articles a { color: var(--ink); font-size: .94rem; font-weight: 600; flex: 1; min-width: 0; }
.rel-articles a:hover { color: var(--brand); }
.rel-articles .ra-date { flex-shrink: 0; font-size: .8rem; color: var(--muted); }
/* 专业卡片 */
.major-card .mc-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.major-card h4 { font-size:1.05rem; color:var(--ink); }
.mc-sub { font-size:.8rem; color:var(--muted); }
.hot { background:var(--accent); color:#fff; font-size:.68rem; padding:1px 7px; border-radius:5px; }
.major-detail h2 { font-size:1.6rem; }
.md-sub { color:var(--ink-soft); margin:8px 0 16px; }
.md-title { font-size:1.7rem; font-weight:700; color:var(--brand); margin:6px 0 16px; line-height:1.35; word-break:break-word; font-family:"FZXiaoBiaoSong-B05S","方正小标宋简体","STZhongsong","Songti SC","SimSun",serif; }
.md-title .hot { margin-left:8px; vertical-align:middle; }

/* 开设院校卡片网格（左 logo、右两行；电脑端 4 列、手机端 1 列）*/
.md-colleges-loading, .md-colleges-empty { color:var(--muted); font-size:.88rem; padding:14px 2px; }
.md-college-grid { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-top:4px; }
.md-college-card {
  display:flex; flex-direction:row; align-items:center; gap:11px; text-align:left;
  padding:11px 13px; background:#fff; border:1px solid var(--line); border-radius:var(--radius);
  text-decoration:none; color:inherit; transition:.16s; min-width:0;
}
.md-college-card:hover { border-color:var(--brand); box-shadow:0 6px 18px rgba(47,154,145,.14); transform:translateY(-2px); }
.md-college-logo {
  width:44px; height:44px; border-radius:12px; overflow:hidden; flex:none;
  background:linear-gradient(135deg,var(--brand),var(--accent)); color:#fff;
  display:grid; place-items:center; font-size:1.15rem; font-weight:800;
}
.md-college-logo img { width:100%; height:100%; object-fit:cover; }
.md-college-meta { display:flex; flex-direction:column; gap:2px; min-width:0; }
.md-college-name { font-size:.92rem; font-weight:700; color:var(--ink); line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.md-college-sub { font-size:.76rem; color:var(--muted); line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* 无限滚动哨兵 + 加载动画 */
.md-college-sentinel { grid-column:1 / -1; }
.md-college-sentinel.md-colleges-loading { display:flex; align-items:center; justify-content:center; gap:8px; padding:14px 2px; }
.mini-spin { width:16px; height:16px; border:2px solid var(--brand-light); border-top-color:var(--brand); border-radius:50%; animation:spin .8s linear infinite; flex:none; }
@media (max-width: 860px){ .md-college-grid { grid-template-columns:1fr; } }

/* ========== 管理员后台 ========== */
.login-wrap { min-height: 70vh; display:grid; place-items:center; }
.login-split { display:flex; min-height:100vh; background:var(--bg); }
.login-left { flex:0 0 44%; position:relative; overflow:hidden; background:linear-gradient(135deg,#e7faf6 0%,#cdebe5 100%); display:flex; align-items:center; justify-content:center; }
.login-illust { width:100%; height:100%; background-repeat:no-repeat; background-position:center; background-size:contain; min-height:480px; }
.login-left-tag { position:absolute; bottom:24px; left:0; right:0; text-align:center; color:var(--brand-dark); font-size:1.1rem; font-weight:700; letter-spacing:.5px; }
.login-right { flex:1; min-width:0; padding:36px 60px; display:flex; flex-direction:column; align-items:center; justify-content:center; background:#fff; position:relative; }
.login-brand { display:flex; align-items:center; gap:12px; text-decoration:none; color:var(--brand-dark); align-self:flex-start; padding-bottom:18px; margin-bottom:36px; border-bottom:1px solid var(--line); width:100%; }
.login-brand-img { width:46px; height:46px; border-radius:50%; object-fit:cover; }
.login-brand-text { display:flex; flex-direction:column; line-height:1.2; }
.login-brand-cn { font-weight:800; font-size:1.15rem; color:var(--brand-dark); }
.login-brand-en { font-size:.78rem; color:var(--muted); margin-top:2px; letter-spacing:.4px; }
.login-card { width:100%; max-width:380px; }
.login-h2 { text-align:center; font-size:1.55rem; color:var(--ink); margin:0 0 8px; font-weight:700; }
.login-sub { text-align:center; color:var(--muted); font-size:.88rem; margin:0 0 22px; }
.login-field { position:relative; margin-bottom:14px; }
.login-field i { position:absolute; left:14px; top:50%; transform:translateY(-50%); color:var(--muted); font-size:.95rem; }
.login-field input { width:100%; padding:13px 14px 13px 40px; border:1px solid var(--line); border-radius:10px; font-size:.95rem; background:#fff; transition:all .2s; }
.login-field input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(80,196,188,.12); }
.login-btn { width:100%; padding:13px; background:var(--brand); color:#fff; border:0; border-radius:10px; font-size:1rem; font-weight:700; cursor:pointer; margin-top:6px; letter-spacing:2px; box-shadow:0 4px 14px rgba(80,196,188,.32); transition:all .2s; display:inline-flex; align-items:center; justify-content:center; gap:8px; }
.login-btn:hover { background:var(--brand-dark); transform:translateY(-1px); box-shadow:0 6px 18px rgba(80,196,188,.42); }
.login-tip { margin-top:14px; min-height:22px; text-align:center; color:#e74c3c; font-size:.85rem; }
.login-tip i { margin-right:4px; }
.login-foot { margin-top:30px; text-align:center; color:var(--muted); font-size:.78rem; letter-spacing:.4px; }
@media (max-width:768px) {
  .login-split { flex-direction:column; min-height:100vh; }
  .login-left { flex:0 0 auto; min-height:240px; padding:20px; }
  .login-illust { min-height:200px; background-size:60%; }
  .login-left-tag { position:static; padding-top:10px; font-size:.95rem; }
  .login-right { padding:28px 22px; }
  .login-brand { margin-bottom:18px; padding-bottom:14px; }
}
/* 登录/管理页隐藏前端底部 */
.admin-footer { text-align:center; padding:12px 0; color:var(--muted); font-size:.78rem; background:transparent; }
.admin-main .admin-footer { margin-top:auto; }
body:has(.login-split) .footer,
body:has(.login-split) .site-footer,
body:has(.admin-layout) .footer,
body:has(.admin-layout) .site-footer { display:none !important; }
/* ===== 后台侧边栏布局（简洁清爽版） ===== */
.admin-layout { display:flex; align-items:stretch; min-height: 100vh; transition:all .2s; }
.admin-side { width:224px; flex:0 0 224px; background:#fff; color:var(--ink-soft); display:flex; flex-direction:column; padding:18px 12px; position:sticky; top:0; height:100vh; overflow:auto; border-right:1px solid var(--line); transition:width .2s,flex .2s; }
.admin-side.collapsed { width:60px; flex:0 0 60px; padding:18px 6px; }
.admin-side.collapsed .as-brand-info,
.admin-side.collapsed .as-label,
.admin-side.collapsed .as-group { display:none; }
.admin-side.collapsed .as-brand { justify-content:center; padding:10px 0 16px; }
.admin-side.collapsed .as-brand-img { width:32px; height:32px; }
.admin-side.collapsed .as-item { justify-content:center; padding:9px 0; }
.admin-side.collapsed .as-home { justify-content:center; padding:9px 0; }
.admin-side.collapsed .as-collapse i { transform:rotate(180deg); }
.as-brand { display:flex; align-items:center; gap:10px; padding:8px 8px 14px; border-bottom:1px solid var(--line); margin-bottom:8px; }
.as-brand-img { width:36px; height:36px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.as-brand-info { display:flex; flex-direction:column; min-width:0; }
.as-brand-cn { font-weight:700; font-size:.9rem; color:var(--brand-dark); line-height:1.25; white-space:nowrap; }
.as-brand-en { font-size:.68rem; color:var(--muted); line-height:1.25; letter-spacing:.3px; white-space:nowrap; }
.as-brand-sub { font-size:.7rem; color:var(--brand); font-weight:600; margin-top:1px; }
.as-collapse { position:absolute; top:16px; right:-12px; width:24px; height:24px; border-radius:50%; background:#fff; color:var(--ink-soft); border:1px solid var(--line); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:.7rem; box-shadow:0 1px 3px rgba(15,30,50,.08); z-index:5; }
.as-collapse:hover { background:var(--brand-light); color:var(--brand); border-color:var(--brand); }
.as-home { display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; color:var(--brand); font-size:.88rem; font-weight:600; margin-bottom:10px; text-decoration:none; background:var(--brand-light); }
.as-home:hover { background:var(--brand); color:#fff; }
.as-home i { width:16px; text-align:center; }
.as-group { font-size:.68rem; letter-spacing:.06em; color:var(--muted); margin:12px 8px 4px; text-transform:uppercase; font-weight:700; }
.as-item { display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; color:var(--ink-soft); font-size:.88rem; font-weight:500; margin-bottom:1px; text-decoration:none; transition:all .15s; }
.as-item i { width:16px; text-align:center; font-size:.88rem; }
.as-item:hover { background:var(--brand-light); color:var(--brand-dark); }
.as-item.active { background:var(--brand); color:#fff; box-shadow:0 2px 8px rgba(80,196,188,.28); }
.as-item.active i { color:#fff; }
.admin-main { flex:1; min-width:0; display:flex; flex-direction:column; background:var(--bg); }
.am-top { display:flex; align-items:center; gap:12px; padding:12px 24px; border-bottom:1px solid var(--line); background:#fff; position:sticky; top:0; z-index:5; box-shadow:0 1px 2px rgba(15,30,50,.04); }
.as-toggle { display:none; border:1px solid var(--line); background:#fff; border-radius:8px; width:38px; height:36px; cursor:pointer; color:var(--brand); }
.am-title { font-size:1rem; margin:0; font-weight:700; color:var(--ink); }
.am-spacer { flex:1; }
.am-user { position:relative; }
.am-user-btn { display:inline-flex; align-items:center; gap:7px; padding:6px 12px; background:var(--bg); border:1px solid var(--line); border-radius:8px; cursor:pointer; color:var(--ink); font-weight:600; font-size:.8rem; transition:all .15s; }
.am-user-btn:hover { background:var(--brand-light); border-color:var(--brand); color:var(--brand-dark); }
.am-user-btn:hover .am-caret { color:var(--brand); }
.am-caret { font-size:.65rem; transition:transform .2s; margin-left:2px; }
.am-user-btn.active .am-caret { transform:rotate(180deg); }
.am-user-menu { position:absolute; top:calc(100% + 8px); right:0; min-width:180px; background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow:0 8px 24px rgba(15,30,50,.14); padding:6px; z-index:50; opacity:0; visibility:hidden; transform:translateY(-4px); transition:all .15s; }
.am-user-menu.show { opacity:1; visibility:visible; transform:translateY(0); }
.am-menu-item { display:flex; align-items:center; gap:10px; padding:10px 12px; color:var(--ink); text-decoration:none; border-radius:7px; font-size:.88rem; cursor:pointer; transition:all .12s; }
.am-menu-item:hover { background:var(--brand-light); color:var(--brand-dark); }
.am-home { display:inline-flex; align-items:center; gap:7px; padding:6px 12px; background:var(--bg); border:1px solid var(--line); border-radius:8px; color:var(--ink); font-weight:600; font-size:.8rem; text-decoration:none; transition:all .15s; }
.am-home:hover { background:var(--brand-light); border-color:var(--brand); color:var(--brand-dark); }
.am-home i { color:var(--brand); }
.am-home .am-home-short { display:none; }
.am-menu-item i { width:16px; text-align:center; color:var(--muted); }
.am-menu-item:hover i { color:var(--brand); }
.am-body { padding:24px 24px 44px; }
/* 导航管理 + 快捷入口 可编辑表格 */
.edit-tbl { width:100%; border-collapse:collapse; background:#fff; border-radius:10px; overflow:hidden; border:1px solid var(--line); }
.edit-tbl th, .edit-tbl td { padding:10px 12px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.edit-tbl th { background:#f7fafa; font-size:.82rem; color:var(--ink); font-weight:700; border-bottom-width:2px; }
.edit-tbl tr:last-child td { border-bottom:0; }
.edit-tbl tr:hover td { background:#fafdfc; }
.edit-tbl input, .edit-tbl textarea { width:100%; padding:8px 10px; border:1px solid var(--line); border-radius:7px; font-size:.87rem; background:#fff; transition:all .15s; }
.edit-tbl input:focus, .edit-tbl textarea:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 2px rgba(80,196,188,.12); }
.edit-tbl textarea { resize:vertical; min-height:60px; font-family:inherit; }
.edit-tbl .nv-ops { white-space:nowrap; display:flex; gap:4px; align-items:flex-start; }
.edit-tbl .nv-ops button { width:28px; height:28px; border:1px solid var(--line); background:#fff; border-radius:6px; cursor:pointer; color:var(--ink-soft); display:inline-flex; align-items:center; justify-content:center; font-size:.82rem; transition:all .15s; }
.edit-tbl .nv-ops button:hover { border-color:var(--brand); color:var(--brand); background:var(--brand-light); }
.edit-tbl .nv-ops .q-del:hover { border-color:#e74c3c; color:#e74c3c; background:#fdecea; }
.edit-tbl .q-acts { white-space:nowrap; }
/* 导航管理容器 */
.tbl-wrap { overflow-x:auto; border-radius:10px; box-shadow:0 1px 3px rgba(15,30,50,.04); margin-bottom:14px; }
/* 命名管理 */
.naming-sec { border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin-bottom:16px; background:#fff; box-shadow:var(--shadow); }
.ns-t { font-size:1rem; margin:0 0 12px; color:var(--brand-dark); display:flex; align-items:center; gap:8px; }
.naming-sec code { background:var(--brand-light); color:var(--brand-dark); padding:1px 6px; border-radius:5px; font-size:.78rem; }
.dash-wrap { display:flex; flex-direction:column; gap:18px; }
.dash-cards { display:grid; grid-template-columns: repeat(auto-fill, minmax(190px,1fr)); gap:16px; }
.dash-card { position:relative; display:flex; align-items:center; gap:14px; padding:18px 20px; background:#fff; border:1px solid var(--line); border-radius:16px; text-decoration:none; color:inherit; box-shadow:0 4px 14px rgba(20,40,60,.06); transition:.2s; overflow:hidden; }
.dash-card::after { content:""; position:absolute; right:-22px; top:-22px; width:72px; height:72px; border-radius:50%; background:var(--brand); opacity:.06; }
.dash-card:hover { transform:translateY(-3px); box-shadow:0 12px 28px rgba(20,40,60,.14); border-color:var(--brand); }
.dash-card .dc-ico { width:50px; height:50px; border-radius:14px; flex:none; display:grid; place-items:center; background:linear-gradient(135deg,var(--brand),var(--accent)); box-shadow:0 6px 14px rgba(47,154,145,.28); }
.dash-card .dc-ico i { color:#fff; font-size:1.45rem; }
.dash-card .dc-text { display:flex; flex-direction:column; gap:2px; }
.dash-card .dc-num { font-size:1.7rem; font-weight:800; color:var(--ink); line-height:1.05; }
.dash-card .dc-lbl { font-size:.85rem; color:var(--muted); }
.dash-card.dc-news .dc-ico { background:linear-gradient(135deg,#2f9a91,#4fc3b0); }
.dash-card.dc-college .dc-ico { background:linear-gradient(135deg,#0ea5e9,#38bdf8); box-shadow:0 6px 14px rgba(14,165,233,.3); }
.dash-card.dc-major .dc-ico { background:linear-gradient(135deg,#6366f1,#818cf8); box-shadow:0 6px 14px rgba(99,102,241,.3); }
.dash-card.dc-qa .dc-ico { background:linear-gradient(135deg,#14b8a6,#34d399); box-shadow:0 6px 14px rgba(20,184,166,.3); }
.dash-card.dc-warn .dc-ico { background:linear-gradient(135deg,#f0a020,#f6c14b); box-shadow:0 6px 14px rgba(240,160,32,.3); }
.dash-card.dc-data .dc-ico { background:linear-gradient(135deg,#3b82f6,#60a5fa); box-shadow:0 6px 14px rgba(59,130,246,.3); }
.dash-card.dc-exam .dc-ico { background:linear-gradient(135deg,#8b5cf6,#a78bfa); box-shadow:0 6px 14px rgba(139,92,246,.3); }
.dash-card.dc-notice .dc-ico { background:linear-gradient(135deg,#ef5da8,#f78ac0); box-shadow:0 6px 14px rgba(239,93,168,.3); }
.dash-card.dc-banner .dc-ico { background:linear-gradient(135deg,#f97316,#fb923c); box-shadow:0 6px 14px rgba(249,115,22,.3); }
.dash-cols { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.dash-quick, .dash-recent { background:#fff; border:1px solid var(--line); border-radius:16px; padding:18px 20px; box-shadow:0 4px 14px rgba(20,40,60,.05); }
.dash-h { margin:0 0 14px; font-size:1rem; color:var(--ink); display:flex; align-items:center; gap:8px; }
.dash-h i { color:var(--brand); }
.dash-actions { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
.qk { display:flex; align-items:center; gap:8px; padding:11px 12px; border:1px solid var(--line); border-radius:12px; text-decoration:none; color:var(--ink); font-size:.9rem; transition:.18s; }
.qk:hover { border-color:var(--brand); background:rgba(47,154,145,.07); color:var(--brand); }
.qk i { color:var(--brand); font-size:1rem; }
.dash-news { list-style:none; margin:0; padding:0; }
.dash-news li { border-bottom:1px dashed var(--line); }
.dash-news li:last-child { border-bottom:none; }
.dash-news a { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 2px; text-decoration:none; color:var(--ink-soft); font-size:.88rem; transition:.15s; }
.dash-news a:hover .dn-t { color:var(--brand); }
.dn-t { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dn-d { color:var(--muted); font-size:.78rem; white-space:nowrap; }
.dn-empty { color:var(--muted); padding:10px 2px; }
.toolbar .btn, .toolbar label.btn { cursor:pointer; }
.btn.danger { background:var(--accent); }
.btn.danger:hover { background:var(--accent-dark); }
/* 编辑表单 */
.edit-form { background:#fff; border:1px solid var(--line); border-radius:12px; padding:24px 26px; box-shadow: 0 1px 3px rgba(15,30,50,.04); }
.ef-row { margin-bottom:16px; }
.ef-row label { display:block; font-weight:600; margin-bottom:7px; font-size:.9rem; color:var(--ink); }
/* 文本框 / 下拉框统一美化：浅底、圆角、聚焦高亮、占位符弱化（覆盖 ef-row 与 ef-2/ef-3 内的所有输入） */
.ef-row input, .ef-row textarea, .ef-row select,
.ef-2 input, .ef-2 select, .ef-3 input, .ef-3 select {
  width:100%; padding:10px 13px; border:1px solid var(--line); border-radius:9px;
  font-size:.92rem; background:#fafbfc; color:var(--ink); transition:border-color .15s, box-shadow .15s, background .15s;
}
.ef-row input::placeholder, .ef-row textarea::placeholder,
.ef-2 input::placeholder, .ef-3 input::placeholder { color:#b9c2cc; }
.ef-row input:focus, .ef-row textarea:focus, .ef-row select:focus,
.ef-2 input:focus, .ef-2 select:focus, .ef-3 input:focus, .ef-3 select:focus {
  outline:none; border-color:var(--brand); background:#fff; box-shadow: 0 0 0 3px rgba(80,196,188,.14);
}
/* 下拉框：去原生外观，自定义右侧箭头 */
.ef-row select, .ef-2 select, .ef-3 select {
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  padding-right:34px; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%237a8794' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center;
}
.ef-2, .ef-3 { display:grid; gap:14px; margin-bottom:14px; }
.ef-2 { grid-template-columns: 1fr 1fr; } .ef-3 { grid-template-columns: repeat(3,1fr); }
.ef-actions { display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-top:8px; }
/* 关联院校 可搜索下拉 */
.ss-wrap { position:relative; max-width:420px; }
.ss-toggle { width:100%; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 12px; border:1px solid var(--line); border-radius:8px; background:#fff; cursor:pointer; font-size:.92rem; color:var(--ink); text-align:left; }
.ss-toggle:hover { border-color:#b9c2cc; }
.ss-toggle .ss-val { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ss-toggle .fa-chevron-down { color:#7a8794; font-size:.75rem; transition:transform .15s; }
.ss-wrap.open .ss-toggle .fa-chevron-down { transform:rotate(180deg); }
.ss-panel { display:none; position:absolute; z-index:50; left:0; right:0; top:calc(100% + 4px); background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 8px 24px rgba(15,30,50,.14); overflow:hidden; }
.ss-wrap.open .ss-panel { display:block; }
.ss-search { width:100%; box-sizing:border-box; border:none; border-bottom:1px solid var(--line); padding:10px 12px; font-size:.9rem; outline:none; }
.ss-list { max-height:240px; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.ss-opt { padding:9px 12px; font-size:.9rem; cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ss-opt:hover { background:#f1f6f8; }
.ss-opt.selected { background:var(--brand,#50c4bc); color:#fff; }
.ss-empty { padding:14px 12px; color:#9aa6b2; font-size:.88rem; text-align:center; }
/* 数据库备份 / 恢复卡片 */
.bk-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:18px; margin-top:6px; }
.bk-card { border:1px solid var(--line); border-radius:12px; padding:20px; background:#fff; box-shadow:0 1px 3px rgba(15,30,50,.04); display:flex; flex-direction:column; gap:10px; }
.bk-card-h { font-weight:700; font-size:1.02rem; color:var(--ink); display:flex; align-items:center; gap:8px; }
.bk-card-d { color:var(--muted); font-size:.9rem; line-height:1.55; margin:0; }
.bk-card .btn { align-self:flex-start; }
.bk-card .hint { margin-top:2px; }
.seo-box { margin:10px 0 16px; border:1px solid var(--line); border-radius:9px; padding:10px 14px; }
.seo-box summary { cursor:pointer; font-weight:600; color:var(--brand-dark); }
/* 富文本编辑器 — WordPress 风格美化 */
.wp-editor { border:1px solid var(--line); border-radius:12px; overflow:hidden; box-shadow: 0 2px 8px rgba(15,30,50,.05); }
.wp-toolbar { background:linear-gradient(180deg,#fafdfc 0%,#f3f8f7 100%); border-bottom:1px solid var(--line); position:relative; }
.wp-tb-row { display:flex; gap:2px; flex-wrap:wrap; align-items:center; padding:8px 10px; }
.wp-tb-row button { min-width:32px; height:32px; padding:0 6px; border:1px solid transparent; background:transparent; border-radius:6px; cursor:pointer; font-size:.92rem; color:var(--ink-soft); display:inline-flex; align-items:center; justify-content:center; transition:all .15s; font-weight:600; }
.wp-tb-row button:hover { background:#fff; border-color:var(--brand-light); color:var(--brand); box-shadow:0 1px 3px rgba(80,196,188,.18); }
.wp-tb-row button.active { background:var(--brand); color:#fff; border-color:var(--brand); box-shadow:0 2px 6px rgba(80,196,188,.32); }
.wp-tb-row button i { font-size:.95em; }
.wp-tb-row select { height:32px; border:1px solid var(--line); border-radius:6px; font-size:.85rem; padding:0 8px; background:#fff; cursor:pointer; transition:.15s; }
.wp-tb-row select:hover { border-color:var(--brand); }
.wp-tb-row select:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 2px rgba(80,196,188,.15); }
.wp-block-fmt { min-width:104px; }
.wp-font-size { min-width:78px; }
.wp-sep { width:1px; height:20px; background:var(--line); margin:0 4px; }
.wp-color-btn { position:relative; display:inline-flex; flex-direction:column; align-items:center; padding:2px 0 !important; min-width:36px !important; height:32px !important; }
.wp-color-btn i { font-size:.78rem; line-height:1; }
.wp-color-bar { display:block; width:22px; height:4px; border-radius:2px; margin-top:2px; border:1px solid var(--line); }
.wp-color-popup { position:absolute; top:100%; left:8px; background:#fff; border:1px solid var(--line); border-radius:10px; box-shadow:0 8px 24px rgba(15,30,50,.18); padding:14px; z-index:50; width:300px; }
.wp-cp-label { font-size:.82rem; font-weight:600; color:var(--ink-soft); margin-bottom:8px; }
.wp-cp-grid { display:grid; grid-template-columns:repeat(8,1fr); gap:5px; margin-bottom:12px; }
.wp-cp-swatch { width:26px; height:26px; border-radius:6px; cursor:pointer; border:1px solid rgba(0,0,0,.08); display:block; transition:all .15s; }
.wp-cp-swatch:hover { transform:scale(1.18); border-color:var(--brand); box-shadow:0 2px 6px rgba(0,0,0,.18); }
.wp-cp-custom { display:flex; gap:8px; align-items:center; padding-top:8px; border-top:1px solid var(--line); }
.wp-cp-custom input[type=color] { width:40px; height:32px; border:1px solid var(--line); border-radius:7px; cursor:pointer; }
.wp-cp-apply { padding:6px 14px; border:0; background:var(--brand); color:#fff; border-radius:7px; cursor:pointer; font-size:.84rem; font-weight:600; }
.wp-cp-apply:hover { background:var(--brand-dark); }
.wp-content { min-height:380px; border:0; border-radius:0; padding:22px 28px; background:#fff; overflow:auto; line-height:1.85; font-size:.95rem; }
.wp-content:focus { outline:none; box-shadow:inset 0 0 0 2px rgba(80,196,188,.2); }
.wp-content h1 { font-size:2em; margin:.67em 0; }
.wp-content h2 { font-size:1.5em; margin:.75em 0 .5em; color:var(--brand-dark); padding-bottom:.3em; border-bottom:1px solid var(--line); }
.wp-content h3 { font-size:1.17em; margin:.83em 0; color:var(--ink); }
.wp-content h4 { font-size:1em; margin:1.12em 0; font-weight:bold; }
.wp-content blockquote { border-left:4px solid var(--brand); margin:1em 0; padding:10px 18px; background:var(--brand-light); color:var(--ink-soft); border-radius:0 8px 8px 0; }
.wp-content pre { background:#f4f4f4; padding:14px; border-radius:8px; overflow:auto; font-family:ui-monospace,Menlo,monospace; border:1px solid var(--line); }
.wp-content img { max-width:100%; border-radius:6px; box-shadow:0 2px 8px rgba(0,0,0,.08); }
.wp-content table.wp-ins-table { margin:12px 0; }
.wp-content table { border-collapse:collapse; }
.wp-content td, .wp-content th { border:1px solid #ddd; padding:8px 12px; }
.wp-content a { color:var(--brand); text-decoration:underline; }
.rte-source { width:100%; min-height:380px; border:0; border-radius:0; padding:22px 28px; background:#1e1e1e; color:#ddd; font-family:ui-monospace,Menlo,monospace; font-size:.88rem; resize:vertical; }
.rte-source:focus { outline:none; }
/* 兼容旧 RTE 样式 */
.rte-toolbar { display:flex; gap:4px; flex-wrap:wrap; align-items:center; padding:8px; background:var(--bg); border:1px solid var(--line); border-bottom:0; border-radius:9px 9px 0 0; }
.rte-toolbar button { width:34px; height:32px; border:1px solid var(--line); background:#fff; border-radius:6px; cursor:pointer; font-size:.85rem; }
.rte-toolbar button:hover { background:var(--brand-light); }
.rte-sep { width:1px; height:22px; background:var(--line); margin:0 4px; }
.rte-color { display:inline-flex; align-items:center; gap:4px; font-size:.78rem; color:var(--text-2); padding:0 6px; }
.rte-color input[type=color] { width:26px; height:26px; border:1px solid var(--line); border-radius:6px; background:#fff; padding:2px; cursor:pointer; }
.cover-row { display:flex; align-items:center; gap:10px; }
.cover-row input { flex:1; }
.tag-checks { display:flex; gap:12px; flex-wrap:wrap; }
.tag-checks label { display:flex; align-items:center; gap:6px; cursor:pointer; font-size:.92rem; }
.cover-prev { width:40px; height:40px; border:1px solid var(--line); border-radius:9px; display:flex; align-items:center; justify-content:center; font-size:1.2rem; color:var(--brand-dark); background:var(--brand-light); }
.rte { min-height:280px; border:1px solid var(--line); border-radius:0 0 9px 9px; padding:16px; background:#fff; overflow:auto; }
.rte:focus { outline:2px solid var(--brand-light); }
/* 数据表操作 */
.ops a { color:var(--brand); font-weight:600; margin-right:10px; }
.ops .del, .ops .save, .ops .edit { background:var(--bg); border:1px solid var(--line); border-radius:7px; padding:4px 10px; cursor:pointer; font-size:.82rem; color:var(--ink-soft); }
.ops .del:hover { background:#ffe9e9; color:var(--accent); }
.ops .save:hover, .ops .edit:hover { background:var(--brand-light); color:var(--brand); }
.swatch { display:inline-block; width:16px; height:16px; border-radius:4px; vertical-align:middle; margin-right:6px; }
.qa-edit { width:100%; padding:6px 8px; border:1px solid var(--line); border-radius:7px; resize:vertical; }
.ok { color:var(--ok); font-weight:700; } .wait { color:var(--accent); font-weight:700; }

/* ========== 响应式补充 ========== */
@media (max-width: 1000px) {
  .home-hero { grid-template-columns: minmax(0,1fr); align-items:start; }
  .qe-grid { grid-template-columns: repeat(4, 1fr); grid-auto-rows:auto; }
  .home-cols { grid-template-columns: minmax(0,1fr); }
  .col-side { position: static; flex-direction: row; flex-wrap:wrap; overflow: hidden; }
  .col-side > * { flex:1; min-width:280px; overflow: hidden; }
  .subcard-grid { grid-template-columns: repeat(3, 1fr); }
  .dash-cards { grid-template-columns: repeat(2,1fr); }
  .dash-cols { grid-template-columns: 1fr; }
  .dash-actions { grid-template-columns: repeat(2,1fr); }
  .card-grid { grid-template-columns: repeat(2, 1fr); }
  .filter-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 680px) {
  /* 防止手机端横向溢出（clip 不破坏 sticky） */
  html, body { overflow-x: clip; }
  /* 手机版不显示顶部条 */
  .topbar { display: none; }
  .container { padding: 0 14px; }
  .carousel .slides { aspect-ratio: 16 / 7; min-height: 200px; }
  .slide-inner { padding:13px 15px; }
  .slide-inner h2 { font-size:1.12rem; }
  .card-grid { grid-template-columns: 1fr; }
  .subcard-grid { grid-template-columns: 1fr 1fr; }
  .cd-info-grid { grid-template-columns: 1fr; }
  /* 院校详情首卡：手机版竖线收起、左右栏改为上下堆叠 */
  .cd-body { flex-direction:column; gap:14px; }
  .cd-divider { display:none; }
  .cd-top { gap:14px; }
  .ef-2, .ef-3 { grid-template-columns: 1fr; }
  .calc-panel .calc-row { grid-template-columns: 1fr; }
  .dash-cards { grid-template-columns: 1fr 1fr; }
  /* 手机版：快捷操作 / 最新文章 两张卡片整行铺满，内部自适应收缩 */
  .dash-cols { grid-template-columns: 1fr; }
  .dash-quick, .dash-recent { min-width: 0; padding: 14px 14px; }
  .dash-news a { gap: 10px; }
  .dash-news .dn-t { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .dash-news .dn-d { flex: none; }
  .dash-actions { grid-template-columns: 1fr 1fr; gap: 8px; }
  .filter-grid { grid-template-columns: 1fr; }
  .qe-grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows:auto; }
  .ch-layout { grid-template-columns: 1fr; }
  /* 板块列表/卡片自适应：标题单行省略（不换行），min-width:0 让 flex 子项可收缩 */
  .art-list .al-item { overflow: hidden; }
  .art-list .al-title { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; word-break:normal; }
  /* 手机端隐藏分类标签，标题可多显示字 */
  .art-list .al-cat { display:none; }
  .art-list .al-date { flex-shrink: 0; font-size:.66rem; }
  /* 手机端日期去掉年份，子版块与日期字号再缩小 */
  .art-list .al-date-full { display:none; }
  .art-list .al-date-short { display:inline; }
  .qe { min-width: 0; }
  .col-side > * { min-width: 0; overflow-x: hidden; }
  .blk { overflow: hidden; border-radius: var(--radius); }
  .col-card { min-width: 0; overflow: hidden; }
  .col-info { min-width: 0; }
  .col-info h4 { word-break: break-word; }
  /* 弹窗在手机端：overlay 自身滚动，页码自然可见 */
  .rmodal.open { display:block; overflow-y:auto; overflow-x:hidden; }
  .rmodal { padding: 8px; }
  .rmodal-box { width:calc(100% - 16px) !important; max-width:100% !important; max-height:none !important; display:block !important; margin:0 auto; }
  .modal-body { overflow:visible !important; display:block !important; }
}

/* ---------- 管理员弹窗 ---------- */
.modal-overlay {
  position: fixed; inset: 0; background: rgba(15,30,50,.45);
  display: grid; place-items: center; z-index: 200; padding: 16px;
}
.modal {
  background: #fff; width: min(640px, 100%); max-height: 88vh; overflow: auto;
  border-radius: var(--radius); box-shadow: var(--shadow-lg);
}
.modal-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 16px 20px; border-bottom: 1px solid var(--line); position: sticky; top: 0; background: #fff;
}
.modal-head h3 { font-size: 1.1rem; color: var(--brand-dark); }
.modal-head button { border: 0; background: var(--bg); width: 32px; height: 32px; border-radius: 8px; cursor: pointer; font-size: 1rem; color: var(--ink-soft); }
.modal-head button:hover { background: var(--brand-light); color: var(--brand); }
.modal-body { padding: 20px; }
.modal-foot { padding: 14px 20px; border-top: 1px solid var(--line); display: flex; justify-content: flex-end; gap: 10px; position: sticky; bottom: 0; background: #fff; }
.modal .field input, .modal .field textarea, .modal .field select { width: 100%; }
.modal .field textarea { resize: vertical; }

/* ---------- 分类管理弹窗 ---------- */
.modal-box {
  background: #fff; width: min(680px, 100%); max-height: 88vh;
  border-radius: var(--radius); box-shadow: var(--shadow-lg);
  display: flex; flex-direction: column; overflow: hidden;
}
/* 分类弹窗：覆盖 overlay 的 grid 居中（超高时两端不可达且无法滚动），
   改用 flex + overflow + margin:auto —— 内容少时居中，内容多时顶部对齐且整层可滚 */
/* 分类管理独立页面（#/admin/categories） */
.cat-page { max-width: 880px; margin: 0 auto; }
.cp-toolbar { margin-bottom: 6px; }
.cp-foot { margin-top: 18px; display: flex; justify-content: space-between; align-items: center; gap: 12px; border-top: 1px solid var(--line); padding-top: 14px; }
.cp-foot-btns { display: flex; gap: 10px; }
.cm-add-ch { display: flex; gap: 8px; margin-bottom: 10px; }
.cm-add-ch input { flex: 1; }
.cm-hint { font-size: .82rem; color: var(--muted); margin-bottom: 14px; line-height: 1.6; }
.cm-channel {
  border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px;
  margin-bottom: 10px; background: #fafbfc;
}
.cm-ch-head { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.cm-ch-name { flex: 1; font-weight: 600; font-size: .95rem; }
.cm-cats { padding-left: 4px; }
.cm-cat-row { display: flex; gap: 6px; align-items: center; margin-bottom: 6px; }
.cm-cat-row input { flex: 1; }
.cm-cat-add { display: flex; gap: 6px; align-items: center; margin-top: 6px; }
.cm-cat-add input { flex: 1; font-size: .85rem; }
.cm-cat-add .btn { white-space: nowrap; }
.cm-ch-del, .cm-cat-del { flex: 0 0 auto; padding: 5px 8px !important; }

/* ---------- 响应式 ---------- */
@media (max-width: 920px) {
  .hero .quick { grid-template-columns: repeat(3, 1fr); }
  .grid.cols-4, .grid.cols-3 { grid-template-columns: repeat(2, 1fr); }
  .stats { grid-template-columns: repeat(2,1fr); }
  .calc { grid-template-columns: 1fr; }
  .footer .cols { grid-template-columns: 1fr 1fr; }
  .admin-layout { flex-direction: column; }
  .admin-side { position: fixed; left:0; top:0; bottom:0; width:232px; transform: translateX(-100%); transition: transform .2s ease; z-index: 120; }
  .admin-side.open { transform: none; width:232px; flex:0 0 232px; }
  .as-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.35); z-index:115; }
  .as-overlay.show { display:block; }
  .as-toggle { display: inline-flex; align-items:center; justify-content:center; }
  .am-home .am-home-full { display:none; }
  .am-home .am-home-short { display:inline; }
}
@media (min-width: 921px) {
  .admin-side { transform: none !important; }
}
@media (max-width: 680px) {
  .navbar .container { height: auto; padding-top: 10px; padding-bottom: 10px; flex-wrap: wrap; gap:12px; }
  /* 手机版 header：默认纯白，滚动后毛玻璃 */
  .site-header {
    background:#fff;
    -webkit-backdrop-filter:none; backdrop-filter:none;
  }
  body.scrolled .site-header {
    background:rgba(255,255,255,.55) !important;
    -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px);
  }
  .nav-search-toggle { display:block; order:3; margin-left:auto; background: var(--brand); color:#fff; border:0; width:34px; height:34px; border-radius:6px; font-size:.88rem; cursor:pointer; }
  .nav-toggle { display: block; order:4; margin-left:0; }
  /* 手机版搜索框默认隐藏，点击右上角图标展开 */
  .nav-search-wrap { display:none; order:5; flex-basis:100%; max-width:none; margin:0 0 4px; }
  .nav-search-wrap.open { display:flex; animation: searchPop .28s ease both; }
  .nav-suggest { left:0; right:0; width:auto; top:calc(100% + 4px); }
  /* 手机版：导航面板在 header 内自然展开（与搜索框 .nav-search-wrap.open 完全一致） */
  .nav-overlay {
    position:fixed; inset:0;
    background:rgba(15,30,40,.35);
    z-index:45; display:none;
  }
  .nav-overlay.open { display:block; }
  .nav-links {
    display:none; flex-basis:100%; order:6;
    flex-direction:column; gap:0;
    background:#fff; border-top:1px solid var(--line);
    padding:8px 0 12px; margin:0;
    align-items:stretch;
  }
  body.scrolled .nav-links {
    background:rgba(255,255,255,.55) !important;
    -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px);
  }
  .nav-links.open { display:flex; animation: searchPop .28s ease both; }
  /* 一级导航：白色卡片内每行一项（与 .nav-suggest / .ns-item 视觉一致） */
  .nav-links > a, .nav-links .has-drop > a {
    display:flex; align-items:center; width:100%; box-sizing:border-box;
    justify-content:flex-start; padding:14px 18px;
    font-size:1rem; font-weight:600;
    color:var(--ink-soft); border-bottom:1px solid rgba(0,0,0,.04); border-radius:0;
  }
  .nav-links > a:hover, .nav-links .has-drop > a:hover,
  .nav-links > a.active, .nav-links .has-drop > a.active {
    background:var(--brand-light); color:var(--brand);
  }
  .nav-links > a.active .nav-ico, .nav-links .has-drop > a.active .nav-ico { color:var(--brand); }
  /* 手机版：二级默认收缩（手风琴），点击一级导航行展开/收起 */
  .nav-links .has-drop .dropdown {
    position:static !important; display:flex !important; flex-direction:column;
    box-shadow:none; border:0; border-radius:0;
    background:var(--bg);
    padding:0 0 6px 18px; margin:0; min-width:0;
    max-height:0 !important; opacity:0 !important; overflow:hidden !important;
    transition:max-height .28s ease, opacity .2s ease !important;
  }
  .nav-links .has-drop.open .dropdown { max-height:600px !important; opacity:1 !important; margin:2px 0 8px !important; }
  .nav-links .dropdown a {
    padding:11px 16px; font-size:.92rem; font-weight:500;
    color:var(--ink-soft); border-bottom:1px solid rgba(0,0,0,.04);
  }
  .nav-links .dropdown a:hover,
  .nav-links .dropdown a.active { background:var(--brand-light); color:var(--brand); }
  /* 倒三角形 caret：默认朝下、靠右对齐；展开后旋转 180° 朝上；加点击区便于手机点击 */
  .nav-links .has-drop > a .fa-caret-down {
    display:inline-block !important; margin-left:auto;
    font-size:.82rem; opacity:.6; color:var(--ink-soft);
    transition:transform .25s; padding:4px 8px; cursor:pointer;
  }
  .nav-links .has-drop.open > a .fa-caret-down { transform:rotate(180deg); color:var(--brand); }
  .hero h1 { font-size: 1.9rem; }
  .hero .quick { grid-template-columns: repeat(2, 1fr); }
  .grid.cols-3, .grid.cols-2, .grid.cols-4 { grid-template-columns: 1fr; }
  .article-item { grid-template-columns: 1fr; }
  .article-item .thumb { height: 90px; }
  .prose { padding: 22px 18px; }
  .policy-card { grid-template-columns: 1fr; }
  .footer .cols { grid-template-columns: 1fr; gap: 18px 0; }
  /* 手机版底部精简：隐藏"关于"整栏（其正文/免责声明本就在移动端隐藏），仅留 快速导航/核心库/官方渠道/关注我们 */
  .footer .cols > div:first-child { display: none; }
  .footer .disclaimer { display: none; }
  .footer h4 { margin-bottom: 8px; }
  .footer a { margin-bottom: 5px; }
  /* 手机版：底部链接一行显示多个，以 | 分隔（关注区的社交胶囊除外） */
  .footer .cols > div:not(:first-child):not(.ft-follow) a { display:inline-block; margin:0 0 6px 0; }
  .footer .cols > div:not(:first-child):not(.ft-follow) a:not(:last-child)::after { content:' |'; color: rgba(227,246,243,.5); margin: 0 3px; }
  .footer .copy { font-size: .76rem; line-height: 1.5; }
}

/* ============ Font Awesome 图标 ============ */
.side-t i, .as-brand i { color: var(--brand); }
.side-t i { margin-right: 6px; }
.as-brand i { margin-right: 6px; }
.dc-ico i, .art-cover i { color: var(--brand); }
.dc-ico i { font-size: 1.8rem; }
.art-cover i { font-size: 2.4rem; }
.nav-toggle i { color: #fff; }
/* 筛选栏搜索图标前缀 */
.filter-bar .in-ico { display:inline-flex; align-items:center; color:var(--muted); padding:0 12px; border:1px solid var(--line); border-right:0; border-radius:9px 0 0 9px; background:#fff; }
.filter-bar .in-ico + input { border-radius:0 9px 9px 0; }

/* ============ 各版块专页：列表 + 右侧快捷/热门 ============ */
.ch-layout:not(.ch-layout--detail) { display:grid; grid-template-columns: minmax(0,1fr) 300px; gap:22px; align-items:start; margin-top:8px; }
.ch-main { min-width:0; }
.ch-side { position:sticky; top:84px; display:flex; flex-direction:column; gap:16px; }
.side-quick { display:grid; grid-template-columns: 1fr 1fr; gap:10px; }
.sq { display:flex; align-items:center; gap:8px; padding:10px 12px; background:var(--bg); border:1px solid var(--line); border-radius:9px; font-size:.86rem; font-weight:600; color:var(--ink-soft); transition:.15s; }
.sq:hover { border-color:var(--brand); color:var(--brand); background:var(--brand-light); }
.sq i { color:var(--brand); font-size:.95rem; }
@media (max-width: 860px){ .ch-layout { grid-template-columns:minmax(0,1fr); } .ch-side { position:static; } }
/* 手机版兜底：列表页（/.ch-layout）单列堆叠 + 卡片单列 + 侧栏取消吸顶
   用 !important 防止被 .ch-layout:not(.ch-layout--detail)（桌面 1fr+300px 双列）等同权重规则覆盖 */
@media (max-width: 860px){
  .ch-layout:not(.ch-layout--detail){ grid-template-columns: 1fr !important; gap:14px; margin-top:8px; }
  .ch-side{ position: static !important; top:auto; }
  .col-card-grid{ grid-template-columns: 1fr !important; }
  .side-quick{ grid-template-columns: 1fr 1fr; } /* 快捷链接保持 2 列紧凑 */
}

/* ============ 顶部加载进度条（类今日头条） ============ */
#topProgress { position:fixed; top:0; left:0; height:3px; width:0; z-index:2000; background:linear-gradient(90deg, var(--brand), var(--accent)); box-shadow:0 0 8px rgba(80,196,188,.6); opacity:0; transition: width .3s ease, opacity .3s ease; }
#topProgress.active { opacity:1; width:78%; }
#topProgress.done { width:100%; opacity:0; transition: width .15s ease, opacity .4s ease .2s; }

/* ============ 考试日程后台标签 ============ */
.cal-tag { display:inline-block; padding:2px 9px; border-radius:20px; color:#fff; font-size:.78rem; font-weight:700; }
.cal-signup { background:var(--accent); }
.cal-exam { background:var(--brand); }
.cal-score { background:var(--gold); }
.cal-apply { background:var(--c-music); }

/* ============ 数据查询：选项卡 ============ */
.tabs { display:flex; gap:10px; margin: 6px 0 18px; border-bottom:1px solid var(--line); }
.tab { background:transparent; border:0; padding:12px 18px; cursor:pointer; font-size:1.02rem; font-weight:700; color:var(--muted); border-bottom:3px solid transparent; display:inline-flex; align-items:center; gap:8px; }
.tab:hover { color:var(--brand); }
.tab.active { color:var(--brand-dark); border-bottom-color:var(--brand); }
.tab-pane { display:none; }
.tab-pane.active { display:block; }

/* ============ 所在地多选 ============ */
.ms { position:relative; }
.ms-toggle { width:100%; text-align:left; padding:10px 13px; border:1px solid var(--line); border-radius:9px; background:#fff; cursor:pointer; display:flex; justify-content:space-between; align-items:center; color:var(--ink-soft); }
.ms-toggle:hover { border-color:var(--brand); }
.ms-panel { display:none; position:absolute; z-index:30; top:calc(100% + 4px); left:0; right:0; max-height:240px; overflow:auto; background:#fff; border:1px solid var(--line); border-radius:9px; box-shadow:var(--shadow-lg); padding:8px; }
.ms-panel.open { display:block; }
.ms-opt { display:flex; align-items:center; gap:8px; padding:5px 8px; border-radius:6px; cursor:pointer; font-size:.9rem; }
.ms-opt:hover { background:var(--brand-light); }

/* ============ 结果弹窗（与后台 .modal 隔离，避免类冲突） ============ */
/* 居中定位：无论桌面/手机，弹窗始终在可视区中央；内部 flex 滚动链自适应高度 */
.rmodal { position:fixed; inset:0; z-index:9999; display:none; padding:16px; overflow:auto; }
.rmodal.open { display:flex; animation: modalFade .2s ease; }
.rmodal-mask { position:absolute; inset:0; background:rgba(15,23,42,.82); }
.rmodal-box { position:relative; width:calc(100% - 32px); max-width:1000px; max-height:calc(100vh - 32px); margin:auto; background:#fff; border-radius:var(--radius); box-shadow:var(--shadow-lg); display:flex; flex-direction:column; overflow:hidden; }
.rmodal.open .rmodal-box { animation: modalPop .26s cubic-bezier(.2,.8,.3,1); }
.modal-head { display:flex; justify-content:space-between; align-items:center; padding:14px 18px; border-bottom:1px solid var(--line); background:var(--brand-light); flex:0 0 auto; }
.modal-head span { font-weight:700; color:var(--brand-dark); display:flex; align-items:center; gap:8px; }
.modal-close { background:transparent; border:0; font-size:1.2rem; cursor:pointer; color:var(--ink-soft); width:34px; height:34px; border-radius:8px; }
.modal-close:hover { background:rgba(0,0,0,.06); color:var(--accent-dark); }
.modal-body { padding:16px 18px; overflow:hidden; flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.modal-body .count { flex:0 0 auto; margin-bottom:10px; color:var(--muted); font-size:.9rem; }
.modal-body .table-wrap {
  flex:1 1 auto; min-height:0;
  border:1px solid var(--line); border-radius:9px;
  overflow-x:auto; overflow-y:auto; -webkit-overflow-scrolling:touch;
}
/* 结果弹窗内表格限制最大高度使分页可见 */
.modal-body .table-wrap { max-height:calc(100vh - 240px); }
.modal-body .pager { flex:0 0 auto; }
.modal-body .data-table { table-layout:auto; }
.modal-body .data-table td, .modal-body .data-table th { white-space:nowrap; vertical-align:top; }
.modal-body .data-table td.wrap { white-space:normal; word-break:break-word; max-width:200px; }

/* 加载动画（spinner） */
.rmodal-loading { flex:1 1 auto; min-height:200px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; color:var(--muted); }
.rmodal-spinner { width:42px; height:42px; border:4px solid var(--brand-light); border-top-color:var(--brand); border-radius:50%; animation: spin .9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.rmodal-loading-text { font-size:.9rem; color:var(--muted); }
/* 录取数据编辑弹窗：可上下滑动的弹窗体 */
.edit-enroll-box { max-width:720px !important; }
.edit-enroll-box .modal-body { padding:0 !important; display:flex; flex-direction:column; flex:1 1 auto; min-height:0; }
.ee-scroll { flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; padding:18px 22px; -webkit-overflow-scrolling:touch; }
.edit-enroll-grid { display:grid; grid-template-columns: repeat(2,1fr); gap:12px 18px; }
.ee-foot { flex:0 0 auto; padding:14px 22px; border-top:1px solid var(--line); display:flex; gap:10px; align-items:center; background:var(--bg); }
@media (max-width:768px) {
  .edit-enroll-grid { grid-template-columns: 1fr; }
}
.pager { display:flex; gap:6px; flex-wrap:wrap; justify-content:center; margin-top:14px; }
.pg { padding:6px 11px; border:1px solid var(--line); background:#fff; border-radius:7px; cursor:pointer; font-size:.85rem; }
.pg:hover:not(:disabled) { border-color:var(--brand); color:var(--brand); }
.pg.on { background:var(--brand); color:#fff; border-color:var(--brand); }
.pg:disabled { opacity:.45; cursor:not-allowed; }
.pg-ell { padding:6px 4px; color:var(--muted); }
.pg-info { margin-right:auto; color:var(--muted); font-size:.85rem; align-self:center; }

/* 后台文章列表：标题搜索框 */
.af-search { display:inline-flex; gap:6px; align-items:center; }
.af-search input { width:200px; padding:7px 10px; border:1px solid var(--line); border-radius:7px; font-size:.9rem; }
.af-search input:focus { outline:none; border-color:var(--brand); }

/* ============ 上传弹窗（图片 / 附件） ============ */
.up-drop { border:2px dashed var(--line); border-radius:12px; padding:28px 18px; text-align:center; cursor:pointer; color:var(--muted); transition:.15s; background:var(--bg); }
.up-drop:hover, .up-drop.up-drag { border-color:var(--brand); background:var(--brand-light); color:var(--brand-dark); }
.up-drop > i { font-size:2.2rem; color:var(--brand); display:block; margin-bottom:8px; }
.up-tip { font-weight:600; color:var(--ink-soft); margin:0; }
.up-hint { font-size:.8rem; margin:6px 0 0; }
.up-preview { margin-top:14px; }
.up-preview .up-img { max-width:100%; max-height:220px; border-radius:8px; border:1px solid var(--line); }
.up-preview .up-file { display:inline-flex; align-items:center; gap:8px; padding:10px 14px; background:#fff; border:1px solid var(--line); border-radius:8px; font-weight:600; color:var(--ink-soft); }
.up-progress { height:8px; background:var(--line); border-radius:6px; overflow:hidden; margin-top:14px; }
.up-bar { height:100%; width:0; background:linear-gradient(90deg, var(--brand), var(--accent)); transition:width .25s ease; }
.up-msg { margin-top:10px; font-size:.88rem; color:var(--muted); min-height:1.2em; }
.up-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:16px; }
/* 正文中插入的附件链接 */
.wp-attach { display:inline-flex; align-items:center; gap:6px; padding:6px 12px; background:var(--brand-light); border:1px solid var(--brand); border-radius:8px; color:var(--brand-dark); font-weight:600; text-decoration:none; margin:2px 0; }
.wp-attach:hover { background:var(--brand); color:#fff; }
@keyframes modalFade { from { opacity:0; } to { opacity:1; } }
@keyframes modalPop { from { opacity:0; transform:translateY(18px) scale(.97); } to { opacity:1; transform:none; } }
@keyframes searchPop { from { opacity:0; transform:translateY(-8px) scale(.96); } to { opacity:1; transform:translateY(0) scale(1); } }

/* ============ 管理后台模式（隐藏全局导航，全屏后台） ============ */
body.admin-mode .topbar,
body.admin-mode .navbar,
body.admin-mode .nav-overlay { display:none; }
body.admin-mode #app { min-height:100vh; margin:0; padding:0; }
body.admin-mode .page-skeleton { display:none !important; }
.admin-loading { position:fixed; inset:0; z-index:9998; background:rgba(255,255,255,.92); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; }
.admin-loading-dot { width:48px; height:48px; border:4px solid var(--brand-light); border-top-color:var(--brand); border-radius:50%; animation: spin .9s linear infinite; }
.admin-loading-text { font-size:.9rem; color:var(--muted); }

/* ============ 密码修改区 ============ */
.pw-change { margin-top:20px; padding-top:20px; border-top:2px solid var(--line); }
.pw-change h4 { font-weight:700; color:var(--ink); margin:0 0 12px; }
.pw-change .pw-field { display:flex; gap:10px; align-items:center; margin-bottom:10px; flex-wrap:wrap; }
.pw-change .pw-field label { min-width:70px; font-size:.9rem; color:var(--muted); }
.pw-change .pw-field input { flex:1; min-width:140px; }
.pw-change .pw-msg { margin-top:6px; font-size:.85rem; color:var(--muted); }

/* ============ 网站设置：一行选项卡 ============ */
.set-tabs { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:18px; border-bottom:2px solid var(--line); }
.set-tab {
  appearance:none; border:none; background:transparent; cursor:pointer;
  padding:10px 16px; font-size:.92rem; font-weight:600; color:var(--muted);
  border-bottom:3px solid transparent; margin-bottom:-2px; transition:.18s;
  display:inline-flex; align-items:center; gap:6px; white-space:nowrap;
}
.set-tab:hover { color:var(--brand); }
.set-tab.active { color:var(--brand); border-bottom-color:var(--brand); }
.set-panel { display:none; }
.set-panel.active { display:block; animation: fadeIn .22s ease; }

/* ============ 开关（暂停服务） ============ */
.switch-row { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.switch-row label:first-child { margin-bottom:0; }
.switch { position:relative; display:inline-block; width:52px; height:28px; flex:0 0 auto; }
.switch input { opacity:0; width:0; height:0; }
.switch .slider { position:absolute; inset:0; cursor:pointer; background:#cbd5e1; border-radius:999px; transition:.22s; }
.switch .slider::before { content:''; position:absolute; height:22px; width:22px; left:3px; top:3px; background:#fff; border-radius:50%; transition:.22s; box-shadow:0 1px 3px rgba(0,0,0,.25); }
.switch input:checked + .slider { background:var(--danger, #e23b3b); }
.switch input:checked + .slider::before { transform:translateX(24px); }
.switch-tip { font-size:.84rem; color:var(--muted); }

/* ============ 网站暂停服务：前台遮罩 ============ */
.site-pause { display:none; position:fixed; inset:0; z-index:99999; background:rgba(15,23,42,.94); }
.site-pause.show { display:flex; align-items:center; justify-content:center; }
.site-pause .sp-inner { text-align:center; color:#fff; padding:30px; max-width:560px; }
.site-pause .sp-ico { font-size:46px; color:#fbbf24; margin-bottom:14px; }
.site-pause .sp-title { font-size:1.7rem; margin:0 0 14px; letter-spacing:2px; }
.site-pause .sp-msg { font-size:1.02rem; line-height:1.9; color:#e2e8f0; white-space:pre-wrap; margin:0 0 26px; }
.site-pause .sp-login {
  display:inline-flex; align-items:center; gap:8px; padding:10px 22px; border-radius:10px;
  background:var(--brand, #2d6cdf); color:#fff; text-decoration:none; font-weight:600; transition:.18s;
}
.site-pause .sp-login:hover { background:var(--brand-dark, #1e4fa3); }

/* ── 下拉选择器（dropdown）── */
.ddown { position:relative; }
.ddown-trigger {
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  width:100%; padding:8px 10px 8px 13px;
  border:1px solid var(--line); border-radius:9px;
  background:#fff; cursor:pointer;
  font-size:.75rem; color:var(--ink-soft);
  transition:border-color .18s;
  height:45px;
  box-sizing:border-box;
}
.ddown-trigger:hover { border-color:var(--brand); }
.ddown-trigger.ph { color:var(--muted); border-style:dashed; }
.ddown-trigger .dd-arrow {
  display:flex; align-items:center; justify-content:center;
  width:28px; height:28px; min-width:28px;
  background:var(--brand); color:#fff;
  border-radius:7px; flex-shrink:0;
  transition:transform .25s ease;
}
.ddown-trigger .dd-arrow i { font-size:.65rem; }
.ddown.open > .ddown-trigger { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-light); }
.ddown.open > .ddown-trigger .dd-arrow i { transform:rotate(180deg); }
.ddown-menu {
  position:absolute; top:calc(100% + 5px); left:0; right:0;
  background:#fff; border:1px solid var(--line);
  border-radius:10px; box-shadow:var(--shadow-lg);
  max-height:300px; overflow-y:auto;
  z-index:9999; display:none;
  -webkit-overflow-scrolling:touch;
}
/* 多选下拉：选项区域可滑动，底部按钮固定 */
.ddown-menu .ddown-opts { overflow-y:auto; max-height:220px; }
.ddown-menu .ddown-foot {
  display:flex; gap:8px; padding:8px 10px;
  border-top:1px solid var(--line);
  position:sticky; bottom:0; background:#fff;
  z-index:2;
}
.ddown-menu .ddown-foot .btn { font-size:.78rem; padding:6px 14px; border-radius:7px; }
.ddown.open > .ddown-menu { display:block; animation: ddSlide .15s ease; }
@keyframes ddSlide { from{opacity:0; transform:translateY(-8px)} to{opacity:1; transform:translateY(0)} }
.ddown-opt {
  display:block; width:100%; padding:11px 16px;
  font-size:.92rem; color:var(--ink);
  text-align:left; border:none; background:none;
  cursor:pointer; transition:background .12s; white-space:nowrap;
}
.ddown-opt:hover { background:var(--brand-light); }
.ddown-opt.on { background:var(--brand-light); color:var(--brand-dark); font-weight:600; }
/* 多选 checkbox 样式（所在地） */
.ddown-opt .ddown-chk {
  display:inline-block; width:18px; height:18px;
  border:2px solid var(--line); border-radius:4px;
  margin-right:10px; flex-shrink:0; vertical-align:middle;
  position:relative; transition:all .15s;
}
.ddown-opt.on .ddown-chk { background:var(--brand); border-color:var(--brand); }
.ddown-opt.on .ddown-chk::after {
  content:''; display:block; position:absolute;
  top:2px; left:3px; width:8px; height:5px;
  border-left:2px solid #fff; border-bottom:2px solid #fff;
  transform:rotate(-45deg);
}
/* 多选底部操作栏 */
.ddown-foot { display:flex; gap:8px; padding:10px 14px; border-top:1px solid var(--line); }
.ddown-foot .btn { flex:1; padding:9px 0; border-radius:8px; font-size:.88rem; }

/* ── 手机端：下拉框一行1个，文本框一行2个 ── */
@media(max-width:640px){
  .ddown-menu { left:-4px; right:-4px; max-height:50vh; border-radius:10px; }
  .ddown-trigger .dd-arrow { width:32px; height:32px; min-width:32px; border-radius:9px; }
  /* filter-grid 改为自适应：ddown 全宽，fi 半宽 */
  .filter-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .filter-grid > .ddown {
    grid-column: 1 / -1; /* 下拉框横跨两列 = 全宽 */
  }
  /* fi 保持默认 1 列宽 = 半行 */
}

/* ── 筛选输入框（无 label，与下拉等高）── */
.fi { display:flex; align-items:center; }
.fi input {
  width:100%; height:45px; padding:0 13px;
  border:1px solid var(--line); border-radius:9px;
  font-size:.75rem; color:var(--ink);
  transition:border-color .18s; box-sizing:border-box;
}
.fi input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-light); }
.fi input::placeholder { color:var(--muted); }
.ddown-trigger { height:45px; } /* 与 .fi input 等高 */

/* ── 动画 Toast 提醒（垂直居中）── */
.toast-wrap {
  position:fixed; top:50%; left:50%; transform:translate(-50%, -50%);
  z-index:10000; pointer-events:none; opacity:0;
  transition:opacity .3s ease, transform .3s ease;
}
.toast-wrap.show { opacity:1; transform:translate(-50%, -50%); }
.toast-box {
  display:inline-flex; align-items:center; gap:8px;
  padding:10px 20px; background:#fff;
  border:1px solid var(--brand); border-radius:10px;
  box-shadow:0 6px 24px rgba(80,196,188,.25);
  font-size:.85rem; font-weight:600; color:var(--brand);
  white-space:nowrap;
}
.toast-box i { font-size:1rem; color:#e74c3c; }

/* ── data 页骨架屏 ── */
.skel-data-tabs { display:flex; justify-content:center; gap:40px; margin:24px auto 18px; max-width:360px; }
.skel-data-tabs .skel-tab { width:120px; height:36px; border-radius:8px; }
.skel-filter-grid {
  display:grid; grid-template-columns: repeat(4,1fr); gap:14px;
  margin-bottom:16px;
}
.skel-filter-grid::before {
  content:''; display:block;
  grid-column: 1 / -1; height:54px; border-radius:9px;
}
.skel-filter-grid::after {
  content:''; display:block;
  grid-column: 1 / -1; height:54px; border-radius:9px;
}

/* 底部弹出选择器保留（仅多选所在地备用） */
.bsheet { position:fixed; inset:0; z-index:9999; display:none; }
.bsheet.open { display:flex; animation: bsFade .2s ease; }
@keyframes bsFade { from{opacity:0} to{opacity:1} }
.bsheet-mask { position:absolute; inset:0; background:rgba(15,23,42,.5); }
.bsheet-panel { position:fixed; left:0; right:0; bottom:0; max-height:70vh; background:#fff; border-radius:16px 16px 0 0; box-shadow:0 -8px 32px rgba(0,0,0,.15); display:flex; flex-direction:column; transform:translateY(100%); transition:transform .3s cubic-bezier(.2,.8,.3,1); z-index:9999; }
.bsheet.open .bsheet-panel { transform:translateY(0); }
.bsheet-head { display:flex; align-items:center; justify-content:center; padding:14px 18px; border-bottom:1px solid var(--line); flex:0 0 auto; position:relative; }
.bsheet-head span { font-weight:700; font-size:.95rem; color:var(--ink); }
.bsheet-head .bsheet-close { position:absolute; right:16px; top:50%; transform:translateY(-50%); background:none; border:none; font-size:1.2rem; color:var(--muted); cursor:pointer; padding:4px 8px; }
.bsheet-body { overflow:auto; flex:1 1 auto; padding:6px 0; -webkit-overflow-scrolling:touch; }
.bsheet-opt { display:flex; align-items:center; gap:12px; padding:13px 20px; cursor:pointer; font-size:.92rem; color:var(--ink); transition:background .15s; border:none; background:none; width:100%; text-align:left; }
.bsheet-opt:hover { background:var(--brand-light); }
.bsheet-opt .bs-check { width:20px; height:20px; border:2px solid var(--line); border-radius:5px; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:all .15s; }
.bsheet-opt.on .bs-check { background:var(--brand); border-color:var(--brand); }
.bsheet-opt.on .bs-check::after { content:''; display:block; width:10px; height:6px; border-left:2px solid #fff; border-bottom:2px solid #fff; transform:rotate(-45deg) translate(1px,-1px); }
.bsheet-foot { display:flex; gap:12px; padding:12px 18px; border-top:1px solid var(--line); flex:0 0 auto; }
.bsheet-foot .btn { flex:1; padding:11px 0; border-radius:10px; font-size:.95rem; }

/* 查询/计算按钮居中（等高）*/
.query-bar { display:flex; align-items:stretch; justify-content:center; gap:10px; margin-top:8px; min-height:36px; }
.query-bar .btn {
  font-size:.8rem; padding:8px 18px; border-radius:8px;
  height:36px; display:inline-flex; align-items:center; justify-content:center;
  line-height:1; box-sizing:border-box;
}
.query-bar .btn i { margin-right:5px; }

/* 结果弹窗：更宽 + 高度自适应内容 + 手机居中 */
.rmodal-box { max-width:1300px !important; width:calc(100% - 16px) !important; margin:20px auto; max-height:none !important; display:block !important; }
.modal-body { padding:4px 7px !important; }
.modal-body .data-table { font-size:.75rem; }
.modal-body .data-table th, .modal-body .data-table td { padding:7px 9px; line-height:1.5; }

/* 让表格无下边距，紧贴分页 */
.modal-body .table-wrap { margin-bottom:4px; }

/* 计算器加载动画 */
.calc-loading { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; padding:30px 0; color:var(--muted); }
.calc-loading .calc-spin { width:36px; height:36px; border:3px solid var(--brand-light); border-top-color:var(--brand); border-radius:50%; animation:spin .8s linear infinite; }

/* ── 综合分信息卡（计算结果展示）── */
.score-card { margin:14px auto 0; max-width:500px; }
.score-card-inner {
  border:2px solid var(--brand); border-radius:10px;
  padding:16px 16px; text-align:center;
  background:linear-gradient(135deg, #f0fdfb 0%, #e0f7f5 100%);
}
.score-label { font-size:.88rem; color:var(--ink-soft); margin-bottom:6px; }
.score-val {
  font-size:1.5rem; font-weight:800; color:#e74c3c;
  margin-left:4px;
}
.score-formula {
  margin-top:6px; font-size:.72rem; color:var(--muted);
}

/* ── 弹窗标题区：关闭按钮右上角 + 免责声明 + 筛选摘要 ── */
.modal-head {
  display:flex; align-items:flex-start; justify-content:flex-end;
  padding:10px 12px 4px; border-bottom:1px solid var(--line);
  flex-wrap:nowrap; gap:6px;
  position:relative;
}
.modal-title-block {
  flex:1; min-width:0; padding-right:6px;
}
.modal-title-block > span { display:inline-block; }
.modal-close {
  position:absolute; top:6px; right:6px;
  background:transparent; border:0; font-size:.8rem; cursor:pointer;
  color:var(--muted); width:18px; height:18px; border-radius:4px;
  display:flex; align-items:center; justify-content:center;
  order:1; flex-shrink:0;
  padding:0; line-height:1;
}
.modal-close:hover { background:rgba(0,0,0,.06); color:var(--accent-dark); }
.modal-disclaimer {
  font-size:10px; line-height:1.2; color:var(--muted);
  margin-top:2px; padding:0;
  background:none;
}
.modal-summary {
  font-size:10px; line-height:1.2; color:var(--ink-soft);
  margin-top:1px; padding:0;
}

/* ── 查询结果表格改造 ── */
.modal-body .data-table thead th {
  background:#50c4bc !important; color:#fff !important;
  font-weight:600; font-size:.75rem;
}
.modal-body .data-table tbody td.col-name a,
.modal-body .data-table tbody td.col-name {
  color:var(--brand); font-weight:700;
}
.modal-body .data-table tbody td.col-name a:hover {
  text-decoration:underline;
}
/* 表格线条更细更淡（仅结果弹窗内） */
.rmodal .modal-body .data-table th,
.rmodal .modal-body .data-table td { border-color:#eef2f4; }
.rmodal .modal-body .data-table thead th { border-bottom:1px solid #e3e8ec; }
/* 表格版权水印（图片 repeat）——仅限弹窗内的表格 */
.modal-body .table-wrap {
  position:relative; /* 水印用 absolute 定位的父容器 */
}
.modal-body .table-wrap::after {
  content:''; display:block; position:absolute;
  inset:0; pointer-events:none; z-index:1;
  background:url('/public/watermark.png') repeat;
  background-size:260px auto;
}
/* 分页缩小 */
.pager { margin-top:8px; display:flex; align-items:center; justify-content:center; gap:4px; flex-wrap:wrap; width:100%; }
.pager .pg {
  padding:3px 8px; font-size:.72rem; border-radius:6px;
  border:1px solid var(--line); background:#fff; cursor:pointer;
  color:var(--ink-soft); transition:all .15s;
  flex-shrink:0;
}
.pager .pg:hover:not(:disabled){ border-color:var(--brand); color:var(--brand); }
.pager .pg.on { background:var(--brand); color:#fff; border-color:var(--brand); }
.pager .pg:disabled { opacity:.4; cursor:not-allowed; }
.pager .pg-ell { font-size:.72rem; color:var(--muted); padding:0 3px; flex-shrink:0; }

/* 手机端分页：横向滑动 */
@media(max-width:640px){
  .pager {
    flex-wrap:nowrap; overflow-x:auto;
    justify-content:flex-start;
    -webkit-overflow-scrolling:touch;
    padding:4px 4px;
    scrollbar-width:thin;
  }
  .pager .pg { padding:3px 7px; font-size:.7rem; }
  .pager .pg-ell { font-size:.7rem; }
}

/* ── 数据页广告模块 ── */
.data-ad-wrap { margin-top:24px; }
.data-ad {
  width:100%; border-radius:10px; overflow:hidden;
  background:var(--bg); min-height:60px;
}
.data-ad img { max-width:100%; display:block; }

/* ── data 页面 banner 间距 ── */
.data-banner { margin-bottom:28px; }

/* ── data 骨架屏 banner（带渐变 + skeleton shimmer 动画）── */
.skel-banner-data {
  height:220px; border-radius:10px;
  margin-bottom:16px;
  background:linear-gradient(135deg, #f5f7fa 0%, #e8ecf0 60%, #dde2e7 100%);
}

/* ============ 专业库新布局：选项卡 + 左分类导航 + 右专业列表 ============ */

/* 选项卡栏：一行包含 tab组 / 排序下拉 / 搜索行 */
/* 筛选区：复用数据查询页 .tabs（带下划线选项卡）与 .query-bar 风格，不强制全宽 */
.maj-filter { margin:16px 0 20px; }
.maj-filter .tabs {
  margin:0 0 14px; display:flex; justify-content:center;
}            /* 居中，自然宽度，不铺满 */
/* 搜索框：置于 banner 标题右侧（深色头图上用浅色输入框保证可读）*/
.maj-banner-search { display:flex; flex-shrink:0; gap:8px; max-width:420px; }
.maj-banner-search input[type="search"] {
  flex:1 1 auto; min-width:150px; padding:9px 14px;
  border:1px solid rgba(255,255,255,.6); border-radius:9px;
  background:rgba(255,255,255,.92); color:var(--ink);
  font-size:.88rem; transition:border-color .2s, box-shadow .2s;
}
.maj-banner-search input[type="search"]::placeholder { color:#8a8f98; }
.maj-banner-search input[type="search"]:focus { outline:none; border-color:#fff; box-shadow:0 0 0 3px rgba(255,255,255,.35); }
.maj-banner-search .btn { flex-shrink:0; }

/* 主体：左分类 + 右列表（flex 横排）*/
.maj-body { display:flex; gap:0; background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden; box-shadow:var(--shadow); }

/* 分页器在卡片外（独立一行，与卡片拉开间距）*/
.maj-pager { margin-top:22px; }

/* 左侧分类导航 */
.maj-cat-nav {
  flex:0 0 200px; min-width:160px; max-width:240px;
  background:#fafbfc; border-right:1px solid var(--line);
  padding:16px 0; overflow-y:auto; max-height:calc(100vh - 260px);
}
.maj-cat-btn {
  display:block; width:100%; text-align:left; padding:11px 20px;
  border:none; background:transparent; font-size:.9rem; font-weight:600;
  color:var(--ink-soft); cursor:pointer; transition:all .15s;
  border-left:3px solid transparent;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.maj-cat-btn:hover { background:#f0f4f8; color:var(--brand-dark); }
.maj-cat-btn.active {
  background:#eef8f7; color:var(--brand);
  border-left-color:var(--brand); font-weight:700;
}

/* 右侧列表区域 */
.maj-list-wrap { flex:1; min-width:0; display:flex; flex-direction:column; }
.maj-list { flex:1; }

/* 专业列表项（非卡片，参考截图样式）*/
.maj-item {
  padding:18px 22px; border-bottom:1px solid var(--line);
  transition:background .15s;
}
.maj-item:last-child { border-bottom:none; }
.maj-item:hover { background:#fafbfc; }

.maj-item-head {
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
}
.maj-item-name {
  margin:0; font-size:1.08rem; font-weight:700; color:var(--ink);
  line-height:1.4;
}
/* 专业名称可点击跳转详情页 */
.maj-item-link {
  color:var(--ink); text-decoration:none; transition:color .15s;
}
.maj-item-link:hover { color:var(--brand); }
.maj-item-code {
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 12px; border:1px solid var(--line);
  border-radius:14px; font-size:.78rem; color:var(--muted);
  background:#f7f8fa; white-space:nowrap;
}
.maj-item-code i { font-size:.72rem; color:var(--brand); }

/* 专业元信息行 */
.maj-item-meta {
  display:flex; gap:24px; flex-wrap:wrap;
  margin-top:8px; padding-left:4px;
  font-size:.84rem; color:var(--muted);
}
.maj-item-meta span { display:inline-flex; align-items:center; gap:4px; }
.maj-item-meta i { color:var(--brand); font-size:.8rem; }

/* ── 手机版：层次选项卡横向滑动 + 分类左栏 + banner 左标题右窄搜索 + 列表仅名称代码 ── */
@media (max-width: 860px){
  .maj-filter .tabs { width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:2px; flex-wrap:nowrap; justify-content:flex-start; }
  .maj-filter .tabs::-webkit-scrollbar { height:0; }
  .maj-filter .tabs .tab { flex:0 0 auto; padding:9px 16px; font-size:.85rem; }

  /* banner：左标题 / 右搜索（同一行，搜索框收窄）*/
  .list-banner-maj .banner-overlay { flex-wrap:nowrap; gap:12px; align-items:center; }
  .list-banner-maj .sec-ico { width:30px; height:30px; font-size:1.05rem; }
  .maj-banner-search { flex:0 1 190px; max-width:190px; margin-top:0; }
  .maj-banner-search input[type="search"] { min-width:0; padding:8px 12px; font-size:.84rem; }
  .maj-banner-search .btn { padding:8px 12px; }

  /* 分类导航：保持左栏（窄），行距加大，高度封顶固定 */
  .maj-body { flex-direction:row; align-items:stretch; }
  .maj-cat-nav {
    flex:0 0 116px; width:116px; min-width:96px; max-width:150px; align-self:stretch;
    border-right:1px solid var(--line); border-bottom:none;
    padding:6px 0; overflow-y:auto; max-height:calc(100vh - 200px);
    box-sizing:border-box;
  }
  .maj-cat-nav::-webkit-scrollbar { width:0; }
  .maj-cat-btn {
    display:block; width:100%; padding:14px 10px; font-size:.82rem; line-height:1.3;
    border-left:3px solid transparent; border-bottom:none; border-radius:0;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .maj-cat-btn.active { background:#eef8f7; border-left-color:var(--brand); color:var(--brand); border-bottom:none; }

  /* 右侧列表：仅专业名称 + 代码，其余元信息隐藏省空间 */
  .maj-item { padding:11px 14px; }
  .maj-item-head { display:flex; align-items:baseline; gap:10px; flex-wrap:nowrap; }
  .maj-item-name { flex:1 1 auto; min-width:0; margin:0; font-size:1rem; }
  .maj-item-code { flex:0 0 auto; }
  .maj-item-meta { display:none; }
}

@media (max-width: 520px){
  .maj-cat-nav { flex:0 0 100px; width:100px; min-width:84px; }
  .maj-cat-btn { padding:12px 8px; font-size:.78rem; line-height:1.3; }
  .maj-item { padding:10px 12px; }
  .maj-item-name { font-size:.95rem; }
  .maj-item-code { font-size:.72rem; padding:2px 8px; }
}

/* ============ 专业库骨架屏（新布局）============ */
.maj-skel-tab { width:76px;height:34px;border-radius:17px;flex:0 0 auto; }
.maj-skel-sort { flex-shrink:0; }
.maj-skel-search { flex:1; }
.maj-skel-btn { flex-shrink:0; }
.maj-skel-cat { height:42px;margin:4px 12px;border-radius:8px; }
.maj-skel-item { height:86px;margin:0 16px;border-radius:8px; }

/* ============ 文章编辑：自动保存（本地草稿） ============ */
.autosave-banner {
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  margin:0 0 16px; padding:12px 16px;
  background:#fff8e6; border:1px solid #ffe08a; border-left:4px solid #f0b429;
  border-radius:10px; color:#7a5b00; font-size:.9rem;
}
.autosave-banner i.fa-clock { color:#f0b429; font-size:1rem; }
.autosave-banner > span { flex:1; min-width:0; }
.autosave-banner .btn.small { padding:6px 14px; font-size:.83rem; border-radius:7px; }
.autosave-banner .btn.ghost { background:#fff; }
.as-label { color:var(--muted); font-size:.82rem; margin-left:6px; }

/* ===== 访问统计（后台） ===== */
.vs-toolbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:18px; }
.vs-toolbar .vs-title { font-size:1.15rem; font-weight:700; color:var(--ink); margin-right:auto; }
.vs-toolbar .vs-updated { font-size:.78rem; color:var(--muted); }
.vs-toolbar .vs-refresh { border:1px solid var(--line,#e5e7eb); background:#fff; color:var(--muted); width:34px; height:34px; border-radius:9px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; }
.vs-toolbar .vs-refresh:hover { color:var(--brand,#2563eb); border-color:var(--brand,#2563eb); }
.vs-range { display:inline-flex; border:1px solid var(--line,#e5e7eb); border-radius:9px; overflow:hidden; }
.vs-range button { border:0; background:#fff; padding:7px 14px; font-size:.86rem; color:var(--muted); cursor:pointer; }
.vs-range button + button { border-left:1px solid var(--line,#e5e7eb); }
.vs-range button.on { background:var(--brand,#2563eb); color:#fff; }
.vs-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:22px; }
.vs-card { background:#fff; border:1px solid var(--line,#e5e7eb); border-radius:12px; padding:18px 16px; }
.vs-card .v { font-size:1.9rem; font-weight:800; color:var(--ink); line-height:1.1; }
.vs-card .l { font-size:.85rem; color:var(--muted); margin-top:6px; }
.vs-card .v small { font-size:.9rem; font-weight:600; color:var(--muted); margin-left:4px; }
.vs-sec { background:#fff; border:1px solid var(--line,#e5e7eb); border-radius:12px; padding:18px; margin-bottom:22px; }
.vs-sec h4 { margin:0 0 16px; font-size:1rem; color:var(--ink); }
.vs-chart { display:flex; align-items:flex-end; gap:4px; height:180px; overflow-x:auto; padding-top:8px; }
.vs-bar { flex:1 0 auto; min-width:14px; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; height:100%; }
.vs-bar .fill { width:100%; background:linear-gradient(180deg,var(--brand,#2563eb),#93c5fd); border-radius:4px 4px 0 0; min-height:2px; transition:height .3s; }
.vs-bar .cap { font-size:.62rem; color:var(--muted); margin-top:5px; white-space:nowrap; }
.vs-bar .num { font-size:.62rem; color:var(--ink); margin-bottom:3px; font-weight:600; }
.vs-top { width:100%; border-collapse:collapse; }
.vs-top th, .vs-top td { text-align:left; padding:10px 12px; border-bottom:1px solid var(--line,#e5e7eb); font-size:.9rem; }
.vs-top th { color:var(--muted); font-weight:600; font-size:.82rem; }
.vs-top td.path { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; color:var(--ink); }
.vs-top .bar { height:8px; border-radius:5px; background:var(--brand,#2563eb); min-width:2px; }
.vs-top .pc { color:var(--muted); width:64px; text-align:right; }
.vs-empty { color:var(--muted); padding:24px; text-align:center; }
@media (max-width:760px){
  .vs-cards { grid-template-columns:repeat(2,1fr); }
}

/* 常见问答 上移/下移 排序按钮 */
.data-table .qa-mv { border:0; background:none; cursor:pointer; color:var(--muted,#6b7280); padding:2px 7px; font-size:.85rem; }
.data-table .qa-mv:hover { color:var(--brand,#2563eb); }
.data-table .qa-ops { white-space:nowrap; }

/* 网站暂停服务：内容区提醒块（保留导航与底部） */
.site-pause-block { min-height:60vh; display:flex; align-items:center; justify-content:center; padding:48px 16px; }
.site-pause-block .sp-inner { text-align:center; max-width:520px; width:100%; background:var(--card,#fff); border:1px solid var(--border,#e5e7eb); border-radius:16px; padding:48px 32px; box-shadow:0 8px 30px rgba(0,0,0,.06); }
.site-pause-block .sp-ico { font-size:3rem; color:var(--brand,#2563eb); margin-bottom:16px; }
.site-pause-block .sp-title { font-size:1.6rem; font-weight:700; margin:0 0 12px; color:var(--ink,#111827); }
.site-pause-block .sp-msg { color:var(--muted,#6b7280); line-height:1.8; margin:0 0 24px; word-break:break-all; }

.feature-off-block { min-height:60vh; display:flex; align-items:center; justify-content:center; padding:48px 16px; }
.feature-off-block .fo-inner { text-align:center; max-width:520px; width:100%; background:var(--card,#fff); border:1px solid var(--border,#e5e7eb); border-radius:16px; padding:48px 32px; box-shadow:0 8px 30px rgba(0,0,0,.06); }
.feature-off-block .fo-ico { font-size:3rem; color:var(--brand,#2563eb); margin-bottom:16px; }
.feature-off-block .fo-title { font-size:1.6rem; font-weight:700; margin:0 0 12px; color:var(--ink,#111827); }
.feature-off-block .fo-msg { color:var(--muted,#6b7280); line-height:1.8; margin:0 0 24px; }
