/* ==========================================================================
   VPNBF — nodes.css
   全球节点页(locations.html)专属样式
   依赖 base.css 的设计令牌,不重复定义共享组件
   ========================================================================== */

/* ============================ 首屏 ============================ */

.nodes-hero{
  position:relative;
  overflow-x:clip;
  max-width:100%;
  padding-top:56px;
  padding-bottom:44px;
  padding-inline:var(--gutter);
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  gap:18px;
}
.nodes-hero > *{position:relative;z-index:1}
.nodes-hero .lead{max-width:64ch}
.nodes-hero .facts-band{margin-top:6px}

.hero-glow{
  position:absolute;
  z-index:0;
  top:12%;
  left:46%;
  right:-6%;
  height:340px;
  pointer-events:none;
  background:radial-gradient(closest-side,rgba(217,195,238,.55),rgba(217,195,238,0) 100%);
  filter:blur(28px);
}

/* ============================ 地区分组 ============================ */

.region-block{margin-top:38px}
.region-block:first-of-type{margin-top:0}

.region-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px 20px;
  flex-wrap:wrap;
  margin-bottom:14px;
  min-width:0;
}
.region-head h3{font-size:23px;letter-spacing:-.01em}
.region-count{
  font-family:var(--font-mono);
  font-size:12.5px;
  color:var(--text-muted);
  letter-spacing:.02em;
  min-width:0;
}

/* ============================ 线路类型卡 ============================ */

.nodes-type-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:20px;
  min-width:0;
}
.nodes-type-card{
  display:flex;
  flex-direction:column;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-xl);
  box-shadow:var(--highlight),var(--shadow-card);
  overflow:hidden;
  min-width:0;
  transition:transform .18s,box-shadow .18s;
}
.nodes-type-card:hover{transform:translateY(-2px);box-shadow:var(--highlight),var(--shadow-float)}
.nodes-type-visual{
  position:relative;
  height:134px;
  padding:16px;
  display:flex;
  align-items:flex-start;
  align-content:flex-start;
  flex-wrap:wrap;
  gap:8px;
}
.nodes-type-visual .tag{max-width:100%}
.nodes-type-body{
  padding:20px 22px 24px;
  display:flex;
  flex-direction:column;
  gap:12px;
  min-width:0;
}
.nodes-type-body h3{font-size:21px}
.nodes-type-body p{font-size:14.5px;line-height:1.78;color:var(--text-muted)}
.nodes-type-meta{
  margin-top:auto;
  padding-top:14px;
  border-top:1px dashed var(--border);
  font-family:var(--font-mono);
  font-size:12.5px;
  color:var(--text-muted);
  letter-spacing:.01em;
}

/* ============================ 选线建议 ============================ */

.nodes-advice-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:18px;
  min-width:0;
}
.nodes-advice{
  grid-column:span 2;
  display:flex;
  flex-direction:column;
  gap:10px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--highlight);
  padding:22px 22px 24px;
  min-width:0;
  transition:transform .18s,box-shadow .18s;
}
.nodes-advice:hover{transform:translateY(-2px);box-shadow:var(--highlight),var(--shadow-card)}
.nodes-advice h3{font-size:19px}
.nodes-advice p{font-size:14px;line-height:1.75;color:var(--text-muted)}

/* ============================ 覆盖规模两列 ============================ */

.nodes-split{
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:26px;
  align-items:start;
  min-width:0;
}
.nodes-split > *{min-width:0}

.nodes-wall{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:16px;
  padding:26px;
  min-width:0;
}
.nodes-wall .icon-row{justify-content:center;gap:12px 20px}
.nodes-wall h3{font-size:19px;text-align:center}
.nodes-wall p{
  font-size:13px;
  line-height:1.7;
  color:var(--text);
  text-align:center;
  margin:0 auto;
  max-width:46ch;
}

/* ============================ 响应式 ============================ */

@media (max-width:1100px){
  .nodes-advice-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .nodes-split{grid-template-columns:minmax(0,1fr)}
}

@media (max-width:900px){
  .nodes-type-grid{grid-template-columns:minmax(0,1fr)}
  .nodes-type-visual{height:118px}
}

@media (max-width:768px){
  .nodes-hero{padding-top:36px;padding-bottom:32px}
  .hero-glow{display:none}
  .nodes-advice-grid{grid-template-columns:minmax(0,1fr)}
  .nodes-advice{grid-column:span 1}
  .region-head h3{font-size:20px}
  .nodes-wall{padding:20px}
}

@media (max-width:400px){
  .nodes-type-visual{padding:12px;height:110px}
  .nodes-type-body{padding:18px}
}