/* =========================================================
   FBC 方言中国 · Design System v2  —  "Editorial Red"
   参考语言：近满幅图像 / 超大字号 / 巨大留白 / 黑白灰 + 单一品牌红
   品牌红取自官方 logo：#F93549
   ========================================================= */

/* ---------- Tokens ---------- */
:root{
  /* Color */
  --brand:      #F93549;
  --brand-deep: #F93549;
  --ink:        #0D0D0D;
  --ink-2:      #1C1C1C;
  --muted:      #7A7A76;
  --faint:      #A9A9A4;
  --paper:      #FFFFFF;
  --paper-2:    #F4F4F2;
  --paper-3:    #EDEDEA;
  --line:       rgba(13,13,13,.13);
  --line-soft:  rgba(13,13,13,.07);
  --line-inv:   rgba(255,255,255,.18);

  /* Type */
  --font-display: "HarmonyOS Sans SC","PingFang SC","Microsoft YaHei","HarmonyOS Sans SC","Hiragino Sans GB","Helvetica Neue",Arial,sans-serif;
  --font-body:    "HarmonyOS Sans SC","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Hiragino Sans GB",system-ui,sans-serif;
  --font-latin:   "HarmonyOS Sans SC","Helvetica Neue","Arial Narrow",Arial,sans-serif;

  --t-hero: clamp(2.875rem, 9.4vw, 8.25rem);
  --t-xl:   clamp(2.25rem, 5.4vw, 4.5rem);
  --t-lg:   clamp(1.625rem, 3.2vw, 2.75rem);
  --t-md:   clamp(1.25rem, 1.9vw, 1.75rem);
  --t-lead: clamp(1.125rem, 1.55vw, 1.5rem);
  --t-body: 1.0625rem;
  --t-sm:   .9375rem;
  --t-xs:   .8125rem;
  --t-ov:   .6875rem;

  /* Space */
  --sp-sec: clamp(84px, 12vw, 176px);
  --sp-lg:  clamp(56px, 8vw, 112px);
  --sp-md:  clamp(32px, 4.5vw, 64px);
  --sp-sm:  24px;
  --sp-xs:  14px;
  --gutter: clamp(20px, 4vw, 56px);
  --maxw:   1750px;
  --head-h: 84px;

  /* Motion — Apple 弹簧规范 */
  --ease-critical: cubic-bezier(.4,0,.2,1);       /* 阻尼 1.0 无过冲 */
  --ease-content:  cubic-bezier(.22,1,.36,1);     /* ease-out-quint */
  --ease-spring:   cubic-bezier(.34,1.42,.64,1);  /* 阻尼 ~0.85 */
  --d-fast:.18s; --d-base:.32s; --d-slow:.7s; --d-sheet:.42s;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  font-family:var(--font-body);font-size:var(--t-body);line-height:1.72;color:var(--ink);
  background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit;color:inherit}
::selection{background:var(--brand);color:#fff}

/* ---------- Focus / skip ---------- */
:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.skip-link{position:absolute;left:-9999px;top:0;z-index:300;background:var(--ink);color:#fff;padding:14px 22px;font-size:var(--t-sm)}
.skip-link:focus{left:14px;top:14px}

/* ---------- Typography ---------- */
h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;line-height:1.1;letter-spacing:-.012em}
h1{font-size:var(--t-hero)}
h2{font-size:var(--t-xl);line-height:1.08}
h3{font-size:var(--t-lg);line-height:1.16;letter-spacing:-.01em}
h4{font-size:var(--t-md);line-height:1.3;letter-spacing:0}
p{max-width:64ch}
.lead{font-size:var(--t-lead);line-height:1.55;color:var(--ink-2);max-width:46ch;letter-spacing:-.01em}
.muted{color:var(--muted)}
.brand{color:var(--brand)}
.ov{font-family:var(--font-latin);font-size:var(--t-ov);letter-spacing:.24em;text-transform:uppercase;color:var(--muted);font-weight:500}
.ov .ov-zh{font-family:var(--font-body);font-size:.92em;letter-spacing:.02em;text-transform:none;color:var(--faint);margin-left:.55em;vertical-align:baseline}
.ov-brand{color:var(--brand)}
.rule{height:1px;background:var(--line);border:0;width:100%}

/* 大号数字/序号 */
.idx{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.18em;color:var(--faint);font-weight:500}

/* ---------- Layout ---------- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:var(--sp-sec);position:relative}
.section--tight{padding-top:var(--sp-xs);padding-bottom:var(--sp-lg)}
.section--gray{background:var(--paper-2)}
.section--ink{background:var(--ink);color:#fff}
.section--ink h1,.section--ink h2,.section--ink h3{color:#fff}
.section--ink .lead,.section--ink .muted{color:rgba(255,255,255,.66)}
.split{display:grid;gap:var(--sp-md)}
@media(min-width:920px){
  .split{grid-template-columns:var(--l,1fr) var(--r,1fr);gap:var(--sp-lg);align-items:start}
  .split--lead{--l:.85fr;--r:1.15fr}
  .split--aside{--l:1.4fr;--r:.6fr}
}
.stack{display:grid;gap:var(--sp-sm)}
.stack-lg{display:grid;gap:var(--sp-md)}

/* ---------- Header ---------- */
.site-head{
  position:fixed;top:0;left:0;right:0;z-index:100;height:var(--head-h);
  display:flex;align-items:center;background:rgba(255,255,255,0);
  transition:background var(--d-base) var(--ease-critical),box-shadow var(--d-base) var(--ease-critical),height var(--d-base) var(--ease-critical);
}
.site-head.is-stuck{background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);box-shadow:0 1px 0 var(--line-soft)}
.head-inner{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-sm)}
/* 完整版堆叠 logo（FBC+FINEBRAND 上 / 方言中国 下，宽高比 2413:1542）：加高保证 FBC 字样可读 */
.logo-img{height:40px;width:auto}
@media(min-width:900px){.logo-img{height:48px}}
.nav{display:flex;align-items:center;gap:clamp(18px,2.6vw,40px);
  margin-left:auto;margin-right:clamp(20px,2.6vw,40px)}
.nav a{font-size:var(--t-sm);color:var(--ink-2);position:relative;padding-block:6px;letter-spacing:.02em}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--brand);transform:scaleX(0);transform-origin:left;transition:transform var(--d-base) var(--ease-content)}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}
.nav a[aria-current="page"]{font-weight:500}
.head-cta{
  display:inline-flex;align-items:center;gap:8px;font-size:.8125rem;font-weight:500;letter-spacing:.06em;
  background:var(--ink);color:#fff;padding:12px 24px;border-radius:0;
  transition:transform var(--d-base) var(--ease-spring),background var(--d-fast);
}
.head-cta:hover{background:var(--brand);transform:translateY(-2px)}
.burger{display:none;width:44px;height:44px;align-items:center;justify-content:center;background:none;border:0;cursor:pointer}
.burger span,.burger span::before,.burger span::after{display:block;width:24px;height:2px;background:var(--ink);transition:transform var(--d-base) var(--ease-spring),opacity var(--d-fast)}
.burger span{position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0}
.burger span::before{top:-8px}.burger span::after{top:8px}
body.drawer-open .burger span{transform:rotate(45deg)}
body.drawer-open .burger span::before{transform:translateY(8px) rotate(-90deg)}
body.drawer-open .burger span::after{opacity:0}
@media(max-width:1040px){.nav{display:none}.burger{display:flex}}
@media(max-width:640px){.head-cta{display:none}}

/* 手机端顶部栏高度微调：84px -> 72px（仅 ≤900px，桌面不变） */
@media(max-width:900px){:root{--head-h:72px}}

/* ---------- Mobile sheet ---------- */
.sheet{position:fixed;inset:0;z-index:99;pointer-events:none}
.sheet::before{content:"";position:absolute;inset:0;background:rgba(13,13,13,.42);opacity:0;transition:opacity var(--d-sheet) var(--ease-critical)}
.sheet-panel{
  position:absolute;right:0;top:0;bottom:0;width:min(88vw,400px);background:#fff;
  padding:calc(var(--head-h) + 24px + env(safe-area-inset-top)) var(--gutter) var(--sp-md);
  transform:translateX(100%);transition:transform var(--d-sheet) var(--ease-critical);
  display:flex;flex-direction:column;overflow-y:auto;touch-action:pan-y;
  box-shadow:-24px 0 70px rgba(13,13,13,.16);
}
body.drawer-open .sheet{pointer-events:auto}
body.drawer-open .sheet::before{opacity:1}
body.drawer-open .sheet-panel{transform:translateX(0)}
.sheet-panel a{font-family:var(--font-display);font-weight:500;font-size:1.5rem;padding:16px 0;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.sheet-panel a small{font-family:var(--font-latin);font-size:.625rem;letter-spacing:.22em;color:var(--faint);font-weight:500}
.sheet-foot{margin-top:auto;padding-top:var(--sp-md);font-size:var(--t-sm);color:var(--muted);display:grid;gap:6px}

/* =========================================================
   Hero —— 满幅海报轮播（fold 下拉切换）+ 叠压其上的编辑式大字
   · 切换取参考站首页 banner：effect:"fold" —— 新图自顶部向下
     展开覆盖（1s cubic-bezier(.76,0,.24,1)），一道品牌红刮刀线
     与幕布同步扫过。
   · 文字取参考站「方法」页首屏的活字排版（逐字自版槽下方推入），
     但整块叠压在海报之上；靠「底部重压 + 左侧横压」的双轴渐变，
     保证六张明暗不一的海报上文字都成立。
   ========================================================= */
.hero{
  position:relative;color:#fff;
  height:100svh;min-height:660px;max-height:1100px;
  background:var(--ink);overflow:hidden;isolation:isolate;
  touch-action:pan-y;-webkit-user-select:none;user-select:none;
}
/* 首屏淡入放在文字/控件层，而非 .hero 上：.hero 带 opacity 动画时，
   部分浏览器会把 .hero 变成固定背景的包含块，令 background-attachment:fixed
   的视差失效。 */
.hero-copy,.hero-ui{animation:stage-in .7s var(--ease-content) both}
@supports not (height:100svh){.hero{height:100vh}}
@keyframes stage-in{from{opacity:0}to{opacity:1}}

/* ---- 海报层 ---- */
.hero-track{position:absolute;inset:0;z-index:0}
.slide{position:absolute;inset:0;z-index:0;overflow:hidden;
  -webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0);will-change:clip-path}
.slide.is-prev{z-index:1;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}
.slide.is-active{z-index:2;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);
  -webkit-transition:-webkit-clip-path 1s cubic-bezier(.76,0,.24,1);transition:clip-path 1s cubic-bezier(.76,0,.24,1)}
/* 固定背景：图作为 CSS 背景钉在视口（background-attachment:fixed），
   即参考站首页首屏的滚动形式 —— 向下滚动时，内容从静止的图上滑过。
   注意：承载 fixed 背景的元素自身不可有 transform / filter /
   perspective，否则会生成包含块、固定失效（退化成普通背景）。 */
.slide-bg{position:absolute;inset:0;
  background-repeat:no-repeat;background-position:center center;
  background-size:cover;background-attachment:fixed}
/* 触摸端（iOS Safari 等）对 fixed 背景支持不稳，退回普通背景 */
@media (hover:none),(pointer:coarse){
  .slide-bg{background-attachment:scroll}
}

/* 双轴压暗（恒定层，与海报解耦）：左侧重压衬文字块、顶部轻压衬反白导航。
   六张海报明暗不一，实测最浅的一张（白纸底）在本梯度下
   白字对比度约 3.3:1，满足 WCAG 大字标准。 */
.hero-shade{position:absolute;inset:0;z-index:1;pointer-events:none;background:
  linear-gradient(180deg,rgba(13,13,13,.52) 0%,rgba(13,13,13,.26) 18%,rgba(13,13,13,.20) 45%,rgba(13,13,13,.52) 72%,rgba(13,13,13,.88) 100%),
  linear-gradient(90deg,rgba(13,13,13,.74) 0%,rgba(13,13,13,.46) 38%,rgba(13,13,13,.12) 68%,rgba(13,13,13,0) 100%)}

/* 下拉刮刀线：与幕布同步自上而下扫过 */
.fold-edge{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3;opacity:0}
.fold-edge i{position:absolute;left:0;right:0;top:0;height:100%;
  border-top:1.5px solid var(--brand);transform:translateY(0);
  box-shadow:0 0 18px rgba(249,53,73,.34)}
.slide.is-folding .fold-edge{opacity:1}
.slide.is-folding .fold-edge i{animation:fold-sweep 1s cubic-bezier(.76,0,.24,1) both}
@keyframes fold-sweep{
  0%{transform:translateY(0)}
  99%{transform:translateY(100%)}
  100%{transform:translateY(100%)}
}

/* ---- 叠压在海报上的文字块 ---- */
.hero-copy{position:relative;z-index:4;height:100%;max-width:var(--maxw);margin-inline:auto;
  padding:calc(var(--head-h) + 36px) var(--gutter) calc(clamp(54px,8.6vh,100px) + 70px + 140px);
  display:flex;flex-direction:column;justify-content:flex-end;
  transition:opacity .26s ease}
.hero-title{margin-top:var(--sp-xs);color:#fff;
  font-size:clamp(2.4rem,7.4vw,7rem);letter-spacing:-.03em;
  text-shadow:0 2px 44px rgba(0,0,0,.36)}
.hero-copy .lead{margin-top:clamp(16px,2vw,26px);max-width:48ch;color:rgba(255,255,255,.78);
  text-shadow:0 1px 20px rgba(0,0,0,.42)}

/* ---- 活字：逐字自下方推入版槽 ---- */
/* 行盒上下留出字面容余再裁切，否则 line-height 1.06 会切到汉字 */
/* ---- 文字动效 ----
   两套机制均取自参考站首屏：
   · .mt-*  逐字上推（原站 .fadeInUp i）：每字自下方 120px 上推归位、随位移淡入，
            transition 1s ease-in-out，逐字随机延迟 0.1–0.8s（同原站 getRandomNum(1,8)）。
   · .wp-*  分段擦出（原站 .slideInLeft i b）：按 2–5 字切块、自左向右揭开，.6s ease-out。
            原站靠 width:10%→100% 实现，但 width 变动会触发重排（原站副标题仅一行故无碍），
            多行正文会跳版；此处改用 clip-path，观感一致且零重排。
   两者都不裁切行盒——字在位移中淡入，正是原站的观感。 */
.mt-line{display:block}
.mt-ch{
  display:inline-block;
  opacity:0;transform:translateY(var(--rise,clamp(64px,9.6vw,120px)));
  transition:transform 1s ease-in-out,opacity 1s ease-in-out;
  transition-delay:var(--d,0s);
  will-change:transform,opacity;
}
.is-set .mt-ch{transform:translateY(0);opacity:1}
.mt-ch.is-brand{color:var(--brand)}

.wp-line{display:block}
.wp-ch{
  display:inline-block;white-space:nowrap;
  clip-path:inset(0 100% 0 0);opacity:0;
  transition:clip-path .6s ease-out,opacity .6s ease-out;
  transition-delay:var(--d,0s);
}
.is-set .wp-ch{clip-path:inset(0 0 0 0);opacity:1}

/* ---- 海报切换时文字重演 ----
   一次切换的时序：整块淡出(.26s) -> 禁用过渡并瞬时复位(不可见) -> 恢复过渡并重新入版。
   复位必须在过渡被禁用的状态下完成，否则字会从上一段动画的中途位置起跳，位移被吃掉。 */
.hero-copy.is-out{opacity:0}
.hero-copy.no-anim,.hero-copy.no-anim *{transition:none !important}
/* 整块随入版节奏淡入（数据条一类，无需逐字） */
.js [data-fade]{opacity:0;transform:translateY(20px);
  transition:opacity .8s ease-out,transform .8s ease-out;transition-delay:.92s}
.is-set[data-fade]{opacity:1;transform:none}

/* ---- 舞台控件：左下「序号·主题」 / 右下「刻度·箭头」 / 底部 1px 进度 ---- */
.hero-ui{position:absolute;z-index:5;left:50%;transform:translateX(-50%);
  bottom:clamp(22px,3.4vh,42px);width:100%;max-width:var(--maxw);
  padding-inline:var(--gutter);
  display:flex;align-items:flex-end;justify-content:flex-end;gap:18px}

.stage-ctrl{display:flex;align-items:center;gap:clamp(16px,2.2vw,30px)}
.ticks{display:flex;align-items:center;gap:7px}
.tick{position:relative;width:20px;height:2px;padding:0;border:0;cursor:pointer;
  background:rgba(255,255,255,.34);
  transition:background var(--d-fast),width var(--d-base) var(--ease-content)}
.tick::after{content:"";position:absolute;inset:-15px -5px}
.tick:hover{background:rgba(255,255,255,.72)}
.tick.is-on{width:46px;background:var(--brand)}
/* ---- 极简箭头：细线 chevron ---- */
.hero-arrows{display:flex;align-items:center;gap:8px}
.arrow{
  display:flex;align-items:center;justify-content:center;
  width:36px;height:36px;
  background:none;border:1px solid rgba(255,255,255,.22);
  border-radius:50%;cursor:pointer;
  color:rgba(255,255,255,.72);
  transition:border-color var(--d-fast),color var(--d-fast),transform var(--d-base) var(--ease-spring),
              background var(--d-fast);
  padding:0;
}
.arrow svg{
  width:14px;height:14px;display:block;
  stroke:currentColor;fill:none;
  stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;
}
.arrow:hover{
  color:#fff;border-color:rgba(255,255,255,.55);
  background:rgba(255,255,255,.07);
}
.arrow[data-dir="-1"]:hover{transform:translateX(-2px)}
.arrow[data-dir="1"]:hover{transform:translateX(2px)}
.arrow:disabled{opacity:.2;cursor:default;transform:none;border-color:transparent}

/* ---- 首屏页的导航：悬浮于海报之上，滚出首屏即转白底 ---- */
.hero-page .site-head .logo-light{display:none}
.hero-page .site-head:not(.is-stuck) .logo-dark{display:none}
.hero-page .site-head:not(.is-stuck) .logo-light{display:block}
.hero-page .site-head:not(.is-stuck) .nav a{color:rgba(255,255,255,.86)}
.hero-page .site-head:not(.is-stuck) .nav a:hover{color:#fff}
.hero-page .site-head:not(.is-stuck) .lang__btn{color:rgba(255,255,255,.86)}
.hero-page .site-head:not(.is-stuck) .lang__btn:hover{color:#fff}
.hero-page .site-head:not(.is-stuck) .head-cta{
  background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.32);color:#fff;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.hero-page .site-head:not(.is-stuck) .head-cta:hover{background:#fff;border-color:#fff;color:var(--ink)}
.hero-page .site-head:not(.is-stuck) .burger span,
.hero-page .site-head:not(.is-stuck) .burger span::before,
.hero-page .site-head:not(.is-stuck) .burger span::after{background:#fff}

/* ---- 通用统计条（其它页复用） ---- */
.stat-bar{border-top:1px solid var(--line)}
.stat-bar .wrap{display:flex;gap:clamp(28px,6vw,88px);flex-wrap:wrap;padding-block:clamp(28px,3.6vw,48px)}
.stat-bar .stat strong{font-family:var(--font-display);font-weight:500;font-size:clamp(1.75rem,3.4vw,2.75rem);
  line-height:1;display:block;letter-spacing:-.03em}
.stat-bar .stat span{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;
  color:var(--muted);text-transform:uppercase}

/* 矮屏笔记本（1366×768 一类）：收紧字号与间距，保证一屏放得下 */
@media(max-height:820px) and (min-width:901px){
  .hero-copy{padding-top:calc(var(--head-h) + 20px);padding-bottom:calc(clamp(48px,7.6vh,80px) + 70px + 140px)}
  .hero-title{font-size:clamp(2rem,5.8vw,4.5rem)}
  .hero-copy .lead{font-size:var(--t-sm);max-width:46ch;margin-top:14px}
}

@media(max-width:1180px) and (min-width:901px){
  .hero-title{font-size:clamp(2.4rem,6.6vw,5rem)}
  .hero-copy .lead{max-width:44ch}
}
@media(max-width:900px){
  .hero{height:auto;min-height:100svh;max-height:none}
  .hero-copy{padding:calc(var(--head-h) + 28px + 150px) var(--gutter) calc(clamp(66px,10vh,98px) + 70px + 140px)}
  .hero-title{font-size:clamp(1.875rem,8.6vw,3rem)}
  .hero-copy .lead{font-size:var(--t-sm);max-width:42ch}
  .hero-ui{flex-direction:column;align-items:stretch;gap:12px;bottom:16px}
  .stage-ctrl{justify-content:flex-end}
}
@media(max-width:560px){
  .ticks{gap:5px}
  .tick{width:14px}
  .tick.is-on{width:30px}
}

/* ---------- About hero ----------
   关于页使用首页同源海报与文字入版，但固定为 600px 高度，
   让第一屏成为一个完整的品牌海报，而不是普通内页页头。 */
.about-hero{height:600px;min-height:600px;max-height:600px}
.about-hero .hero-copy{padding:calc(var(--head-h) + 28px) var(--gutter) clamp(42px,6vw,82px);transform:translateY(-10px)}
.about-hero-kicker{color:rgba(255,255,255,.78);margin-bottom:clamp(12px,1.5vw,20px)}
.about-hero .hero-title{max-width:none;font-size:clamp(2rem,5.8vw,5.5rem)}
.about-hero .hero-copy .lead{max-width:48ch}
@media(max-width:900px){
  .about-hero .hero-title{max-width:100%;font-size:clamp(1.65rem,7vw,2.5rem)}
}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;font-size:.8125rem;font-weight:500;
  letter-spacing:.06em;padding:17px 34px;border-radius:0;border:2px solid transparent;cursor:pointer;
  transition:transform var(--d-base) var(--ease-spring),background var(--d-fast),color var(--d-fast),border-color var(--d-fast)}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-deep);border-color:var(--brand-deep);transform:translateY(-2px)}
.btn-dark{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-dark:hover{background:var(--brand);border-color:var(--brand);transform:translateY(-2px)}
.btn-ghost{border-color:var(--line);color:var(--ink);background:none}
.btn-ghost:hover{border-color:var(--ink);transform:translateY(-2px)}
.btn-light{border-color:var(--line-inv);color:#fff}
.btn-light:hover{background:rgba(255,255,255,.12);transform:translateY(-2px)}
.btn .ar{transition:transform var(--d-base) var(--ease-spring)}
.btn:hover .ar{transform:translateX(4px)}
.link-more{display:inline-flex;align-items:center;gap:8px;font-weight:500;font-size:var(--t-sm);letter-spacing:.02em;border-bottom:1.5px solid var(--ink);padding-bottom:3px}
.link-more:hover{border-color:var(--brand);color:var(--brand)}
.link-more .ar{transition:transform var(--d-base) var(--ease-spring)}
.link-more:hover .ar{transform:translateX(4px)}

/* ---------- Section head ---------- */
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--sp-sm);flex-wrap:wrap;margin-bottom:var(--sp-lg)}
.sec-head .ov{display:block;margin-bottom:14px}

/* ---------- Statement ---------- */
/* 首页 STATEMENT 段（品牌不是你说了什么…）：上下留白比通用 .section 收紧约四成，
   用双类 .section.statement-sec 提高特异性，确保覆盖 .section 的 padding-block。 */
.section.statement-sec{padding-block:clamp(48px,7vw,108px)}
.statement{font-family:var(--font-display);font-weight:500;font-size:clamp(1.75rem,4.4vw,3.75rem);line-height:1.18;letter-spacing:-.018em;max-width:24ch}
.statement em{font-style:normal;color:var(--brand)}

/* ---------- Media / Plate ---------- */
.media{position:relative;overflow:hidden;background:var(--paper-2);width:100%}
.media>img{width:100%;height:100%;object-fit:cover}
.media--21x9{aspect-ratio:21/9}
.media--16x9{aspect-ratio:16/9}
.media--4x3{aspect-ratio:4/3}
.media--1x1{aspect-ratio:1/1}
.media--3x4{aspect-ratio:3/4}

/* 文字板：真实项目图到位前，用排版构成作为封面（非渐变占位） */
.plate{position:relative;display:flex;flex-direction:column;justify-content:space-between;
  padding:clamp(20px,2.6vw,38px);overflow:hidden}
.plate .plate-name{font-family:var(--font-display);font-weight:500;line-height:1;letter-spacing:-.022em;
  font-size:clamp(2rem,5vw,4.5rem)}
.plate .plate-cat{font-family:var(--font-latin);font-size:var(--t-ov);letter-spacing:.22em;text-transform:uppercase;font-weight:500}
.plate--ink{background:var(--ink);color:#fff}
.plate--ink .plate-cat{color:rgba(255,255,255,.5)}
.plate--brand{background:var(--brand);color:#fff}
.plate--brand .plate-cat{color:rgba(255,255,255,.7)}
.plate--gray{background:var(--paper-2);color:var(--ink)}
.plate--gray .plate-cat{color:var(--muted)}
.plate--line{background:#fff;color:var(--ink);border:1px solid var(--line)}
.plate--line .plate-cat{color:var(--muted)}
.plate--ink .plate-name span,.plate--brand .plate-name span{opacity:.32}

/* ---------- Index rows (服务 / 案例列表) ---------- */
.rows{border-top:1px solid var(--line)}
.row-item{
  display:grid;gap:var(--sp-xs) var(--sp-md);padding:clamp(24px,3.4vw,44px) 0;
  border-bottom:1px solid var(--line);position:relative;
  transition:padding-left var(--d-base) var(--ease-content),background var(--d-fast);
}
@media(min-width:900px){
  .row-item{grid-template-columns:88px minmax(0,1.05fr) minmax(0,1fr);align-items:baseline}
  .row-item:hover{padding-left:20px}
}
.row-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--brand);transform:scaleY(0);transform-origin:top;transition:transform var(--d-base) var(--ease-content)}
.row-item:hover::before{transform:scaleY(1)}
.row-item h3{font-size:clamp(1.375rem,2.4vw,2.125rem);letter-spacing:-.02em}
.row-item .row-desc{color:var(--muted);font-size:var(--t-sm);max-width:52ch}
.row-item .row-tag{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.row-item:hover h3{color:var(--brand)}

/* ---------- Works grid ---------- */
.works{display:grid;gap:clamp(16px,2vw,28px)}
@media(min-width:760px){.works{grid-template-columns:1fr 1fr}}
.work{display:block;position:relative}
.work .media{transition:transform var(--d-slow) var(--ease-content)}
.work:hover .media{transform:scale(1.015)}
.work-cap{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-sm);padding-top:16px}
.work-cap h3{font-size:clamp(1.25rem,2vw,1.75rem)}
.work-cap .cat{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);white-space:nowrap}
.work-note{color:var(--muted);font-size:var(--t-sm);margin-top:6px;max-width:46ch}
.work.is-hidden{display:none}

/* ---------- Filters ---------- */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:var(--sp-lg)}
.filter{background:none;border:1px solid var(--line);border-radius:0;padding:11px 22px;
  font-size:.8125rem;font-weight:500;letter-spacing:.06em;color:var(--muted);cursor:pointer;
  transition:background var(--d-fast),color var(--d-fast),border-color var(--d-fast),transform var(--d-base) var(--ease-spring)}
.filter:hover{border-color:var(--ink);color:var(--ink);transform:translateY(-2px)}
.filter[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}


/* ---------- Timeline ---------- */
.tl{display:grid}
.tl-item{display:grid;gap:var(--sp-xs) var(--sp-md);padding:clamp(22px,2.8vw,34px) 0;border-top:1px solid var(--line)}
@media(min-width:800px){.tl-item{grid-template-columns:200px minmax(0,1fr)}}
.tl-item .yr{font-family:var(--font-display);font-weight:500;font-size:1.375rem;letter-spacing:-.014em}
.tl-item p{color:var(--muted);font-size:var(--t-sm);max-width:60ch}


/* ---------- Contact ---------- */
.cgrid{display:grid;gap:var(--sp-lg)}
@media(min-width:920px){.cgrid{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}}
.info-row{display:grid;gap:8px var(--sp-sm);padding:13px 0;border-bottom:1px solid var(--line)}
@media(min-width:600px){.info-row{grid-template-columns:120px minmax(0,1fr)}}
.info-row .lb{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);padding-top:4px}
.form{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-sm)}
.fld{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
.fld label{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
/* max-width:100% 必加：<select> 的固有宽度由最长选项决定，英文长选项
   （"Our website / storefront needs an upgrade"）曾把表单一路顶爆到 347px，
   320px 视口整页横向溢出（中文选项短，此前未暴露）。 */
.fld input,.fld textarea,.fld select{
  background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;
  padding:12px 0;font-size:var(--t-body);transition:border-color var(--d-fast);max-width:100%}
.fld input:focus,.fld textarea:focus,.fld select:focus{outline:none;border-color:var(--brand)}
.fld textarea{min-height:110px;resize:vertical}
.form-note{font-size:var(--t-sm);color:var(--muted)}

/* ---------- Contact map ---------- */
.map-sec{background:var(--paper-2);padding-block:clamp(40px,6vw,72px)}
.map-head{margin-bottom:clamp(20px,3vw,32px)}
.map-head h2{font-family:var(--font-display);font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1.18;letter-spacing:-.02em;margin-top:var(--sp-sm)}
/* 压缩：宽屏标题与导语并排，节省纵向空间 */
@media(min-width:920px){
  .map-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-lg)}
  .map-head .lead{max-width:40ch;margin:0}
}
.map-grid{display:grid;gap:var(--sp-lg)}
@media(min-width:920px){.map-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.45fr);align-items:stretch}}
.map-aside{display:flex;flex-direction:column;gap:var(--sp-sm)}
/* map-addr / map-meta 已弃用：联系方式改用 .info-row 卡片，与地图同区呈现 */
.map-open{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;margin-top:auto;font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--brand);border-bottom:1px solid var(--brand);padding-bottom:4px;transition:color var(--d-fast),border-color var(--d-fast)}
.map-open:hover{color:var(--brand-deep);border-color:var(--brand-deep)}
.map-open .ar{transition:transform var(--d-base) var(--ease-spring)}
.map-open:hover .ar{transform:translateX(4px)}
.map-frame{position:relative;border:1px solid var(--line);background:var(--paper)}
.map-frame iframe{display:block;width:100%;height:clamp(280px,30vw,380px);border:0}
#map-canvas{width:100%;height:100%;min-height:clamp(280px,30vw,380px);background:var(--paper-2);z-index:0}
#map-canvas .leaflet-container{font-family:var(--font-body)}
.map-pin-dot{display:block;width:14px;height:14px;border-radius:50%;background:var(--brand);border:2px solid #fff;box-shadow:0 0 0 5px rgba(249,53,73,.22),0 2px 10px rgba(13,13,13,.35)}
#map-canvas .leaflet-popup-content-wrapper{border-radius:0;box-shadow:0 8px 28px rgba(13,13,13,.18)}
#map-canvas .leaflet-popup-content{font-family:var(--font-body);font-size:13px;line-height:1.6;margin:12px 16px}
#map-canvas .leaflet-popup-content strong{font-family:var(--font-display)}
.map-cap{position:absolute;left:0;bottom:0;background:rgba(13,13,13,.82);color:#fff;font-size:var(--t-xs);letter-spacing:.02em;padding:9px 14px;display:flex;align-items:center;gap:9px;max-width:calc(100% - 2px)}
.map-cap::before{content:"";width:8px;height:8px;background:var(--brand);border-radius:50%;flex:none}

/* ---------- CTA band ---------- */
.cta{background:var(--brand);color:#fff;padding:clamp(48px,7vw,96px) 0}
/* 与 .wrap 同构：外盒 1750 居中 + gutter 内边距，内容起点与全站一致。
   单列（<900px）显式 minmax(0,1fr)：隐式 auto 轨道会被子项最小内容宽度顶爆
   （联系页英文表单的 <select> 长选项曾把轨道撑爆 → 320px 视口整页横向溢出）。 */
.cta-inner{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-md)}
@media(min-width:900px){.cta-inner{grid-template-columns:minmax(0,1fr) auto;align-items:center}}
.cta h2{color:#fff;max-width:18ch}
.cta p{color:rgba(255,255,255,.82);max-width:46ch}

/* 联系页：留言表单并入红色 CTA（仅 .cta--form 生效，不污染其他页通用 CTA） */
.cta--form{padding-block:clamp(56px,8vw,110px)}
.cta--form .cta-inner{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-lg);align-items:start}
@media(min-width:900px){.cta--form .cta-inner{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start}}
.cta--form .cta-lead .ov{color:rgba(255,255,255,.7)}
.cta--form .cta-lead h2{color:#fff;margin-top:var(--sp-sm);max-width:20ch}
.cta--form .cta-lead p{color:rgba(255,255,255,.82);margin-top:var(--sp-sm);max-width:34ch}
.cta--form .cta-lead .btn{margin-top:var(--sp-md)}
.form--cta{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-sm);max-width:none}
@media(min-width:640px){.form--cta{grid-template-columns:1fr 1fr;gap:var(--sp-sm) var(--sp-md)}}
.form--cta .fld--full{grid-column:1/-1}
.form--cta .fld label{color:rgba(255,255,255,.72)}
.form--cta .fld input,.form--cta .fld textarea,.form--cta .fld select{
  color:#fff;border-bottom-color:rgba(255,255,255,.32);background:transparent}
.form--cta .fld input::placeholder,.form--cta .fld textarea::placeholder{color:rgba(255,255,255,.5)}
.form--cta .fld input:focus,.form--cta .fld textarea:focus,.form--cta .fld select:focus{border-color:#fff}
/* Chrome 自动填充会给「称呼」「品牌/公司」等字段铺一层浅色底并把字压暗，
   在红底表单上表现为「输入后变白框」。自动填充底色无法用 background 覆盖，
   改用与底色同源的内阴影遮盖，并强制文字/光标为白色。
   超长 transition 让底色来不及显形（须写在 autofill 态上）。 */
.form--cta .fld input:-webkit-autofill,
.form--cta .fld input:-webkit-autofill:hover,
.form--cta .fld input:-webkit-autofill:focus,
.form--cta .fld textarea:-webkit-autofill,
.form--cta .fld select:-webkit-autofill{
  -webkit-text-fill-color:#fff;
  caret-color:#fff;
  -webkit-box-shadow:0 0 0 1000px var(--brand) inset;
  box-shadow:0 0 0 1000px var(--brand) inset;
  transition:background-color 600000s 0s,border-color var(--d-fast);
}
.form--cta .form-note{color:rgba(255,255,255,.6)}
/* 留言表单人机验证：算术题 + 蜜罐（纯静态站，靠这三层挡脚本灌数据） */
.verify{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.verify-q{font-family:var(--font-latin);font-size:1.125rem;font-weight:500;letter-spacing:.04em;color:#fff;white-space:nowrap}
.form--cta .verify input{width:92px;flex:0 0 auto}
.verify-refresh{
  font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.1em;font-weight:400;
  color:rgba(255,255,255,.75);background:transparent;border:1px solid rgba(255,255,255,.4);
  border-radius:0;padding:8px 14px;cursor:pointer;
  transition:color var(--d-fast),border-color var(--d-fast),transform var(--d-fast);
  touch-action:manipulation;
}
.verify-refresh:hover{color:#fff;border-color:#fff}
.verify-refresh:focus-visible{outline:2px solid #fff;outline-offset:2px}
.verify-refresh:active{transform:scale(.96)}
/* 答错：红底上不能用品牌红，改用加粗底线 + 轻微抖动提示 */
.form--cta .verify input.is-bad{border-bottom-width:2px;border-bottom-color:#fff}
@keyframes verify-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.form--cta .verify input.is-bad{animation:verify-shake .3s var(--ease-content)}
/* 蜜罐：真人不可见，填了即判定为机器人 */
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.cta--form .btn-primary{background:#fff;color:var(--brand);border-color:#fff}
.cta--form .btn-primary:hover{background:rgba(255,255,255,.9);border-color:rgba(255,255,255,.9);transform:translateY(-2px)}
/* 手机端：提交按钮满宽，扩大点按区 */
@media(max-width:640px){.form--cta .btn-primary{width:100%;justify-content:center}}

/* ---------- Footer ---------- */
.site-foot{background:var(--ink);color:#fff;padding-block:var(--sp-md) var(--sp-sm);margin-top:0}
.foot-logo{height:60px;width:auto;max-width:220px}
.fgrid{display:grid;gap:var(--sp-md);margin-top:var(--sp-md)}
@media(min-width:860px){.fgrid{grid-template-columns:1.6fr 1fr 1fr 1fr}}
.fgrid h4{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.48);margin-bottom:18px}
.fgrid ul{list-style:none;display:grid;gap:10px}
.fgrid a,.fgrid li{font-size:var(--t-sm);color:rgba(255,255,255,.78)}
.fgrid a:hover{color:var(--brand)}
.foot-bot{margin-top:var(--sp-md);padding-top:var(--sp-sm);border-top:1px solid var(--line-inv);
  display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:var(--t-xs);color:rgba(255,255,255,.42)}
/* ICP 备案号 + 备案图标（链接到工信部备案系统） */
.foot-beian{display:inline-flex;align-items:center;gap:6px;color:inherit;text-decoration:none;touch-action:manipulation}
.foot-beian:hover{color:var(--brand)}
.foot-beian:active{opacity:.7}
.beian-ico{width:15px;height:15px;flex:0 0 auto;color:var(--brand)}

/* GEO：可被引用结论 + FAQ 区块（编辑风，无圆角/渐变/金字） */
.geo-conclusion{margin:clamp(32px,5vw,60px) 0 0;padding-left:20px;border-left:3px solid var(--brand)}
.geo-conclusion .gc-k,.faq .faq-k{display:flex;gap:.6em;align-items:baseline;margin:0 0 14px;font-size:.78rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--brand)}
.geo-conclusion .gc-k span,.faq .faq-k span{font-size:.68rem;letter-spacing:.06em;color:#9a9a9a}
.geo-conclusion blockquote{margin:0;font-size:clamp(1.15rem,2.4vw,1.6rem);line-height:1.62;font-weight:500;color:#0D0D0D}
.geo-conclusion blockquote::before{content:"“";margin-right:.06em;color:var(--brand)}
.faq{margin:clamp(32px,5vw,60px) 0 0}
.faq-item{padding:18px 0;border-top:1px solid rgba(0,0,0,.12)}
.faq-item:last-child{border-bottom:1px solid rgba(0,0,0,.12)}
.faq-item summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:1em;font-weight:500;font-size:1.05rem;touch-action:manipulation}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";color:var(--brand);font-weight:700;font-size:1.2rem;line-height:1}
.faq-item[open] summary::after{content:"–"}
.faq-a{margin-top:12px;max-width:62ch;line-height:1.7;color:#444}

/* ---------- 手机端页尾：白底黑字 + 微信二维码 ---------- */
.foot-desc{font-size:var(--t-sm);color:rgba(255,255,255,.7);max-width:34ch}
.foot-qr{display:none}
@media(max-width:900px){
  .site-foot{background:#fff;color:var(--ink)}
  /* 页尾统一使用原始彩色 Logo，不作反色处理。 */
  .foot-logo{filter:none}
  /* NAVIGATE 与 SERVICES 并排一行；品牌简介与 CONTACT 通栏 */
  .fgrid{grid-template-columns:1fr 1fr;column-gap:20px}
  .fgrid>div:first-child,.fgrid>div:last-child{grid-column:1/-1}
  .fgrid h4{color:rgba(13,13,13,.5)}
  .fgrid a,.fgrid li{color:rgba(13,13,13,.78)}
  .fgrid a:hover{color:var(--brand)}
  .foot-desc{color:rgba(13,13,13,.7)}
  .foot-bot{margin-top:0;border-top-color:var(--line);color:rgba(13,13,13,.45)}
  /* 二维码卡：仅在手机端出现 */
  .foot-qr{display:flex;align-items:center;gap:18px;
    margin-top:var(--sp-md);padding:24px 0;border-top:1px solid var(--line)}
  .foot-qr-img{flex:0 0 auto;width:136px;height:136px;padding:8px;
    background:#fff;border:1px solid var(--line);box-sizing:border-box}
  .foot-qr-ttl{font-size:var(--t-sm);font-weight:500;color:var(--ink);margin-bottom:6px}
  .foot-qr-note{font-size:var(--t-xs);color:var(--muted);line-height:1.75}
}
@media(max-width:400px){
  .foot-qr{gap:14px}
  .foot-qr-img{width:112px;height:112px}
}

/* ---------- 桌面端页尾：logo + 品牌简介居左，导航三列居右并与 logo 顶对齐 ---------- */
@media(min-width:900px){
  .site-foot .wrap{
    display:grid;
    grid-template-columns:1.6fr 1fr 1fr 1fr;
    grid-template-areas:
      "logo nav svc contact"
      "desc nav svc contact";
    align-items:start;
    gap:var(--sp-md) var(--sp-md);
  }
  .foot-logo{grid-area:logo;align-self:start;height:72px;max-width:220px}
  .fgrid{display:contents;gap:0;margin-top:0}
  .fgrid>div:nth-child(1){grid-area:desc}
  .fgrid>div:nth-child(2){grid-area:nav}
  .fgrid>div:nth-child(3){grid-area:svc}
  .fgrid>div:nth-child(4){grid-area:contact}
  .foot-bot{grid-column:1/-1}
}

/* ---------- Page head ---------- */
.page-head{padding-top:calc(var(--head-h) + clamp(48px,8vw,110px));padding-bottom:var(--sp-md)}
.crumb{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--faint);margin-bottom:var(--sp-sm)}
.crumb a:hover{color:var(--brand)}


/* ---------- Reveal ---------- */
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity var(--d-slow) var(--ease-content),transform var(--d-slow) var(--ease-content)}
.reveal.in{opacity:1;transform:none}
.js .mask{clip-path:inset(0 0 100% 0);transition:clip-path 1s var(--ease-content)}
.mask.in{clip-path:inset(0 0 0 0)}

/* ---------- A11y preferences ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important}
  .js .reveal{opacity:1 !important;transform:none !important}
  .js .mask{clip-path:none !important}
  /* 活字不动：直接落版 */
  .mt-ch,.wp-ch{transform:none !important;opacity:1 !important;
    clip-path:none !important;animation:none !important;filter:none !important;
    transition:none !important}
  .slide{transition:none}
  [data-fade]{opacity:1 !important;transform:none !important;transition:none !important}
  /* 固定背景属滚动视差，减弱动效时退回普通背景 */
  .slide-bg{background-attachment:scroll}
  .hero-progress span{transform:scaleX(1)}
}
@media (prefers-reduced-transparency: reduce){
  .site-head.is-stuck{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}
  .hero-panel{background:#FAFAF8;-webkit-backdrop-filter:none;backdrop-filter:none}
  .arrow{background:rgba(13,13,13,.42);-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-contrast: more){
  :root{--muted:#4A4A46;--faint:#6A6A66;--line:rgba(13,13,13,.32)}
}

/* =========================================================
   首页案例模块 · 一行 3 个 + 真图封面 + hover 遮罩层
   图片走 4:3 固定比例裁切；hover 浮出压暗遮罩：
   左上案例名，右下虚拟阅读数（眼）+ 点赞数（赞）。
   ========================================================= */
.works--4{gap:clamp(10px,1vw,14px)}
/* 单列（<560px）必须显式 minmax(0,1fr)：隐式 auto 轨道会被卡片最小内容宽度顶爆——
   英文列表页 .work-cap 是流内 flex 行且 .cat nowrap（"MI BRAND POSITIONING" ≈183px），
   轨道曾被撑到 450px，390px 视口整页横向溢出、burger 被挤出屏幕。
   （首页通屏卡的 caption 是 absolute 叠图，不占流，故此前未暴露。） */
.works.works--4{grid-template-columns:minmax(0,1fr)}
@media(min-width:560px){.works.works--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1040px){.works.works--4{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* hover 遮罩层：纯色墨底 + 底部渐深，标题左对齐，浏览/点赞右下。
   刻意不加纹理/线框/暗角——封面图本身才是主角，遮罩只负责压暗让字可读。 */
.work-ov{
  position:absolute;inset:0;z-index:2;
  display:flex;align-items:flex-end;justify-content:flex-start;
  padding:clamp(16px,1.6vw,24px);
  opacity:0;transition:opacity .3s ease;
  background:linear-gradient(180deg,rgba(13,13,13,.28) 0%,rgba(13,13,13,.62) 55%,rgba(13,13,13,.9) 100%);
}
.work:hover .work-ov,.work:focus-visible .work-ov{opacity:1}
.wo-name{font-family:var(--font-display);font-weight:500;color:#fff;
  font-size:clamp(1.25rem,1.6vw,1.625rem);line-height:1.25;letter-spacing:-.01em;
  text-align:left;padding-bottom:clamp(26px,2.6vw,38px)}
.wo-stats{position:absolute;right:clamp(16px,1.6vw,24px);bottom:clamp(14px,1.4vw,20px);
  display:flex;gap:16px}
.wo-n{display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-latin);font-weight:400;color:rgba(255,255,255,.86);
  font-size:.8125rem;letter-spacing:.04em}
/* 数字等宽，避免悬停时数字跳动导致布局抖动 */
.wo-n b{font-weight:500;font-variant-numeric:tabular-nums}
.wo-n svg{width:15px;height:15px;fill:none;stroke:rgba(255,255,255,.82);
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* 图片独立缩放：容器 scale 会让 cover 裁切同步位移，观感发飘 */
.work .media>img{transition:transform var(--d-slow) var(--ease-content)}
.work:hover .media>img{transform:scale(1.045)}
.works--4 .work:hover .media{transform:none}

/* 卡片文字：一行 4 个时列宽仅约 300px，字号与行距需相应收紧 */
.works--4 .work-cap{margin-top:clamp(12px,1.2vw,18px);padding-top:clamp(11px,1vw,14px);
  border-top:1px solid var(--line)}
.works--4 .work-cap h3{font-size:clamp(1.0625rem,1.3vw,1.25rem);letter-spacing:-.008em}
.works--4 .work-cap .cat{font-size:var(--t-ov);letter-spacing:.14em}
.works--4 .work-note{margin-top:5px;line-height:1.6;max-width:none;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.works--4 .work:hover .work-cap h3{color:var(--brand)}
.works--4 .work:focus-visible{outline-offset:6px}

/* =========================================================
   首页「精选案例」通屏模块
   标题区仍走 .wrap 与全站对齐；卡片行突破 maxw 限宽、真正铺满视口，
   桌面一行 3 个且卡片之间保留 5px 细缝（浅灰分隔线），仅在模块两端保留 gutter。
   ========================================================= */
/* 上下留白统一由这里提供（覆盖 .section 的 var(--sp-sec)），
   标题区与卡片行需要更紧的呼吸感，故比通用 section 略小；勿在其他层再加 padding。 */
.works-sec--bleed{padding-inline:0;padding-block:clamp(52px,6.5vw,104px);background:var(--paper)}
.works-full{width:100%}
/* 首页「精选案例」标题缩小为通用 h2（--t-xl）的一半；#works 仅存在于中英文首页，故不影响其它页 */
#works .sec-head h2{font-size:clamp(1.125rem,2.7vw,2.25rem)}
/* 首页案例卡画面比例 4/3 → 16/10（按用户标注蓝框实测 632×400 ≈ 1.58:1 取标准 16:10）。
   源图均为 1200×900 标准 4:3，故需 height:100% + object-fit:cover 由浏览器居中裁切，
   否则会被下面的 .works--4 .media--4x3 img{height:auto} 顶对齐裁掉底部。 */
#works .work .media--4x3{aspect-ratio:16/10}
@media(min-width:1040px){#works .works--4 .media--4x3 img{height:100%;max-height:none}}
/* 卡片行：全出血容器，两端留出与正文一致的视觉边距 */
.works-full-grid{width:100%}

@media(min-width:1281px){
  /* 超宽屏一行 3 个：卡片突破 1750px 限宽，视觉上更接近通屏海报 */

  .works.works--4.works--bleed{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  .works-full{padding-inline:0}
  .works-full-grid{padding-inline:var(--gutter)}
}
@media(min-width:901px) and (max-width:1280px){

  .works.works--4.works--bleed{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  .works-full{padding-inline:0}
  .works-full-grid{padding-inline:var(--gutter)}
}
@media(min-width:561px) and (max-width:900px){
 
  .works.works--4.works--bleed{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
  .works-full{padding-inline:0}
  .works-full-grid{padding-inline:var(--gutter)}
}
@media(max-width:560px){
 
  .works.works--4.works--bleed{grid-template-columns:1fr;gap:5px}
  .works-full{padding-inline:0}
  .works-full-grid{padding-inline:var(--gutter)}
}
/* ---------- 无缝拼版下的卡片排版 ----------
   零缝隙、无投影、无边线；案例名 / 服务类型 / 说明**压在图片内部左下角**，
   常显可读；悬停时图片轻放大、底部压暗加深、说明文字上移一行。

   ⚠️ 特异性说明：基础规则 `.works.works--4`（0,2,0）在 @1040px 设 3 列，
   单类 `.works--bleed`（0,1,0）会被它压过。故列规则一律用
   `.works.works--4.works--bleed`（0,3,0）确保覆盖。 */
.works.works--4.works--bleed{background:#F4F4F2;box-shadow:none}
.works.works--4.works--bleed .work{background:var(--paper);box-shadow:none}

/* ---- 文字层：叠在图片内部左下角 ----
   结构约定：文字层 .work-cap 是 .media 的**子元素**（render.js 输出即如此，
   main.js 的 caseMedia 对静态兜底卡也会搬入），故定位参照明确、不会溢出。
   z-index:3 高于压暗层 .media::after(2)，文字始终清晰。 */
.works--bleed .media>.work-cap{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  display:block;margin:0;border-top:0;
  padding:clamp(28px,3.2vw,46px) clamp(14px,1.3vw,20px) clamp(14px,1.3vw,20px);
  transition:transform .45s var(--ease-content);
}
.works--bleed .media>.work-cap::after{content:none}
/* 标题与分类同行：案例名在左，服务类型紧随其后（白色，压在图上） */
.works--bleed .media>.work-cap h3{
  display:inline;font-size:clamp(1.0625rem,1.25vw,1.3125rem);line-height:1.3;
  color:#fff;letter-spacing:-.01em;margin:0;
  text-shadow:0 1px 14px rgba(0,0,0,.55);
}
.works--bleed .media>.work-cap .cat{
  display:inline;margin-left:.6em;font-size:var(--t-xs);
  color:rgba(255,255,255,.78);letter-spacing:.14em;
  text-shadow:0 1px 12px rgba(0,0,0,.5);
}
.works--bleed .media .work-note{
  margin-top:7px;color:rgba(255,255,255,.9);
  font-size:var(--t-sm);line-height:1.5;
  text-shadow:0 1px 12px rgba(0,0,0,.55);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  /* 保险：强制贴合上层文字层，杜绝因结构异常掉到图片外 */
  position:static;max-width:none;float:none;
  /* 悬停：说明文字淡出上移，让位给浏览/点赞 */
  opacity:1;transform:translateY(0);
  transition:opacity .4s ease,transform .45s var(--ease-content);
}
/* 兜底：若 .work-note 仍是 .work 的直接子节点（旧结构残留），也压回图内 */
.works--bleed .work>.work-note{
  position:absolute;left:0;right:0;bottom:clamp(14px,1.3vw,20px);z-index:3;
  margin:0;padding:0 clamp(14px,1.3vw,20px);
  color:rgba(255,255,255,.9);font-size:var(--t-sm);line-height:1.5;
  text-shadow:0 1px 12px rgba(0,0,0,.55);
}
/* 图底压暗：仅覆盖图片底部 46%，为白色文字提供对比；悬停时加深 */
.works--bleed .media::after{
  content:"";position:absolute;inset:auto 0 0 0;z-index:2;height:46%;
  background:linear-gradient(180deg,rgba(13,13,13,0) 0%,rgba(13,13,13,.28) 58%,rgba(13,13,13,.72) 100%);
  pointer-events:none;transition:background .35s ease;
}
.works--bleed .work:hover .media::after{
  background:linear-gradient(180deg,rgba(13,13,13,0) 0%,rgba(13,13,13,.42) 52%,rgba(13,13,13,.88) 100%);
}
/* 悬停动效：文字整体上移一点、说明淡出 */
.works--bleed .work:hover .media>.work-cap,
.works--bleed .work:focus-visible .media>.work-cap{transform:translateY(-6px)}
.works--bleed .work:hover .media .work-note,
.works--bleed .work:focus-visible .media .work-note{opacity:0;transform:translateY(-4px)}
/* 悬停时浏览/点赞浮出；重复的案例名隐藏 */
.works--bleed .wo-name{display:none}
/* 统计数字与标题文字**顶部对齐**：标题文字顶部由 .work-cap 的 padding-top 决定
   （clamp(28px,3.2vw,46px)），.wo-stats 位于 .work-ov 内、参照整张图片，
   故 bottom 取「标题底 padding + 标题行高」使其首行与标题首行齐平。
   按需求在标题顶部对齐基准上：先下移 33px、再上移 10px，净下移 23px。 */
.works--bleed .wo-stats{
  bottom:calc(clamp(28px,3.2vw,46px) + clamp(1.0625rem,1.25vw,1.3125rem) * 1.3 + 5px - 33px + 10px);
  right:clamp(14px,1.3vw,20px);
}
/* 手机单列时图上文字空间充裕，字号回大一点更好读 */
@media(max-width:560px){
  .works--bleed .media>.work-cap h3{font-size:clamp(1.125rem,4.6vw,1.375rem)}
  .works--bleed .media .work-note{font-size:var(--t-base)}
}

/* =========================================================
   案例详情页：浏览量 + 点赞按钮
   数字来自后端累加（base 1000-5000 + 真实点击/浏览增量）。
   点赞按钮为真 <button>，前端用 localStorage 保证同浏览器只计一次。
   ========================================================= */
.article-metrics{display:flex;align-items:center;gap:20px;margin-top:var(--sp-sm);
  padding-top:var(--sp-sm);border-top:1px solid var(--line);
  font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.06em;color:var(--muted)}
.am-n,.am-like{display:inline-flex;align-items:center;gap:7px}
.am-n svg,.am-like svg{width:16px;height:16px;fill:none;stroke:currentColor;
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.am-n b,.am-like b{font-weight:500;font-size:var(--t-sm);color:var(--ink);
  font-variant-numeric:tabular-nums}
.am-lab{font-family:var(--font-body);font-size:var(--t-xs);letter-spacing:.02em;color:var(--faint)}
.am-like{background:none;border:0;padding:6px 10px;margin:-6px -10px;cursor:pointer;
  color:var(--muted);border-radius:0;touch-action:manipulation;
  transition:color .2s ease,background-color .2s ease}
.am-like:hover{color:var(--brand)}
.am-like:active{color:var(--brand);background:var(--paper-2)}
.am-like:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.am-like[aria-pressed="true"]{color:var(--brand)}
.am-like[aria-pressed="true"] b::after{content:" ✓";font-size:.8em}
@media(max-width:600px){
  .article-metrics{gap:14px}
  .am-lab{display:none}
}

/* =========================================================
   右侧悬浮工具条 —— 微信 / 联系方式 / 转发微博 / 地址 / 返回顶部
   贴在视口右缘，垂直居中；hover 展开气泡面板。
   · 桌面（>900px）：图标 + 两字标签，纵向排列
   · 移动（≤900px）：仅保留「返回顶部」圆形按钮，避免遮挡正文
   ========================================================= */
.rail{position:fixed;right:0;top:50%;z-index:90;transform:translateY(-50%)}
.rail-inner{
  display:flex;flex-direction:column;
  background:rgba(255,255,255,.95);
  -webkit-backdrop-filter:blur(14px) saturate(180%);backdrop-filter:blur(14px) saturate(180%);
  border:1px solid var(--line);border-right:0;
  box-shadow:-10px 6px 38px rgba(13,13,13,.10);
  opacity:0;transform:translateX(102%);
  animation:rail-in .6s var(--ease-content) .5s forwards;
}
@keyframes rail-in{from{opacity:0;transform:translateX(102%)}to{opacity:1;transform:translateX(0)}}

.rail-item{position:relative;display:block}
.rail-item+.rail-item::before{content:"";position:absolute;left:9px;right:9px;top:0;height:1px;background:var(--line-soft)}

.rail-btn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  width:60px;padding:12px 0 11px;background:none;border:0;cursor:pointer;
  color:var(--muted);text-align:center;
  transition:background var(--d-fast),color var(--d-fast);
}
.rail-btn .rail-ico{width:20px;height:20px;display:block}
.rail-btn .rail-ico svg{width:100%;height:100%;display:block}
.rail-btn .rail-txt{font-size:.6875rem;line-height:1;letter-spacing:.04em;white-space:nowrap}
.rail-btn:hover,.rail-btn:focus-visible{background:var(--brand);color:#fff}
.rail-btn[aria-expanded="true"]{background:var(--ink);color:#fff}

/* 返回顶部：滚过一屏后才展开（它在末尾，展开不影响上方按钮位置） */
.rail-item--top{max-height:0;opacity:0;overflow:hidden;
  transition:max-height var(--d-base) var(--ease-critical),opacity var(--d-base) var(--ease-critical)}
.rail.is-scrolled .rail-item--top{max-height:84px;opacity:1}

/* ---- 气泡面板 ---- */
.rail-pop{
  position:absolute;right:calc(100% + 14px);top:50%;width:238px;
  padding:18px 18px 16px;background:#fff;border:1px solid var(--line);
  box-shadow:0 18px 48px rgba(13,13,13,.14);
  text-align:left;opacity:0;visibility:hidden;pointer-events:none;
  transform:translate(10px,-50%);
  transition:opacity var(--d-base) var(--ease-critical),transform var(--d-base) var(--ease-critical),visibility var(--d-base);
}
.rail-pop::after{
  content:"";position:absolute;left:100%;top:50%;width:9px;height:9px;margin-top:-4.5px;
  background:#fff;border-top:1px solid var(--line);border-right:1px solid var(--line);
  transform:rotate(45deg);
}
.rail-item.is-open>.rail-pop{opacity:1;visibility:visible;pointer-events:auto;transform:translate(0,-50%)}
.rail-pop-ttl{font-family:var(--font-latin);font-size:var(--t-ov);letter-spacing:.2em;
  text-transform:uppercase;color:var(--muted);font-weight:500}
.rail-pop-val{margin-top:10px;font-family:var(--font-display);font-weight:500;color:var(--ink);
  font-size:1.375rem;line-height:1.2;letter-spacing:-.01em;max-width:none}
.rail-pop-val a:hover{color:var(--brand)}
.rail-pop-addr{margin-top:10px;font-size:var(--t-sm);line-height:1.7;color:var(--ink-2);max-width:none}
.rail-pop-note{margin-top:9px;font-size:var(--t-xs);line-height:1.6;color:var(--muted);max-width:none}
.rail-copy{
  margin-top:14px;display:inline-flex;align-items:center;gap:8px;
  font-size:var(--t-xs);font-weight:500;letter-spacing:.04em;
  padding:9px 16px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;
  transition:background var(--d-fast),color var(--d-fast),border-color var(--d-fast);
}
.rail-copy:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.rail-copy.is-done{background:var(--brand);border-color:var(--brand);color:#fff}

.rail-qr{display:block;width:160px;height:160px;margin:0 auto;border-radius:4px;border:1px solid var(--line)}
.rail-share-wb{display:inline-flex;align-items:center;gap:8px;margin-top:4px;text-decoration:none;
  background:#F93549;color:#fff;border-color:#F93549;font-weight:500}
.rail-share-wb:hover{background:#F93549;border-color:#F93549;color:#fff}

/* ---- 移动端：只留返回顶部 ---- */
@media(max-width:900px){
  .rail{top:auto;bottom:calc(20px + env(safe-area-inset-bottom));right:14px;transform:none;
    opacity:0;pointer-events:none;transition:opacity var(--d-base) var(--ease-critical)}
  .rail.is-scrolled{opacity:1;pointer-events:auto}
  .rail-inner{border-right:1px solid var(--line);animation:none;opacity:1;transform:none}
  .rail-item{display:none}
  .rail-item--top{display:block}
  .rail-btn{width:46px;padding:13px 0;gap:0}
  .rail-btn .rail-txt{display:none}
  .rail-btn .rail-ico{width:18px;height:18px}
}

@media (prefers-reduced-transparency: reduce){
  .rail-inner{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-contrast: more){
  .rail-inner{background:#fff;border-color:rgba(13,13,13,.4)}
}

/* ---------- 刘海屏 / 安全区（env() 在普通设备解析为 0，无回归） ---------- */
.wrap,.head-inner,.hero-copy,.cta-inner,.article,.map-cap,.sheet-panel{
  padding-left:max(var(--gutter),env(safe-area-inset-left));
  padding-right:max(var(--gutter),env(safe-area-inset-right))}

/* =========================================================
   数据条（首屏轮播下方）
   ========================================================= */
/* ---- 数据条：左对齐 / 列间竖线 / 数字加粗（横向对齐全站 .wrap） ---- */
.stats-bar{
  padding:clamp(56px,8vh,96px) 0;
  border-bottom:1px solid var(--line);
}
.stats-grid{
  display:flex;align-items:stretch;
  gap:0;
}
.stat{
  flex:1;display:flex;flex-direction:column;
  padding:0 clamp(14px,2vw,32px);
  text-align:left;
  position:relative;
}
/* 首尾列贴齐内容框左右边缘，消除整块相对正文的缩进 */
.stats-grid>.stat:first-child{padding-left:0}
.stats-grid>.stat:last-child{padding-right:0}
/* 列间竖线分隔 */
.stat+.stat::before{
  content:"";position:absolute;left:0;top:10%;height:80%;
  width:1px;background:var(--line);
}
.stat-lbl{
  font-family:var(--font-latin);font-size:var(--t-xs);
  letter-spacing:.13em;text-transform:uppercase;color:var(--muted);
  margin-bottom:16px;font-weight:500;
}
.stat-num{
  font-family:var(--font-display);font-weight:500;
  font-size:clamp(3rem,6vw,5rem);
  line-height:1.1;letter-spacing:-.04em;color:var(--ink);
}
.stat-sub{margin-top:10px;font-size:var(--t-sm);color:var(--ink-2);line-height:1.55}
.stat-en{
  margin-top:4px;font-family:var(--font-latin);font-size:var(--t-xs);
  letter-spacing:.06em;color:var(--faint);
}
@media(max-width:1024px){
  .stats-bar{padding:44px 0}
  .stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0}
  .stat{flex:none;padding:26px 20px}
  .stat:nth-child(odd){padding-left:0}
  .stat:nth-child(even){padding-right:0}
  /* 竖向中缝：只保留右列（第 2、4 项）左边线，去掉原先落在容器右缘的杂线 */
  .stat+.stat::before{display:none}
  .stat:nth-child(even)::before{
    content:"";display:block;position:absolute;
    left:0;top:10%;bottom:10%;width:1px;height:auto;background:var(--line);
  }
  /* 第二行顶部横线，与中缝构成 2x2 十字分隔 */
  .stat:nth-child(n+3){border-top:1px solid var(--line)}
  /* 英文小标收紧，避免换行致左右行高不等 */
  .stat-lbl{font-size:11px;letter-spacing:.06em;margin-bottom:12px}
  .stat-num{font-size:clamp(2.25rem,7vw,3.25rem)}
}
@media(max-width:480px){
  .stats-bar{padding:36px 0}
  .stat{padding:22px 12px}
  .stat:nth-child(odd){padding-left:0}
  .stat:nth-child(even){padding-right:0}
  .stat-lbl{font-size:10px;letter-spacing:0}
  .stat-num{font-size:clamp(2rem,9vw,2.75rem)}
}

/* =========================================================
   悬浮条占位（修正：窄屏桌面正文被压）
   悬浮条贴视口右缘、宽 61px（最右 73px 区）。内容框 max-width:1750 居中后，
   右缘 = (V + 1750)/2；越过悬浮条的临界视口 V ≈ 1896（(V+1750)/2 = V - 73）。
   故 1896px 以上自然留白已足够、不加让位（保持内容绝对居中）；
   901–1895px 区间右侧补到 88px，给悬浮条与约 30px 净空，避免压住卡片标题。
   ≤900px 时悬浮条收为右下角圆形按钮，不参与占位。
   ========================================================= */
@media (min-width:901px) and (max-width:1895px){
  .wrap,
  .head-inner,
  .hero-copy,
  .hero-ui{padding-right:88px}
  .cta-inner{padding-right:calc(var(--gutter) + 32px)}
}

/* 导航收进抽屉后（≤1040px），头部只剩 logo / 联系我们 / 汉堡，
   space-between 会把「联系我们」推到正中；让它贴右，与汉堡成组。 */
@media (max-width:1040px){
  .head-cta{margin-left:auto}
}

/* =========================================================
   案例模块放大（两边距20px）
   ========================================================= */
.works--4{gap:clamp(10px,1vw,14px)}
.works--4 .work .media--4x3{aspect-ratio:4/3}
.works--4 .work-cap h3{font-size:clamp(1.125rem,1.6vw,1.5rem)}
.works--4 .work-cap .cat{font-size:var(--t-xs)}
.works--4 .work-note{font-size:var(--t-base);line-height:1.65;margin-top:8px}
@media(min-width:1040px){
  .works--4 .media--4x3 img{height:auto;max-height:none}
}

/* ===== 新闻详情页（news/*.html）：主标题 + 摘要 + 正文 ===== */
.article{width:100%;max-width:1600px;margin-inline:auto;padding-inline:var(--gutter);padding-top:calc(var(--head-h) + clamp(40px,7vw,88px));padding-bottom:clamp(48px,7vw,96px)}
.article-head{padding-bottom:clamp(26px,3.6vw,46px);border-bottom:1px solid var(--line)}
.article-head .crumb{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--faint);margin-bottom:var(--sp-sm)}
.article-head .crumb a:hover{color:var(--brand)}
.article-date{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-bottom:var(--sp-xs)}
.article-title{font-family:var(--font-display);font-size:clamp(2rem,4.6vw,3.4rem);line-height:1.14;letter-spacing:-.02em;font-weight:500;color:var(--ink);max-width:none}
.article-summary{font-size:var(--t-lead);line-height:1.6;color:var(--ink-2);margin-top:var(--sp-md);max-width:78ch}
.article-body{position:relative;margin-top:clamp(34px,4.6vw,60px)}
.article-body p{font-size:1.0625rem;line-height:1.95;color:#3a3a38;margin-top:1.45em;max-width:88ch}
.article-body p:first-child{margin-top:0}
.article-body h2{font-family:var(--font-display);font-size:clamp(1.3rem,2vw,1.7rem);line-height:1.3;letter-spacing:-.01em;color:var(--ink);margin-top:2.1em}
.article-body h2:first-child{margin-top:0}
.article-body blockquote{margin:1.9em 0;padding:6px 0 6px 22px;border-left:2px solid var(--brand);font-size:clamp(1.15rem,1.7vw,1.4rem);line-height:1.65;color:var(--ink);max-width:80ch}
.article-nav{display:flex;justify-content:space-between;gap:var(--sp-sm);margin-top:clamp(40px,5vw,72px);padding-top:var(--sp-md);border-top:1px solid var(--line)}
.article-nav a{display:inline-flex;flex-direction:column;gap:5px;text-decoration:none;color:var(--ink);max-width:48%}
.article-nav .an-lab{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
.article-nav .an-t{font-size:1.02rem;line-height:1.45;transition:color .25s ease}
.article-nav a:hover .an-t{color:var(--brand)}
.article-nav .next{margin-left:auto;text-align:right;align-items:flex-end}
@media(max-width:640px){.article-title{font-size:clamp(1.7rem,8vw,2.4rem)}.article-nav{flex-direction:column}.article-nav .next{margin-left:0;text-align:left;align-items:flex-start}}

/* ===== 案例详情页（works/*.html）：标题 + 副标题 + 正文 ===== */
.article-cat{font-family:var(--font-latin);font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--brand);margin-bottom:var(--sp-sm)}
.article-sub{font-family:var(--font-display);font-weight:500;font-size:clamp(1.15rem,2vw,1.6rem);line-height:1.5;letter-spacing:-.01em;color:var(--ink);margin-top:var(--sp-sm);max-width:60ch}

/* ===== 案例详情页文字放大（仅 works/*.html，加 .article--case 作用域，不影响新闻页） ===== */
.article--case .article-title{font-size:clamp(2.2rem,5vw,3.9rem)}
.article--case .article-sub{font-size:clamp(1.3rem,2.2vw,1.95rem);max-width:64ch}
.article--case .article-body p{font-size:var(--t-xs);line-height:1.9;margin-top:1.55em;max-width:90ch}
.article--case .article-body h2{font-size:clamp(1.45rem,2.4vw,2rem)}
.article--case .article-body blockquote{font-size:clamp(1.25rem,1.9vw,1.55rem)}
.article--case .article-nav .an-t{font-size:1.12rem}
@media(max-width:640px){.article--case .article-title{font-size:clamp(1.9rem,8.5vw,2.7rem)}}
/* 案例页悬浮二维码：aside 为 .article 直接子元素（article 为 relative 定位上下文），
   rail 覆盖全文章高度，卡片 sticky 从头悬浮到尾（新闻页 aside 仍在 .article-body 内，行为不变） */

/* ===== 新闻详情页 · 侧边悬浮二维码卡 ===== */
.article{position:relative}
.qr-rail{position:absolute;top:0;bottom:0;right:var(--gutter);width:190px;display:none;pointer-events:none}
.qr-card{position:sticky;top:calc(var(--head-h) + 28px);margin:0;pointer-events:auto;background:#fff;border:1px solid var(--line);padding:16px 16px 14px;text-align:center}
.qr-card img{display:block;width:100%;height:auto}
.qr-tick{display:block;width:24px;height:2px;background:var(--brand);margin:14px auto 0}
.qr-card figcaption{margin-top:9px;font-size:var(--t-xs);letter-spacing:.22em;color:var(--muted)}
@media (min-width:1240px){.qr-rail{display:block}}

/* =========================================================
   交互即时反馈 / 触控优化
   · 全站此前 :active 规则为 0 —— 移动端点击无任何即时反馈，是"迟滞感"主因
   · touch-action:manipulation 消除双击缩放判定带来的 ~300ms 点击延迟
   · 按下态 60ms 生效（按下瞬间立即可见），回弹沿用元素原有过渡曲线
   ========================================================= */
a,button,[role="button"],.btn,.filter,.tick,.arrow,.rail-btn,.burger,summary,label{touch-action:manipulation}
html{-webkit-tap-highlight-color:transparent}
a:active,button:active,[role="button"]:active{opacity:.6;transition-duration:.06s}
.btn:active,.rail-btn:active,.burger:active,.filter:active,.arrow:active,.tick:active{transform:scale(.96);opacity:.92;transition-duration:.06s}
.sheet-panel a:active{opacity:.6;transition-duration:.06s}
@media(prefers-reduced-motion:reduce){
  .btn:active,.rail-btn:active,.burger:active,.filter:active,.arrow:active,.tick:active{transform:none}
}


/* =========================================================
   首屏改造 · 对齐参考站 OXYZ Capital（2026-09-16）
   满幅媒体背景（4 张海报轮播，已移除底部刻度/箭头控件）
   + 左对齐 + 垂直居中 + 主标题 72px/字重400 + 小标 + 双 CTA
   ========================================================= */

/* 主标题字重 400（参考站极细），全断点生效 */
.hero-title{font-weight:400}

@media(min-width:901px){
  /* 垂直居中：去掉原为底部控件预留的 140px，padding 上下对称 */
  .hero-copy{justify-content:center;
    padding-top:calc(var(--head-h) + 36px);
    padding-bottom:calc(var(--head-h) + 36px)}
  /* 主标题：1440px -> 72px，与参考站一致 */
  .hero-title{font-size:clamp(2.5rem,5vw,4.5rem);line-height:1.15;letter-spacing:-.02em}
}
@media(max-height:820px) and (min-width:901px){
  .hero-copy{padding-top:calc(var(--head-h) + 20px);padding-bottom:calc(var(--head-h) + 20px)}
}
@media(max-width:900px){
  /* 控件已移除，去掉对应的 140px 底部占位 */
  .hero-copy{padding-bottom:calc(clamp(66px,10vh,98px) + 70px)}
}

/* 小标 eyebrow（参考站：AI 应用 × Physical AI） */
.hero-eyebrow{margin:0 0 22px;font-family:var(--font-latin);
  font-size:14px;font-weight:400;letter-spacing:.06em;
  text-transform:uppercase;color:rgba(255,255,255,.62)}

/* 双 CTA（参考站：For Founders / For Partners & LPs） */
.hero-cta{display:flex;flex-wrap:wrap;align-items:center;gap:16px 42px;margin-top:40px}
.hero-cta-btn{display:inline-flex;align-items:center;gap:12px;
  font-size:16px;font-weight:400;color:#fff;text-decoration:none;
  opacity:.9;transition:opacity .25s ease}
.hero-cta-btn:hover,.hero-cta-btn:focus-visible{opacity:1}
.cta-arrow{position:relative;flex:0 0 auto;width:26px;height:8px;
  transition:transform .3s cubic-bezier(.2,.7,.3,1)}
.cta-arrow::before{content:"";position:absolute;left:0;top:50%;width:26px;height:1px;background:currentColor;transform:translateY(-50%)}
.cta-arrow::after{content:"";position:absolute;right:0;top:50%;width:7px;height:7px;
  border-top:1px solid currentColor;border-right:1px solid currentColor;
  transform:translateY(-50%) rotate(45deg)}
.hero-cta-btn:hover .cta-arrow{transform:translateX(7px)}
@media(prefers-reduced-motion:reduce){
  .cta-arrow{transition:none}
  .hero-cta-btn:hover .cta-arrow{transform:none}
}

/* =========================================================
   首屏影片背景（2026-09-16）
   满幅静音循环影片取代原海报轮播：object-fit:cover 铺满、
   影片层固定在 .hero 内（z-index:0），压暗层维持不变（z-index:1）。
   · poster 首帧图兜底：影片未就绪 / iOS 低电量禁止自动播放 / 解码失败
     时看到的是静态海报而非黑屏。
   · 移动端不强制 100vh 拉伸，避免播放器控件与地址栏抖动。
   ========================================================= */
.hero-media{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--ink)}
.hero-video{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center center;
  display:block;pointer-events:none;
  opacity:0;transition:opacity .8s ease}
/* 影片可播放后再淡入，避免先黑一下再跳 */
.hero-video.is-ready{opacity:1}
/* 影片上方的压暗比纯海报时略轻：影片本身已有调色，压太重会发闷。
   保留左重右轻的横向梯度，保证左侧文案对比度。 */
.hero--video .hero-shade{background:
  linear-gradient(180deg,rgba(13,13,13,.46) 0%,rgba(13,13,13,.20) 22%,rgba(13,13,13,.16) 50%,rgba(13,13,13,.46) 76%,rgba(13,13,13,.80) 100%),
  linear-gradient(90deg,rgba(13,13,13,.66) 0%,rgba(13,13,13,.40) 38%,rgba(13,13,13,.10) 70%,rgba(13,13,13,0) 100%)}
@media(prefers-reduced-motion:reduce){
  .hero-video{transition:none}
}

/* ---------- 语言切换器（与主导航同款样式：透明底 + 文字/图标同色） ---------- */
.lang{position:relative;display:inline-flex;align-items:center;margin-left:14px;vertical-align:middle}
.lang__btn{display:inline-flex;align-items:center;gap:5px;height:auto;padding:6px 2px;border:0;background:none;color:var(--ink-2);font-family:inherit;font-size:var(--t-sm);font-weight:500;letter-spacing:.02em;line-height:1.2;text-decoration:none;cursor:pointer;position:relative;transition:color .2s ease;touch-action:manipulation}
.lang__btn:hover{color:var(--brand)}
.lang__btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.lang__btn::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1.5px;background:var(--brand);transform:scaleX(0);transform-origin:left;transition:transform var(--d-base) var(--ease-content)}
.lang__btn:hover::after,.lang__btn[aria-expanded="true"]::after{transform:scaleX(1)}
.lang__icon{width:15px;height:15px;fill:currentColor;flex:none}
.lang__current{min-width:1.6em;text-align:left}
.lang__caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid currentColor;transition:transform .2s ease}
.lang__btn[aria-expanded="true"] .lang__caret{transform:rotate(180deg)}
.lang__menu{position:absolute;top:calc(100% + 6px);right:0;z-index:100;display:flex;flex-direction:column;min-width:120px;margin:0;padding:4px 0;border:1px solid var(--line);background:var(--paper);box-shadow:0 4px 12px rgba(13,13,13,.12);list-style:none;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .2s ease,transform .2s ease,visibility .2s ease}
.lang__btn[aria-expanded="true"]+.lang__menu{opacity:1;visibility:visible;transform:translateY(0)}
.lang__menu li{margin:0;padding:0}
.lang__item{display:flex;align-items:center;gap:8px;padding:9px 14px;font-family:var(--font-latin);font-size:var(--t-sm);font-weight:500;color:var(--ink-2);text-decoration:none;transition:color .15s ease,background-color .15s ease;touch-action:manipulation}
.lang__item:hover{color:var(--brand);background:var(--paper-2)}
.lang__item:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.lang__item.is-on{color:var(--brand);background:var(--paper-2)}
@media(max-width:900px){.lang{margin-left:8px}.lang__icon{width:14px;height:14px}}
@media(max-width:560px){.lang__menu{right:-4px}.lang__item{padding:10px 12px}}

/* 品牌与案例阅读修正 */
:root{--brand:#F93549;--brand-deep:#F93549}
.hero-page .site-head:not(.is-stuck) .logo-dark{display:block}
.hero-page .site-head:not(.is-stuck) .logo-light{display:none}
.hero-page .site-head .head-cta,.hero-page .site-head:not(.is-stuck) .head-cta{background:var(--brand);border:1px solid var(--brand);color:#fff}
.hero-page .site-head .head-cta:hover,.hero-page .site-head:not(.is-stuck) .head-cta:hover{background:var(--brand-deep);border-color:var(--brand-deep);color:#fff}
.rail-btn[aria-expanded="true"],.rail-copy:hover{background:var(--brand);border-color:var(--brand);color:#fff}
.qr-rail{z-index:20;right:max(80px,var(--gutter))}
.qr-card{z-index:1}
@media(min-width:1240px){.article--case .article-body{max-width:calc(100% - 280px);margin-left:0;margin-right:280px}}
.article-body img[width]{max-width:100%;object-fit:contain}
.article-body img[style]{max-width:100%;object-fit:contain}
@media(max-width:640px){.article-body img[width],.article-body img[style]{height:auto!important}}

@media(min-width:1240px){.article--case .article-head{padding-right:280px}}

.site-foot .foot-logo{filter:none;opacity:1}

/* 全站顶部联络按钮：默认品牌红，悬停与聚焦反白。 */
.site-head .head-cta,.hero-page .site-head .head-cta,.hero-page .site-head:not(.is-stuck) .head-cta{background:#F93549;border:1px solid #F93549;color:#fff}
.site-head .head-cta:hover,.site-head .head-cta:focus-visible,.site-head .head-cta:active,.hero-page .site-head .head-cta:hover,.hero-page .site-head .head-cta:focus-visible,.hero-page .site-head .head-cta:active,.hero-page .site-head:not(.is-stuck) .head-cta:hover,.hero-page .site-head:not(.is-stuck) .head-cta:focus-visible,.hero-page .site-head:not(.is-stuck) .head-cta:active{background:#fff;border-color:#F93549;color:#F93549}

/* 统一品牌色与首页业绩数字 */
:root{--brand:#F93549;--brand-deep:#F93549}
.stat-num,.stat-bar .stat strong{color:#F93549}


/* 裁剪屏外抽屉，根节点处理横向溢出，避免 body 成为额外滚动容器。 */
html{width:100%;max-width:100%;overflow-x:hidden;overscroll-behavior-x:none}
body{width:100%;min-width:0;max-width:100%;overflow-x:visible;overscroll-behavior-x:none}
@supports(overflow-x:clip){html,body{overflow-x:clip}}
.sheet{overflow:hidden;visibility:hidden;transition:visibility 0s linear var(--d-sheet)}
body.drawer-open .sheet{visibility:visible;transition-delay:0s}
.site-head{position:fixed;inset:0 0 auto;width:100%;max-width:100%}
.head-inner{min-width:0;max-width:min(100%,var(--maxw))}
