/* ============================================================
   skin-v2 · 校园地图皮肤层（原骨架保留，地图视口不动）
   加载顺序：guide.css / photos.css → 本层
   ============================================================ */

/* ---------- 排印手术：页面标题上宋体 ---------- */
.campus-heading h1, .campus-heading h2 {
  font-family: "Nylon Serif", "Noto Serif SC", "Source Han Serif SC", "Songti SC", "SimSun", serif;
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* ---------- 建筑目录：hover 微回应 ---------- */
.campus-building-list a, .campus-building-list button {
  transition: background 180ms ease, color 180ms ease, border-color 180ms ease;
}
.campus-building-list a:hover, .campus-building-list button:hover {
  background: var(--ny-hover);
  color: var(--ny-text);
}

/* ---------- 检查器与结果链接：滑入下划线 ---------- */
.campus-inspector a, .campus-map-actions a, .campus-nearby-targets a {
  background-image: linear-gradient(var(--ny-link), var(--ny-link));
  background-repeat: no-repeat;
  background-size: 0% 1px;
  background-position: 0 100%;
  padding-bottom: 2px;
  transition: background-size 280ms cubic-bezier(0.22, 1, 0.36, 1), color 180ms ease;
}
.campus-inspector a:hover, .campus-map-actions a:hover, .campus-nearby-targets a:hover {
  background-size: 100% 1px;
  color: var(--ny-link);
}

/* ---------- 地图大头针：呼吸提示可点 ---------- */
.campus-pin-dot {
  transition: transform 240ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 240ms ease;
}
.campus-pin-dot:hover {
  transform: scale(1.35);
  box-shadow: 0 0 0 6px rgba(191, 223, 133, 0.18);
}

/* ---------- 输入焦点冰青 ---------- */
.campus-place-picker input:focus, .campus-directory input:focus, .campus-planner select:focus {
  outline: none;
  border-color: var(--ny-focus);
  box-shadow: 0 0 0 3px color-mix(in srgb,var(--ny-focus) 12%,transparent);
}

/* Map controls are live on first paint. Motion follows an actual local action. */
@media (prefers-reduced-motion: no-preference) {
  /* Original K3 opening: heading, then directory. Leave the draggable map
     canvas in its own coordinate space; no retained transform after entry. */
  .campus-heading,.campus-directory {animation:campus-rise 560ms cubic-bezier(.22,1,.36,1) backwards;}
  .campus-directory {animation-delay:70ms;}
  .campus-shell :is(.campus-primary,.campus-secondary,.campus-label-toggle,.campus-zoom button) {transition:background 180ms ease,border-color 180ms ease,box-shadow 180ms ease;}
  .campus-shell :is(.campus-primary,.campus-secondary):active {transform:translateY(1px);}
  .campus-route-step {transition:background 180ms ease,color 180ms ease;}
  .campus-workbench-tabs a:after {content:"";position:absolute;inset:auto 25% -2px;height:2px;background:var(--ny-accent);transform:scaleX(0);transition:transform 200ms cubic-bezier(.22,.8,.24,1);}
  .campus-workbench-tabs a[aria-current]:after {transform:scaleX(1);}
}
@keyframes campus-rise {
  from {opacity:0;transform:translateY(12px);}
  to {opacity:1;transform:none;}
}

@media (prefers-reduced-motion: reduce) {
  .campus-building-list a, .campus-building-list button, .campus-pin-dot { transition: none; }
  .campus-heading, .campus-directory, .campus-map-viewport, .campus-inspector { animation: none; }
}
