/* ============================================================
   JO PORTFOLIO · V2 REFINEMENT LAYER
   ------------------------------------------------------------
   定位：这是一层「精修覆盖」，不推翻任何现有样式。
   只做四件事：统一 Grid / 强化 Typography 层级 / 统一节奏 /
   新增 V2 信息模块（业务链 · 挑战与应对 · 系统分组 · 工作流）。
   原则：无渐变、无玻璃拟态、无 3D、无装饰性动效；
        动效时长收敛到 150–300ms，hover 只做轻微位移 / opacity。
   加载顺序：tokens → system → style/editorial-case/proof → v2-refine
   ============================================================ */

/* ---------- 1. 动效收敛：150–300ms ---------- */
:root{
  --dur-fast:.18s;
  --dur-base:.24s;
  --dur-slow:.3s;
  --dur-reveal:.42s;
}

/* ---------- 2. 全局安全：禁止横向滚动 / 图片不溢出 ---------- */
html{overflow-x:hidden;-webkit-text-size-adjust:100%}
body{overflow-x:hidden}
img,svg,video,canvas{max-width:100%}
pre,table{overflow-x:auto;max-width:100%}

/* ---------- 3. 统一 Container / Grid ---------- */
.l-container{
  width:100%;
  max-width:128rem;                /* 1280px，桌面统一内容宽度 */
  margin:0 auto;
  padding-left:clamp(2rem,3.2vw,6.4rem);
  padding-right:clamp(2rem,3.2vw,6.4rem);
}
.wrap{width:min(128rem,92vw);margin:0 auto}

/* 案例页节奏统一（原有 18vh → 收敛为可控区间） */
.sec{padding-block:clamp(7.2rem,10vh,13rem)}
.o-section{padding-block:clamp(7.2rem,10vh,13rem)}

/* ---------- 4. Typography 角色（Display / H2 / H3 / Body / Caption / Label） ---------- */
.v2-label{
  color:var(--c-ink-3);
  font-size:1.1rem;
  font-weight:600;
  letter-spacing:.2em;
  line-height:1.4;
  text-transform:uppercase;
}
.v2-display{
  color:var(--c-ink);
  font-size:clamp(4.4rem,6.4vw,8rem);
  font-weight:700;
  letter-spacing:-.02em;
  line-height:1.05;
}
.v2-h2{
  color:var(--c-ink);
  font-size:clamp(3.2rem,3.8vw,4.8rem);
  font-weight:700;
  letter-spacing:-.01em;
  line-height:1.1;
}
.v2-h3{
  color:var(--c-ink);
  font-size:clamp(2.2rem,2.4vw,3.2rem);
  font-weight:600;
  letter-spacing:-.01em;
  line-height:1.3;
}
.v2-body{
  color:var(--c-ink-body);
  font-size:clamp(1.5rem,1.05vw,1.8rem);
  line-height:1.75;
  max-width:68ch;
}
.v2-cap{
  color:var(--c-ink-3);
  font-size:1.3rem;
  line-height:1.65;
  letter-spacing:.01em;
}
.v2-cn{
  color:var(--c-ink-2);
  font-size:clamp(1.4rem,1.1vw,1.6rem);
  line-height:1.8;
  letter-spacing:.04em;
}

/* ---------- 5. V2 模块通用骨架 ---------- */
.v2-block{margin-top:clamp(4.8rem,7vh,8rem)}
.v2-block-head{
  align-items:baseline;
  border-top:1px solid var(--c-hairline);
  display:flex;
  flex-wrap:wrap;
  gap:1.2rem 2.4rem;
  justify-content:space-between;
  padding-top:1.8rem;
}
.v2-kicker{
  color:var(--c-ink-3);
  font-size:1.1rem;
  font-weight:600;
  letter-spacing:.24em;
  text-transform:uppercase;
}

/* 5.1 业务链：ONE PLOT. ONE RECORD. */
.v2-chain{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:1rem;
  margin-top:2.4rem;
}
.v2-chain-item{
  align-items:center;
  border:1px solid var(--c-hairline);
  border-radius:999px;
  color:var(--c-ink);
  display:inline-flex;
  font-size:1.3rem;
  font-weight:600;
  gap:.8rem;
  letter-spacing:.06em;
  padding:.9rem 1.8rem;
  transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
.v2-chain-item:hover{border-color:var(--c-ink-4)}
.v2-chain-item i{
  color:var(--c-ink-4);
  font-size:1rem;
  font-style:normal;
  letter-spacing:.16em;
}
.v2-chain-arrow{color:var(--c-ink-4);font-size:1.2rem;user-select:none}
@media (max-width:47.99em){ .v2-chain-arrow{display:none} .v2-chain{gap:.8rem} }
.v2-note{margin-top:1.8rem}

/* 5.2 三栏卡片：Business Challenge */
.v2-grid-3{
  display:grid;
  gap:2.4rem;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin-top:2.8rem;
}
@media (max-width:61.99em){ .v2-grid-3{grid-template-columns:1fr} }
.v2-card{border-top:1px solid var(--c-hairline);padding-top:1.6rem}
.v2-card-n{
  color:var(--c-ink-4);
  display:block;
  font-size:1.1rem;
  font-weight:700;
  letter-spacing:.2em;
}
.v2-card h4{
  color:var(--c-ink);
  font-size:clamp(1.9rem,1.8vw,2.4rem);
  font-weight:600;
  letter-spacing:-.01em;
  line-height:1.3;
  margin:.8rem 0 .6rem;
}
.v2-card p{color:var(--c-ink-2);font-size:1.4rem;line-height:1.7;margin:0}

/* 5.3 映射行：问题 → 设计处理 */
.v2-map{border-top:1px solid var(--c-hairline);margin-top:3.2rem}
.v2-map-row{
  align-items:center;
  border-bottom:1px solid var(--c-hairline);
  display:grid;
  gap:2rem;
  grid-template-columns:1fr auto 1fr;
  padding:1.8rem 0;
}
@media (max-width:47.99em){ .v2-map-row{gap:.4rem;grid-template-columns:1fr} .v2-map-arrow{display:none} }
.v2-map-from{color:var(--c-ink-2);font-size:1.5rem;line-height:1.6}
.v2-map-arrow{color:var(--c-ink-4);font-size:1.4rem}
.v2-map-to{color:var(--c-ink);font-size:1.5rem;font-weight:600;line-height:1.6}

/* 5.4 原则三词：Consistency / Scalability / Efficiency */
.v2-principles{
  display:grid;
  gap:2.4rem;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin-top:2.4rem;
}
@media (max-width:61.99em){ .v2-principles{grid-template-columns:1fr} }
.v2-principle{border-top:1px solid var(--c-hairline);padding-top:1.4rem}
.v2-principle b{
  color:var(--c-ink);
  display:block;
  font-size:1.8rem;
  font-weight:700;
  letter-spacing:.02em;
}
.v2-principle span{color:var(--c-ink-3);display:block;font-size:1.3rem;line-height:1.6;margin-top:.6rem}

/* 5.5 数据可视化说明：Why / Solves / User sees */
.v2-dv-note{
  display:grid;
  gap:2rem;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin:2.8rem 0 3.2rem;
  padding-top:1.6rem;
  border-top:1px solid var(--c-hairline);
}
@media (max-width:61.99em){ .v2-dv-note{grid-template-columns:1fr} }
.v2-dv-note div b{
  color:var(--c-ink-3);
  display:block;
  font-size:1.1rem;
  font-weight:700;
  letter-spacing:.2em;
  text-transform:uppercase;
}
.v2-dv-note div p{color:var(--c-ink-2);font-size:1.4rem;line-height:1.7;margin:.8rem 0 0}

/* 5.6 标签条：FOUNDATION / COMPONENTS / PATTERNS / MULTI-PLATFORM */
.v2-legend{display:flex;flex-wrap:wrap;gap:.8rem;margin:2.4rem 0 .8rem}
.v2-legend span{
  border:1px solid var(--c-hairline);
  border-radius:999px;
  color:var(--c-ink-2);
  font-size:1.1rem;
  font-weight:600;
  letter-spacing:.18em;
  padding:.5rem 1.2rem;
  text-transform:uppercase;
}

/* ---------- 6. 首页：项目卡信息层 ---------- */
.o-work_preview-index{
  color:var(--c-ink-4);
  display:block;
  font-size:1.1rem;
  font-weight:700;
  letter-spacing:.2em;
}
.o-work_preview-value{
  color:var(--c-ink);
  font-size:clamp(1.6rem,1.3vw,2rem);
  font-weight:600;
  letter-spacing:-.01em;
  line-height:1.45;
  margin-top:1rem;
  max-width:56ch;
}
.o-work_preview-excerpt_p{
  color:var(--c-ink-3);
  font-size:1.4rem;
  line-height:1.7;
  margin-top:.8rem;
  max-width:64ch;
}
.o-work_preview-title{font-size:clamp(2.4rem,2.6vw,3.4rem)}
.o-work_preview-content{padding-top:2rem}
.o-work_preview-meta{color:var(--c-ink-3);font-size:1.2rem;letter-spacing:.14em;text-transform:uppercase}

/* 项目卡 CTA：克制 hover */
.o-cta_link{transition:opacity var(--dur-fast) var(--ease-out)}
.o-cta_link:hover{opacity:.62}

/* ---------- 7. 首页：Capabilities ---------- */
.o-offering-title{letter-spacing:-.01em}
.o-offering-subofferings li{font-size:1.4rem}
.c-services-offerings{width:100%}
@media (min-width:68.75em){ .c-services-offerings{width:100%} }

/* ---------- 8. 首页：Tools 降权 + Workflow ---------- */
.c-brands-container .o-brand_icon{max-height:3rem;opacity:.72;transition:opacity var(--dur-fast) var(--ease-out)}
.c-brands-container .o-brand:hover .o-brand_icon{transform:none;opacity:1}
.o-brand-name{color:var(--c-ink-2);font-size:1.3rem;letter-spacing:.08em}
.v2-workflow{
  border-top:1px solid rgba(255,255,255,.16);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:1rem;
  margin-top:4rem;
  padding-top:2.4rem;
}
.v2-workflow-item{
  color:var(--c-ink-3);
  font-size:1.2rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.v2-workflow-arrow{color:var(--c-ink-4);font-size:1.2rem}
@media (max-width:47.99em){ .v2-workflow-arrow{display:none} .v2-workflow{gap:.8rem 1.2rem} }
.v2-workflow-label{
  color:var(--c-ink-3);
  font-size:1.1rem;
  font-weight:700;
  letter-spacing:.24em;
  margin-top:3.2rem;
  text-transform:uppercase;
}

/* ---------- 9. 首页：About 职业信息 ---------- */
.c-about-career_role{font-size:clamp(2.8rem,3.2vw,4rem)}
.c-about-career_exp{letter-spacing:.18em}
.v2-timeline{
  display:grid;
  gap:2.4rem;
  grid-template-columns:repeat(2,minmax(0,1fr));
  margin-bottom:3.6rem;
}
@media (max-width:61.99em){ .v2-timeline{grid-template-columns:1fr} }
.v2-timeline-block{border-top:1px solid var(--c-hairline);padding-top:1.6rem}
.v2-timeline-block .v2-label{margin-bottom:.8rem}
.v2-timeline-block p{color:var(--c-ink);font-size:1.8rem;font-weight:600;letter-spacing:-.01em;margin:0}
.v2-timeline-block ul{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;list-style:none;margin:1.2rem 0 0;padding:0}
.v2-timeline-block li{color:var(--c-ink-2);font-size:1.4rem;font-weight:500}

/* ---------- 10. 首页：Contact / Availability ---------- */
.v2-contact{
  border-top:1px solid rgba(255,255,255,.16);
  display:grid;
  gap:2rem;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin-top:3.2rem;
  padding-top:2.4rem;
  text-align:left;
}
@media (max-width:61.99em){ .v2-contact{grid-template-columns:1fr} }
.v2-contact b{
  color:var(--c-ink-3);
  display:block;
  font-size:1.1rem;
  font-weight:700;
  letter-spacing:.2em;
  text-transform:uppercase;
}
.v2-contact a,.v2-contact span{
  color:var(--c-ink);
  display:inline-block;
  font-size:1.6rem;
  font-weight:500;
  margin-top:.8rem;
  word-break:break-all;
}
.v2-contact a:hover{opacity:.62}
.v2-avail{
  color:var(--c-ink-2);
  font-size:clamp(1.6rem,1.4vw,2rem);
  font-weight:600;
  letter-spacing:-.01em;
  line-height:1.5;
  margin-top:1.6rem;
}
.v2-avail-sub{color:var(--c-ink-3);font-size:1.3rem;letter-spacing:.14em;margin-top:.8rem;text-transform:uppercase}

/* ---------- 11. 案例页：Hero 定位层 ---------- */
.hero-kicker{
  color:var(--c-ink-3);
  font-size:1.1rem;
  font-weight:700;
  letter-spacing:.24em;
  text-transform:uppercase;
}
.hero-value{
  color:var(--c-ink);
  font-size:clamp(1.6rem,1.5vw,2.2rem);
  font-weight:600;
  letter-spacing:-.01em;
  line-height:1.5;
  margin-top:1.2rem;
  max-width:46ch;
}

/* ---------- 12. 焦点可见性（可访问性） ---------- */
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--c-ink);
  outline-offset:3px;
}
.o-section--dark a:focus-visible,.o-section--dark button:focus-visible{outline-color:#ffffff}

/* ---------- 13. 减少动效偏好 ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ---------- 14. 移动端收敛 ---------- */@media (max-width:47.99em){
  .v2-display{font-size:clamp(3.6rem,11vw,5.2rem)}
  .v2-h2{font-size:clamp(2.6rem,8vw,3.4rem)}
  .v2-h3{font-size:clamp(2rem,6vw,2.6rem)}
  .l-container{padding-left:2.4rem;padding-right:2.4rem}
  .sec{padding-block:7.2rem}
}

/* ---------- 15. 深色区块内的 V2 模块配色修正 ---------- */
/* ---------- 14b. Hero 移动端防溢出 ---------- */
.c-welcome-caption{font-size:1.4rem;letter-spacing:.14em;word-break:keep-all}
@media (max-width:47.99em){ .c-welcome-caption{letter-spacing:.1em} }
.c-welcome-desc,.c-welcome-desc_cn{overflow-wrap:anywhere}
.c-welcome-cta_row{display:flex;flex-wrap:wrap;gap:1.2rem;align-items:center;justify-content:center}
.c-welcome-cta_row .o-button{flex:0 0 auto}
.v2-avail-sub{overflow-wrap:anywhere}
.o-section--dark .v2-label,
.o-section--dark .v2-label,
.o-section--dark .v2-workflow-label,
.o-section--dark .v2-avail-sub,
.o-section--dark .v2-contact b{color:rgba(255,255,255,.66)}
.o-section--dark .v2-workflow-item{color:rgba(255,255,255,.82)}
.o-section--dark .v2-workflow-arrow{color:rgba(255,255,255,.42)}
.o-section--dark .v2-workflow,
.o-section--dark .v2-contact{border-top-color:rgba(255,255,255,.18)}
.o-section--dark .v2-contact a,
.o-section--dark .v2-contact span{color:#ffffff}
.o-section--dark .v2-avail{color:#ffffff}
