/* =========================================================
   wehave.uk 户外平台 · UI 高保真模型 · 共享样式
   设计语言：自然户外风（山野绿主色 + 大地色系辅助）
   说明：纯视觉打桩（Mock），不含任何业务功能
   ========================================================= */

/* ---------- 设计令牌 Design Tokens (FR-016) ---------- */
:root {
  /* 山野绿（深 / 中 / 亮 / 浅 至少 3 明度层次） */
  --green-900: #14351F;
  --green-800: #1B452B;
  --green-700: #215239;
  --green-600: #2D6A4F; /* 主色 primary */
  --green-500: #3E8E68;
  --green-400: #57A87E;
  --green-300: #8CC7A5;
  --green-100: #DCEFDD;
  --green-050: #EFF7EF;

  /* 大地色系 */
  --earth-800: #4A3A26;
  --earth-600: #7A5C36; /* 大地棕 */
  --earth-400: #A98B5F;
  --earth-200: #D9C9A8;
  --earth-100: #EFE7D4;
  --sand-100: #F5F1E6;  /* 沙色浅底 */
  --sand-050: #FBF9F3;   /* 页面背景 */

  /* 强调色（陶土橙：CTA / 提醒） */
  --terra-700: #A34422;
  --terra-600: #C05227;
  --terra-500: #D96C39;
  --terra-100: #FBE7DA;

  /* 中性色（墨绿灰） */
  --ink-900: #1C2B22;
  --ink-700: #33443A;
  --ink-500: #5C6B61;
  --ink-400: #8A978E;
  --line-300: #D8DCD2;
  --line-200: #E7E9E0;

  /* 语义色 */
  --danger: #C0392B;
  --danger-bg: #FCEBE9;
  --warning: #B7791F;
  --warning-bg: #FCF3E3;
  --info: #2C6E8F;
  --info-bg: #E8F2F7;
  --success: #2D6A4F;
  --success-bg: #DCEFDD;

  /* 字体 */
  --font-sans: "Inter", "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei",
    "Segoe UI", system-ui, sans-serif;
  --font-serif: "Georgia", "Songti SC", "SimSun", serif;

  /* 圆角 / 阴影 */
  --r-xl: 18px;
  --r-lg: 14px;
  --r-md: 10px;
  --r-sm: 6px;
  --shadow-sm: 0 1px 3px rgba(28, 43, 34, 0.08);
  --shadow-md: 0 4px 14px rgba(28, 43, 34, 0.10);
  --shadow-lg: 0 12px 32px rgba(28, 43, 34, 0.16);
  --shadow-press: inset 0 2px 4px rgba(0, 0, 0, 0.18);
}

/* ---------- Reset / Base ---------- */
* { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; }
body {
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.65;
  color: var(--ink-900);
  background: var(--sand-050);
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; }
a { color: var(--green-600); text-decoration: none; }
a:hover { color: var(--green-700); }
ul, ol { list-style: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
input, select, textarea { font-family: inherit; font-size: 14px; color: var(--ink-900); }

.container { width: 100%; max-width: 1280px; margin: 0 auto; padding: 0 24px; }

/* ---------- 顶部全局导航 (FR-001) ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(251, 249, 243, 0.92);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line-200);
}
.site-header__inner {
  display: flex; align-items: center; gap: 32px;
  height: 64px;
}
.logo { display: flex; align-items: center; gap: 10px; font-weight: 800; font-size: 19px; color: var(--green-700); letter-spacing: 0.2px; }
.logo svg { display: block; }
.main-nav { display: flex; gap: 6px; flex: 1; }
.main-nav a {
  padding: 8px 16px; border-radius: var(--r-sm);
  color: var(--ink-700); font-weight: 600; font-size: 15px;
  transition: background 0.15s, color 0.15s;
}
.main-nav a:hover { background: var(--green-050); color: var(--green-700); }
.main-nav a.is-active {
  background: var(--green-600); color: #fff;
  box-shadow: var(--shadow-sm);
}
.header-actions { display: flex; align-items: center; gap: 14px; }
.lang-switch {
  display: inline-flex; align-items: center;
  border: 1px solid var(--line-300); border-radius: 999px;
  overflow: hidden; font-size: 13px; font-weight: 600;
}
.lang-switch span { padding: 4px 10px; color: var(--ink-400); }
.lang-switch span.is-on { background: var(--green-600); color: #fff; }
.icon-btn {
  position: relative; width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; color: var(--ink-700);
  transition: background 0.15s;
}
.icon-btn:hover { background: var(--green-050); color: var(--green-700); }
.cart-badge {
  position: absolute; top: -2px; right: -4px;
  min-width: 18px; height: 18px; padding: 0 5px;
  background: var(--terra-600); color: #fff;
  font-size: 11px; font-weight: 700; line-height: 18px;
  border-radius: 999px; text-align: center;
}
.avatar {
  width: 36px; height: 36px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--green-500), var(--earth-600));
  color: #fff; font-weight: 700; font-size: 14px; flex: none;
}
.avatar--lg { width: 72px; height: 72px; font-size: 26px; }

/* ---------- 按钮（含完整状态打桩） ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 10px 22px;
  border-radius: var(--r-md);
  font-size: 15px; font-weight: 700; line-height: 1.2;
  border: 1.5px solid transparent;
  transition: transform 0.12s, box-shadow 0.15s, background 0.15s, color 0.15s, border-color 0.15s;
  user-select: none;
}
.btn--lg { padding: 14px 30px; font-size: 16px; border-radius: var(--r-lg); }
.btn--sm { padding: 6px 14px; font-size: 13px; border-radius: var(--r-sm); }
.btn--block { width: 100%; }

/* 主按钮（登录 / 支付 / 结算 等） */
.btn--primary { background: var(--green-600); color: #fff; box-shadow: var(--shadow-sm); }
.btn--primary:hover,
.btn--primary.is-hover { background: var(--green-700); transform: translateY(-1px); box-shadow: var(--shadow-md); }
.btn--primary:active,
.btn--primary.is-active {
  background: var(--green-800); transform: translateY(0);
  box-shadow: var(--shadow-press); outline: none;
}
.btn--primary:focus-visible { outline: 3px solid var(--green-300); outline-offset: 2px; }
.btn--primary:disabled,
.btn--primary.is-disabled {
  background: var(--green-300); color: rgba(255, 255, 255, 0.9);
  box-shadow: none; cursor: not-allowed; transform: none;
}
.btn--primary.is-loading { background: var(--green-700); color: transparent; cursor: progress; position: relative; }

/* 描边按钮 */
.btn--outline { background: transparent; border-color: var(--green-600); color: var(--green-700); }
.btn--outline:hover, .btn--outline.is-hover { background: var(--green-050); border-color: var(--green-700); }
.btn--outline:active, .btn--outline.is-active { background: var(--green-100); box-shadow: var(--shadow-press); }
.btn--outline:disabled { border-color: var(--line-300); color: var(--ink-400); cursor: not-allowed; }

/* 幽灵按钮 */
.btn--ghost { background: transparent; color: var(--ink-700); }
.btn--ghost:hover { background: var(--line-200); }
.btn--ghost:active { background: var(--line-300); box-shadow: var(--shadow-press); }

/* 陶土橙强调按钮（外链购买等） */
.btn--terra { background: var(--terra-600); color: #fff; box-shadow: var(--shadow-sm); }
.btn--terra:hover, .btn--terra.is-hover { background: var(--terra-700); transform: translateY(-1px); }
.btn--terra:active, .btn--terra.is-active { background: var(--terra-700); box-shadow: var(--shadow-press); }

/* 危险按钮 */
.btn--danger-outline { background: transparent; border-color: var(--danger); color: var(--danger); }
.btn--danger-outline:hover { background: var(--danger-bg); }

/* 加载态打桩（CSS 旋转占位） */
.spinner {
  width: 16px; height: 16px; flex: none;
  border: 2.5px solid rgba(255, 255, 255, 0.35);
  border-top-color: #fff; border-radius: 50%;
  animation: spin 0.7s linear infinite;
}
.btn.is-loading::after {
  content: ""; position: absolute;
  width: 18px; height: 18px; border-radius: 50%;
  border: 2.5px solid rgba(255,255,255,0.35); border-top-color: #fff;
  animation: spin 0.7s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- 徽章 / 标签 ---------- */
.badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 10px; border-radius: 999px;
  font-size: 12px; font-weight: 700; line-height: 1.7;
}
.badge--green { background: var(--green-100); color: var(--green-700); }
.badge--earth { background: var(--earth-100); color: var(--earth-800); }
.badge--terra { background: var(--terra-100); color: var(--terra-700); }
.badge--gray { background: var(--line-200); color: var(--ink-500); }
.badge--warning { background: var(--warning-bg); color: var(--warning); }
.badge--danger { background: var(--danger-bg); color: var(--danger); }
.badge--info { background: var(--info-bg); color: var(--info); }
.badge--success { background: var(--success-bg); color: var(--success); }
.badge--dark { background: var(--ink-900); color: #fff; }

/* 难度徽章（1-5 级） */
.diff { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: 12px; }
.diff i {
  display: inline-flex; gap: 2px;
}
.diff i b { width: 5px; border-radius: 2px; background: var(--line-300); display: block; }
.diff i b:nth-child(1) { height: 6px; }
.diff i b:nth-child(2) { height: 9px; }
.diff i b:nth-child(3) { height: 12px; }
.diff i b:nth-child(4) { height: 15px; }
.diff i b:nth-child(5) { height: 18px; }
.diff--1 { color: var(--green-600); } .diff--1 i b:nth-child(-n+1) { background: var(--green-500); }
.diff--2 { color: var(--green-600); } .diff--2 i b:nth-child(-n+2) { background: var(--green-500); }
.diff--3 { color: var(--warning); } .diff--3 i b:nth-child(-n+3) { background: var(--warning); }
.diff--4 { color: var(--terra-600); } .diff--4 i b:nth-child(-n+4) { background: var(--terra-600); }
.diff--5 { color: var(--danger); } .diff--5 i b { background: var(--danger); }

/* ---------- 筛选芯片 Chips ---------- */
.chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 14px; border-radius: 999px;
  border: 1px solid var(--line-300); background: #fff;
  color: var(--ink-700); font-size: 13px; font-weight: 600;
  transition: all 0.15s; cursor: pointer;
}
.chip:hover { border-color: var(--green-500); color: var(--green-700); background: var(--green-050); }
.chip.is-on { background: var(--green-600); border-color: var(--green-600); color: #fff; }
.chip.is-on:hover { background: var(--green-700); }

/* ---------- 卡片通用 ---------- */
.card {
  background: #fff; border: 1px solid var(--line-200);
  border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
  transition: transform 0.18s, box-shadow 0.18s;
}
.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); }

/* 路线卡片（瀑布流） */
.route-card { overflow: hidden; display: block; color: inherit; margin-bottom: 22px; break-inside: avoid; }
.route-card:hover { color: inherit; }
.route-card__cover { position: relative; overflow: hidden; }
.route-card__cover img { width: 100%; object-fit: cover; transition: transform 0.4s; }
.route-card:hover .route-card__cover img { transform: scale(1.05); }
.route-card__cover .badge { position: absolute; top: 12px; left: 12px; backdrop-filter: blur(4px); }
.route-card__fav {
  position: absolute; top: 10px; right: 10px;
  width: 32px; height: 32px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.88);
  display: flex; align-items: center; justify-content: center;
  color: var(--ink-500); transition: all 0.15s;
}
.route-card__fav:hover { color: var(--terra-600); transform: scale(1.1); }
.route-card__fav.is-on { color: var(--terra-600); }
.route-card__body { padding: 14px 16px 16px; }
.route-card__title { font-size: 16px; font-weight: 800; color: var(--ink-900); line-height: 1.4; margin-bottom: 4px; }
.route-card__meta { display: flex; flex-wrap: wrap; gap: 6px 14px; color: var(--ink-500); font-size: 13px; margin-bottom: 10px; }
.route-card__meta svg { vertical-align: -2px; margin-right: 3px; }
.route-card__stats {
  display: flex; gap: 16px; padding-top: 10px;
  border-top: 1px dashed var(--line-200);
  color: var(--ink-700); font-size: 12.5px;
}
.route-card__stats b { color: var(--green-700); }

/* 装备卡片 */
.gear-card { padding: 14px; }
.gear-card__img { border-radius: var(--r-md); overflow: hidden; background: var(--sand-100); margin-bottom: 12px; position: relative; }
.gear-card__img img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.gear-card__title { font-size: 15px; font-weight: 700; line-height: 1.45; margin-bottom: 6px; color: var(--ink-900); }
.gear-card__price { display: flex; align-items: baseline; gap: 8px; margin-top: 8px; }
.price { color: var(--terra-700); font-weight: 800; font-size: 18px; }
.price small { font-size: 12px; font-weight: 700; }
.price--del { color: var(--ink-400); font-size: 13px; font-weight: 500; text-decoration: line-through; }

/* ---------- 表单 ---------- */
.field { margin-bottom: 18px; }
.field__label { display: block; font-size: 13.5px; font-weight: 700; color: var(--ink-700); margin-bottom: 7px; }
.field__label em { color: var(--terra-600); font-style: normal; margin-left: 3px; }
.input, .select, .textarea {
  width: 100%; padding: 11px 14px;
  border: 1.5px solid var(--line-300); border-radius: var(--r-md);
  background: #fff; outline: none;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.input::placeholder { color: var(--ink-400); }
.input:hover, .select:hover { border-color: var(--green-400); }
.input:focus, .select:focus, .textarea:focus {
  border-color: var(--green-600);
  box-shadow: 0 0 0 3px rgba(45, 106, 79, 0.14);
}
.input:disabled { background: var(--sand-100); color: var(--ink-400); cursor: not-allowed; }
.input--error { border-color: var(--danger); }
.field__hint { font-size: 12.5px; color: var(--ink-400); margin-top: 5px; }
.field__hint--error { color: var(--danger); }
.field__hint--ok { color: var(--green-600); }

/* 复选框 / 单选（打桩视觉） */
.check { display: inline-flex; align-items: center; gap: 9px; cursor: pointer; font-size: 14px; color: var(--ink-700); }
.check input {
  appearance: none; -webkit-appearance: none;
  width: 19px; height: 19px; flex: none;
  border: 2px solid var(--line-300); border-radius: 5px;
  background: #fff; position: relative; cursor: pointer;
  transition: all 0.12s;
}
.check input:hover { border-color: var(--green-500); }
.check input:checked { background: var(--green-600); border-color: var(--green-600); }
.check input:checked::after {
  content: ""; position: absolute; left: 5px; top: 1.5px;
  width: 5px; height: 10px;
  border: solid #fff; border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg);
}
.check input:disabled { background: var(--sand-100); border-color: var(--line-200); cursor: not-allowed; }
.check input:disabled:checked { background: var(--green-300); }

/* 数量步进器（打桩视觉） */
.stepper {
  display: inline-flex; align-items: center;
  border: 1.5px solid var(--line-300); border-radius: var(--r-sm); overflow: hidden;
}
.stepper button {
  width: 32px; height: 32px; font-size: 16px; font-weight: 700;
  color: var(--green-700); background: #fff;
  transition: background 0.12s;
}
.stepper button:hover { background: var(--green-050); }
.stepper button:active { background: var(--green-100); }
.stepper button:disabled { color: var(--ink-400); background: var(--sand-100); cursor: not-allowed; }
.stepper output { width: 44px; text-align: center; font-weight: 700; font-size: 14px; }

/* ---------- Tabs ---------- */
.tabs { display: flex; gap: 4px; border-bottom: 2px solid var(--line-200); }
.tabs a, .tabs button {
  padding: 11px 18px; font-size: 15px; font-weight: 700;
  color: var(--ink-500); border-radius: var(--r-sm) var(--r-sm) 0 0;
  border-bottom: 2.5px solid transparent; margin-bottom: -2px;
  transition: color 0.15s, border-color 0.15s;
}
.tabs a:hover, .tabs button:hover { color: var(--green-700); }
.tabs a.is-active, .tabs button.is-active { color: var(--green-700); border-bottom-color: var(--green-600); }

/* ---------- 表格 ---------- */
.table { width: 100%; border-collapse: collapse; font-size: 14px; }
.table th {
  text-align: left; padding: 12px 14px;
  background: var(--sand-100); color: var(--ink-700);
  font-size: 13px; font-weight: 700; white-space: nowrap;
}
.table td { padding: 13px 14px; border-bottom: 1px solid var(--line-200); vertical-align: middle; }
.table tbody tr { transition: background 0.12s; }
.table tbody tr:hover { background: var(--green-050); }

/* ---------- 骨架屏 (FR-016 / EC-012) ---------- */
.skeleton {
  background: linear-gradient(90deg, var(--line-200) 25%, var(--sand-100) 45%, var(--line-200) 65%);
  background-size: 200% 100%;
  animation: shimmer 1.4s infinite; border-radius: var(--r-sm);
}
@keyframes shimmer { to { background-position: -200% 0; } }

/* ---------- 状态打桩展示条（模型评审用） ---------- */
.demo-strip {
  margin-top: 40px; padding: 22px 24px;
  border: 1.5px dashed var(--earth-400); border-radius: var(--r-lg);
  background: var(--earth-100);
}
.demo-strip h4 { font-size: 13px; letter-spacing: 1px; color: var(--earth-800); margin-bottom: 14px; }
.demo-row { display: flex; flex-wrap: wrap; gap: 26px; align-items: flex-end; }
.demo-cell { display: flex; flex-direction: column; gap: 8px; align-items: center; }
.demo-cell > span { font-size: 12px; color: var(--ink-500); font-weight: 600; }
.mock-tip {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 700; color: var(--earth-800);
  background: var(--earth-100); border: 1px dashed var(--earth-400);
  padding: 3px 12px; border-radius: 999px;
}

/* ---------- 页脚 ---------- */
.site-footer { background: var(--green-900); color: rgba(255,255,255,0.78); margin-top: 80px; }
.site-footer__inner { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; padding: 56px 0 40px; }
.site-footer h5 { color: #fff; font-size: 14px; margin-bottom: 14px; letter-spacing: 0.5px; }
.site-footer a { color: rgba(255,255,255,0.72); font-size: 13.5px; line-height: 2.1; }
.site-footer a:hover { color: var(--green-300); }
.site-footer__bottom {
  border-top: 1px solid rgba(255,255,255,0.12);
  padding: 18px 0; display: flex; justify-content: space-between;
  font-size: 12.5px; color: rgba(255,255,255,0.5);
}

/* ---------- 响应式 ---------- */
@media (max-width: 1024px) {
  .site-footer__inner { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .container { padding: 0 16px; }
  .main-nav { gap: 0; }
  .site-footer__inner { grid-template-columns: 1fr; gap: 24px; }
  .btn--lg { padding: 13px 22px; font-size: 15px; }
}

/* ---------- 通用工具 ---------- */
.flex { display: flex; }
.between { justify-content: space-between; }
.center { align-items: center; }
.gap-8 { gap: 8px; } .gap-12 { gap: 12px; } .gap-16 { gap: 16px; }
.mt-8 { margin-top: 8px; } .mt-16 { margin-top: 16px; } .mt-24 { margin-top: 24px; }
.text-muted { color: var(--ink-500); }
.text-sm { font-size: 13px; }
.text-xs { font-size: 12px; }
.fw-bold { font-weight: 800; }
