/* ===== 响应式 + 移动端 + 弹窗等 ===== */
/* ========== 响应式补充 ========== */
@media (max-width: 1000px) {
  .home-hero { grid-template-columns: minmax(0,1fr); }
  .qe-grid { grid-template-columns: repeat(4, 1fr); }
  .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); }
  .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: auto; height: 0; width: 100%; padding-top: 43.75%; min-height: 0; max-height: none; }
  .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; }
  .ef-2, .ef-3 { grid-template-columns: 1fr; }
  .calc-panel .calc-row { grid-template-columns: 1fr; }
  .dash-cards { grid-template-columns: 1fr 1fr; }
  .filter-grid { grid-template-columns: 1fr; }
  .qe-grid { grid-template-columns: repeat(2, 1fr); }
  .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; overflow: hidden; text-overflow: ellipsis; white-space:nowrap; }
  .qe span { overflow: hidden; text-overflow: ellipsis; }
  .col-side > * { min-width: 0; overflow-x: hidden; }
  .blk { overflow: hidden; border-radius: var(--radius); }
  .col-card { min-width: 0; overflow: hidden; }
  .hist-filter { overflow:visible; }
  .blk:has(.hist-filter-grid) { overflow:visible; }
  .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; }

/* ---------- 响应式 ---------- */
@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; }
}
@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; }
  .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); }
  .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 2px 6px 0; }
  .footer .cols > div:not(:first-child):not(.ft-follow) a:not(:last-child)::after { content:' |'; color: rgba(227,246,243,.5); margin-left:5px; }
  .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, .qe-ico i, .art-cover i { color: var(--brand); }
.dc-ico i { font-size: 1.8rem; }
.qe-ico { display: inline-flex; }
.qe-ico i { font-size: 1.5rem; }
.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 { 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; }
/* 院校详情页：无右侧栏，单栏通栏 */
.ch-layout--detail { grid-template-columns: minmax(0,1fr); }
.ch-layout--detail > .blk { grid-column:1 / -1; min-width:0; }
.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; } }
@media (max-width: 680px){
  .cd-head { gap:14px; padding:16px; }
  .cd-head .cd-contact { margin-left:0; padding-left:0; border-left:0; border-top:1px solid var(--line); padding-top:14px; width:100%; flex:1 0 100%; flex-direction:row; flex-wrap:wrap; gap:12px 18px; }
  .cd-head .cd-contact .cc-item { flex:1 0 calc(50% - 9px); }
}

/* ============ 顶部加载进度条（类今日头条） ============ */
#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:1000; 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:5px 7px; line-height:1.4; }

/* 让表格无下边距，紧贴分页 */
.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;
}
/* 表格版权水印（图片 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%);
}

