
.navbar[data-v-5fedac24] {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  height: 76px;
  /* 毛玻璃：极淡的底色 + 背景高斯模糊 + 饱和度提升，呈现水波纹般的通透雾面感 */
  background: rgba(250, 250, 250, 0.12);
  backdrop-filter: blur(20px) saturate(1.6);
  -webkit-backdrop-filter: blur(20px) saturate(1.6);
}
.nav-inner[data-v-5fedac24] {
  max-width: var(--container);
  height: 100%;
  margin: 0 auto;
  padding: 0 32px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
@media (min-width: 1440px) {
.nav-inner[data-v-5fedac24] { padding: 0;
}
}
.logo[data-v-5fedac24] {
  font-family: var(--font-serif);
  font-size: 21px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--text-primary);
}
.nav-links[data-v-5fedac24] {
  display: flex;
  gap: 36px;
}
.nav-links a[data-v-5fedac24] {
  font-family: var(--font-sans);
  font-size: 14px;
  letter-spacing: 0.04em;
  color: var(--text-primary);
  transition: color 0.2s;
}
.nav-links a[data-v-5fedac24]:hover { color: var(--accent);
}
.nav-links a.active[data-v-5fedac24] { color: #c9940f;
}
.menu-toggle[data-v-5fedac24] {
  display: none;
  background: none;
  border: none;
  cursor: pointer;
  width: 24px;
  height: 18px;
  flex-direction: column;
  justify-content: space-between;
}
.menu-toggle span[data-v-5fedac24] {
  display: block;
  width: 100%;
  height: 2px;
  background: var(--text-primary);
  transition: transform 0.3s, opacity 0.3s;
}
.menu-toggle.open span[data-v-5fedac24]:nth-child(1) { transform: translateY(8px) rotate(45deg);
}
.menu-toggle.open span[data-v-5fedac24]:nth-child(2) { opacity: 0;
}
.menu-toggle.open span[data-v-5fedac24]:nth-child(3) { transform: translateY(-8px) rotate(-45deg);
}
@media (max-width: 768px) {
.navbar[data-v-5fedac24] { height: 60px;
}
.menu-toggle[data-v-5fedac24] { display: flex;
}
.nav-links[data-v-5fedac24] {
    position: fixed;
    top: 60px; left: 0; right: 0;
    background: #fff;
    flex-direction: column;
    align-items: center;
    padding: 24px 0;
    gap: 24px;
    transform: translateY(-100%);
    opacity: 0;
    transition: all 0.3s;
    pointer-events: none;
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.nav-links.open[data-v-5fedac24] {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
}
.nav-links a[data-v-5fedac24] { font-size: 16px;
}
}

.site-footer[data-v-40590b76] {
  background: var(--footer-bg);
  color: var(--footer-text);
  padding: 64px 32px 40px;
}
.footer-inner[data-v-40590b76] {
  max-width: var(--container);
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  gap: 48px;
  flex-wrap: wrap;
}
@media (min-width: 1440px) {
.footer-inner[data-v-40590b76] { padding: 0;
}
}
.footer-brand[data-v-40590b76] {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.footer-name[data-v-40590b76] {
  font-family: var(--font-serif);
  font-size: 20px;
  color: #fff;
}
.footer-slogan[data-v-40590b76] {
  font-family: var(--font-sans);
  font-size: 13px;
  color: var(--footer-muted);
}
.footer-col[data-v-40590b76] {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.footer-col-title[data-v-40590b76] {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.08em;
  color: var(--footer-muted);
  margin-bottom: 6px;
}
.footer-link[data-v-40590b76] {
  font-family: var(--font-sans);
  font-size: 13px;
  color: var(--footer-text);
  transition: color 0.2s;
}
.footer-link[data-v-40590b76]:hover { color: #fff;
}
.footer-bottom[data-v-40590b76] {
  max-width: var(--container);
  margin: 48px auto 0;
  padding-top: 32px;
  border-top: 1px solid var(--footer-rule);
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--footer-muted);
}
.footer-icp[data-v-40590b76] {
  color: var(--footer-muted);
  text-decoration: none;
  transition: color 0.2s;
}
.footer-icp[data-v-40590b76]:hover { color: #fff;
}
@media (min-width: 1440px) {
.footer-bottom[data-v-40590b76] { padding: 32px 0 0;
}
}
@media (max-width: 768px) {
.site-footer[data-v-40590b76] { padding: 48px 20px 32px;
}
.footer-inner[data-v-40590b76] { flex-direction: column; gap: 32px;
}
.footer-bottom[data-v-40590b76] { flex-direction: column; gap: 8px; text-align: center;
}
}
/* ============================================================
   浮光掠影 · 设计系统 Tokens（源自 DESIGN.md 02 设计系统）
   极简北欧风 · 杂志编辑式排版
   ============================================================ */

:root {
  /* 色彩系统 */
  --bg: #fafafa;           /* 页面底色 */
  --bg-secondary: #f0f2f4; /* 卡片、区块背景 */
  --text-primary: #1a1d21; /* 标题、正文 */
  --text-secondary: #6b7280; /* 辅助文字 */
  --text-tertiary: #9aa0a6; /* 占位符、次要元信息 */
  --accent: #4a6fa5;       /* 雾霾蓝点缀 */
  --divider: #e5e7eb;      /* 边框、分割线 */
  --footer-bg: #1a1d21;    /* 深色页脚背景 */
  --footer-text: #c7cbd1;  /* 页脚正文 */
  --footer-muted: #6b7280; /* 页脚元信息 */
  --footer-rule: #2a2e33;  /* 页脚分割线 */

  /* 兼容别名 */
  --ink: #1a1d21;
  --muted: #6b7280;
  --bg2: #f0f2f4;
  --rule: #e5e7eb;

  /* 字体系统 */
  --font-serif: 'Noto Serif SC', 'Lora', Georgia, 'Songti SC', serif;
  --font-sans: 'Noto Sans SC', -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-mono: 'Geist Mono', ui-monospace, 'SF Mono', 'JetBrains Mono', monospace;

  /* 布局 */
  --container: 1200px;
  --side-pad: 120px;
  --radius: 2px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--text-primary);
  line-height: 1.7;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; }

/* 页面通用 */
.page { min-height: 100vh; }

/* 内容容器：1200px，两侧留白 */
.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 32px;
}
@media (min-width: 1440px) {
  .container { padding: 0; }
}

/* 眉标（配合 2px letter-spacing） */
.section-label {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 12px;
}

/* 区块标题（衬线） */
.section-title {
  font-family: var(--font-serif);
  font-size: 36px;
  font-weight: 400;
  line-height: 1.3;
  margin-bottom: 48px;
  color: var(--text-primary);
}

/* 按钮 */
.btn {
  display: inline-block;
  padding: 14px 30px;
  font-size: 14px;
  letter-spacing: 0.04em;
  text-decoration: none;
  border-radius: var(--radius);
  transition: all 0.3s;
  cursor: pointer;
  border: none;
  line-height: 1;
}
.btn-primary {
  background: var(--text-primary);
  color: #fff;
  border: 1px solid var(--text-primary);
}
.btn-primary:hover { background: #333; border-color: #333; }
.btn-outline {
  background: var(--bg);
  color: var(--text-primary);
  border: 1px solid var(--divider);
}
.btn-outline:hover { border-color: var(--text-primary); }

/* 加载 / 空状态 */
.loading {
  text-align: center;
  padding: 60px 0;
  color: var(--text-secondary);
  font-size: 14px;
}
.loading .loader {
  display: inline-block;
  vertical-align: middle;
}

/* ============ 页面切换过渡 ============ */
.page-enter-active,
.page-leave-active {
  transition: opacity 0.38s ease, transform 0.38s ease;
}
.page-enter-from {
  opacity: 0;
  transform: translateY(12px);
}
.page-leave-to {
  opacity: 0;
}
@media (prefers-reduced-motion: reduce) {
  .page-enter-active,
  .page-leave-active {
    transition: none;
  }
}

/* ============ Loader（四色粒子加载指示，与 photomobile 一致） ============ */
/* 动画尺寸全部使用 em：font-size: Xpx 时整体为 2.5X px */
.loader {
  position: relative;
  display: inline-block;
  width: 2.5em;
  height: 2.5em;
  transform: rotate(165deg);
}
.loader::before,
.loader::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  display: block;
  width: 0.5em;
  height: 0.5em;
  border-radius: 0.25em;
  transform: translate(-50%, -50%);
}
.loader::before {
  animation: loader-before 2s infinite;
}
.loader::after {
  animation: loader-after 2s infinite;
}
@keyframes loader-before {
  0% {
    width: 0.5em;
    box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
  }
  35% {
    width: 2.5em;
    box-shadow: 0 -0.5em rgba(225, 20, 98, 0.75), 0 0.5em rgba(111, 202, 220, 0.75);
  }
  70% {
    width: 0.5em;
    box-shadow: -1em -0.5em rgba(225, 20, 98, 0.75), 1em 0.5em rgba(111, 202, 220, 0.75);
  }
  100% {
    box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
  }
}
@keyframes loader-after {
  0% {
    height: 0.5em;
    box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
  }
  35% {
    height: 2.5em;
    box-shadow: 0.5em 0 rgba(61, 184, 143, 0.75), -0.5em 0 rgba(233, 169, 32, 0.75);
  }
  70% {
    height: 0.5em;
    box-shadow: 0.5em -1em rgba(61, 184, 143, 0.75), -0.5em 1em rgba(233, 169, 32, 0.75);
  }
  100% {
    box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
  }
}
.empty {
  text-align: center;
  padding: 80px 0;
  color: var(--text-tertiary);
  font-size: 14px;
}

/* 通用图片 hover 动效：scale 1.02 + 亮度微调 */
.img-hover {
  overflow: hidden;
  border-radius: var(--radius);
}
.img-hover img {
  transition: transform 0.3s ease, filter 0.3s ease;
}
.img-hover:hover img {
  transform: scale(1.02);
  filter: brightness(0.98);
}

@media (max-width: 768px) {
  .section-title { font-size: 28px; margin-bottom: 32px; }
}
