@charset "UTF-8";
/*!
 * Yunting Home · 全站样式
 *
 * 结构：字体 → 设计令牌 → 基础 → 组件 → 版式 → 响应式。
 * 不引入任何第三方 CSS 库，所有样式按本项目的版式需要写成。
 *
 * 字体组合按英文站选：正文 Inter，标题 Source Serif 4。
 * Source Serif 与思源宋体（Noto Serif CJK）同源，沿用原来的设计意图，
 * 但只含拉丁字形 —— 单文件 20KB 上下，不再背 3.7MB 的中文子集。
 */

/* ==========================================================================
   一、字体（自托管，均为 SIL OFL 授权，可商用）
   ========================================================================== */

@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-500.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

/* 标题：Source Serif 4 —— 与正文拉开层次，家居行业常见的高级感做法 */
@font-face {
  font-family: "Source Serif 4";
  src: url("../fonts/source-serif-4-400.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Serif 4";
  src: url("../fonts/source-serif-4-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

/* ==========================================================================
   二、设计令牌
   ========================================================================== */

:root {
  /* --- 色彩 --- */
  --c-bg: #faf7f2;          /* 页面底色：暖米白 */
  --c-surface: #ffffff;     /* 卡片面 */
  --c-surface-alt: #f5efe6; /* 浅木底，用于交替区块 */
  --c-line: #e7ddd1;        /* 分隔线 */
  --c-line-strong: #d5c7b6;

  --c-ink: #2a2420;         /* 主文字：深棕黑，比纯黑柔和 */
  --c-ink-2: #5f544a;       /* 次文字 */
  --c-ink-3: #8b7d70;       /* 提示文字 */

  --c-wood: #b07a45;        /* 主色：暖木 */
  --c-wood-dark: #8f5f30;   /* 主色悬停 */
  --c-wood-soft: #f3e7d7;   /* 主色浅底 */
  --c-green: #3d5c47;       /* 点缀：墨绿 */
  --c-green-soft: #e9efea;
  --c-danger: #b3453a;

  /* --- 字体 --- */
  /* 只写拉丁字体族：缺字时浏览器会自己回退到系统字体，不必在这里点名中文字体 */
  --f-sans: "Inter", system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  --f-serif: "Source Serif 4", Georgia, "Times New Roman", serif;

  /* --- 字号（clamp 做流式缩放，不再为每个断点单独写死） --- */
  --fs-xs: 0.8125rem;
  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-lg: 1.0625rem;
  --fs-xl: 1.25rem;
  --fs-2xl: clamp(1.375rem, 1.15rem + 0.75vw, 1.75rem);
  --fs-3xl: clamp(1.75rem, 1.35rem + 1.4vw, 2.375rem);
  --fs-4xl: clamp(2.125rem, 1.5rem + 2.4vw, 3.375rem);

  /* --- 行高与字距 --- */
  /* 英文正文比中文需要的行高略小：中文 1.75 看着舒服，英文会显得散 */
  --lh-tight: 1.2;
  --lh-snug: 1.45;
  --lh-base: 1.7;
  --ls-wide: 0.08em;

  /* --- 间距 --- */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-7: 28px;
  --sp-8: 32px;
  --sp-10: 40px;
  --sp-12: 48px;
  --sp-16: 64px;
  --sp-20: 80px;
  --sp-24: 96px;

  /* --- 布局 --- */
  --container: 1180px;
  --container-narrow: 780px;
  --gutter: clamp(20px, 4vw, 40px);
  --section-y: clamp(64px, 7vw, 104px);

  /* --- 圆角 --- */
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 18px;
  --r-xl: 26px;
  --r-pill: 999px;

  /* --- 阴影（克制，只做层次不做装饰） --- */
  --sh-1: 0 1px 2px rgba(42, 36, 32, 0.04), 0 4px 14px rgba(42, 36, 32, 0.05);
  --sh-2: 0 10px 34px rgba(42, 36, 32, 0.10);
  --sh-focus: 0 0 0 3px rgba(176, 122, 69, 0.35);

  --header-h: 74px;
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* ==========================================================================
   三、基础
   ========================================================================== */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 20px);
  /*
   * 手机端抽屉是「滑出视口」实现的，必然产生横向溢出。
   * 这里用 clip 而不是 hidden —— hidden 会创建滚动容器，
   * 导致侧栏的 position: sticky 失效并让吸顶导航行为异常；
   * clip 只裁剪、不创建滚动容器，两处都能保住。
   */
  overflow-x: clip;
}

body {
  margin: 0;
  background: var(--c-bg);
  color: var(--c-ink);
  font-family: var(--f-sans);
  font-size: var(--fs-base);
  font-weight: 400;
  line-height: var(--lh-base);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body.nav-open {
  overflow: hidden;
}

img,
svg,
video {
  max-width: 100%;
  height: auto;
  display: block;
}

a {
  color: inherit;
  text-decoration: none;
  transition: color 0.18s var(--ease);
}

a:hover {
  color: var(--c-wood-dark);
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

h1, h2, h3, h4 {
  margin: 0;
  font-family: var(--f-serif);
  font-weight: 600;
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--c-ink);
}

p {
  margin: 0 0 var(--sp-4);
}

ul, ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

:focus-visible {
  outline: 2px solid var(--c-wood);
  outline-offset: 2px;
  border-radius: 3px;
}

/* 键盘用户可见，鼠标用户不可见 */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 999;
  padding: 12px 20px;
  background: var(--c-ink);
  color: #fff;
  border-radius: 0 0 var(--r-sm) 0;
}
.skip-link:focus {
  left: 0;
  color: #fff;
}

.screen-reader-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.container {
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

.container--narrow {
  max-width: var(--container-narrow);
}

.icon {
  flex: none;
}

/* ==========================================================================
   四、按钮
   ========================================================================== */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 24px;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  font-family: var(--f-sans);
  font-size: var(--fs-sm);
  font-weight: 500;
  line-height: 1.2;
  text-align: center;
  cursor: pointer;
  transition: background 0.2s var(--ease), color 0.2s var(--ease),
              border-color 0.2s var(--ease), transform 0.2s var(--ease);
}

.btn--lg {
  padding: 15px 30px;
  font-size: var(--fs-base);
}

.btn--block {
  display: flex;
  width: 100%;
}

.btn--primary {
  background: var(--c-wood);
  color: #fff;
}
.btn--primary:hover {
  background: var(--c-wood-dark);
  color: #fff;
  transform: translateY(-1px);
}

.btn--outline {
  background: transparent;
  border-color: var(--c-line-strong);
  color: var(--c-ink);
}
.btn--outline:hover {
  border-color: var(--c-wood);
  color: var(--c-wood-dark);
  background: var(--c-wood-soft);
}

.btn--ghost {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.35);
  color: #fff;
}
.btn--ghost:hover {
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
}

.link-more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--c-wood-dark);
}
.link-more .icon {
  transition: transform 0.2s var(--ease);
}
.link-more:hover .icon {
  transform: translateX(3px);
}

/* ==========================================================================
   五、页头与导航
   ========================================================================== */

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(250, 247, 242, 0.9);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--c-line);
  transition: box-shadow 0.25s var(--ease);
}

.site-header.is-scrolled {
  box-shadow: var(--sh-1);
}

.header-inner {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  min-height: var(--header-h);
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
  color: var(--c-ink);
}
.brand:hover {
  color: var(--c-wood-dark);
}

.brand-mark {
  display: block;
  color: var(--c-wood);
}

.brand-text {
  display: flex;
  flex-direction: column;
  line-height: 1.1;
}

.brand-name {
  font-family: var(--f-serif);
  font-size: var(--fs-lg);
  font-weight: 600;
  letter-spacing: 0.02em;
}

.brand-sub {
  font-size: 10px;
  letter-spacing: var(--ls-wide);
  color: var(--c-ink-3);
  text-transform: uppercase;
}

.primary-nav {
  margin-left: auto;
}

.nav-list {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}

.nav-list a {
  display: block;
  padding: 8px 14px;
  border-radius: var(--r-pill);
  font-size: var(--fs-sm);
  font-weight: 400;
  color: var(--c-ink-2);
}

.nav-list a:hover {
  background: var(--c-wood-soft);
  color: var(--c-wood-dark);
}

.nav-list .current-menu-item > a {
  color: var(--c-ink);
  font-weight: 500;
  background: var(--c-surface-alt);
}

.nav-drawer-foot {
  display: none;
}

.header-actions {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  flex: none;
}

.header-phone {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--c-ink);
  white-space: nowrap;
}
.header-phone .icon {
  color: var(--c-wood);
}
.header-phone:hover {
  color: var(--c-wood-dark);
}

.nav-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  background: transparent;
  border: 1px solid var(--c-line-strong);
  border-radius: var(--r-sm);
  color: var(--c-ink);
  cursor: pointer;
}

.nav-toggle-close {
  display: none;
}

body.nav-open .nav-toggle-open {
  display: none;
}
body.nav-open .nav-toggle-close {
  display: block;
}

.nav-backdrop {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(42, 36, 32, 0.42);
  opacity: 0;
  transition: opacity 0.25s var(--ease);
}
.nav-backdrop[hidden] {
  display: none;
}
body.nav-open .nav-backdrop {
  opacity: 1;
}

/* ==========================================================================
   六、首屏
   ========================================================================== */

.hero {
  position: relative;
  display: flex;
  align-items: center;
  min-height: clamp(520px, 78vh, 760px);
  padding: var(--sp-20) 0 var(--sp-16);
  overflow: hidden;
  background: var(--c-surface-alt);
}

.hero-media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/*
 * 遮罩要盖住整个文字区，而不是只盖左半边。
 * hero 内容左对齐后文字止于视口约 55% 处，所以实色区撑到 52%，
 * 到 66% 仍保持足够不透明度，再往右快速放开把画面还给图片。
 */
.hero-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    95deg,
    rgba(250, 247, 242, 0.96) 0%,
    rgba(250, 247, 242, 0.94) 52%,
    rgba(250, 247, 242, 0.72) 66%,
    rgba(250, 247, 242, 0.22) 86%,
    rgba(250, 247, 242, 0.02) 100%
  );
}

/*
 * 内容整体左对齐，右侧留给画面。
 * 用「限制直接子元素宽度」而不是限制容器宽度 —— 这样容器仍是正常栅格，
 * 文字贴着左栏排版，图片主体不会被遮罩一起压掉。
 */
.hero-inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

.hero-inner > * {
  max-width: 600px;
}

.hero-eyebrow {
  display: inline-block;
  margin-bottom: var(--sp-5);
  padding: 6px 16px;
  background: rgba(255, 255, 255, 0.75);
  border: 1px solid var(--c-line);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--c-wood-dark);
}

.hero-title {
  margin-bottom: var(--sp-5);
  font-size: var(--fs-4xl);
  line-height: 1.18;
  letter-spacing: -0.02em;
}

/*
 * 标题单独放宽：上面 .hero-inner > * 给的 600px 是中文时代的窄栏尺寸，
 * 同样的字号下英文要多占三成宽度，600px 会把第二行挤出一个孤字。
 * 只放宽标题，副标题与数据条仍走 600px 的窄栏，阅读节奏不变。
 */
.hero-inner > .hero-title {
  max-width: 760px;
}

.hero-sub {
  margin-bottom: var(--sp-8);
  max-width: 30em;
  font-size: var(--fs-lg);
  line-height: 1.8;
  color: var(--c-ink-2);
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-bottom: var(--sp-12);
}

.hero-stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-8);
  padding-top: var(--sp-6);
  border-top: 1px solid var(--c-line-strong);
}

.hero-stats li {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.stat-num {
  font-family: var(--f-serif);
  font-size: var(--fs-2xl);
  font-weight: 600;
  color: var(--c-ink);
  line-height: 1.1;
}
.stat-num i {
  font-family: var(--f-sans);
  font-size: var(--fs-sm);
  font-style: normal;
  font-weight: 500;
  color: var(--c-ink-3);
  margin-left: 2px;
}

.stat-label {
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

/* ==========================================================================
   七、区块与标题
   ========================================================================== */

.section {
  padding: var(--section-y) 0;
}

.section--tight {
  padding: calc(var(--section-y) * 0.45) 0;
}

.section--tall {
  padding: calc(var(--section-y) * 1.2) 0;
}

.section--tinted {
  background: var(--c-surface-alt);
}

.section--cta {
  /* 比常规区块略紧：底部询盘区再撑 104px 会显得整页拖沓 */
  padding: clamp(56px, 5.5vw, 84px) 0;
  background: var(--c-bg);
}

.section-head {
  max-width: 720px;
  margin-bottom: var(--sp-12);
}

.section-head--row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--sp-8);
  max-width: none;
}

.section-head--row > div {
  max-width: 640px;
}

.section-head-link {
  flex: none;
  margin-bottom: 6px;
}

.section-eyebrow {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-xs);
  font-weight: 500;
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--c-wood);
}

.section-title {
  margin-bottom: var(--sp-4);
  font-size: var(--fs-3xl);
}

.section-sub {
  margin: 0;
  font-size: var(--fs-lg);
  line-height: 1.8;
  color: var(--c-ink-2);
}

.empty-note {
  padding: var(--sp-10);
  background: var(--c-surface);
  border: 1px dashed var(--c-line-strong);
  border-radius: var(--r-lg);
  text-align: center;
  color: var(--c-ink-3);
}

/* ==========================================================================
   八、服务卡片
   ========================================================================== */

.service-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-5);
}

.service-card {
  display: flex;
  flex-direction: column;
  padding: var(--sp-8) var(--sp-6) var(--sp-6);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  transition: transform 0.24s var(--ease), box-shadow 0.24s var(--ease),
              border-color 0.24s var(--ease);
}

.service-card:hover {
  transform: translateY(-4px);
  border-color: var(--c-line-strong);
  box-shadow: var(--sh-2);
}

.service-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  margin-bottom: var(--sp-5);
  background: var(--c-wood-soft);
  border-radius: var(--r-md);
  color: var(--c-wood-dark);
}

.service-name {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-xl);
}

.service-short {
  margin-bottom: var(--sp-6);
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--c-ink-2);
}

.service-from {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: auto 0 var(--sp-4);
  padding-top: var(--sp-4);
  border-top: 1px solid var(--c-line);
}

.from-label {
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

.from-price {
  font-family: var(--f-serif);
  font-size: var(--fs-xl);
  font-weight: 600;
  color: var(--c-wood-dark);
}

/* 服务页内页导航 */
.anchor-nav {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-4);
}

.anchor-link {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
}
.anchor-link:hover {
  border-color: var(--c-wood);
  background: var(--c-wood-soft);
}

.anchor-icon {
  color: var(--c-wood);
  flex: none;
}

.anchor-text {
  display: flex;
  flex-direction: column;
  line-height: 1.35;
}
.anchor-text strong {
  font-size: var(--fs-sm);
  font-weight: 500;
}
.anchor-text small {
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

/* ==========================================================================
   九、案例
   ========================================================================== */

.case-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-6);
}

.case-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  transition: transform 0.24s var(--ease), box-shadow 0.24s var(--ease);
}

.case-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-2);
}

.case-media {
  position: relative;
  display: block;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: var(--c-surface-alt);
}

.case-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s var(--ease);
}

.case-card:hover .case-media img {
  transform: scale(1.04);
}

.case-media-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  font-size: var(--fs-sm);
  color: var(--c-ink-3);
}

.case-badge {
  position: absolute;
  left: 14px;
  top: 14px;
  padding: 5px 12px;
  background: rgba(255, 255, 255, 0.94);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 500;
  color: var(--c-wood-dark);
}

.case-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: var(--sp-6);
}

.case-name {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-xl);
}

.case-excerpt {
  margin-bottom: var(--sp-5);
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--c-ink-2);
}

.case-facts {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2) var(--sp-5);
  margin-top: auto;
  padding-top: var(--sp-4);
  border-top: 1px solid var(--c-line);
}

.case-facts li {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}
.case-facts .icon {
  color: var(--c-wood);
}

.fact-label {
  color: var(--c-ink-3);
}

.fact-value {
  font-weight: 500;
  color: var(--c-ink);
}

/* 案例详情 */

.case-single-media {
  margin: 0;
  overflow: hidden;
  border-radius: var(--r-lg);
}

.case-single-media img {
  width: 100%;
}

.fact-bar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--sp-4);
  padding: var(--sp-6);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
}

.fact-item {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
}

.fact-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: none;
  background: var(--c-wood-soft);
  border-radius: var(--r-sm);
  color: var(--c-wood-dark);
}

.fact-text {
  display: flex;
  flex-direction: column;
  line-height: 1.4;
}

.case-detail-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: var(--sp-12);
  align-items: start;
}

/* 改造前后对比 */
.compare {
  position: relative;
  overflow: hidden;
  border-radius: var(--r-lg);
  aspect-ratio: 16 / 10;
  background: var(--c-surface-alt);
  user-select: none;
  touch-action: pan-y;
}

.compare-layer {
  position: absolute;
  inset: 0;
}

.compare-layer img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 改造前那层按滑杆位置裁切，露出下面的改造后 */
.compare-layer--before {
  clip-path: inset(0 calc(100% - var(--pos, 50%)) 0 0);
}

.compare-tag {
  position: absolute;
  top: 16px;
  padding: 5px 14px;
  background: rgba(42, 36, 32, 0.78);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 500;
  color: #fff;
  pointer-events: none;
}

.compare-tag--before {
  left: 16px;
}

.compare-tag--after {
  right: 16px;
  background: rgba(176, 122, 69, 0.94);
}

.compare-handle {
  position: absolute;
  top: 50%;
  left: var(--pos, 50%);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 44px;
  height: 44px;
  margin-top: -22px;
  margin-left: -22px;
  background: rgba(255, 255, 255, 0.94);
  border-radius: 50%;
  box-shadow: var(--sh-1);
  color: var(--c-ink-2);
  pointer-events: none;
  z-index: 2;
}

/* 竖直分割线，用超长的伪元素实现，不额外加 DOM */
.compare-handle::before {
  content: "";
  position: absolute;
  top: -50vh;
  bottom: -50vh;
  left: 50%;
  width: 2px;
  margin-left: -1px;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 0 8px rgba(42, 36, 32, 0.25);
  z-index: -1;
}

.compare-slider {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  cursor: ew-resize;
}

.compare-slider input[type="range"] {
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: ew-resize;
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
}

.compare-hint {
  margin: var(--sp-4) 0 0;
  font-size: var(--fs-sm);
  color: var(--c-ink-3);
  text-align: center;
}

/* ==========================================================================
   十、服务保障与流程
   ========================================================================== */

.guarantee-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-5);
}

.guarantee-card {
  padding: var(--sp-6);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
}

.guarantee-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin-bottom: var(--sp-4);
  background: var(--c-green-soft);
  border-radius: var(--r-sm);
  color: var(--c-green);
}

.guarantee-title {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-lg);
  font-family: var(--f-sans);
  font-weight: 500;
}

.guarantee-desc {
  margin: 0;
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--c-ink-2);
}

.flow-list {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--sp-5);
  counter-reset: flow;
}

.flow-item {
  position: relative;
  padding-top: var(--sp-6);
  border-top: 2px solid var(--c-line-strong);
}

.flow-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: -5px;
  width: 8px;
  height: 8px;
  background: var(--c-wood);
  border-radius: 50%;
}

.flow-num {
  display: block;
  margin-bottom: var(--sp-3);
  font-family: var(--f-serif);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--c-wood);
  letter-spacing: 0.06em;
}

.flow-title {
  margin-bottom: var(--sp-2);
  font-size: var(--fs-base);
  font-family: var(--f-sans);
  font-weight: 500;
}

.flow-desc {
  margin: 0;
  font-size: var(--fs-sm);
  line-height: 1.7;
  color: var(--c-ink-2);
}

/* ==========================================================================
   十一、套餐报价
   ========================================================================== */

.service-block + .service-block {
  padding-top: 0;
}

.service-block-head {
  max-width: 760px;
  margin-bottom: var(--sp-10);
}

.service-block-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  margin-bottom: var(--sp-5);
  background: var(--c-wood-soft);
  border-radius: var(--r-md);
  color: var(--c-wood-dark);
}

.service-block-title {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-3xl);
}

.service-block-sub {
  margin-bottom: var(--sp-5);
  font-size: var(--fs-lg);
  color: var(--c-ink-2);
}

.service-points {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3) var(--sp-6);
}

.service-points li {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-sm);
  color: var(--c-ink-2);
}
.service-points .icon {
  color: var(--c-green);
}

.plan-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-6);
  align-items: start;
}

.plan-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: var(--sp-8) var(--sp-6) var(--sp-6);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  transition: transform 0.24s var(--ease), box-shadow 0.24s var(--ease);
}

.plan-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--sh-1);
}

.plan-card--featured {
  border-color: var(--c-wood);
  box-shadow: var(--sh-2);
}

.plan-flag {
  position: absolute;
  top: -13px;
  left: var(--sp-6);
  padding: 4px 14px;
  background: var(--c-wood);
  border-radius: var(--r-pill);
  font-size: var(--fs-xs);
  font-weight: 500;
  color: #fff;
}

.plan-name {
  margin-bottom: var(--sp-4);
  font-size: var(--fs-xl);
}

.plan-price {
  display: flex;
  align-items: baseline;
  gap: 3px;
  margin-bottom: var(--sp-3);
  color: var(--c-wood-dark);
}

.plan-price .currency {
  font-size: var(--fs-base);
  font-weight: 500;
}

/* 英文的写法是「from $4,900 / project」，from 要放在金额前面。
   flex 的 gap 只有 3px，单词与 $ 之间需要再多一点空隙才像正常排版。 */
.plan-price .unit--pre {
  margin-right: 3px;
}

.plan-price .amount {
  font-family: var(--f-serif);
  font-size: var(--fs-2xl);
  font-weight: 600;
  line-height: 1;
}

.plan-price .unit {
  margin-left: 4px;
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

.plan-desc {
  margin-bottom: var(--sp-6);
  padding-bottom: var(--sp-5);
  border-bottom: 1px solid var(--c-line);
  font-size: var(--fs-sm);
  line-height: 1.7;
  color: var(--c-ink-2);
}

.plan-items {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  margin-bottom: var(--sp-8);
  flex: 1;
}

.plan-items li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: var(--fs-sm);
  line-height: 1.65;
}

.plan-items li .icon {
  margin-top: 4px;
  color: var(--c-green);
}

/* 「不含」条目单独标灰，限制条件一眼可见 */
.plan-items li.is-excluded {
  color: var(--c-ink-3);
}

.plan-items li.is-excluded .dash {
  margin-top: 1px;
  color: var(--c-line-strong);
}

/* ==========================================================================
   十二、询盘表单
   ========================================================================== */

.section--cta .cta-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 460px);
  gap: var(--sp-12);
  /* 两栏等高：左栏因此拿到可分配的高度，才能靠 justify-content 竖向居中
     （见下方 .cta-side）。若用默认的 start，左栏高度只有内容那么高，居中无从谈起。 */
  align-items: stretch;
}

/*
 * 左栏内容比右侧表单矮很多（表单约 520px，左栏通常 260px 上下），
 * 顶部对齐会在下方留出一整块空洞 —— 案例详情页尤其明显。
 * 这里让左栏整体在表单高度里竖向居中：空洞变成上下均匀的呼吸，
 * 看起来是有意留白，而不是漏了一块，也不用给页面塞多余内容。
 * 窄屏堆叠时该栏高度等于内容高度，居中不产生任何效果，无需另写断点。
 */
.cta-side {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}

.cta-side .section-title {
  margin-bottom: var(--sp-4);
}

.cta-side .section-sub {
  margin-bottom: 0;
}

.cta-points {
  display: flex;
  flex-direction: column;
  /* 清单保持自然高度：整块由父级居中，不再靠拉伸清单去填空档，
     否则清单会被拉开成稀疏的几行，反而显得松垮。 */
  gap: var(--sp-2);
  margin: var(--sp-6) 0 0;
}

.cta-points li {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: var(--fs-sm);
  color: var(--c-ink-2);
}
.cta-points .icon {
  color: var(--c-green);
}

.cta-phone {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-4);
  margin-top: var(--sp-6);   /* 清单已撑满，这里只留一个固定间距 */
  padding: var(--sp-4) var(--sp-5);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
}

.cta-phone:hover {
  border-color: var(--c-wood);
}

.cta-phone-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: none;
  background: var(--c-wood-soft);
  border-radius: 50%;
  color: var(--c-wood-dark);
}

.cta-phone-text {
  display: flex;
  flex-direction: column;
  line-height: 1.35;
}

.cta-phone-label {
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

.cta-phone-num {
  font-family: var(--f-serif);
  font-size: var(--fs-xl);
  font-weight: 600;
  color: var(--c-ink);
}

.inquiry {
  padding: var(--sp-7);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  box-shadow: var(--sh-1);
}

.inquiry-head {
  margin-bottom: var(--sp-5);
}

.inquiry-title {
  margin-bottom: var(--sp-2);
  font-size: var(--fs-2xl);
}

.inquiry-sub {
  margin: 0;
  font-size: var(--fs-sm);
  line-height: 1.7;
  color: var(--c-ink-2);
}

.inquiry-form {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-4);
}

.form-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.form-field--full {
  grid-column: 1 / -1;
}

.form-field label {
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--c-ink-2);
}

.form-field .req {
  color: var(--c-wood);
}

.form-field input[type="text"],
.form-field input[type="tel"],
.form-field input[type="email"],
.form-field select,
.form-field textarea {
  width: 100%;
  padding: 12px 14px;
  background: var(--c-bg);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--r-sm);
  font-size: var(--fs-sm);
  transition: border-color 0.18s var(--ease), box-shadow 0.18s var(--ease);
}

.form-field textarea {
  resize: vertical;
  min-height: 78px;
  line-height: 1.65;
}

.form-field input::placeholder,
.form-field textarea::placeholder {
  color: #b3a698;
}

.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
  outline: none;
  border-color: var(--c-wood);
  box-shadow: var(--sh-focus);
}

.form-field.has-error input {
  border-color: var(--c-danger);
}

.form-field.has-error label {
  color: var(--c-danger);
}

/* 蜜罐字段：对用户和读屏器都隐藏，只有机器人会填 */
.form-honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

.form-foot {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.form-tip {
  margin: 0;
  font-size: var(--fs-xs);
  line-height: 1.6;
  color: var(--c-ink-3);
}

.form-alert {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin-bottom: var(--sp-5);
  padding: 13px 16px;
  border-radius: var(--r-sm);
  font-size: var(--fs-sm);
  line-height: 1.6;
}

.form-alert--ok {
  background: var(--c-green-soft);
  border: 1px solid #c3d8c8;
  color: #2f4a38;
}
.form-alert--ok .icon {
  color: var(--c-green);
  margin-top: 2px;
}

.form-alert--err {
  background: #fbeeec;
  border: 1px solid #e8c8c2;
  color: #8c352c;
}

/* ==========================================================================
   十三、页脚
   ========================================================================== */

.site-footer {
  padding-top: var(--sp-20);
  background: var(--c-ink);
  color: #e6ddd3;
}

.footer-top {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1.3fr;
  gap: var(--sp-10);
  padding-bottom: var(--sp-12);
}

.footer-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: var(--sp-4);
  color: #fff;
}

.footer-logo .brand-mark {
  color: var(--c-wood);
}

.footer-brand-name {
  font-family: var(--f-serif);
  font-size: var(--fs-lg);
  font-weight: 600;
}

.footer-desc {
  margin-bottom: var(--sp-4);
  font-size: var(--fs-sm);
  line-height: 1.8;
  color: #a99c8f;
}

.footer-hours {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: var(--fs-sm);
  color: #a99c8f;
}

.footer-title {
  margin-bottom: var(--sp-5);
  font-family: var(--f-sans);
  font-size: var(--fs-sm);
  font-weight: 500;
  color: #fff;
}

.footer-links {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}

.footer-links a,
.footer-links span {
  font-size: var(--fs-sm);
  color: #a99c8f;
}

.footer-links a:hover {
  color: var(--c-wood);
}

.footer-links--contact li {
  display: flex;
  align-items: flex-start;
  gap: 9px;
}
.footer-links--contact .icon {
  margin-top: 4px;
  color: var(--c-wood);
  flex: none;
}

.footer-cta {
  margin-top: var(--sp-6);
}

.footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--sp-3);
  padding: var(--sp-6) var(--gutter);
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.copyright {
  margin: 0;
  font-size: var(--fs-xs);
  color: #8b7f73;
}

.copyright .sep {
  margin: 0 8px;
  opacity: 0.5;
}

.footer-note {
  color: #7d7267;
}

.icp a {
  font-size: var(--fs-xs);
  color: #8b7f73;
}

/* 手机端吸底操作条 */
.mobile-bar {
  display: none;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 95;
  gap: 1px;
  padding: 8px 10px calc(8px + env(safe-area-inset-bottom, 0px));
  background: rgba(250, 247, 242, 0.96);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-top: 1px solid var(--c-line);
}

.mobile-bar-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 12px;
  border-radius: var(--r-pill);
  font-size: var(--fs-sm);
  font-weight: 500;
}

.mobile-bar-btn--call {
  background: var(--c-surface-alt);
  border: 1px solid var(--c-line-strong);
  color: var(--c-ink);
}

.mobile-bar-btn--cta {
  background: var(--c-wood);
  color: #fff;
}

/* ==========================================================================
   十四、内页通用
   ========================================================================== */

.page-head {
  padding: calc(var(--section-y) * 0.55) 0 calc(var(--section-y) * 0.35);
  background: var(--c-surface-alt);
  border-bottom: 1px solid var(--c-line);
}

.page-head .page-title {
  font-size: var(--fs-3xl);
}

.page-title {
  margin-bottom: var(--sp-4);
}

.page-lead {
  max-width: 46em;
  margin: 0;
  font-size: var(--fs-lg);
  line-height: 1.8;
  color: var(--c-ink-2);
}

.breadcrumb {
  margin-bottom: var(--sp-5);
}

.breadcrumb ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

.breadcrumb li + li::before {
  content: "/";
  margin-right: 6px;
  color: var(--c-line-strong);
}

.breadcrumb a:hover {
  color: var(--c-wood-dark);
}

/* 正文排版 */
.prose {
  font-size: var(--fs-lg);
  line-height: 1.9;
  color: var(--c-ink-2);
}

.prose > * + * {
  margin-top: var(--sp-5);
}

.prose h2 {
  margin-top: var(--sp-10);
  margin-bottom: var(--sp-4);
  font-size: var(--fs-2xl);
  color: var(--c-ink);
}

.prose h3 {
  margin-top: var(--sp-8);
  margin-bottom: var(--sp-3);
  font-size: var(--fs-xl);
  color: var(--c-ink);
}

.prose p {
  margin: 0;
}

.prose ul,
.prose ol {
  padding-left: 1.3em;
  list-style: revert;
}

.prose li {
  margin-bottom: var(--sp-2);
}

.prose li::marker {
  color: var(--c-wood);
}

.prose strong {
  font-weight: 500;
  color: var(--c-ink);
}

.prose blockquote {
  margin: var(--sp-6) 0;
  padding: var(--sp-5) var(--sp-6);
  background: var(--c-surface-alt);
  border-left: 3px solid var(--c-wood);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
  font-size: var(--fs-base);
}

.prose img {
  border-radius: var(--r-md);
}

.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-sm);
}

.prose th,
.prose td {
  padding: 11px 14px;
  border: 1px solid var(--c-line);
  text-align: left;
}

.prose th {
  background: var(--c-surface-alt);
  font-weight: 500;
  color: var(--c-ink);
}

.prose--center {
  max-width: var(--container-narrow);
  margin: 0 auto;
  text-align: center;
}
.prose--center ul,
.prose--center ol {
  text-align: left;
}

/* 内容 + 侧栏 */
.page-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: var(--sp-16);
  align-items: start;
}

.aside-card {
  position: sticky;
  top: calc(var(--header-h) + 24px);
  padding: var(--sp-7, 28px) var(--sp-6);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
  box-shadow: var(--sh-1);
}

.aside-title {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-xl);
}

.aside-desc {
  margin-bottom: var(--sp-5);
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--c-ink-2);
}

.aside-phone {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  margin-top: var(--sp-5);
  padding-top: var(--sp-5);
  border-top: 1px solid var(--c-line);
  color: var(--c-ink);
}
.aside-phone .icon {
  color: var(--c-wood);
}
.aside-phone span {
  display: flex;
  flex-direction: column;
  line-height: 1.35;
}
.aside-phone small {
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}
.aside-phone strong {
  font-family: var(--f-serif);
  font-size: var(--fs-lg);
  font-weight: 600;
}

.aside-hours {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: var(--sp-5) 0 0;
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

.aside-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: var(--sp-5);
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--c-wood-dark);
}

/* 联系页 */
.contact-layout {
  display: grid;
  grid-template-columns: 460px minmax(0, 1fr);
  gap: var(--sp-12);
  align-items: start;
}

.contact-form-col .inquiry {
  padding: var(--sp-6);
}

.info-card {
  padding: var(--sp-7, 28px) var(--sp-6);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
}

.info-card + .info-card {
  margin-top: var(--sp-5);
}

.info-title {
  margin-bottom: var(--sp-5);
  font-size: var(--fs-xl);
}

.info-list {
  display: flex;
  flex-direction: column;
  gap: var(--sp-5);
}

.info-list li {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-3);
}

.info-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  flex: none;
  background: var(--c-wood-soft);
  border-radius: var(--r-sm);
  color: var(--c-wood-dark);
}

.info-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  line-height: 1.5;
}

.info-label {
  font-size: var(--fs-xs);
  color: var(--c-ink-3);
}

.info-value {
  font-size: var(--fs-base);
  color: var(--c-ink);
}

.info-value--strong {
  font-family: var(--f-serif);
  font-size: var(--fs-xl);
  font-weight: 600;
  color: var(--c-wood-dark);
}

.info-card--note {
  background: var(--c-surface-alt);
}

.note-list {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}

.note-list li {
  position: relative;
  padding-left: 18px;
  font-size: var(--fs-sm);
  line-height: 1.7;
  color: var(--c-ink-2);
}

.note-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 10px;
  width: 6px;
  height: 6px;
  background: var(--c-wood);
  border-radius: 50%;
}

/* FAQ */
.faq-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--sp-6);
}

.faq-item {
  padding: var(--sp-6);
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
}

.faq-q {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-lg);
  font-family: var(--f-sans);
  font-weight: 500;
}

.faq-a {
  margin: 0;
  font-size: var(--fs-sm);
  line-height: 1.8;
  color: var(--c-ink-2);
}

/* 列表卡片（兜底 / 搜索） */
.post-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-6);
}

.post-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-lg);
}

.post-media {
  display: block;
  aspect-ratio: 3 / 2;
  overflow: hidden;
}

.post-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.post-body {
  padding: var(--sp-6);
}

.post-title {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-xl);
}

.post-excerpt {
  margin-bottom: var(--sp-4);
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--c-ink-2);
}

/* 空状态与 404 */
.empty-state,
.error-page {
  max-width: 560px;
  margin: 0 auto;
  padding: var(--sp-12) var(--sp-6);
  text-align: center;
}

.empty-state h2,
.error-title {
  margin-bottom: var(--sp-4);
  font-size: var(--fs-2xl);
}

.empty-state p,
.error-desc {
  margin-bottom: var(--sp-8);
  color: var(--c-ink-2);
}

.empty-actions,
.error-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  justify-content: center;
}

.error-code {
  margin: 0 0 var(--sp-4);
  font-family: var(--f-serif);
  font-size: clamp(64px, 12vw, 112px);
  font-weight: 600;
  line-height: 1;
  color: var(--c-wood);
  opacity: 0.35;
}

.error-search {
  margin: var(--sp-10) 0 0;
}

.error-search-label {
  margin-bottom: var(--sp-3);
  font-size: var(--fs-sm);
  color: var(--c-ink-3);
}

.error-phone {
  margin: var(--sp-8) 0 0;
  font-size: var(--fs-sm);
  color: var(--c-ink-2);
}

.error-phone a {
  font-weight: 500;
  color: var(--c-wood-dark);
}

/* 搜索表单 */
.search-form {
  display: flex;
  gap: var(--sp-2);
  max-width: 420px;
  margin: 0 auto;
  padding: 6px;
  background: var(--c-surface);
  border: 1px solid var(--c-line-strong);
  border-radius: var(--r-pill);
}

.search-field {
  flex: 1;
  padding: 10px 18px;
  background: transparent;
  border: none;
  font-size: var(--fs-sm);
  outline: none;
}

.search-submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  flex: none;
  background: var(--c-wood);
  border: none;
  border-radius: 50%;
  color: #fff;
  cursor: pointer;
  transition: background 0.2s var(--ease);
}
.search-submit:hover {
  background: var(--c-wood-dark);
}

/* 分页 */
.pagination {
  margin-top: var(--sp-12);
}

.pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  justify-content: center;
}

.pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 42px;
  padding: 0 14px;
  background: var(--c-surface);
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  font-size: var(--fs-sm);
}

.pagination .page-numbers:hover {
  border-color: var(--c-wood);
  color: var(--c-wood-dark);
}

.pagination .page-numbers.current {
  background: var(--c-wood);
  border-color: var(--c-wood);
  color: #fff;
}

/* ==========================================================================
   十五、响应式
   ========================================================================== */

/*
 * 901–1180：菜单还放得下，但英文菜单项普遍比中文长
 * （Services & Pricing / Case Studies 就占掉一截），
 * 电话号、CTA 和五个菜单项同时出现会把导航挤成两行。
 * 这一段先收掉电话号、把菜单项间距压紧；抽屉仍然等到 900 才出现。
 */
@media (min-width: 901px) and (max-width: 1180px) {
  .header-phone {
    display: none;
  }

  .nav-list {
    gap: 2px;
  }

  .nav-list a {
    padding: 8px 11px;
  }
}

@media (max-width: 1080px) {
  .service-grid,
  .guarantee-grid,
  .anchor-nav {
    grid-template-columns: repeat(2, 1fr);
  }

  .flow-list {
    grid-template-columns: repeat(3, 1fr);
    row-gap: var(--sp-8);
  }

  .footer-top {
    grid-template-columns: 1fr 1fr;
    row-gap: var(--sp-10);
  }

  .section--cta .cta-inner {
    grid-template-columns: 1fr;
    gap: var(--sp-10);
  }

  .post-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 900px) {
  :root {
    --header-h: 64px;
  }

  .header-phone,
  .header-cta {
    display: none;
  }

  .nav-toggle {
    display: inline-flex;
  }

  /* 导航转为右侧抽屉 */
  .primary-nav {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 100;
    display: flex;
    flex-direction: column;
    width: min(86vw, 340px);
    margin: 0;
    padding: var(--sp-8) var(--sp-6) var(--sp-8);
    overflow-y: auto;
    background: var(--c-surface);
    box-shadow: -12px 0 40px rgba(42, 36, 32, 0.16);
    transform: translateX(102%);
    transition: transform 0.3s var(--ease);
    visibility: hidden;
  }

  body.nav-open .primary-nav {
    transform: translateX(0);
    visibility: visible;
  }

  .nav-list {
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
  }

  .nav-list a {
    padding: 14px 16px;
    border-radius: var(--r-sm);
    font-size: var(--fs-base);
  }

  .nav-drawer-foot {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
    margin-top: auto;
    padding-top: var(--sp-8);
    border-top: 1px solid var(--c-line);
  }

  .nav-drawer-phone {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px;
    font-size: var(--fs-sm);
    font-weight: 500;
    color: var(--c-ink);
  }
  .nav-drawer-phone .icon {
    color: var(--c-wood);
  }

  /* 手机端用吸底条，隐藏侧栏里的重复入口 */
  .mobile-bar {
    display: flex;
  }

  body {
    padding-bottom: 76px;
  }

  .page-layout,
  .case-detail-layout,
  .contact-layout {
    grid-template-columns: 1fr;
    gap: var(--sp-10);
  }

  .contact-form-col {
    order: -1;
  }

  .aside-card {
    position: static;
  }

  .faq-list {
    grid-template-columns: 1fr;
  }

  .case-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .plan-grid {
    grid-template-columns: 1fr;
    gap: var(--sp-8);
    max-width: 520px;
  }

  .service-block-head {
    margin-bottom: var(--sp-8);
  }

  .hero {
    min-height: auto;
    padding: var(--sp-16) 0;
  }

  /* 手机端改为纵向遮罩：文字压在上方，图片从下方透出来 */
  .hero-media::after {
    background: linear-gradient(
      180deg,
      rgba(250, 247, 242, 0.96) 0%,
      rgba(250, 247, 242, 0.92) 52%,
      rgba(250, 247, 242, 0.76) 78%,
      rgba(250, 247, 242, 0.44) 100%
    );
  }

  .hero-sub {
    font-size: var(--fs-base);
  }

  .hero-stats {
    gap: var(--sp-6);
  }

  /* 手机端数据条落在图片上，提示文字要加深一档才够对比度 */
  .hero-stats .stat-label {
    color: var(--c-ink-2);
  }

  .section-head--row {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--sp-5);
  }

  .section-head-link {
    margin-bottom: 0;
  }
}

@media (max-width: 640px) {
  .service-grid,
  .guarantee-grid,
  .anchor-nav,
  .flow-list,
  .case-grid,
  .post-grid,
  .footer-top {
    grid-template-columns: 1fr;
  }

  .form-row {
    grid-template-columns: 1fr;
  }

  .inquiry {
    padding: var(--sp-6) var(--sp-5);
  }

  .hero-actions {
    margin-bottom: var(--sp-8);
  }

  .hero-actions .btn {
    width: 100%;
  }

  .hero-stats {
    gap: var(--sp-5);
  }

  .compare {
    aspect-ratio: 4 / 3;
  }

  .compare-handle {
    width: 38px;
    height: 38px;
    margin-left: -19px;
    margin-top: -19px;
  }

  .fact-bar {
    padding: var(--sp-5);
  }

  .footer-bottom {
    flex-direction: column;
    text-align: center;
  }

  .copyright .sep {
    display: block;
    height: 0;
    overflow: hidden;
    margin: 0;
  }
}

/* ==========================================================================
   十六、可访问性与输出
   ========================================================================== */

/* 尊重系统的减弱动效设置 */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* 打印：去掉导航和吸底条，保留正文 */
@media print {
  .site-header,
  .mobile-bar,
  .nav-backdrop,
  .section--cta,
  .site-footer {
    display: none !important;
  }

  body {
    padding-bottom: 0;
    background: #fff;
  }
}
