/* ═══════════════════════════════════════════════
   Partner Deck · Design System v47-preview
   ───────────────────────────────────────────────
   v47 deltas (from v46):
   · logo 32 → 24 (chrome 缩)
   · safe zone top 112 → 88 (标题上移)
   · footer 11 → 10, 中央文案删 CONFIDENTIAL
   · page-title 36 → 48 (跳幅 2:1 → 3.2:1)
   · evidence-body 18 → 15
   · hero-metric 104 → 152, unit 40 → 24, caption 16 → 11 / 0.32em
   · col-card backdrop-filter blur(12px) + opacity 0.20 → 0.40 (玻璃质感)
   · .indicator display:none (重复页码消除)
   ═══════════════════════════════════════════════ */
/* === ORIGINAL v3 HEADER below ===
   Partner Deck · Design System v3 (inherits v2 · delta noted)
   ───────────────────────────────────────────────
   · Canvas T1-T5 inherited verbatim. T6 (沉潭 / manifesto close) RETIRED — CTO 面谈不做宣言收口
   · Page primitives (page-body / evidence-list / two-col-grid / col-card / hero-metric) inherited
   · NEW primitives in this file: .matrix-grid / .comparison-split / .stack-diagram
   · T4 爆点 only for ROI / metric pages in partner context (not banner)
   · Scope: partner deck surface only. 20-page BP (gritworld-bp-deck.html) frozen, never modified from here.
   ═══════════════════════════════════════════════ */

:root {
  --canvas-deep: #0A1830;
  --canvas-mid: #0E2149;
  --canvas-glow: #143272;
  --canvas-stack:
    radial-gradient(ellipse 55% 45% at 82% 18%, rgba(0,152,255,0.14) 0%, transparent 60%),
    radial-gradient(ellipse 60% 50% at 15% 82%, rgba(30,60,180,0.16) 0%, transparent 55%),
    radial-gradient(ellipse 80% 60% at 50% 45%, rgba(14,33,73,0.26) 0%, transparent 70%),
    radial-gradient(ellipse 140% 90% at 50% 0%, #163676 0%, #143272 28%, #0E2149 60%, #0A1830 100%);
  --grit-blue: #0098FF;
  --grit-blue-60: rgba(0,152,255,0.60);
  --grit-blue-24: rgba(0,152,255,0.24);
  --grit-blue-10: rgba(0,152,255,0.10);
  --ink-primary: #EAF2FB;
  --ink-secondary: rgba(234,242,251,0.65);
  --ink-meta: rgba(234,242,251,0.40);
  --hairline: rgba(234,242,251,0.12);
  --data-faded: rgba(234,242,251,0.28);
  --font-sc: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-en: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-display: 'Archivo', 'Inter', sans-serif;
  --ease-signal: cubic-bezier(0.2, 0.8, 0.2, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: var(--canvas-deep);
  font-family: var(--font-sc);
  color: var(--ink-primary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  /* per user ca8995d7 mobile fix: 阻止 iOS Safari 自动放大 font (含"Larger Text" 设置干扰 layout) */
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

.stage {
  position: relative;
  width: 100vw;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.slides-container {
  position: relative;
  width: 1440px;
  height: 810px;
  transform-origin: center center;
  flex-shrink: 0;
}

.slide {
  position: absolute;
  inset: 0;
  width: 1440px;
  height: 810px;
  background: var(--canvas-stack);
  opacity: 0;
  pointer-events: none;
  transition: opacity 400ms var(--ease-signal);
  overflow: hidden;
}

.slide.active {
  opacity: 1;
  pointer-events: auto;
}

/* Film grain overlay (inherited from v2) */
.slide::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.78  0 0 0 0 0.85  0 0 0 0 1  0 0 0 0.55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  background-size: 240px 240px;
  opacity: 0.05;
  mix-blend-mode: overlay;
  pointer-events: none;
  z-index: 2;
}

.slide::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 110% 100% at 50% 60%, transparent 55%, rgba(4,8,18,0.22) 100%);
  pointer-events: none;
  z-index: 2;
}

/* ═══════════════════════════════════════════════
   Canvas variants T1-T5 · inherited from v2 (T6 RETIRED in v3)
   ═══════════════════════════════════════════════ */

.slide.t1 {
  background:
    conic-gradient(from 220deg at 70% 20%, rgba(150,200,255,0.10) 0deg, transparent 80deg, transparent 280deg, rgba(150,200,255,0.08) 360deg),
    radial-gradient(ellipse 80% 60% at 82% 18%, rgba(252,248,248,0.52) 0%, rgba(210,225,250,0.18) 32%, transparent 68%),
    radial-gradient(ellipse 58% 48% at 16% 84%, rgba(30,70,190,0.20) 0%, transparent 55%),
    radial-gradient(ellipse 80% 60% at 38% 58%, rgba(14,33,73,0.26) 0%, transparent 72%),
    radial-gradient(ellipse 150% 95% at 58% -6%, #163676 0%, #143272 26%, #0E2149 58%, #0A1830 100%);
}

.slide.t2 {
  background:
    conic-gradient(from 180deg at 50% 0%, rgba(200,220,255,0.08) 0deg, transparent 120deg, transparent 240deg, rgba(200,220,255,0.06) 360deg),
    radial-gradient(ellipse 82% 56% at 50% 14%, rgba(248,251,255,0.44) 0%, rgba(200,222,255,0.14) 36%, transparent 70%),
    radial-gradient(ellipse 50% 45% at 82% 62%, rgba(0,152,255,0.14) 0%, transparent 60%),
    radial-gradient(ellipse 75% 55% at 28% 72%, rgba(14,33,73,0.24) 0%, transparent 70%),
    radial-gradient(ellipse 140% 85% at 50% -4%, #163676 0%, #143272 30%, #0E2149 62%, #0A1830 100%);
}

.slide.t3 {
  background:
    conic-gradient(from 60deg at 20% 80%, rgba(180,215,255,0.10) 0deg, transparent 100deg, transparent 260deg, rgba(180,215,255,0.08) 360deg),
    radial-gradient(ellipse 74% 60% at 18% 30%, rgba(230,242,255,0.46) 0%, rgba(180,210,250,0.16) 34%, transparent 68%),
    radial-gradient(ellipse 48% 44% at 80% 70%, rgba(0,140,255,0.22) 0%, transparent 58%),
    radial-gradient(ellipse 78% 58% at 52% 48%, rgba(14,33,73,0.26) 0%, transparent 72%),
    radial-gradient(ellipse 140% 92% at 50% 5%, #163676 0%, #143272 28%, #0E2149 60%, #0A1830 100%);
}

.slide.t4 {
  background:
    conic-gradient(from 0deg at 50% 50%, rgba(200,220,255,0.10) 0deg, transparent 60deg, transparent 180deg, rgba(180,210,250,0.08) 240deg, transparent 360deg),
    radial-gradient(ellipse 85% 65% at 50% 42%, rgba(255,255,255,0.58) 0%, rgba(210,230,255,0.20) 28%, transparent 64%),
    radial-gradient(ellipse 40% 36% at 12% 14%, rgba(30,60,180,0.18) 0%, transparent 60%),
    radial-gradient(ellipse 80% 50% at 50% 92%, rgba(10,26,66,0.30) 0%, transparent 70%),
    radial-gradient(ellipse 160% 100% at 50% 40%, #163676 0%, #143272 28%, #0E2149 62%, #0A1830 100%);
}

.slide.t5 {
  background:
    conic-gradient(from 300deg at 30% 40%, rgba(180,210,250,0.10) 0deg, transparent 90deg, transparent 270deg, rgba(180,210,250,0.08) 360deg),
    radial-gradient(ellipse 76% 58% at 22% 40%, rgba(200,220,255,0.40) 0%, rgba(160,200,250,0.14) 36%, transparent 68%),
    radial-gradient(ellipse 48% 44% at 85% 16%, rgba(0,152,255,0.16) 0%, transparent 58%),
    radial-gradient(ellipse 75% 55% at 72% 82%, rgba(14,33,73,0.26) 0%, transparent 70%),
    radial-gradient(ellipse 150% 90% at 28% -6%, #163676 0%, #143272 28%, #0E2149 60%, #0A1830 100%);
}

/* T6 沉潭 / 宣言 — RETIRED in partner deck. No closing manifesto for CTO face-to-face.
   P12 path: specific next-step (POC scope / timeline / 工作组 structure). */

/* ═══════════════════════════════════════════════
   Page chrome (logo + meta + footer)
   ═══════════════════════════════════════════════ */

.logo-chrome {
  position: absolute;
  top: 32px;
  left: 48px;
  height: 24px;  /* v47: 32 → 24 */
  z-index: 10;
  user-select: none;
  pointer-events: none;
}

.logo-chrome img {
  display: block;
  height: 24px;  /* v47: 32 → 24 */
  width: auto;
}

.meta-top {
  position: absolute;
  top: 40px;
  right: 96px;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: 0.22em;
  color: var(--ink-meta);
  z-index: 10;
}

.footer {
  position: absolute;
  left: 96px;
  right: 96px;
  bottom: 32px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 10px;  /* v47: 11 → 10 */
  letter-spacing: 0.22em;
  color: var(--ink-meta);
  z-index: 10;
}

.footer::before {
  content: '';
  position: absolute;
  top: -16px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--hairline);
}

.footer span { display: inline-block; }
.footer-center { color: var(--ink-meta); }

/* ═══════════════════════════════════════════════
   Eyebrow + hairlines + animations (inherited)
   ═══════════════════════════════════════════════ */

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.24em;
  color: var(--ink-meta);
}

.eyebrow::before {
  content: '';
  width: 6px;
  height: 6px;
  background: var(--grit-blue);
  display: inline-block;
  flex-shrink: 0;
}

.eyebrow.proto {
  color: var(--grit-blue);
}

.hairline-short { width: 100px; height: 1px; background: var(--grit-blue); transform-origin: left center; }

.hairline-glow {
  width: 240px;
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, rgba(0,152,255,0.20) 10%, rgba(0,152,255,0.80) 40%, var(--grit-blue) 50%, rgba(0,152,255,0.80) 60%, rgba(0,152,255,0.20) 90%, transparent 100%);
  filter: drop-shadow(0 0 6px rgba(0,152,255,0.35));
  transform-origin: left center;
}

.hairline-full { width: 100%; height: 1px; background: var(--hairline); }

@keyframes slide-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes hairline-draw { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.slide.active .enter { animation: slide-enter 400ms var(--ease-signal) both; }
.slide.active .draw { animation: hairline-draw 600ms var(--ease-signal) both; }

/* ═══════════════════════════════════════════════
   Cover block (partner deck cold-open variant · NOT manifesto)
   ═══════════════════════════════════════════════ */

.cover-block {
  position: absolute;
  top: 140px;
  left: 96px;
  right: 96px;
  z-index: 3;
}

.cover-eyebrow { margin-bottom: 44px; }

.cover-display {
  font-family: var(--font-sc);
  font-weight: 700;
  font-size: 64px;
  line-height: 1.18;
  letter-spacing: -0.015em;
  color: var(--ink-primary);
  max-width: 1200px;
}

.cover-display strong {
  color: var(--grit-blue);
  font-weight: 900;
}

.cover-lead {
  margin-top: 32px;
  font-family: var(--font-sc);
  font-weight: 400;
  font-size: 20px;
  line-height: 1.62;
  color: var(--ink-secondary);
  max-width: 1080px;
}

.cover-meta-row {
  position: absolute;
  bottom: 88px;
  left: 96px;
  right: 96px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  z-index: 3;
}

.cover-meta-kv {
  font-family: var(--font-en);
  font-size: 12px;
  letter-spacing: 0.22em;
  color: var(--ink-meta);
  text-transform: uppercase;
  line-height: 1.8;
}

.cover-meta-kv strong {
  color: var(--ink-primary);
  font-weight: 700;
}

/* ═══════════════════════════════════════════════
   Page primitives (inherited from v2)
   ═══════════════════════════════════════════════ */

.page-body {
  position: absolute;
  top: 80px;  /* per user ca8995d7: 88→80 give 8px more content; 不破坏 logo-chrome */
  left: 96px;
  right: 96px;
  bottom: 56px;  /* per user ca8995d7: 64→56 give 8px more content; 不破坏 footer 位置 */
  display: flex;
  flex-direction: column;
  z-index: 3;
  overflow: hidden;  /* per user ca8995d7: 强制裁切 page-body 内 overflow，预防 mobile font-render variance 渗透到 slide 外 */
}

.page-eyebrow { margin-bottom: 24px; }

.page-title {
  font-family: var(--font-sc);
  font-weight: 700;
  font-size: 48px;  /* v47: 36 → 48 (title:body 跳幅 2:1 → 3.2:1) */
  line-height: 1.15;  /* v47: 1.25 → 1.15 (大字号要更紧) */
  letter-spacing: -0.01em;
  color: var(--ink-primary);
  max-width: 1120px;
}

.page-title strong { color: var(--grit-blue); }

.page-hairline-wrap { margin-top: 24px; margin-bottom: 20px; }

.page-lead {
  font-family: var(--font-sc);
  font-weight: 500;
  font-size: 14px;  /* per user 8ce9a6d1 + ec740166 §8.12: 全册副标统一 14px。CSS class default + inline override 两层都必须 14 */
  line-height: 1.55;
  color: var(--ink-secondary);
  max-width: 1100px;
}

/* hero variant · used when lead IS the page's main statement (P3 立场 / 无 heavy body) */
.page-lead.hero {
  font-size: 30px;
  line-height: 1.42;
  font-weight: 500;
  color: var(--ink-primary);
  padding-left: 20px;
  border-left: 3px solid var(--grit-blue);
  max-width: 1180px;
  margin-top: 8px;
}

.page-lead.hero strong {
  font-weight: 700;
  color: var(--grit-blue);
}

/* Evidence list (numbered) · inherited from BP v2 · T2 single-point pages */
.evidence-list {
  margin-top: 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  max-width: 1180px;
}

.evidence-item {
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 16px;
  align-items: baseline;
}

.evidence-num {
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 14px;
  color: var(--grit-blue);
  letter-spacing: 0.08em;
  padding-top: 2px;
}

.evidence-body {
  font-family: var(--font-sc);
  font-weight: 400;
  font-size: 15px;  /* v47: 18 → 15 (title:body 跳幅) */
  line-height: 1.65;  /* 行高补偿 */
  color: var(--ink-secondary);
}

.evidence-body strong { font-weight: 700; color: var(--ink-primary); }

/* Visual-hierarchy variants */
.evidence-item.priority-1 {
  padding: 4px 0 4px 14px;
  border-left: 2px solid var(--grit-blue);
  margin-left: -14px;
}
.evidence-item.priority-1 .evidence-body {
  font-size: 17px;  /* v47: 20 → 17 (proportional to body 18→15) */
  font-weight: 500;
  color: var(--ink-primary);
}
.evidence-item.priority-1 .evidence-num {
  font-weight: 900;
  color: var(--grit-blue);
}

.evidence-item.priority-2 .evidence-body {
  font-size: 16px;  /* v47: 19 → 16 */
  font-weight: 450;
  color: var(--ink-primary);
}
.evidence-item.priority-2 .evidence-num {
  font-weight: 900;
  color: var(--grit-blue);
}

.evidence-item.muted { opacity: 0.58; }
.evidence-item.muted .evidence-body {
  font-size: 15px;
  font-weight: 400;
}
.evidence-item.muted .evidence-num {
  color: var(--ink-meta);
  font-weight: 700;
}

.evidence-item.hero {
  padding: 20px 24px 22px 28px;
  border-left: 3px solid var(--grit-blue);
  background: linear-gradient(90deg, rgba(0,152,255,0.10) 0%, rgba(0,152,255,0.02) 60%, transparent 100%);
  margin: 6px 0 10px -2px;
  grid-template-columns: 36px 1fr;
  gap: 18px;
}
.evidence-item.hero .evidence-body {
  font-size: 18px;  /* v47: 22 → 18 (hero 仍最大但比例 follow body 缩) */
  font-weight: 600;
  line-height: 1.55;
  color: var(--ink-primary);
}
.evidence-item.hero .evidence-num {
  font-size: 16px;
  font-weight: 900;
  color: var(--grit-blue);
  padding-top: 4px;
}

/* Two-up / three-up card grid · inherited from BP v2 */
.two-col-grid {
  margin-top: 28px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  max-width: 1248px;
}

.three-col-grid {
  margin-top: 28px;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 20px;
  max-width: 1248px;
}

.col-card {
  border: 1px solid var(--hairline);
  border-top: 2px solid var(--grit-blue);
  padding: 24px 24px 28px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: rgba(14,33,73,0.40);  /* v47: 0.20 → 0.40 (玻璃质感) */
  backdrop-filter: blur(12px);  /* v47: NEW (Amaterasu cheat code) */
  -webkit-backdrop-filter: blur(12px);
  border-radius: 4px;  /* v47: NEW (柔角) */
}

.col-card .col-label {
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.26em;
  color: var(--grit-blue);
  text-transform: uppercase;
}

.col-card .col-title {
  font-family: var(--font-sc);
  font-weight: 700;
  font-size: 20px;
  line-height: 1.35;
  color: var(--ink-primary);
}

.col-card .col-body {
  font-family: var(--font-sc);
  font-weight: 400;
  font-size: 15px;
  line-height: 1.62;
  color: var(--ink-secondary);
}

.col-card .col-body ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.col-card .col-body li::before {
  content: '·';
  color: var(--grit-blue);
  font-weight: 800;
  margin-right: 8px;
}

/* col-card.accent · layout asset (kept per Joe ruling — available if later surfaces need it) */
.col-card.accent {
  background: linear-gradient(180deg, rgba(0,152,255,0.10) 0%, rgba(14,33,73,0.40) 100%);  /* v47: 末端 0.20 → 0.40 同步 base 玻璃质感 */
  border-top: 2px solid var(--grit-blue);
  border-left: 1px solid rgba(0,152,255,0.28);
  /* backdrop-filter inherited from .col-card */
}

/* Logo chip · company overview page · text-based logo blocks */
.logo-chip {
  display: inline-block;
  padding: 5px 11px;
  border: 1px solid var(--hairline);
  background: rgba(14,33,73,0.30);
  font-family: var(--font-sc);
  font-size: 12.5px;
  font-weight: 500;
  color: var(--ink-secondary);
  letter-spacing: 0.01em;
  line-height: 1.4;
  white-space: nowrap;
}

.logo-chip.customer {
  font-size: 12px;
  padding: 4px 10px;
  background: rgba(14,33,73,0.20);
}

.logo-chip.highlight {
  color: var(--grit-blue);
  border-color: var(--grit-blue-60);
  background: rgba(0,152,255,0.10);
  font-weight: 600;
}

.logo-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.logo-chip-row .tier-label {
  font-family: var(--font-en);
  font-size: 10.5px;
  color: var(--ink-meta);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  min-width: 56px;
  font-weight: 700;
}

.panel-section {
  margin-top: 18px;
}

.panel-section-title {
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: 0.28em;
  color: var(--grit-blue);
  text-transform: uppercase;
  margin-bottom: 9px;
}

/* Hero metric · inherited from BP v2 · T4 burst-point pages (P5 BYD 200M proof) */
.hero-metric-wrap {
  margin-top: 36px;
  display: flex;
  align-items: baseline;
  gap: 64px;
  max-width: 1200px;
}

.hero-metric {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.hero-metric-value {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 152px;  /* v47: 104 → 152 (反差更极端) */
  line-height: 1.0;
  color: var(--ink-primary);
  letter-spacing: -0.025em;
}

.hero-metric-value .unit {
  font-size: 24px;  /* v47: 40 → 24 (大数字 + 极小单位) */
  font-weight: 800;
  color: var(--ink-primary);  /* per user 8ce9a6d1: 亿元 不要标蓝 */
  margin-left: 12px;
  letter-spacing: 0.04em;
  vertical-align: 24px;
}

.hero-metric-caption {
  font-family: var(--font-sc);
  font-weight: 500;
  font-size: 11px;  /* v47: 16 → 11 (fine-print 反衬 hero metric) */
  line-height: 1.6;
  letter-spacing: 0.32em;  /* v47: NEW */
  text-transform: uppercase;
  color: var(--ink-meta);
  max-width: 320px;
}

.hero-sub-evidence {
  margin-top: 36px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-width: 1180px;
  font-family: var(--font-sc);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-secondary);
}

.hero-sub-evidence .kv {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 20px;
}

.anchor {
  padding: 8px 14px;  /* per user ca8995d7: 12 18 → 8 14 节省 ~16px 防 mobile overflow */
  border-left: 2px solid var(--grit-blue);
  background: rgba(10, 22, 48, 0.35);
  font-family: var(--font-sc);
  font-weight: 500;
  font-size: 14px;  /* per user 8ce9a6d1 + ec740166 §8.12: 全册总结统一 14px */
  line-height: 1.55;
  color: var(--ink-secondary);
  max-width: 1200px;
}

.anchor strong { font-weight: 700; color: var(--ink-primary); }

.page-body .anchor {
  margin-top: auto;
}

/* Proto tag — tiny chip used on prototype slides only */
.proto-tag {
  display: inline-block;
  padding: 2px 9px;
  border: 1px solid var(--grit-blue-60);
  background: rgba(0,152,255,0.10);
  color: var(--grit-blue);
  font-family: var(--font-en);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  margin-left: 14px;
  vertical-align: 3px;
}

/* ═══════════════════════════════════════════════
   NEW v3 PRIMITIVE 1 · matrix-grid
   ─── 用途：pain/needs × capability 映射（P8-P11 收口工具）
   ─── 读法：行 = 对方诉求，列 = 我方能力，单元格 = 契合度 (● high / ○ mid / 空 = n/a)
   ═══════════════════════════════════════════════ */

.matrix-grid {
  margin-top: 28px;
  display: grid;
  gap: 0;
  max-width: 1248px;
  border: 1px solid var(--hairline);
  background: rgba(10,22,48,0.20);
}

.matrix-grid.cols-3 {
  grid-template-columns: 300px repeat(3, 1fr);
}

.matrix-grid.cols-4 {
  grid-template-columns: 280px repeat(4, 1fr);
}

.matrix-grid.cols-5 {
  grid-template-columns: 260px repeat(5, 1fr);
}

.matrix-cell {
  padding: 14px 14px;
  border-right: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  min-height: 64px;
  display: flex;
  align-items: center;
}

/* last column in each row — remove right border via modular nth */
.matrix-grid.cols-3 .matrix-cell:nth-child(4n) { border-right: none; }
.matrix-grid.cols-4 .matrix-cell:nth-child(5n) { border-right: none; }
.matrix-grid.cols-5 .matrix-cell:nth-child(6n) { border-right: none; }

/* last row — remove bottom border (modular nth-last-child on per-col count) */
.matrix-grid.cols-3 .matrix-cell:nth-last-child(-n+4) { border-bottom: none; }
.matrix-grid.cols-4 .matrix-cell:nth-last-child(-n+5) { border-bottom: none; }
.matrix-grid.cols-5 .matrix-cell:nth-last-child(-n+6) { border-bottom: none; }

.matrix-cell.corner {
  background: transparent;
}

.matrix-cell.col-header {
  font-family: var(--font-sc);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.38;
  color: var(--grit-blue);
  background: rgba(0,152,255,0.09);
  justify-content: center;
  text-align: center;
  border-bottom: 2px solid var(--grit-blue-60);
}

.matrix-cell.row-label {
  font-family: var(--font-sc);
  font-weight: 500;
  font-size: 14.5px;
  line-height: 1.46;
  color: var(--ink-secondary);
  background: rgba(14,33,73,0.30);
  border-right: 2px solid var(--hairline);
}

.matrix-cell.fit {
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
  font-size: 24px;
  font-weight: 900;
  padding: 18px 14px 16px;
  min-height: 96px;
  text-align: center;
}

.matrix-cell.fit.high { color: var(--grit-blue); }
.matrix-cell.fit.mid { color: var(--ink-secondary); opacity: 0.72; font-size: 22px; }
.matrix-cell.fit.none { color: transparent; }

.matrix-cell.fit .fit-caption {
  font-family: var(--font-sc);
  font-size: 11.5px;
  font-weight: 400;
  color: var(--ink-meta);
  line-height: 1.4;
  letter-spacing: 0.01em;
  display: block;
  max-width: 220px;
}

.matrix-cell.fit.high .fit-caption { color: var(--ink-secondary); opacity: 0.88; }
.matrix-cell.fit.mid .fit-caption { color: var(--ink-meta); opacity: 0.72; }

/* ═══════════════════════════════════════════════
   NEW v3 PRIMITIVE 2 · comparison-split
   ─── 用途：axis × 两实体 对比（Isaac Sim vs GritGene · P3-P4 技术壁垒 / P5-P7 位置图）
   ─── 读法：左列 = 对比维度，中 = 对方，右 = 我方（右列蓝色 accent 标示主角）
   ═══════════════════════════════════════════════ */

.comparison-split {
  margin-top: 28px;
  display: grid;
  grid-template-columns: 220px 1fr 1fr;
  gap: 0;
  max-width: 1248px;
  border: 1px solid var(--hairline);
  background: rgba(10,22,48,0.20);
}

.compare-head {
  padding: 16px 18px;
  border-bottom: 2px solid var(--hairline);
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.22em;
  color: var(--ink-meta);
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 10px;
}

.compare-head.axis {
  background: transparent;
  border-right: 1px solid var(--hairline);
}

.compare-head.a-entity {
  background: rgba(14,33,73,0.30);
  color: var(--ink-secondary);
  border-right: 1px solid var(--hairline);
}

.compare-head.b-entity {
  background: rgba(0,152,255,0.10);
  color: var(--grit-blue);
  border-top: 2px solid var(--grit-blue);
  margin-top: -2px;
  border-bottom: 2px solid var(--grit-blue-60);
}

.compare-head .entity-sub {
  font-family: var(--font-sc);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--ink-meta);
  text-transform: none;
}

.compare-head.b-entity .entity-sub {
  color: rgba(0,152,255,0.72);
}

.compare-axis {
  padding: 16px 18px;
  border-right: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  background: rgba(14,33,73,0.22);
  font-family: var(--font-sc);
  font-weight: 700;
  font-size: 13.5px;
  color: var(--ink-secondary);
  letter-spacing: 0.04em;
  display: flex;
  align-items: center;
}

.compare-cell {
  padding: 16px 20px;
  border-right: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  font-family: var(--font-sc);
  font-weight: 400;
  font-size: 14.5px;
  line-height: 1.58;
  color: var(--ink-secondary);
}

.compare-cell.b-cell {
  background: rgba(0,152,255,0.05);
  color: var(--ink-primary);
  font-weight: 500;
  border-right: none;
}

.compare-cell strong {
  color: var(--grit-blue);
  font-weight: 700;
}

/* remove bottom border on last row */
.comparison-split > *:nth-last-child(-n+3) { border-bottom: none; }

/* ═══════════════════════════════════════════════
   NEW v3 PRIMITIVE 3 · stack-diagram
   ─── 用途：Physical AI 训练栈层状图 + 粒界插入点 (P5-P7 核心叙事工具)
   ─── 读法：从上往下 = 应用层 → 基础层；plug 行蓝色 accent 标示粒界插入点
   ═══════════════════════════════════════════════ */

.stack-diagram {
  margin-top: 28px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-width: 1248px;
}

.stack-layer {
  display: grid;
  grid-template-columns: 170px 1fr 340px;
  gap: 20px;
  padding: 18px 24px;
  border: 1px solid var(--hairline);
  border-left: 3px solid var(--hairline);
  background: rgba(14,33,73,0.18);
  align-items: center;
  transition: transform 300ms var(--ease-signal);
}

.stack-layer.plug {
  border-left: 3px solid var(--grit-blue);
  background: linear-gradient(90deg, rgba(0,152,255,0.14) 0%, rgba(0,152,255,0.04) 60%, rgba(14,33,73,0.18) 100%);
}

.stack-layer-idx {
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.24em;
  color: var(--ink-meta);
  text-transform: uppercase;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.stack-layer-idx .layer-num {
  color: var(--grit-blue);
  font-size: 28px;
  font-weight: 900;
  letter-spacing: -0.02em;
}

.stack-layer.plug .stack-layer-idx .layer-num { color: var(--grit-blue); }

.stack-layer-core {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.stack-layer-core .layer-name {
  font-family: var(--font-sc);
  font-weight: 700;
  font-size: 20px;
  line-height: 1.3;
  color: var(--ink-primary);
}

.stack-layer-core .layer-sub {
  font-family: var(--font-sc);
  font-weight: 400;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--ink-secondary);
}

.stack-layer-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  text-align: right;
}

.stack-layer-right .owner-tag {
  font-family: var(--font-en);
  font-weight: 800;
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 3px 10px;
  border: 1px solid var(--hairline);
  color: var(--ink-meta);
  background: rgba(10,22,48,0.40);
}

.stack-layer.plug .stack-layer-right .owner-tag {
  color: #0A1830;
  background: var(--grit-blue);
  border-color: var(--grit-blue);
}

.stack-layer-right .owner-note {
  font-family: var(--font-sc);
  font-weight: 500;
  font-size: 13px;
  line-height: 1.5;
  color: var(--ink-secondary);
}

.stack-layer.plug .stack-layer-right .owner-note { color: var(--ink-primary); }

/* ═══════════════════════════════════════════════
   Nav + indicator (inherited)
   ═══════════════════════════════════════════════ */

.nav {
  position: fixed;
  bottom: 24px;
  right: 24px;
  display: flex;
  gap: 6px;
  z-index: 100;
}

.nav button {
  width: 40px;
  height: 40px;
  background: rgba(10, 20, 40, 0.72);
  border: 1px solid var(--hairline);
  color: var(--ink-secondary);
  font-family: var(--font-en);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  transition: color 200ms var(--ease-signal), border-color 200ms var(--ease-signal), background 200ms var(--ease-signal);
}

.nav button:hover {
  color: var(--grit-blue);
  border-color: var(--grit-blue-60);
  background: rgba(0, 152, 255, 0.08);
}

.nav button:disabled { opacity: 0.35; cursor: not-allowed; }

.indicator {
  display: none;  /* v47: hidden (footer 已有页码，删冗余) */
  position: fixed;
  bottom: 32px;
  left: 24px;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 10px;
  letter-spacing: 0.28em;
  color: var(--ink-meta);
  z-index: 100;
  user-select: none;
}

.indicator .curr { color: var(--ink-primary); }

/* ═══════════════════════════════════════════════
   Print mode (inherited from v2 · grain-off)
   ═══════════════════════════════════════════════ */

@media print {
  @page { size: 1440px 810px; margin: 0; }

  html, body {
    width: 1440px !important;
    height: auto !important;
    overflow: visible !important;
    background: var(--canvas-deep) !important;
  }

  .stage { display: block !important; width: 1440px !important; height: auto !important; overflow: visible !important; }

  .slides-container {
    position: relative !important;
    width: 1440px !important;
    height: auto !important;
    transform: none !important;
  }

  .slide {
    position: relative !important;
    inset: auto !important;
    width: 1440px !important;
    height: 810px !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    transition: none !important;
    display: block !important;
    page-break-after: always;
    break-after: page;
  }

  .slide:last-child { page-break-after: auto; break-after: auto; }

  .slide .enter, .slide .draw, .slide.active .enter, .slide.active .draw {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }

  .nav, .indicator { display: none !important; }

  .slide::before { display: none !important; }

  .anchor {
    background: rgba(14, 33, 73, 0.55) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
}

.company-overview-grid {
            margin-top: 16px;
            display: grid;
            grid-template-columns: minmax(0, 1.1fr) minmax(360px, 0.9fr);
            gap: 24px;
            align-items: start;
          }
          /* v47: P2 restructure — top-half grid + bottom logo wall */
          .company-top-grid {
            margin-top: 16px;
            display: grid;
            grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr);
            gap: 28px;
            align-items: center;  /* per user 8ce9a6d1 3(b/c): 左右改中心线对齐，不再 top-aligned */
          }
          .company-left-stack {
            display: flex;
            flex-direction: column;
            gap: 14px;
          }
          .company-ip-card-inline {
            padding: 14px 18px 16px;
          }
          .company-ip-card-inline .col-label {
            font-size: 11px;
          }
          .company-ip-card-inline .col-body {
            font-size: 13px;
            line-height: 1.55;
          }
          /* v47: investor wall (hero bottom half) */
          .investor-wall {
            margin-top: 20px;
            border-top: 1px solid var(--hairline);
            padding-top: 18px;
          }
          .sub-section-heading {
            font-family: var(--font-sc);
            font-weight: 700;
            font-size: 22px;
            line-height: 1.3;
            color: var(--ink-primary);
            margin-bottom: 12px;
            letter-spacing: -0.005em;
          }
          .sub-section-heading.accent {
            color: var(--grit-blue);
          }
          .company-overview-copy {
            margin: 0;
            font-size: 14px;  /* per user ec740166 5(b): 全册副标统一 P6 标准 14px */
            line-height: 1.55;
            max-width: 640px;
            color: var(--ink-secondary);
          }
          .company-right-rail {
            display: flex;
            flex-direction: column;
            gap: 12px;
          }
          .biz-rows {
            display: grid;
            gap: 12px;
          }
          .biz-row {
            display: grid;
            grid-template-columns: 146px 1fr;
            gap: 16px;
            align-items: start;
          }
          .biz-label {
            font-size: 14px;  /* per user 8ce9a6d1 §2: 三大业务线及下方文字与左侧统一 14px */
            font-weight: 700;
            color: var(--ink-primary);
            letter-spacing: -0.01em;
          }
          .biz-desc {
            font-size: 14px;  /* per user 8ce9a6d1 §2: 三大业务线下方文字统一 14px */
            line-height: 1.55;
            color: var(--ink-secondary);
            font-weight: 400;
          }
          .company-ip-card .col-body {
            font-size: 16px;
            line-height: 1.58;
          }
          .logo-grid-xl {
            margin-top: 4px;
            display: grid;
            grid-template-columns: 64px repeat(5, 1fr);  /* v47: tier 82→64 */
            gap: 10px 14px;  /* v47: 12 16 → 10 14 */
            align-items: center;
          }
          .logo-tier-xl {
            font-size: 14px;  /* v47: 18 → 14 */
            color: var(--ink-secondary);  /* v47: primary → secondary，让 logos 是主角 */
            font-family: var(--font-sc);
            font-weight: 500;
            letter-spacing: 0.06em;
          }
          .logo-cell-xl {
            height: 44px;  /* per user 9f1509bc/0484b9fb: revert to 上一个版本 (V47.4 之前的 44px) - 64px 让某些 logo 错乱 */
            display: flex;
            align-items: center;
            justify-content: center;
            background: #ffffff;
            border-radius: 5px;
            padding: 6px 10px;
            overflow: hidden;
          }
          .logo-cell-xl img {
            width: 100%;  /* per user c3bad935 + 飞飞 a7317de9: 强制 box reservation 防 FOUC flicker */
            height: 100%;
            object-fit: contain;  /* preserve aspect ratio (no distortion) */
            display: block;
            margin: 0;
          }
