:root{--primary:#2563eb;--primary-d:#1d4ed8;--bg:#f6f8fb;--text:#0f172a;--sub:#64748b;--card:#fff;--line:#e8edf3}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);line-height:1.55}
a{text-decoration:none;color:inherit}
.topbar{background:linear-gradient(90deg,#2563eb,#1d4ed8);color:#fff;position:sticky;top:0;z-index:100}
.topbar .wrap{max-width:1080px;margin:0 auto;padding:12px 16px}
.brand{font-size:18px;font-weight:800;color:#fff}
.wrap{max-width:1080px;margin:0 auto;padding:16px}
.search-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:16px;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.stat-line{font-size:12.5px;color:#475569;background:linear-gradient(90deg,#eff6ff,#f0fdfa);border:1px solid #dbeafe;padding:7px 11px;border-radius:9px;margin-bottom:12px;font-weight:600}
.search-form{display:flex;gap:8px;flex-wrap:wrap}
.search-form .search{flex:1;min-width:160px;border:1px solid #d7dee8;border-radius:10px;padding:10px 12px;font-size:14px;outline:none}
.search-form .search:focus{border-color:var(--primary);box-shadow:0 0 0 3px #eff6ff}
.search-form .search.stop{bflex:1}
.search-form button{border:none;background:var(--primary);color:#fff;padding:10px 18px;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer}
.facets{margin-top:12px;font-size:13px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.flabel{color:var(--sub);margin-right:2px}
.facets a{padding:4px 10px;border-radius:14px;background:#eef2f7;color:#475569;font-size:12.5px}
.facets a.active{background:var(--primary);color:#fff}
.count{margin-top:10px;font-size:13px;color:var(--sub);font-weight:600}
.list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;transition:.15s}
.card:hover{border-color:var(--primary);box-shadow:0 4px 14px rgba(37,99,235,.12);transform:translateY(-1px)}
.lno{font-size:18px;font-weight:800;color:var(--primary);min-width:52px;background:#eff6ff;border-radius:8px;padding:4px 6px;text-align:center}
.meta{display:flex;flex-direction:column;gap:3px;font-size:13px;min-width:0}
.badge{display:inline-block;font-size:11px;font-weight:700;padding:1px 8px;border-radius:10px;background:#e0f2fe;color:#0369a1;width:fit-content}
.badge.干线,.badge.常规干线{background:#dbeafe;color:#1d4ed8}
.badge.支线{background:#dcfce7;color:#15803d}
.badge.快线,.badge.通勤,.badge.高峰专线{background:#fef9c3;color:#a16207}
.badge.夜班{background:#ede9fe;color:#6d28d9}
.badge.机场\/口岸线,.badge.城际{background:#ffe4e6;color:#be123c}
.route{font-weight:600;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.op{color:var(--sub);font-size:12px}
.go{font-size:12px;color:var(--primary);font-weight:700;margin-top:2px}
.empty{text-align:center;padding:40px 16px;color:var(--sub);background:#fff;border:1px dashed var(--line);border-radius:14px}
.more{text-align:center;color:var(--sub);padding:16px;font-size:13px}
.crumb{padding:8px 0}
.crumb a{color:var(--primary);font-size:14px}
.detail h1{font-size:22px;margin:6px 0 12px;display:flex;align-items:center;gap:8px}
.d-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}
.d-meta div{font-size:13px;color:var(--sub)}
.d-meta b{display:block;color:var(--text);font-size:12px;margin-bottom:2px}
.src{font-size:12px;color:var(--sub);margin:8px 0 16px}
.dir-block.up{border-left:4px solid var(--primary)}
.dir-block.down{border-left:4px solid #16a34a}
.dir-block h2{font-size:15px;margin-bottom:10px;color:var(--primary)}
.dir-block.down h2{color:#16a34a}
.stops{list-style:none;counter-reset:s}
.stops li{counter-increment:s;padding:7px 8px 7px 34px;position:relative;border-bottom:1px dashed #eef2f7;font-size:14px}
.stops li:before{content:counter(s);position:absolute;left:8px;top:7px;width:20px;height:20px;background:#eff6ff;color:var(--primary);border-radius:50%;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.stops li a:hover{color:var(--primary);text-decoration:underline}
.stops li:last-child{border-bottom:none}
.foot{text-align:center;color:var(--sub);font-size:12px;padding:18px;border-top:1px solid var(--line);margin-top:20px}
@media(max-width:640px){
  .wrap{padding:12px}
  .list{grid-template-columns:1fr}
  /* 搜索区单列大点击区 */
  .search-form{flex-direction:column;gap:10px}
  .search-form .search{width:100%;padding:13px 14px;font-size:16px}
  .search-form .search.stop{background:#f8fafc;border:1px dashed #cbd5e1}
  .search-form button{width:100%;padding:13px;font-size:16px;border-radius:12px}
  /* 统计行 */
  .stat-line{font-size:12px;padding:8px 10px}
  /* 筛选 chip 横向滚动不折行 */
  .facets{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  .facets .flabel{display:none}
  .facets a{flex:0 0 auto;white-space:nowrap;padding:8px 14px;font-size:13.5px;border-radius:16px}
  .count{font-size:14px;padding:4px 0}
  /* 卡片 */
  .card{padding:14px;gap:12px;align-items:center}
  .lno{font-size:20px;min-width:60px;padding:6px 4px}
  .meta{gap:4px}
  .route{font-size:15px;white-space:normal}
  .card .go{font-size:13px}
  /* 详情页 */
  .detail h1{font-size:20px;flex-wrap:wrap}
  .d-meta{grid-template-columns:1fr 1fr;gap:10px;padding:12px}
  .dir-block{padding:12px;margin-bottom:10px}
  .dir-block h2{font-size:16px}
  .stops li{padding:12px 8px 12px 38px;font-size:15.5px}
  .stops li:before{width:24px;height:24px;font-size:12px;top:10px}
  /* 回到顶部按钮(详情长列表) */
  .to-top{position:fixed;right:14px;bottom:18px;width:44px;height:44px;border-radius:50%;background:var(--primary);color:#fff;border:none;font-size:20px;box-shadow:0 4px 14px rgba(37,99,235,.4);z-index:200;display:none}
  .to-top.show{display:flex;align-items:center;justify-content:center}
}

/* 维度切换 tab */
.tabs{display:flex;gap:8px;margin-bottom:14px}
.tab{flex:1;text-align:center;padding:11px;border-radius:12px;background:#fff;border:1px solid var(--line);font-size:15px;font-weight:700;color:#475569}
.tab.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 4px 12px rgba(37,99,235,.25)}
/* 站台卡片 = 站牌样式 */
.station-list .card.station{display:block;padding:0;overflow:hidden;border:1px solid var(--line)}
.station .st-name{background:linear-gradient(90deg,#1d4ed8,#2563eb);color:#fff;font-size:17px;font-weight:800;padding:11px 14px}
.station .st-sub{font-size:12.5px;color:#475569;padding:8px 14px 4px;font-weight:600}
.station .st-lines{display:flex;flex-wrap:wrap;gap:6px;padding:4px 14px 14px}
.ln-chip{display:inline-block;background:#eff6ff;color:#1d4ed8;font-size:13px;font-weight:700;padding:4px 10px;border-radius:8px;border:1px solid #dbeafe;min-width:38px;text-align:center}
.ln-more{display:inline-block;background:#f1f5f9;color:#64748b;font-size:12px;font-weight:700;padding:4px 10px;border-radius:8px}
.station-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}/* 站台详情-经过线路 */
.station-lines{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin-top:8px}
.station-lines .card{margin:0}
@media(max-width:640px){.tabs{margin-bottom:12px}.tab{font-size:14px;padding:12px}.station-lines{grid-template-columns:1fr}}
