/* 首页专用样式：不写进三页共用的 app.css */

/* app.css 给 .contact-info 设了 height:100%，交叉轴尺寸非 auto 会禁用 flex 的 stretch，
   导致右列拉不开、与左侧表单不等高。改回 auto 让 stretch 接管。 */
.contact-section .contact-info {
  height: auto;
  align-self: stretch;
}

/* 地图卡吸收右列剩余高度，与左侧表单齐平 */
.map-card {
  position: relative;
  flex: 1;
  min-height: 240px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 16px;
  background:
    radial-gradient(120% 90% at 50% 42%, rgba(78, 110, 242, 0.10), transparent 62%),
    var(--surface);
}

.ai-map {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* 经纬网格：只做底纹，压到几乎看不见 */
.ai-map .graticule {
  fill: none;
  stroke: rgba(164, 175, 223, 0.15);
  stroke-width: 0.7;
}

/* 陆块点阵：点的颜色定义在 SVG pattern 内，这里只控整体浓度 */
.ai-map .land {
  opacity: 0.75;
}

/* 节点间连线 */
.ai-map .links {
  fill: none;
  stroke: rgba(78, 110, 242, 0.45);
  stroke-width: 0.9;
  stroke-linecap: round;
}

/* 高亮节点，缓慢呼吸 */
.ai-map .node {
  fill: var(--accent);
  animation: mapPulse 4.5s ease-in-out infinite;
}

.ai-map .node:nth-of-type(2) { animation-delay: 1.5s; }
.ai-map .node:nth-of-type(3) { animation-delay: 3s; }

@keyframes mapPulse {
  0%, 100% { opacity: 0.3; }
  50%      { opacity: 0.9; }
}

@media (prefers-reduced-motion: reduce) {
  .ai-map .node { animation: none; opacity: 0.6; }
}
