/* ==========================================================================
   v2 新版视觉样式表
   来源：原型/home-pc/index.html <style>
   生成：.workbuddy/tmp/extract_v2_css.py（改样式请改原型后重跑，或在此文件上迭代）
   作用域：所有选择器已加 `.v2 ` 前缀，仅在 layouts/v2.vue 根节点 .v2 内生效，
           与现有 assets/css/main.css 的全局规则（body / a / img / .btn / .tag …）零冲突。
   ========================================================================== */
/* ==========================================================================
   相石森灵 · PC 首页原型  v1.0  2026-09-08
   结构：tokens → 基础 → 导航 → Hero → 演出卡轮播 → 时效双栏 → 匠心小铺 → 森灵文创 → 图文资讯 → 集团横条 → 页脚
   ========================================================================== */
/* ---------- 1. Design tokens ---------- */
.v2 {
  --c-forest:#1d3a26;        /* 深林绿：body 背景 */
  --c-ink:#2f4a35;           /* 主文字：深绿墨 */
  --c-green:#5f7f55;         /* 主色：柔绿（按钮/激活） */
  --c-green-deep:#4c6b45;    /* 主色 hover 深一档 */
  --c-mist:#f2efe5;          /* 米白：内容区底 */
  --c-card:#fffdf8;          /* 卡片白 */
  --c-sub:#79856d;           /* 次级文字：灰绿 */
  --c-line:#e4e0d0;          /* 分隔线 */
  --c-gold:#c9a227;          /* 点缀金 */
  --r-card:16px;
  --r-pill:999px;
  --shadow-card:0 12px 32px rgba(29,58,38,.10);
  --shadow-pop:0 18px 44px rgba(29,58,38,.16);
  --ease:cubic-bezier(.22,.8,.32,1);
  --font-brush:'Ma Shan Zheng','KaiTi','STKaiti',serif;   /* 书法体（在线+本地兜底） */
  --font-sans:'PingFang SC','Microsoft YaHei','Noto Sans SC',sans-serif;
  --wrap-pad:12%;             /* 内容区左右留白（与设计稿栅格一致） */
  /* 宽幅封面统一宽高比：首页 724×254 ≈ 2.85 —— 「近期演出」与「活动」双栏共用，
     保证两栏封面宽度、高度、比例完全一致且左右边缘对齐 */
  --ratio-banner:2.85;
}
/* ---------- 2. 基础重置 ---------- */
.v2 *, .v2 *::before, .v2 *::after {
  box-sizing:border-box;margin:0;padding:0
}
.v2 {
  font-family:var(--font-sans);
  color:var(--c-ink);
  background:var(--c-forest);
  line-height:1.6;
}
.v2 img {
  display:block;max-width:100%
}
.v2 a {
  color:inherit;text-decoration:none
}
.v2 ul, .v2 ol {
  list-style:none
}
.v2 button {
  font:inherit;border:0;background:none;cursor:pointer;color:inherit
}
/* 全站链接文字 hover 下划线；按钮/品牌标识/主导航除外（主导航以专属绿色横条承担下划线反馈，避免双线重叠） */
.v2 a:hover {
  text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px
}
.v2 a.btn:hover, .v2 .nav__brand:hover, .v2 .nav__links a:hover {
  text-decoration:none
}
.v2 ::selection {
  background:var(--c-green);color:#fff
}
.v2 :focus-visible {
  outline:2px solid var(--c-green);outline-offset:3px;border-radius:4px
}
/* 页面容器：浮在深林绿桌面上，顶部圆角露出（同设计稿） */
.v2 .page {
  max-width:1920px;
  margin:0 auto;
  background:var(--c-mist);
  border-radius:24px;
  overflow:hidden;
  position:relative;
}
/* 通用按钮 */
.v2 .btn {
  display:inline-flex;align-items:center;gap:6px;
  background:var(--c-green);color:#fff;
  border-radius:var(--r-pill);
  padding:10px 24px;font-size:14px;letter-spacing:.04em;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),background .3s;
  white-space:nowrap;
}
.v2 .btn:hover {
  background:var(--c-green-deep);transform:translateY(-2px);box-shadow:0 10px 22px rgba(76,107,69,.35)
}
.v2 .btn--lg {
  padding:13px 32px;font-size:15px
}
.v2 .btn--sm {
  padding:8px 20px;font-size:13px
}
.v2 .wrap {
  padding-left:var(--wrap-pad);padding-right:var(--wrap-pad)
}
/* ---------- 3. 导航（悬浮卡片：默认磨砂玻璃，滚动后平滑过渡为实色） ---------- */
.v2 .nav {
  display:flex;align-items:center;gap:30px;
  position:fixed;top:0;left:50%;transform:translateX(-50%);
  z-index:90;                           /* 低于小程序码浮层(100) */
  width:min(calc(100% - 2 * var(--wrap-pad) - 56px),1400px);  /* 磨砂态：比内容区每侧再窄 28px，任何断点都自动与内容对齐 */
  background:rgba(253,252,248,.2);      /* 高透明磨砂 */
  -webkit-backdrop-filter:blur(18px) saturate(1.6);
  backdrop-filter:blur(18px) saturate(1.6);
  border:1px solid rgba(255,255,255,.55);border-top:0;
  border-radius:0 0 33px 33px;          /* 左下/右下完全圆角（=高度一半 66/2）；左上/右上直角，上边缘贴顶 */
  box-shadow:0 12px 32px rgba(29,58,38,.14);
  padding:10px 2.8% 10px 4%;            /* 纤薄：总高 66px（logo 44 + 上下 10 + 边框 2） */
  transition:width .45s var(--ease),background-color .45s var(--ease),box-shadow .45s var(--ease),border-color .45s var(--ease),-webkit-backdrop-filter .45s var(--ease),backdrop-filter .45s var(--ease);
}
.v2 .nav.is-solid {
  /* 滚动态：恢复原本宽度 + 实色 + 阴影加深 */
  width:min(calc(100% - 52px),1868px);
  background:#fdfcf8;
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  border-color:rgba(228,224,208,.9);
  box-shadow:0 14px 36px rgba(29,58,38,.18);
}
.v2 .nav__brand {
  display:flex;align-items:center;gap:12px;flex-shrink:0;min-width:0
}
/* min-width:0：允许在极端窄屏收缩，配合标题省略号兜底 */
.v2 .nav__logo {
  width:44px;height:44px;border-radius:50%;
  object-fit:contain;
  background:var(--c-card);
  padding:5px;box-sizing:border-box
}
.v2 .nav__name {
  display:block;line-height:1.1;font-weight:700;font-size:22px;letter-spacing:.18em;color:var(--c-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
/* 副标题 em 规则已删除 */
.v2 .nav__links {
  display:flex;gap:clamp(20px,2.4vw,40px);margin:0 auto
}
.v2 .nav__links a {
  position:relative;font-size:15px;color:var(--c-ink);
  padding:8px 26px;                     /* 左右加宽：hover 白底明显宽于文字，完整包裹菜单项 */
  letter-spacing:.14em;margin-right:-.14em;   /* 字距更舒展；负 margin 抵消末字后的多余间距，保证文字与下方横条仍居中 */
  border-radius:var(--r-pill);               /* 圆角常驻：避免 hover 时 0→999px 瞬时跳变（方形闪一下） */
  background-color:rgba(255,255,255,0);      /* 预置同形态透明底：背景从 0 平滑升白，无属性切换 */
  transition:color .3s var(--ease),background-color .3s var(--ease);
}
.v2 .nav__links a::after {
  content:'';position:absolute;left:50%;bottom:2px;transform:translateX(-50%) scaleX(0);
  width:20px;height:3px;border-radius:2px;background:var(--c-green);
  transition:transform .3s var(--ease),opacity .3s var(--ease);
}
.v2 .nav__links a:hover {
  color:var(--c-ink);background-color:rgba(255,255,255,.9)
}
.v2 .nav__links a:hover::after {
  transform:translateX(-50%) scaleX(1)
}
/* hover 下划线：绿色横条滑出 */
.v2 .nav__links a.is-active {
  color:var(--c-green);font-weight:600
}
.v2 .nav__links a.is-active::after {
  transform:translateX(-50%) scaleX(1)
}
/* 网页端为纯展示版：无登录、无后台、无交易，因此不设「我的 / 用户 / 搜索」等账户类入口 */
/* ---------- 4. Hero ---------- */
.v2 .hero {
  position:relative;
  /* ① 等比核心：高度 = 容器宽 ÷ (1920/767)，动态计算，不写死像素 → 背景图永远完整、不变形、不裁切
     ② 最大宽度条件：.page 容器 max-width:1920px，视口 ≥1920px 时 hero 宽锁定 1920px
        → 高度恒为 767px，正好等于 hero.png 的原始渲染高度（零裁切、零留白、零拉伸） */
  width:100%;                       /* 必须显式：aspect-ratio + min-height 时，width:auto 会被 Chromium 用 height×ratio 反推成超宽（实测 1280 视口撑到 1402px） */
  aspect-ratio:1920/767;
  /* ③ 内容保底：窄屏等比高度装不下「文案 + 底部演出卡」时抬升容器（此时图仍完整显示在顶部，
        下方由深林绿底色衔接）。与 aspect-ratio 曲线在 ~1306px 处相交，全程连续无跳变 */
  min-height:560px;   /* 内容最小需求：导航避让 96 + 文案 ~130 + 安全间距 + 演出卡 ~150 + 卡底留白；与等比曲线在 1402px 处交汇（均 560px），全程连续无跳变 */
  /* ④ 背景：cover 等比缩放铺满容器 —— 容器变窄时图高恒等于容器高、左右两侧被裁切，
        不留白、不重复、不横向压缩变形。不叠加任何兜底色/渐变（background-color 保持 transparent） */
  background:url('/img/scene-hero.jpg') center/cover no-repeat;
  background-origin:border-box;background-clip:border-box;   /* cover 基于整个 hero 盒子（含 padding 避让区），否则 padding 区会露底 */
  /* ⑤ 文案在「导航卡下方 ↔ 演出卡上方」的可用区间内垂直居中，高度变化后自动跟随、不被遮挡 */
  display:flex;flex-direction:column;justify-content:center;
  padding-top:clamp(96px,6.6vw,100px);     /* 顶部避让悬浮导航卡（高约 66~80px） */
  padding-bottom:clamp(180px,13vw,200px);  /* 底部避让演出卡（showcase 绝对定位贴底；窄屏卡会因文字换行增高至 ~200px） */
}
.v2 .hero__copy {
  padding-left:6.8%;   /* 顶部避让统一由 .hero 的 padding-top 承担 */
  color:#fff;
  text-shadow:0 2px 22px rgba(20,40,24,.45);
}
.v2 .hero__title {
  font-family:var(--font-brush);
  font-weight:400;
  font-size:clamp(38px,3.7vw,70px);
  line-height:1.22;
  letter-spacing:.04em;
  animation:rise .9s var(--ease) both;
}
.v2 .hero__sub {
  margin-top:10px;
  font-size:clamp(12px,.85vw,16px);
  letter-spacing:.24em;
  opacity:.92;
  animation:rise .9s var(--ease) .15s both;
}
.v2 .hero__aside {
  position:absolute;right:6.8%;top:50%;transform:translateY(-50%);   /* 脱流 + 垂直居中，不再用负 margin 上提 */
  font-family:var(--font-brush);
  font-size:clamp(14px,1.05vw,20px);
  color:#fff;line-height:1.7;letter-spacing:.1em;
  text-shadow:0 2px 14px rgba(20,40,24,.6);
  text-align:right;
}
.v2 .hero__aside svg {
  width:1em;height:1em;vertical-align:-.12em;margin-left:2px
}
/* Hero 装饰叶 */
.v2 .hero__leaf {
  position:absolute;pointer-events:none;animation:sway 6s ease-in-out infinite
}
.v2 .hero__leaf--a {
  bottom:34%;right:2.2%;width:clamp(40px,3.4vw,66px);transform:rotate(24deg)
}
.v2 .hero__leaf--b {
  bottom:8%;left:38%;width:clamp(26px,2vw,40px);transform:rotate(-30deg);opacity:.85
}
/* ---------- 5. 下一场演出卡（轮播） ---------- */
.v2 .showcase {
  position:absolute;left:0;right:0;bottom:0;
  display:flex;justify-content:space-between;align-items:flex-end;
  z-index:3;
}
.v2 .show-card {
  display:flex;align-items:center;gap:clamp(12px,1.1vw,20px);
  width:min(45vw,760px);   /* 相对页宽 44.8%（参考图比例），而非 flex 容器内容宽 */
  background:var(--c-card);
  border-radius:var(--r-card);
  box-shadow:var(--shadow-pop);
  padding:clamp(12px,1vw,18px) clamp(14px,1.2vw,22px);
  margin-bottom:26px;
  transition:opacity .35s ease,transform .35s var(--ease);
}
.v2 .show-card.is-fading {
  opacity:0;transform:translateY(8px)
}
.v2 .show-card__poster--ph {
  background:linear-gradient(135deg,#7a9b6d,#4c6b45)
}
.v2 .show-card__poster {
  width:clamp(84px,6.6vw,122px);aspect-ratio:4/3;
  border-radius:10px;object-fit:cover;flex-shrink:0;
}
.v2 .show-card__body {
  flex:1;min-width:0
}
.v2 .show-card .tag {
  display:inline-block;background:var(--c-green);color:#fff;
  font-size:11px;letter-spacing:.08em;
  padding:2px 10px;border-radius:var(--r-pill);
}
.v2 .show-card__body h2 {
  margin-top:6px;font-size:clamp(16px,1.05vw,20px);font-weight:700;color:var(--c-ink);
}
.v2 .show-card__body .desc {
  font-size:clamp(11px,.72vw,13px);color:var(--c-sub);
  margin-top:2px;
  /* 后台真实描述可较长：最多两行，超出省略（原型单行短文案视觉不变） */
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  overflow:hidden;white-space:normal;
}
.v2 .show-card__meta {
  display:flex;flex-wrap:wrap;gap:4px 12px;
  margin-top:7px;font-size:12px;color:var(--c-ink);
}
.v2 .show-card__meta li {
  display:flex;align-items:center;gap:4px;white-space:nowrap
}
.v2 .show-card__meta svg {
  width:12px;height:12px;color:var(--c-green);flex-shrink:0
}
.v2 .show-card > .btn {
  flex-shrink:0
}
/* 轮播控制 */
.v2 .showcase__ctrl {
  display:flex;align-items:center;gap:12px;margin-bottom:8px;color:var(--c-ink)
}
.v2 .showcase__num {
  font-size:13px;color:#243b28;letter-spacing:.1em;font-weight:600;
  text-shadow:0 1px 8px rgba(255,255,255,.8);
}
.v2 .showcase__ctrl button {
  width:34px;height:34px;border-radius:50%;
  background:#fff;border:1px solid var(--c-line);
  display:grid;place-items:center;color:var(--c-sub);font-size:16px;
  transition:all .25s;
}
.v2 .showcase__ctrl button:hover {
  background:var(--c-green);border-color:var(--c-green);color:#fff
}
/* ---------- 6. 时效双栏（近期演出 | 活动） ---------- */
.v2 .quad {
  position:relative;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(22px,2.3vw,40px);
  padding-top:26px;
  padding-bottom:44px;
}
/* 两栏必须等宽：min-width:0 禁止内容（长标题/长描述）把某一列撑宽，
   否则封面宽度不等 ⇒ 「近期演出」「活动」两张图的左右边缘无法对齐 */
.v2 .quad > .col {
  min-width:0;
}
/* 左侧斜排装饰文案 */
.v2 .quad__deco {
  position:absolute;left:3.4%;top:64px;
  transform:rotate(-9deg);
  font-family:var(--font-brush);
  font-size:clamp(17px,1.25vw,24px);
  line-height:1.75;color:var(--c-green-deep);
  pointer-events:none;
}
.v2 .quad__deco small {
  display:block;margin-top:10px;
  font-family:var(--font-sans);font-size:10px;letter-spacing:.3em;
  color:var(--c-sub);text-transform:uppercase;
}
.v2 .col__head {
  display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px
}
.v2 .col__head h3 {
  font-size:clamp(15px,1vw,18px);font-weight:700;letter-spacing:.06em
}
.v2 .col__head a {
  font-size:12px;color:var(--c-sub);transition:color .25s
}
.v2 .col__head a:hover {
  color:var(--c-green)
}
.v2 .col__sub {
  font-size:12px;color:var(--c-sub);margin:-6px 0 12px
}
/* 6.1 近期演出 */
/* 封面容器：与「活动」共用 --ratio-banner（2.85:1），width:100% 锁宽后由 aspect-ratio 定高 */
.v2 .show-mini__poster {
  position:relative;width:100%;aspect-ratio:var(--ratio-banner) / 1;
  border-radius:12px;overflow:hidden;
}
.v2 .show-mini__poster img {
  display:block;width:100%;height:100%;
  object-fit:cover;object-position:center;   /* 等比裁切填充，不拉伸不变形 */
  transition:transform .6s var(--ease)
}
.v2 .show-mini:hover .show-mini__poster img {
  transform:scale(1.05)
}
.v2 .show-mini h4 {
  margin-top:12px;font-size:15px;font-weight:700
}
.v2 .show-mini .tags {
  font-size:11.5px;color:var(--c-sub);margin-top:3px;letter-spacing:.06em;
  /* 后台真实描述可较长：最多两行，超出省略 */
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  overflow:hidden
}
.v2 .show-mini .meta {
  display:flex;align-items:center;gap:5px;
  font-size:12px;color:var(--c-ink);margin-top:6px;
}
.v2 .show-mini .meta svg {
  width:12px;height:12px;color:var(--c-green)
}
.v2 .show-mini .meta--sub {
  color:var(--c-sub)
}
/* 6.2 匠心小铺（独立杂志版块：左图右文，位于时效双栏之后） */
.v2 .shops-feature {
  display:grid;grid-template-columns:1.22fr 1fr;   /* 左 55% / 右 45% */
  gap:clamp(22px,2.4vw,42px);
  align-items:stretch;
  padding-top:clamp(8px,.8vw,14px);
  padding-bottom:clamp(30px,2.8vw,46px);
}
.v2 .shops-feature__img {
  position:relative;display:block;overflow:hidden;
  border-radius:var(--r-card);box-shadow:var(--shadow-card);
  min-height:320px;                                 /* 高度随右栏内容拉伸，图片 cover 裁切 */
}
.v2 .shops-feature__img img {
  width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)
}
.v2 .shops-feature__img:hover img {
  transform:scale(1.04)
}
.v2 .shops-feature__imgtag {
  position:absolute;left:14px;top:14px;z-index:1;
  background:rgba(255,253,248,.94);color:var(--c-ink);
  font-size:11px;letter-spacing:.16em;padding:5px 13px;border-radius:var(--r-pill);
}
.v2 .shops-feature__eyebrow {
  font-size:11px;letter-spacing:.32em;color:var(--c-gold)
}
.v2 .shops-feature__title {
  margin-top:8px;font-family:var(--font-brush);font-weight:400;
  font-size:clamp(26px,2.2vw,38px);line-height:1.2;letter-spacing:.05em;
}
.v2 .shops-feature__sub {
  margin-top:6px;font-size:13px;color:var(--c-sub);letter-spacing:.14em
}
.v2 .shops-feature__desc {
  margin-top:14px;font-size:13.5px;line-height:1.9;color:var(--c-ink);opacity:.86;max-width:34em
}
.v2 .shops-feature__body .shops__list {
  margin-top:18px
}
.v2 .shops-feature__body .btn {
  margin-top:20px
}
.v2 .shops__list {
  display:flex;justify-content:space-between;
  margin-top:14px;
}
.v2 .shops__list li {
  display:flex;flex-direction:column;align-items:center;gap:5px;
  font-size:11px;color:var(--c-ink);white-space:nowrap;
  transition:transform .25s var(--ease);
}
.v2 .shops__list li:hover {
  transform:translateY(-3px)
}
.v2 .shops__list i {
  font-style:normal;font-family:var(--font-brush);
  width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;font-size:15px;
  border:1px solid var(--c-line);background:#fff;
}
.v2 .shops__list li:nth-child(1) i {
  color:#d98a76;border-color:#f0d3ca
}
.v2 .shops__list li:nth-child(2) i {
  color:#8a6240;border-color:#dcc7b2
}
.v2 .shops__list li:nth-child(3) i {
  color:var(--c-green);border-color:#cdd8c4
}
.v2 .shops__list li:nth-child(4) i {
  color:#8b9a7a;border-color:#d4d8c2
}
.v2 .shops__list li:nth-child(5) i {
  color:#b8912e;border-color:#e8dcae
}
.v2 .shops__list li:nth-child(6) i {
  color:#cf8f3f;border-color:#eed7b8
}
/* 品牌圆标 3×2 网格（杂志版块用） */
.v2 .shops__list--grid {
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
}
.v2 .shops__list--grid li {
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 4px 11px;text-align:center;
  font-size:12.5px;
  background:var(--c-card);border:1px solid var(--c-line);border-radius:12px;
}
.v2 .shops__list--grid li:hover {
  transform:translateY(-3px);box-shadow:var(--shadow-card)
}
.v2 .shops__list--grid i {
  width:42px;height:42px;font-size:18px
}
.v2 .shops__list--grid small {
  font-size:10.5px;color:var(--c-sub);letter-spacing:.1em
}
/* 6.3 活动 */
/* 封面容器：与「近期演出」共用同一比例变量，尺寸/圆角/裁切方式完全一致 */
.v2 .acts figure {
  width:100%;aspect-ratio:var(--ratio-banner) / 1;
  border-radius:12px;overflow:hidden
}
.v2 .acts figure img {
  display:block;width:100%;height:100%;
  object-fit:cover;object-position:center;   /* 等比裁切填充，不拉伸不变形 */
  transition:transform .6s var(--ease)
}
.v2 .acts:hover figure img {
  transform:scale(1.04)
}
.v2 .acts p {
  font-size:13px;margin-top:12px
}
.v2 .acts .btn {
  margin-top:12px
}
/* 6.4 森灵选品 */
.v2 .goods {
  display:grid;grid-template-columns:1fr 1fr;gap:14px
}
.v2 .goods figure {
  aspect-ratio:101/97;border-radius:12px;overflow:hidden
}
.v2 .goods img {
  width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)
}
.v2 .goods figure:hover img {
  transform:scale(1.05)
}
.v2 .link-more {
  display:inline-flex;align-items:center;gap:4px;
  margin-top:14px;font-size:13px;color:var(--c-ink);font-weight:600;
  transition:color .25s,gap .25s;
}
.v2 .link-more:hover {
  color:var(--c-green);gap:8px
}
/* 6.4 森灵文创（横向 4 商品，替换原「森灵选品」列） */
.v2 .mall {
  padding-bottom:clamp(30px,2.8vw,46px)
}
.v2 .mall__head {
  align-items:flex-end;margin-bottom:clamp(14px,1.4vw,20px)
}
.v2 .mall__title {
  display:flex;align-items:baseline;gap:14px
}
.v2 .mall__title h3 {
  font-size:clamp(15px,1vw,18px);font-weight:700;letter-spacing:.06em
}
.v2 .mall__title .col__sub {
  margin:0
}
.v2 .mall__grid {
  display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.5vw,24px)
}
.v2 .mall-card {
  display:block;background:var(--c-card);border:1px solid var(--c-line);
  border-radius:var(--r-card);overflow:hidden;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease);
}
.v2 .mall-card:hover {
  transform:translateY(-4px);box-shadow:var(--shadow-card)
}
.v2 .mall-card__img {
  /* 商品图统一 3:4（--goods-ratio 定义在 v2-pages.css 的 .v2 tokens） */
  aspect-ratio:var(--goods-ratio,3/4);overflow:hidden
}
.v2 .mall-card__img img {
  width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)
}
.v2 .mall-card:hover .mall-card__img img {
  transform:scale(1.05)
}
/* 无素材占位：渐变底 + 商品名 + 叶子符号（正式素材就位后换 img） */
.v2 .mall-card__img--ph {
  position:relative;background:linear-gradient(135deg,#dfe7d4,#b9c8a8);
  display:grid;place-items:center;
}
.v2 .mall-card__img--ph2 {
  background:linear-gradient(135deg,#e8e3cd,#cfc49b)
}
.v2 .mall-card__img--ph::after {
  content:attr(data-ph);
  font-family:var(--font-brush);font-size:clamp(17px,1.15vw,22px);
  color:var(--c-green-deep);letter-spacing:.12em;
}
.v2 .mall-card__img--ph2::after {
  content:attr(data-ph)
}
.v2 .mall-card__body {
  padding:clamp(10px,1vw,15px) clamp(12px,1.1vw,16px) clamp(12px,1.1vw,16px)
}
.v2 .mall-card__body h4 {
  margin-top:8px;font-size:15px;font-weight:700
}
.v2 .mall-card__body > p {
  font-size:12px;color:var(--c-sub);margin-top:3px
}
.v2 .mall-card__foot {
  display:flex;align-items:baseline;justify-content:space-between;margin-top:8px
}
.v2 .mall-card__price {
  font-family:var(--font-brush);font-size:17px;color:var(--c-gold);letter-spacing:.03em
}
.v2 .mall-card__go {
  font-size:11px;color:var(--c-sub)
}
/* 6.5 图文资讯 */
.v2 .news {
  padding-bottom:clamp(30px,2.8vw,46px)
}
.v2 .news__grid {
  display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(16px,1.8vw,28px);align-items:stretch
}
.v2 .news-lead {
  position:relative;display:block;border-radius:var(--r-card);overflow:hidden;
  min-height:clamp(240px,22vw,380px);
}
.v2 .news-lead img {
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)
}
.v2 .news-lead:hover img {
  transform:scale(1.04)
}
.v2 .news-lead__txt {
  position:absolute;left:0;right:0;bottom:0;
  padding:60px clamp(16px,1.6vw,26px) clamp(14px,1.4vw,22px);
  background:linear-gradient(transparent,rgba(24,44,30,.82));
  color:#fff;
}
.v2 .news-lead__txt .tag {
  background:rgba(255,255,255,.18);color:#fff;border-color:rgba(255,255,255,.3)
}
.v2 .news-lead__txt h4 {
  margin-top:10px;font-family:var(--font-brush);font-weight:400;font-size:clamp(19px,1.5vw,27px);letter-spacing:.03em
}
.v2 .news-lead__txt > p {
  margin-top:8px;font-size:clamp(12px,.78vw,13.5px);opacity:.9;max-width:46em
}
.v2 .news-lead__date {
  margin-top:8px;font-size:11.5px;opacity:.72;letter-spacing:.06em
}
.v2 .news-list {
  display:grid;grid-auto-rows:1fr;gap:clamp(12px,1.2vw,16px)
}
.v2 .news-item {
  display:flex;align-items:center;gap:14px;
  background:var(--c-card);border:1px solid var(--c-line);border-radius:14px;
  padding:10px 14px 10px 10px;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease);
}
.v2 .news-item:hover {
  transform:translateX(4px);box-shadow:var(--shadow-card)
}
.v2 .news-item img {
  width:clamp(84px,6.8vw,116px);aspect-ratio:3/2;object-fit:cover;border-radius:9px;flex-shrink:0
}
.v2 .news-item h4 {
  font-size:clamp(13px,.9vw,14.5px);font-weight:700;line-height:1.5
}
.v2 .news-item__meta {
  margin-top:6px;font-size:11.5px;color:var(--c-sub)
}
/* ---------- 7. 集团横条 ---------- */
.v2 .group {
  position:relative;
  display:flex;align-items:center;gap:24px;
  border-radius:22px;
  padding:16px clamp(18px,1.8vw,34px);
  margin-bottom:0;
  /* 左右 margin 跟随内容栅格：任何断点下都与商城/资讯区的内容区精确等宽，不宽不窄 */
  margin-left:var(--wrap-pad);
  margin-right:var(--wrap-pad);
  background:linear-gradient(96deg,#71935f 0%,#8fac7b 55%,#a9bf93 100%);
  box-shadow:var(--shadow-card);
  overflow:hidden;
  color:#fff;
}
.v2 .group::before {
  /* 右段山水背景，渐变 mask 融合 */
  content:'';position:absolute;inset:0;
  background:url('/img/banbgjpg.webp') right center/cover no-repeat;
  -webkit-mask-image:linear-gradient(90deg,transparent 18%,#000 60%);
  mask-image:linear-gradient(90deg,transparent 18%,#000 60%);
  opacity:.9;
}
.v2 .group > * {
  position:relative;z-index:1
}
.v2 .group__txt h3 {
  font-size:clamp(14px,1vw,17px);font-weight:700;letter-spacing:.08em;display:flex;align-items:center;gap:6px
}
.v2 .group__txt p {
  font-size:11.5px;opacity:.85;margin-top:2px;letter-spacing:.14em
}
.v2 .group__biz {
  display:flex;gap:clamp(14px,1.8vw,30px);
  margin-left:auto;
}
.v2 .group__biz li {
  display:flex;align-items:center;gap:8px;
  font-size:13px;text-shadow:0 1px 8px rgba(29,58,38,.4);
}
.v2 .group__biz i {
  font-style:normal;width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.92);color:var(--c-green-deep);
  display:grid;place-items:center;
  box-shadow:0 4px 12px rgba(29,58,38,.18);
}
.v2 .group__biz svg {
  width:18px;height:18px
}
.v2 .group__go {
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  background:rgba(255,255,255,.92);color:var(--c-green-deep);
  display:grid;place-items:center;font-size:16px;font-weight:700;
  transition:transform .3s var(--ease);
}
.v2 .group__go:hover {
  transform:translateX(4px)
}
/* ---------- 8. 页脚 ---------- */
.v2 .foot {
  position:relative;z-index:5;
  margin-top:24px;
  background:var(--c-mist) url('/img/foot.png') bottom center/cover no-repeat;
  padding-top:26px;
  min-height:clamp(210px,16.5vw,320px);
}
.v2 .foot__row {
  display:flex;align-items:center;gap:28px;
  padding-left:13.5%;padding-right:6.8%;
}
.v2 .foot__brand {
  display:flex;align-items:center;gap:10px;flex-shrink:0
}
.v2 .foot__brand img {
  width:44px;height:44px;border-radius:50%;
  object-fit:contain;
  background:var(--c-card);
  padding:5px;box-sizing:border-box
}
.v2 .foot__brand span {
  display:flex;flex-direction:column;line-height:1.25;font-weight:700;font-size:16px;letter-spacing:.12em
}
.v2 .foot__brand em {
  font-style:normal;font-size:9px;font-weight:400;color:var(--c-green);letter-spacing:.26em
}
.v2 .foot__links {
  display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 24px;margin-left:auto;justify-content:flex-end
}
.v2 .foot__links a {
  font-size:13px;color:var(--c-ink);letter-spacing:.14em;transition:color .25s
}
.v2 .foot__links a:hover {
  color:var(--c-green)
}
.v2 .foot__right {
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;flex-shrink:1;min-width:0
}
.v2 .foot__sns {
  display:flex;gap:10px
}
.v2 .foot__sns a {
  width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  transition:transform .25s var(--ease),opacity .25s;
}
.v2 .foot__sns a:hover {
  transform:translateY(-3px);opacity:.85
}
.v2 .foot__sns svg {
  width:16px;height:16px
}
.v2 .sns--wechat {
  background:#6faa52;color:#fff
}
.v2 .sns--douyin {
  background:#222;color:#fff
}
.v2 .sns--bili {
  background:#5b7a9d;color:#fff
}
.v2 .foot__copy {
  font-size:12px;color:var(--c-ink);opacity:.85
}
/* ---------- 9. 动画 ---------- */
@keyframes rise {
  .v2 from {
    opacity:0;transform:translateY(18px)
  }
  .v2 to {
    opacity:1;transform:none
  }
}
@keyframes sway {
0%,100%{rotate:0deg}50%{rotate:6deg}
}
@media (prefers-reduced-motion:reduce) {
  .v2 *, .v2 *::before, .v2 *::after {
    animation:none!important;transition:none!important
  }
}
/* ---------- 9. 小程序码浮层（网页端无交易：购票/报名统一导流小程序） ---------- */
.v2 .mp-modal {
  position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px
}
.v2 .mp-modal[hidden] {
  display:none
}
.v2 .mp-modal__mask {
  position:absolute;inset:0;background:rgba(24,48,32,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade .25s ease
}
.v2 .mp-modal__panel {
  position:relative;width:min(100%,380px);text-align:center;
  background:var(--c-card);border-radius:22px;
  padding:clamp(26px,3vw,34px) clamp(20px,3vw,30px) clamp(22px,2.6vw,28px);
  box-shadow:0 28px 70px rgba(24,48,32,.32);
  animation:pop .32s var(--ease);
}
.v2 .mp-modal__close {
  position:absolute;top:8px;right:10px;width:40px;height:40px;border-radius:50%;
  font-size:24px;line-height:1;color:var(--c-sub);transition:background .2s,color .2s;
}
.v2 .mp-modal__close:hover {
  background:#f0eee2;color:var(--c-ink)
}
.v2 .mp-modal__eyebrow {
  font-size:11px;letter-spacing:.28em;color:var(--c-green)
}
.v2 .mp-modal__title {
  margin-top:6px;font-family:var(--font-brush);font-weight:400;
  font-size:clamp(20px,2vw,26px);color:var(--c-ink);letter-spacing:.06em;
}
.v2 .mp-modal__qr {
  position:relative;width:min(64%,200px);margin:18px auto 14px;aspect-ratio:1;
  background:#fff;border-radius:14px;padding:8px;box-shadow:inset 0 0 0 1px var(--c-line);
}
.v2 .mp-modal__qr svg {
  width:100%;height:100%
}
.v2 .mp-modal__logo {
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:26%;border-radius:50%;background:#fff;padding:2px;box-shadow:0 0 0 3px #fff;
}
.v2 .mp-modal__desc {
  font-size:13px;color:var(--c-sub);line-height:1.8
}
@keyframes fade {
from{opacity:0}to{opacity:1}
}
@keyframes pop {
from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}
}
/* ---------- 9.5 移动端导航（汉堡 + 抽屉） ---------- */
.v2 .nav__toggle {
  display:none;flex-direction:column;gap:5px;padding:10px;background:none;margin-left:auto
}
/* 汉堡贴右：links 隐藏后无元素推挤 */
.v2 .nav__toggle span {
  width:20px;height:2px;border-radius:2px;background:var(--c-ink);transition:transform .25s,opacity .25s
}
.v2 .nav__toggle.is-open span:nth-child(1) {
  transform:translateY(7px) rotate(45deg)
}
.v2 .nav__toggle.is-open span:nth-child(2) {
  opacity:0
}
.v2 .nav__toggle.is-open span:nth-child(3) {
  transform:translateY(-7px) rotate(-45deg)
}
.v2 .nav__drawer {
  display:none;flex-direction:column;background:#fdfcf8;
  margin:0 100px;                   /* 与悬浮导航卡同宽对齐 */
  padding:92px 6.5% 14px;           /* 顶部避让 fixed 导航卡(高约 80px) */
  border:1px solid var(--c-line);border-top:0;
  border-radius:0 0 22px 22px;
}
.v2 .nav__drawer.is-open {
  display:flex;animation:fade .2s ease
}
.v2 .nav__drawer a {
  padding:14px 4px;font-size:16px;color:var(--c-ink);letter-spacing:.14em;
  border-bottom:1px dashed var(--c-line);
}
.v2 .nav__drawer a:last-child {
  border-bottom:0
}
/* ---------- 10. 响应式（PC 优先，向下兜底） ---------- */
@media (max-width:1280px) {
  .v2 {
    --wrap-pad:9%
  }
  .v2 .quad__deco {
    display:none
  }
  .v2 .nav__links {
    gap:18px
  }
}
@media (max-width:1080px) {
  .v2 .quad {
    grid-template-columns:1fr 1fr;gap:24px
  }
  /* 双栏在 1080 仍可并排，仅收窄间距 */
.v2 .show-card {
    width:min(62%,720px)
  }
  /* 标题不再隐藏：改为缩小字号+压缩间距，保证「logo + 相石森灵 + 5 个菜单」在 761~1080 仍放得下 */
.v2 .nav {
    gap:14px
  }
  .v2 .nav__brand {
    gap:8px
  }
  .v2 .nav__name {
    font-size:16px;letter-spacing:.1em
  }
  .v2 .nav__links {
    gap:6px
  }
  .v2 .nav__links a {
    font-size:14px;padding:8px 12px;letter-spacing:.08em;margin-right:-.08em
  }
  /* 文创 4→2 列；资讯图文纵向 */
.v2 .mall__grid {
    grid-template-columns:repeat(2,1fr)
  }
  .v2 .news__grid {
    grid-template-columns:1fr
  }
}
@media (max-width:760px) {
  .v2 {
    --wrap-pad:6%
  }
  /* 导航：链接收进汉堡抽屉 */
.v2 .nav__links {
    display:none
  }
  .v2 .nav__toggle {
    display:flex
  }
  .v2 .nav, .v2 .nav.is-solid {
    width:calc(100% - 80px)
  }
  /* 手机：宽度固定，每侧 40px，不做收窄动画 */
.v2 .nav__brand {
    flex-shrink:1
  }
  /* 空间不足时优先压标题，不挤压汉堡按钮 */
.v2 .nav__logo {
    flex-shrink:0
  }
  /* Logo 图标保持 44px 不压缩，与标题垂直居中 */
.v2 .nav__name {
    font-size:15px;letter-spacing:.06em
  }
  /* 手机端标题再降一档，保证完整可见 */
.v2 .nav__drawer {
    margin:0 40px
  }
  /* 抽屉同步手机端留边，否则 390 视口只剩 190px 宽 */
/* Hero：改为文档流自适应，演出卡脱离绝对定位（45vw 在窄屏不可用） */
.v2 .hero {
    height:auto;aspect-ratio:auto;min-height:0;padding-bottom:26px
  }
  /* 手机：解除等比约束，高度由内容撑开（演出卡已回到文档流） */
.v2 .hero__title {
    font-size:clamp(30px,9.2vw,44px)
  }
  .v2 .hero__sub {
    font-size:12px;letter-spacing:.16em
  }
  .v2 .hero__aside {
    display:none
  }
  .v2 .hero__leaf--a {
    display:none
  }
  .v2 .showcase {
    position:static;display:flex;flex-direction:column;align-items:stretch;gap:12px;margin-top:22px
  }
  .v2 .show-card {
    width:100%;margin-bottom:0;flex-wrap:wrap;padding:14px
  }
  .v2 .show-card__poster {
    width:96px
  }
  .v2 .show-card__body {
    min-width:calc(100% - 124px)
  }
  .v2 .show-card .desc {
    white-space:normal
  }
  .v2 .show-card > .btn {
    width:100%;justify-content:center;min-height:44px
  }
  .v2 .showcase__ctrl {
    display:none
  }
  /* 双栏 → 单列；匠心小铺纵向堆叠（图上文下），品牌圆标保持 3×2 */
.v2 .quad {
    grid-template-columns:1fr;row-gap:32px;padding-bottom:32px
  }
  .v2 .shops-feature {
    grid-template-columns:1fr;gap:20px
  }
  .v2 .shops-feature__img {
    min-height:0;aspect-ratio:16/10
  }
  .v2 .shops-feature__desc {
    max-width:none
  }
  /* 森灵文创：横滑卡片（保持"横向展示"语义），两卡 peek */
.v2 .mall__grid {
    display:flex;overflow-x:auto;gap:12px;
    scroll-snap-type:x mandatory;
    margin:0 calc(var(--wrap-pad) * -1);padding:4px var(--wrap-pad) 12px;
  }
  .v2 .mall__grid::-webkit-scrollbar {
    display:none
  }
  .v2 .mall-card {
    flex:0 0 46%;scroll-snap-align:start
  }
  /* 图文资讯：大卡缩短、小卡紧凑 */
.v2 .news-lead {
    min-height:230px
  }
  .v2 .news-lead__txt h4 {
    font-size:19px
  }
  .v2 .news-item img {
    width:92px
  }
  .v2 .news-item h4 {
    font-size:13px
  }
  /* 集团横条：纵向堆叠，仅留图标 */
.v2 .group {
    flex-wrap:wrap;gap:12px;padding:14px 16px
  }
  .v2 .group__biz {
    width:100%;margin-left:0;justify-content:space-between;flex-wrap:wrap;gap:10px
  }
  .v2 .group__biz li span {
    display:none
  }
  .v2 .group__go {
    display:none
  }
  /* 页脚 */
.v2 .foot {
    padding-top:20px;min-height:190px
  }
  .v2 .foot__row {
    flex-wrap:wrap;gap:16px;padding-left:6%;padding-right:6%
  }
  .v2 .foot__links {
    order:3;width:100%;justify-content:flex-start;flex-wrap:wrap;margin:0;gap:14px
  }
  .v2 .foot__right {
    flex-wrap:wrap;gap:12px
  }
  .v2 .foot__copy {
    font-size:11px
  }
  /* 触控目标 ≥44px */
.v2 .btn {
    min-height:44px;padding:11px 22px
  }
  .v2 .mp-modal__qr {
    width:min(72%,220px)
  }
}

/* ==========================================================================
   页脚排版系统（追加；原型内无社交带与版权行结构，且原 .foot__row 内边距不对称）
   间距节奏 8/12/16/24/32；容器统一 var(--wrap-pad)；对比度 --c-ink 8.5:1、--c-green-deep 5.2:1
   ========================================================================== */
.v2 .foot__row,
.v2 .foot__social-in,
.v2 .foot__bottom-in {
  padding-left:var(--wrap-pad);
  padding-right:var(--wrap-pad);
}
.v2 .foot__row {
  padding-bottom:24px
}
.v2 .foot__brand {
  gap:12px;border-radius:8px
}
.v2 .foot__brand span {
  display:block;line-height:1.4;font-weight:700;font-size:16px;letter-spacing:.12em;color:var(--c-ink)
}
.v2 .foot__links a {
  display:inline-flex;align-items:center;min-height:44px;
  font-size:14px;font-weight:500;line-height:1.5;letter-spacing:.08em;
  color:var(--c-ink);
  border-bottom:1px solid transparent;
  transition:color .25s var(--ease),border-color .25s var(--ease);
}
.v2 .foot__links a:hover,
.v2 .foot__links a:focus-visible {
  color:var(--c-green-deep);border-bottom-color:var(--c-green-deep)
}
.v2 .foot__social {
  border-top:1px solid var(--c-line)
}
.v2 .foot__social-in {
  display:flex;align-items:center;gap:24px;flex-wrap:wrap;
  padding-top:16px;padding-bottom:16px
}
.v2 .foot__social-title {
  flex-shrink:0;
  font-size:13px;font-weight:600;line-height:1.5;letter-spacing:.16em;color:var(--c-ink)
}
.v2 .foot__social-more {
  flex-shrink:0;
  display:inline-flex;align-items:center;min-height:32px;
  font-size:13px;font-weight:500;line-height:1.5;letter-spacing:.08em;
  color:var(--c-green-deep);
  border-bottom:1px solid transparent;
  transition:color .25s var(--ease),border-color .25s var(--ease);
}
.v2 .foot__social-more:hover,
.v2 .foot__social-more:focus-visible {
  color:var(--c-ink);border-bottom-color:var(--c-ink)
}
.v2 .foot__bottom {
  border-top:1px solid var(--c-line)
}
.v2 .foot__bottom-in {
  display:flex;align-items:center;justify-content:space-between;
  gap:8px 24px;flex-wrap:wrap;
  padding-top:16px;padding-bottom:24px
}
.v2 .foot__copy {
  font-size:12px;font-weight:400;line-height:1.6;color:var(--c-green-deep)
}
.v2 .foot__badges {
  display:flex;align-items:center;flex-wrap:wrap;gap:8px 24px;margin-left:auto
}
.v2 .foot__badges a {
  display:inline-flex;align-items:center;gap:6px;min-height:32px;
  font-size:12px;font-weight:400;line-height:1.6;color:var(--c-green-deep);
  transition:color .25s var(--ease);
}
.v2 .foot__badges a:hover,
.v2 .foot__badges a:focus-visible {
  color:var(--c-ink)
}
.v2 .foot__badges img {
  width:16px;height:16px;object-fit:contain;display:block
}
.v2 .foot a:focus-visible,
.v2 .v2sns__btn:focus-visible {
  outline:2px solid var(--c-green-deep);outline-offset:3px;border-radius:6px
}
@media (max-width:760px) {
  .v2 .foot {
    padding-top:24px
  }
  .v2 .foot__row {
    flex-wrap:wrap;gap:16px;padding-bottom:16px
  }
  .v2 .foot__links {
    order:3;width:100%;justify-content:flex-end;flex-wrap:wrap;margin-left:auto;gap:0 16px
  }
  .v2 .foot__social-in {
    gap:16px;padding-top:12px;padding-bottom:12px;justify-content:space-between
  }
  .v2 .foot__sns-icons {
    display:none
  }
  .v2 .foot__bottom-in {
    gap:8px 16px;padding-top:12px;padding-bottom:16px
  }
  .v2 .foot__badges {
    gap:8px 16px
  }
  .v2 .foot__badges a,
  .v2 .foot__social-more {
    min-height:44px
  }
}
/* ==========================================================================
   页脚聚拢（追加；用户反馈：宽屏内容太"开"）
   - 三行（brand/社交/版权）统一居中，避免品牌+导航两端分散
   - 「找到我们」社交栏改为竖向堆叠居中：标题 / 图标组 / 全部账号 三层都居中
   - 页脚整体增高（min-height 250-400px + 末行 padding-bottom 72-76px），
     让版权与备案文字上移，不与 foot.png 底部深绿草地边缘重叠
   - 末行（版权/备案）沿用 --c-green-deep 深绿：用户确认白色不合适
   - 移除「找到我们」标题与「全部账号 →」文字链后，社交行只留 6 个平台图标，
     因此覆盖 ≤760px 的 .foot__sns-icons{display:none}，改回 flex 居中，
     否则移动端这一行会是空的
   ========================================================================== */
.v2 .foot {
  min-height:clamp(250px,19vw,400px)
}
.v2 .foot__row {
  justify-content:center;gap:clamp(20px,3vw,40px)
}
.v2 .foot__links {
  justify-content:center;margin-left:0
}
.v2 .foot__social-in {
  flex-direction:column;align-items:center;justify-content:center;
  gap:12px;text-align:center
}
.v2 .foot__sns-icons {
  display:flex;flex-wrap:wrap;justify-content:center;gap:10px
}
.v2 .foot__bottom-in {
  justify-content:center;text-align:center;
  padding-bottom:clamp(72px,6.2vw,76px)
}
/* 页脚两条横线：保留，但宽度收缩到与主题内容同宽（= page 宽 - 2 × --wrap-pad），
   不再横跨整屏。用 ::before 画 1px 线，left/right 各内缩 var(--wrap-pad) */
.v2 .foot__social,
.v2 .foot__bottom {
  border-top:0;position:relative
}
.v2 .foot__social::before,
.v2 .foot__bottom::before {
  content:'';position:absolute;top:0;
  left:var(--wrap-pad);right:var(--wrap-pad);
  height:1px;background:var(--c-line)
}
.v2 .foot__badges {
  margin-left:0
}
.v2 .foot__copy,
.v2 .foot__badges a {
  color:var(--c-green-deep)
}
.v2 .foot__badges a:hover,
.v2 .foot__badges a:focus-visible {
  color:var(--c-ink);text-decoration:underline
}

