  :root{
    /* ============ 主题色(默认: 🔵 克莱因蓝 IKB) ============
       切换主题: 从 references/themes-swiss.md 复制对应的 :root 块
       整体替换标有"主题色"注释的所有变量,其他散落的 var() 引用无需逐处改 */
    --paper:#fafaf8;          /* 主底色: 高级灰白 */
    --paper-rgb:250,250,248;
    --ink:#0a0a0a;            /* 文字主色: 近黑 */
    --ink-rgb:10,10,10;
    --grey-1:#f0f0ee;         /* 浅灰底 */
    --grey-2:#d4d4d2;         /* 中灰(分割线) */
    --grey-3:#737373;         /* 暗灰(辅助文字) */
    --accent:#002FA7;         /* 高亮色: 克莱因蓝 IKB */
    --accent-rgb:0,47,167;
    --accent-on:#ffffff;      /* accent 上的反色文字 */
    --accent-bright:#5B7BFF;  /* 暗底高亮: IKB 提亮版 */

    /* ============ Carbon 文本角色 token (role-based,代替 opacity) ============
       亮底:  primary 主文 / secondary 次文 / helper 辅助 / placeholder 占位
       暗底:  inverse 自动反向 */
    --text-primary:#0a0a0a;        /* = ink, 100% */
    --text-secondary:#525252;      /* gray 70 */
    --text-helper:#737373;         /* gray 60 */
    --text-placeholder:#a3a3a3;    /* gray 40 */
    --text-on-color:#ffffff;       /* accent/dark 反色 */
    --border-subtle:#e0e0e0;       /* gray 20, 极细分隔 */
    --border-strong:#a3a3a3;       /* gray 40, 强分隔 */

    /* ============ 字体(跨主题固定) ============ */
    --sans:"Inter","Helvetica Neue","Helvetica","Arial","Segoe UI Variable","Segoe UI";
    --sans-zh:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC","SimSun","STSongti","宋体",serif;
    --mono:"JetBrains Mono","IBM Plex Mono","SF Mono","Cascadia Code","Consolas","Courier New";

    /* ============ Carbon 2x Grid 间距模数 (基础 8px) ============
       参考: https://carbondesignsystem.com/elements/2x-grid/overview/
       任何 padding/gap/margin 优先用这套 token,确保 8px 基线对齐 */
    --sp-3:8px;     /* 02 token */
    --sp-4:12px;    /* 03 */
    --sp-5:16px;    /* 04 */
    --sp-6:24px;    /* 05 */
    --sp-7:32px;    /* 06 */
    --sp-8:40px;    /* 07 */
    --sp-9:48px;    /* 08 */
    --sp-10:64px;   /* 09 */
    --sp-11:80px;   /* 10 */
    --sp-12:96px;   /* 11 */
    --sp-13:160px;  /* 12 */

    /* ============ Carbon Motion tokens ============
       https://carbondesignsystem.com/guidelines/motion/overview/
       两套体系:productive (功能) 短 + 锐 / expressive (叙事) 长 + 软 */
    --ease-prod:cubic-bezier(.2,0,.38,.9);          /* productive standard */
    --ease-exp:cubic-bezier(.4,.14,.3,1);            /* expressive standard */
    --ease-entry-prod:cubic-bezier(0,0,.38,.9);     /* productive entrance */
    --ease-entry-exp:cubic-bezier(0,0,.3,1);         /* expressive entrance */
    --dur-fast-1:.07s;   /* 70ms */
    --dur-fast-2:.11s;   /* 110ms */
    --dur-mod-1:.15s;    /* 150ms */
    --dur-mod-2:.24s;    /* 240ms */
    --dur-slow-1:.4s;    /* 400ms */
    --dur-slow-2:.7s;    /* 700ms */

    /* 底部分页组件安全区: 主内容最低处不要进入这条区域 */
    --nav-safe-bottom:8vh;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{
    width:100%;height:100%;overflow:hidden;
    background:var(--paper);color:var(--ink);
    font-family:var(--sans),var(--sans-zh);
    font-feature-settings:"ss01","cv11";
    -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility
  }

  /* ============ WebGL 网格背景 ============ */
  canvas.bg{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;display:block;opacity:.55;mix-blend-mode:multiply;pointer-events:none}
  body.dark-bg canvas.bg{mix-blend-mode:screen;opacity:.42}
  body.low-power canvas.bg,
  body.low-power canvas.ascii-bg{display:none!important}

  /* ============ Deck 容器 + 翻页 ============ */
  #deck{position:fixed;inset:0;width:10000vw;height:100vh;display:flex;flex-wrap:nowrap;transition:transform .9s cubic-bezier(.77,0,.175,1);z-index:10;will-change:transform}
  .slide{
    width:100vw;height:100vh;flex:0 0 100vw;
    position:relative;
    padding:5.5vh 5vw 7vh 5vw;
    display:flex;flex-direction:column;
    overflow:hidden;
    background:var(--paper);color:var(--ink);
  }
  .slide.grey{background:var(--grey-1)}
  .slide.dark{background:var(--ink);color:var(--paper)}
  .slide.dark .grey-only{display:none}
  .slide.accent{background:var(--accent);color:var(--accent-on)}
  .slide.accent .accent-block{background:var(--accent-on);color:var(--accent)}

  /* Hero 页透出网格背景多一点 */
  .slide.hero{background:transparent}
  .slide.hero.grey{background:rgba(var(--paper-rgb),.86);backdrop-filter:blur(1px)}
  .slide.hero.dark{background:rgba(var(--ink-rgb),.92);color:var(--paper)}

  /* ============ 装饰: 极细分隔线 + 点阵矩阵 ============ */
  .rule{width:100%;height:1px;background:currentColor;opacity:.18;margin:0}
  .rule.thick{height:2px;opacity:.85}
  .rule.accent{background:var(--accent);opacity:1;height:2px}
  .rule.v{width:1px;height:100%;margin:0}

  /* 点阵矩阵 (dot matrix) - 用 radial-gradient */
  .dots{
    background-image:radial-gradient(currentColor 1px, transparent 1px);
    background-size:12px 12px;
    background-position:0 0;
    opacity:.18;
  }
  .dots-fine{
    background-image:radial-gradient(currentColor 0.8px, transparent 0.8px);
    background-size:8px 8px;
    opacity:.14;
  }
  .dots-bold{
    background-image:radial-gradient(currentColor 1.4px, transparent 1.4px);
    background-size:18px 18px;
    opacity:.22;
  }

  /* ============ Chrome (顶部 meta) + Foot (底部) ============ */
  .chrome{
    display:flex;justify-content:space-between;align-items:flex-start;
    font-family:var(--mono);
    font-size:14px;letter-spacing:.16em;text-transform:uppercase;
    opacity:.7;margin-bottom:auto
  }
  .chrome .l,.chrome .r{display:flex;gap:1.6em;align-items:center}
  .chrome .sep{width:24px;height:1px;background:currentColor;opacity:.5}

  .foot{
    margin-top:auto;
    display:flex;justify-content:space-between;align-items:flex-end;
    font-family:var(--mono);
    font-size:14px;letter-spacing:.14em;text-transform:uppercase;
    opacity:.55;
    padding-top:2vh;
    border-top:1px solid currentColor;
    border-color:rgba(127,127,127,.25)
  }
  .foot .nb{font-family:var(--sans);font-weight:600;letter-spacing:.04em}

  /* ============ Tag / Kicker / Meta 标签 ============ */
  .kicker{
    font-family:var(--mono);
    font-size:14px;letter-spacing:.24em;text-transform:uppercase;
    opacity:.65;margin-bottom:2.4vh;
    display:inline-flex;align-items:center;gap:.8em
  }
  .kicker::before{
    content:"";width:24px;height:1px;background:currentColor;opacity:.6
  }
  .kicker.no-line::before{display:none}
  .kicker.accent{color:var(--accent);opacity:1;font-weight:600}

  .tag{
    display:inline-block;
    font-family:var(--mono);
    font-size:14px;letter-spacing:.18em;text-transform:uppercase;
    padding:5px 10px;border:1px solid currentColor;opacity:.85
  }
  .tag.solid{background:currentColor;color:var(--paper);border-color:transparent}
  .tag.accent{background:var(--accent);color:var(--accent-on);border-color:transparent;opacity:1}

  /* ============ 标题层级 (无衬线 · 极轻字重 · 极致字号对比) ============ */
  .h-hero{
    font-family:var(--sans),var(--sans-zh);
    font-weight:200;
    font-size:11vw;
    line-height:.92;
    letter-spacing:-.04em;
  }
  .h-hero-zh{
    font-family:var(--sans),var(--sans-zh);
    font-weight:200;
    font-size:8.4vw;
    line-height:.96;
    letter-spacing:-.025em;
  }
  .h-xl{
    font-family:var(--sans),var(--sans-zh);
    font-weight:200;
    font-size:6vw;
    line-height:1;
    letter-spacing:-.03em;
  }
  .h-xl-zh{
    font-family:var(--sans),var(--sans-zh);
    font-weight:200;
    font-size:5vw;
    line-height:1.05;
    letter-spacing:-.025em;
  }
  .h-md{
    font-family:var(--sans),var(--sans-zh);
    font-weight:300;
    font-size:2.6vw;
    line-height:1.18;
    letter-spacing:-.015em;
  }
  .h-sub{
    font-family:var(--sans),var(--sans-zh);
    font-weight:400;
    font-size:2.2vw;
    line-height:1.3;
    letter-spacing:-.01em;
    opacity:.7;
  }

  /* ============ 正文 / 引语 / 元数据 ============ */
  .lead{
    font-family:var(--sans),var(--sans-zh);
    font-weight:400;
    font-size:1.55vw;
    line-height:1.4;
    letter-spacing:-.005em;
    opacity:.86;
  }
  .body{
    font-family:var(--sans),var(--sans-zh);
    font-weight:400;
    font-size:max(18px,1.08vw);
    line-height:1.6;
    letter-spacing:0;
    opacity:.78;
  }
  .body-sm{
    font-family:var(--sans),var(--sans-zh);
    font-weight:400;
    font-size:max(16px,.92vw);
    line-height:1.55;
    opacity:.7;
  }
  .meta{
    font-family:var(--mono);
    font-size:max(14px,.82vw);
    letter-spacing:.18em;text-transform:uppercase;
    opacity:.6;
  }
  .meta-row{
    display:flex;gap:1.4em;align-items:baseline;flex-wrap:wrap;
    font-family:var(--mono);
    font-size:max(14px,.88vw);letter-spacing:.16em;text-transform:uppercase;
    opacity:.65;
  }
  .meta-row span:not(.dot){display:inline-block}
  .meta-row .dot{
    display:inline-block;width:4px;height:4px;border-radius:50%;
    background:currentColor;opacity:.5;vertical-align:middle
  }

  /* ============ KPI Hero (视觉英雄数据) ============ */
  .kpi-hero{
    font-family:var(--sans);
    font-weight:800;
    font-size:22vw;
    line-height:.82;
    letter-spacing:-.05em;
    font-feature-settings:"tnum","ss01";
  }
  .kpi-hero .unit{
    font-family:var(--sans),var(--sans-zh);
    font-weight:500;
    font-size:.18em;
    letter-spacing:0;
    opacity:.5;
    margin-left:.12em;
    vertical-align:.5em;
  }
  .kpi-hero.accent{color:var(--accent)}
  .kpi-big{
    font-family:var(--sans);
    font-weight:800;
    font-size:11vw;
    line-height:.85;
    letter-spacing:-.04em;
    font-feature-settings:"tnum"
  }
  .kpi-mid{
    font-family:var(--sans);
    font-weight:700;
    font-size:6vw;
    line-height:.88;
    letter-spacing:-.03em;
    font-feature-settings:"tnum"
  }

  /* ============ Stat Card (数据卡片 · 极简) ============ */
  .stat-card{
    display:flex;flex-direction:column;
    gap:.6vh;align-items:flex-start;
    padding-top:1.6vh;
    border-top:2px solid currentColor;
  }
  .stat-card.thin{border-top-width:1px;border-color:rgba(127,127,127,.4)}
  .stat-card.accent-top{border-top-color:var(--accent);border-top-width:3px}
  .stat-card .stat-label{
    font-family:var(--mono);
    font-size:max(14px,.82vw);
    letter-spacing:.24em;text-transform:uppercase;
    opacity:.6;
  }
  .stat-card .stat-nb{
    font-family:var(--sans);
    font-weight:800;
    font-size:5.6vw;
    line-height:.88;
    letter-spacing:-.035em;
    font-feature-settings:"tnum";
    margin-top:.4vh;
  }
  .stat-card .stat-nb .stat-unit{
    font-family:var(--sans),var(--sans-zh);
    font-weight:500;
    font-size:.32em;
    letter-spacing:0;
    opacity:.6;
    margin-left:.14em;
    vertical-align:.4em;
  }
  .stat-card .stat-note{
    font-family:var(--sans),var(--sans-zh);
    font-weight:400;
    font-size:max(16px,.98vw);
    line-height:1.5;
    opacity:.7;
    margin-top:.6vh;
  }
  .grid-4 .stat-card .stat-nb{font-size:4.6vw}
  .grid-3 .stat-card .stat-nb{font-size:6.4vw}
  .grid-6 .stat-card .stat-nb{font-size:4vw}

  /* ============ Accent Block (高亮色块包裹内容) ============ */
  .accent-block{
    background:var(--accent);color:var(--accent-on);
    padding:2.4vh 2vw;
  }
  .accent-block.tight{padding:1.4vh 1.4vw}
  .accent-block .h-md,.accent-block .h-xl,.accent-block .kpi-mid{color:var(--accent-on)}

  .ink-block{
    background:var(--ink);color:var(--paper);
    padding:2.4vh 2vw
  }
  .grey-block{
    background:var(--grey-1);
    padding:2.4vh 2vw
  }

  /* 高亮文字 (mark 风格) */
  .mark{
    background:var(--accent);color:var(--accent-on);
    padding:0 .2em;
    box-decoration-break:clone;
    -webkit-box-decoration-break:clone;
  }
  .mark.ink{background:var(--ink);color:var(--paper)}
  .underline-accent{
    background-image:linear-gradient(to bottom, transparent 70%, var(--accent) 70%, var(--accent) 96%, transparent 96%);
    padding:0 .05em
  }

  /* ============ Pipeline / Step ============ */
  .pipeline-section{margin-top:3.2vh;padding-top:2.2vh;border-top:1px solid rgba(127,127,127,.3)}
  .pipeline-section:first-of-type{border-top:0;padding-top:0;margin-top:2.4vh}
  .pipeline-label{
    font-family:var(--mono);
    font-size:max(14px,.84vw);
    letter-spacing:.24em;text-transform:uppercase;
    opacity:.6;margin-bottom:1.8vh;
  }
  .pipeline{
    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:1vw;
  }
  .pipeline[data-cols="3"]{grid-template-columns:repeat(3,1fr)}
  .pipeline[data-cols="4"]{grid-template-columns:repeat(4,1fr)}
  .pipeline[data-cols="6"]{grid-template-columns:repeat(6,1fr)}
  .step{
    display:flex;flex-direction:column;gap:.6vh;
    padding-top:1.2vh;
    border-top:2px solid currentColor;
  }
  .step.accent-top{border-top-color:var(--accent);border-top-width:3px}
  .step-nb{
    font-family:var(--mono);
    font-weight:500;
    font-size:max(14px,1vw);
    opacity:.5;letter-spacing:.04em
  }
  .step-title{
    font-family:var(--sans),var(--sans-zh);
    font-weight:700;
    font-size:1.4vw;
    letter-spacing:-.01em;
    line-height:1.2;
  }
  .step-desc{
    font-family:var(--sans),var(--sans-zh);
    font-weight:400;
    font-size:max(16px,.94vw);
    line-height:1.45;
    opacity:.7;
  }

  /* ============ 网格系统 (模块化网格) ============ */
  .frame{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}
  .frame.grid-2-7-5,
  .frame.grid-2-6-6,
  .frame.grid-2-8-4,
  .frame.grid-2-4-8,
  .frame.grid-3-3,
  .frame.grid-12,
  .frame.grid-6,
  .frame.grid-4,
  .frame.grid-3{display:grid}

  /* 12 列模块化网格 (瑞士风核心) */
  .grid-12{
    display:grid;
    grid-template-columns:repeat(12,1fr);
    gap:2vh 1.2vw;
    align-items:start;
  }
  .span-2{grid-column:span 2}
  .span-3{grid-column:span 3}
  .span-4{grid-column:span 4}
  .span-5{grid-column:span 5}
  .span-6{grid-column:span 6}
  .span-7{grid-column:span 7}
  .span-8{grid-column:span 8}
  .span-9{grid-column:span 9}
  .span-12{grid-column:span 12}

  /* 经典分栏 */
  .grid-2-7-5{display:grid;grid-template-columns:7fr 5fr;gap:3vw 4vh;align-items:start}
  .grid-2-6-6{display:grid;grid-template-columns:1fr 1fr;gap:3vw 4vh;align-items:start}
  .grid-2-8-4{display:grid;grid-template-columns:8fr 4fr;gap:3vw 4vh;align-items:start}
  .grid-2-4-8{display:grid;grid-template-columns:4fr 8fr;gap:3vw 4vh;align-items:start}
  .grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:3vw 4vh;align-items:start}
  .grid-3-3{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(0,1fr);gap:2.4vh 2vw}
  .grid-4{display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);gap:3vh 3vw;flex:1;align-content:center}
  .grid-6{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:3vh 2.4vw;flex:1;align-content:center}

  /* 工具类 */
  .col{display:flex;flex-direction:column;gap:2vh}
  .row{display:flex;align-items:center;gap:2vw}
  .fill{flex:1}
  .center{align-items:center;justify-content:center;text-align:center}
  .right{text-align:right;justify-self:end}
  .top{align-self:start}
  .bottom{align-self:end}
  .va-center{align-self:center}
  .nowrap{white-space:nowrap}

  /* 非对称定位 */
  .pos-absolute{position:absolute}
  .bottom-left{position:absolute;left:5vw;bottom:8vh;max-width:50vw}
  .bottom-right{position:absolute;right:5vw;bottom:8vh;max-width:50vw;text-align:right}
  .top-right{position:absolute;right:5vw;top:5.5vh;text-align:right}
  .top-left{position:absolute;left:5vw;top:5.5vh}

  /* ============ Callout (引用框 · 极简) ============ */
  .callout{
    padding:2vh 2vw;
    border-left:3px solid var(--accent);
    font-family:var(--sans),var(--sans-zh);
    font-size:max(14px,1vw);
    line-height:1.55;
    opacity:.9;
  }
  .callout.ink{border-left-color:currentColor}
  .callout .cite,.callout .callout-src{
    display:block;margin-top:1.2vh;
    font-family:var(--mono);
    font-size:14px;letter-spacing:.16em;text-transform:uppercase;
    opacity:.6;
  }

  /* ============ Icons (Lucide via CDN) ============ */
  .ico{width:1em;height:1em;display:inline-block;vertical-align:-.12em;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
  .ico-lg,.ico-md,.ico-sm{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
  .ico-lg{width:2.4vw;height:2.4vw;stroke-width:1.4;display:inline-block}
  .ico-md{width:1.6vw;height:1.6vw;stroke-width:1.6;display:inline-block;vertical-align:-.4em}
  .ico-sm{width:1vw;height:1vw;stroke-width:1.8;display:inline-block;vertical-align:-.15em;opacity:.7}

  /* ============ 几何小图标 (装饰) ============ */
  .geo-dot{width:.7vw;height:.7vw;border-radius:50%;background:var(--accent);display:inline-block;vertical-align:middle}
  .geo-square{width:.7vw;height:.7vw;background:var(--accent);display:inline-block;vertical-align:middle}
  .geo-line{width:2vw;height:2px;background:var(--accent);display:inline-block;vertical-align:middle}
  .geo-circle-o{width:.9vw;height:.9vw;border:2px solid currentColor;border-radius:50%;display:inline-block;vertical-align:middle}

  /* ============ 图片 frame-img ============ */
  .frame-img{overflow:hidden;position:relative;background:var(--paper);box-sizing:border-box;width:100%}
  .slide.dark .frame-img{background:rgba(255,255,255,.06)}
  .frame-img > img{width:100%;height:100%;object-fit:cover;object-position:center center;display:block}
  .frame-img.fit-contain > img{object-fit:contain;object-position:center center}
  .frame-img.pos-top > img{object-position:top center}
  .frame-img.pos-face > img{object-position:center 35%}
  .frame-img.r-16x9{aspect-ratio:16/9;max-height:64vh}
  .frame-img.r-21x9{aspect-ratio:21/9;max-height:54vh}
  .frame-img.r-16x10{aspect-ratio:16/10;max-height:56vh}
  .frame-img.r-4x3{aspect-ratio:4/3;max-height:56vh}
  .frame-img.r-3x2{aspect-ratio:3/2;max-height:46vh}
  .frame-img.r-3x4{aspect-ratio:3/4;max-height:60vh}
  .frame-img.r-1x1{aspect-ratio:1/1;max-height:50vh}
  .frame-img.h-16{height:16vh}
  .frame-img.h-18{height:18vh}
  .frame-img.h-22{height:22vh}
  .frame-img.h-26{height:26vh}
  .frame-img.h-28{height:28vh}
  .frame-img.h-32{height:32vh}
  .frame-img.swiss-lined{border-top:2px solid var(--accent)}
  .frame-img.swiss-keyline{border:0}

  /* P22 Image Hero: 下半屏内容区必须和图片拉开距离,不要贴在图下沿 */
  .image-hero-body{
    display:grid;grid-template-columns:6fr 6fr;gap:3vw;
    padding:6.6vh 5vw 4.4vh;flex:1;align-content:start
  }
  .image-hero-stats{
    display:grid;grid-template-columns:repeat(3,1fr);gap:2vw;align-items:start
  }
  .img-cap{
    display:block;margin-top:.8vh;
    font-family:var(--mono);
    font-size:max(14px,.82vw);
    letter-spacing:.2em;text-transform:uppercase;
    opacity:.6;
  }
  figure.frame-img,figure.tile{margin:0;display:flex;flex-direction:column;min-width:0}
  figure.tile > .frame-img{flex:0 0 auto}

  /* 瑞士风图文混排: 只用直角、发丝线、单一 accent；图像容器不加圆角/阴影 */
  .swiss-img-split{display:grid;grid-template-columns:5fr 7fr;gap:3vw;align-items:start;flex:1;min-height:0}
  .swiss-img-split.reverse{grid-template-columns:7fr 5fr}
  .swiss-img-split.align-bottom{align-items:end}
  .swiss-img-split.align-bottom .swiss-img-copy{align-self:end}
  .swiss-img-split.align-image-bottom{align-items:end;padding-bottom:var(--nav-safe-bottom)}
  .swiss-img-split.align-image-bottom .swiss-img-copy{align-self:end}
  .swiss-img-split.align-image-bottom figure.tile{align-self:end;position:relative}
  .swiss-img-split.align-image-bottom figure.tile > .swiss-img-caption{
    position:absolute;left:0;right:0;top:calc(100% + var(--sp-4));margin-top:0
  }
  .nav-safe-bottom{padding-bottom:var(--nav-safe-bottom)}
  .nav-safe-bottom-tight{padding-bottom:calc(var(--nav-safe-bottom) * .65)}
  .swiss-img-copy{display:flex;flex-direction:column;gap:var(--sp-6);min-width:0}
  .swiss-img-copy .rule{margin:0}
  .swiss-img-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5);align-items:start;margin-top:var(--sp-7)}
  .swiss-img-grid.two{grid-template-columns:repeat(2,1fr)}
  .swiss-img-grid.tight{margin-top:0}
  .swiss-img-caption{
    display:flex;justify-content:space-between;gap:var(--sp-5);
    margin-top:var(--sp-4);
    font-family:var(--mono);font-size:max(14px,.74vw);
    letter-spacing:.16em;text-transform:uppercase;color:var(--text-helper);
    border-top:1px solid var(--border-subtle);padding-top:var(--sp-4)
  }
  .swiss-img-caption strong{
    font-family:var(--sans),var(--sans-zh);font-size:max(16px,.9vw);
    font-weight:600;letter-spacing:0;text-transform:none;color:var(--text-primary)
  }

  /* ============ Bar Chart (扁平几何图表) ============ */
  .bar-chart{display:flex;flex-direction:column;gap:1.4vh}
  .bar-row{display:grid;grid-template-columns:8em 1fr 4em;gap:1.4vw;align-items:center}
  .bar-row .bar-label{font-family:var(--mono);font-size:max(14px,.84vw);letter-spacing:.14em;text-transform:uppercase;opacity:.7}
  .bar-row .bar-track{height:14px;background:rgba(127,127,127,.18);position:relative}
  .bar-row .bar-fill{height:100%;background:var(--accent);position:absolute;left:0;top:0}
  .bar-row .bar-fill.ink{background:currentColor}
  .bar-row .bar-value{font-family:var(--sans);font-weight:700;font-size:max(16px,1.05vw);text-align:right;font-feature-settings:"tnum"}

  /* ============ 导航 ============ */
  /* 底部分页导航: 仅保留方块本身,无背景无描边 */
  #nav{position:fixed;left:50%;bottom:2vh;transform:translateX(-50%);z-index:30;display:flex;gap:10px;padding:0;background:transparent;border:0}
  #nav .dot{width:6px;height:6px;background:rgba(0,0,0,.28);cursor:pointer;transition:all .25s ease;border:0;padding:0;border-radius:0}
  #nav .dot:hover{background:rgba(0,0,0,.55)}
  #nav .dot.active{background:var(--accent);width:18px}
  body.dark-bg #nav .dot{background:rgba(255,255,255,.32)}
  body.dark-bg #nav .dot.active{background:var(--accent)}

  #hint{position:fixed;bottom:2.4vh;right:2.5vw;z-index:30;font-family:var(--mono);font-size:14px;letter-spacing:.14em;text-transform:uppercase;opacity:.4;color:var(--ink-tint, currentColor)}
  body.dark-bg #hint{color:var(--paper);opacity:.4}
  body.low-power #hint{color:var(--accent);opacity:.72}
  body.dark-bg.low-power #hint{color:var(--paper);opacity:.72}

  /* ESC 索引页: 动画元素强制可见 (覆盖 motion-ready 的 opacity:0) */
  #overview [data-anim]{opacity:1!important;transform:none!important}
  #overview .slide *{animation:none!important;transition:none!important}

  /* 统一卡片样式 token: card-fill (默认灰底 · 中性) + card-ink (反转高对比) + card-accent (单一焦点) */
  .card-fill{background:#f5f5f4;border:0;color:var(--text-primary)}
  .card-ink{background:var(--ink);border:0;color:var(--paper)}
  .card-ink .t-meta,.card-ink .t-cat{color:rgba(255,255,255,.6)}
  .card-accent{background:var(--accent);border:0;color:var(--accent-on)}
  .card-accent .t-meta,.card-accent .t-cat{color:var(--accent-on)}

  /* ============ 动效 (与原模板一致) ============ */
  [data-anim]{opacity:1}
  body.motion-ready [data-anim]{opacity:0}
  body.motion-ready [data-anim="left"]{transform:translateX(-24px)}
  body.motion-ready [data-anim="right"]{transform:translateX(24px)}
  body.motion-ready [data-anim="line"]{opacity:0;transform:translateY(10px)}
  body.motion-ready [data-animate="pipeline"] [data-anim]{opacity:.15}
  body.low-power #deck{transition:none!important}
  body.low-power *,
  body.low-power *::before,
  body.low-power *::after{animation:none!important;transition:none!important}
  body.low-power.motion-ready [data-anim],
  body.low-power [data-anim]{opacity:1!important;transform:none!important}

  /* ============================================================
     ↓↓↓ V2 EXTENSIONS · Canvas Mode + 参考图新类
     验证效果后沉淀回 template-swiss.html
     ============================================================ */

  /* Windows 适配:雅黑没有 ExtraLight 200,中文大字号字重补偿 */
  body.is-win .name-mega,
  body.is-win .num-mega,
  body.is-win .kpi-thin,
  body.is-win .tl-node .multi{
    font-weight:300;letter-spacing:-.02em;
  }
  body.is-win [style*="font-weight:200"]{font-weight:300 !important}

  /* 全屏铺满模式 · 关闭 WebGL · 卡片即页面 */
  body.canvas-mode{background:var(--paper)}
  body.canvas-mode canvas.bg{display:none !important}
  body.canvas-mode .slide{background:var(--paper);padding:0;align-items:stretch;justify-content:stretch}
  body.canvas-mode .slide.hero{background:var(--paper)}

  .canvas-card{
    width:100vw;
    height:100vh;
    background:var(--paper);color:var(--ink);
    padding:5.6vh 5vw 4.4vh;
    display:flex;flex-direction:column;
    position:relative;overflow:hidden;
    box-shadow:none;
    border-radius:0;
  }
  .slide.dark .canvas-card{background:var(--ink);color:var(--paper)}
  .slide.accent .canvas-card{background:var(--accent);color:var(--accent-on)}
  .slide.grey .canvas-card{background:var(--grey-1);color:var(--ink)}
  .slide.split .canvas-card{padding:0;flex-direction:row}

  /* ============ ASCII 点阵呼吸场 · IKB 封面/封底专用 ============
     用法:在 .canvas-card(或 split .half.b-accent)内首位插入 <canvas class="ascii-bg" aria-hidden="true">.
     动画由本文件底部的 ASCII IIFE 自动启动,所有 canvas.ascii-bg 都会被扫到.
     其他内容靠 .canvas-card > *:not(.ascii-bg){z-index:1} 自动浮在上层. */
  canvas.ascii-bg{
    position:absolute;inset:0;width:100%;height:100%;
    pointer-events:none;z-index:0;
    mix-blend-mode:screen;opacity:.92;
  }
  .canvas-card > *:not(.ascii-bg){position:relative;z-index:1}
  .slide.accent .canvas-card .chrome-min{color:rgba(255,255,255,.62)}
  .slide.accent .canvas-card .t-meta{color:rgba(255,255,255,.7)}
  .split-half > .half.b-accent .chrome-min{color:rgba(255,255,255,.62)}

  /* 编号目录页 · 超大数字 + 国家名风格 — 越大越细 */
  .num-mega{
    font-family:var(--sans);font-weight:200;
    font-size:9vw;line-height:1;letter-spacing:-.04em;
    font-feature-settings:"tnum"
  }
  .num-mega.thin{font-weight:200}
  .name-mega{
    font-family:var(--sans);font-weight:200;
    font-size:9vw;line-height:1;letter-spacing:-.035em;
  }
  .name-mega.muted{color:var(--grey-3)}

  /* 细体超大 KPI — 字号越大权重越低 */
  .kpi-thin{
    font-family:var(--sans);font-weight:200;
    font-size:14vw;line-height:.92;letter-spacing:-.045em;
    font-feature-settings:"tnum"
  }
  .kpi-thin .unit{font-size:.3em;font-weight:300;opacity:.55;margin-left:.15em;vertical-align:.6em}
  .kpi-thin.accent{color:var(--accent)}
  .kpi-thin-sm{
    font-family:var(--sans);font-weight:250;
    font-size:5.6vw;line-height:1.04;letter-spacing:-.03em;
    font-feature-settings:"tnum"
  }
  .kpi-thin-sm .unit{font-size:.3em;font-weight:300;opacity:.55;margin-left:.12em;vertical-align:.45em}

  /* 4 列细线 KPI 行 — 顶部一根 hairline,内部不再加竖线 */
  /* 4 列 KPI: 用纵向分割线建立网格感 (Carbon 2x grid 模数) */
  .kpi-row-4{
    display:grid;grid-template-columns:repeat(4,1fr);
    gap:0;padding-top:2.4vh;
    border-top:1px solid var(--grey-2)
  }
  .kpi-row-4 > .kpi-cell{
    padding:1.6vh 1.6vw 0;
    border-left:1px solid var(--grey-2)
  }
  .kpi-row-4 > .kpi-cell:first-child{padding-left:0;border-left:none}
  .kpi-cell .lbl{font-family:var(--mono);font-size:max(14px,.78vw);letter-spacing:.18em;text-transform:uppercase;opacity:.55;margin-bottom:1.2vh}
  .kpi-cell .nb{font-family:var(--sans);font-weight:250;font-size:3.2vw;line-height:1;letter-spacing:-.025em;font-feature-settings:"tnum"}
  .kpi-cell .nb .unit{font-size:.32em;font-weight:300;opacity:.6;margin-left:.1em;vertical-align:.4em}
  .kpi-cell .note{font-family:var(--sans),var(--sans-zh);font-size:max(16px,.92vw);line-height:1.5;opacity:.7;margin-top:1.2vh}

  /* 时间线轴 — 通用 axis token, 横纵共享
     axis 列 = 24px 固定宽,dot 直径 8px,绝对居中在 axis 列中线 (12px)
     虚线绝对定位 left:12px,与 dot 中心严格对齐 */
  .timeline-v{
    --tl-axis-w:24px;        /* axis 列固定宽度 */
    --tl-dot:8px;            /* 圆点直径 */
    position:relative;margin-top:var(--sp-7)
  }
  .timeline-v::before{
    content:"";position:absolute;
    left:calc(var(--tl-axis-w) / 2);
    transform:translateX(-50%);
    top:var(--sp-5);bottom:var(--sp-5);
    width:1px;
    background:repeating-linear-gradient(to bottom,currentColor 0 4px,transparent 4px 8px);
    opacity:.35;pointer-events:none;z-index:0
  }
  .tl-node{
    position:relative;
    display:grid;
    grid-template-columns:var(--tl-axis-w) minmax(0,7em) minmax(0,7.6em) 1fr;
    gap:0 var(--sp-5);
    align-items:center;
    padding:var(--sp-7) 0
  }
  /* 进度点: 纯色实心圆,无背景无描边,精确居中在 axis 列中线 */
  .tl-node .dot{
    width:var(--tl-dot);height:var(--tl-dot);
    border-radius:50%;
    background:currentColor;
    justify-self:center;
    z-index:1
  }
  .tl-node.accent .dot{background:var(--accent)}
  .tl-node .yr{
    font-family:var(--mono);font-weight:500;
    font-size:max(14px,1vw);letter-spacing:.04em
  }
  .tl-node .multi{
    font-family:var(--sans);font-weight:200;
    font-size:clamp(28px,2.8vw,56px);
    line-height:.95;letter-spacing:-.025em;
    white-space:nowrap;
    overflow:hidden;
    min-width:0
  }
  .tl-node .multi .unit{
    font-size:.36em;font-weight:300;opacity:.6;
    margin-left:.2em;
    vertical-align:.42em;
    letter-spacing:0
  }
  .tl-node.accent .multi{color:var(--accent)}
  .tl-node .desc{
    font-family:var(--sans),var(--sans-zh);
    font-size:max(16px,.94vw);line-height:1.55;opacity:.78;
    min-width:0
  }

  /* 横向时间线 (.timeline-h) — 与 .timeline-v 共享 axis token, 视觉语言一致 */
  .timeline-h{
    --tl-axis-w:8px;
    --tl-dot:8px;
    position:relative;
    flex:1;
    display:flex;align-items:center
  }
  .timeline-h::before{
    content:"";position:absolute;
    top:50%;left:5%;right:5%;height:1px;
    transform:translateY(-50%);
    background:repeating-linear-gradient(to right,currentColor 0 4px,transparent 4px 8px);
    opacity:.35;pointer-events:none;z-index:0
  }
  .timeline-h .tl-row{
    position:relative;width:100%;
    display:grid;grid-template-columns:repeat(5,1fr);
    align-items:center
  }
  .timeline-h .th-node{
    position:relative;display:flex;justify-content:center
  }
  /* 横向 dot: 8px 纯色实心,无描边无阴影 (与 P2 保持一致) */
  .timeline-h .th-node .dot{
    width:var(--tl-dot);height:var(--tl-dot);
    border-radius:50%;
    background:var(--ink);
    z-index:1;position:relative
  }
  .timeline-h .th-node.accent .dot{background:var(--accent)}
  .timeline-h .th-node .label{
    position:absolute;left:50%;transform:translateX(-50%);
    width:13vw;text-align:center;
    display:flex;flex-direction:column;gap:.4vh
  }
  .timeline-h .th-node.up .label{bottom:calc(50% + 22px)}
  .timeline-h .th-node.down .label{top:calc(50% + 22px)}
  .timeline-h .th-node .yr{
    font-family:var(--mono);font-size:max(14px,.78vw);letter-spacing:.05em;
    color:var(--text-helper);font-weight:500
  }
  .timeline-h .th-node.accent .yr{color:var(--accent)}
  .timeline-h .th-node .name{
    font-family:var(--sans);font-size:max(16px,1.05vw);font-weight:400;
    color:var(--text-primary);line-height:1.2;letter-spacing:-.005em
  }
  .timeline-h .th-node.accent .name{color:var(--accent)}
  .timeline-h .th-node .desc{
    font-family:var(--sans),var(--sans-zh);font-size:max(14px,.84vw);
    color:var(--text-secondary);font-weight:400;line-height:1.4
  }

  /* 几何图示 (参考图 5) — SVG-friendly 容器 */
  .geo-icon{width:5vw;height:5vw;display:block;margin-bottom:2.2vh;color:var(--ink);flex-shrink:0}
  .slide.dark .geo-icon{color:var(--paper)}
  .geo-icon svg{width:100%;height:100%;overflow:visible}
  .geo-icon .stroke{fill:none;stroke:currentColor;stroke-width:1.4}
  .geo-icon .stroke-accent{fill:none;stroke:var(--accent);stroke-width:1.4}
  .geo-icon .fill-accent{fill:var(--accent)}

  /* 卡片网格 (参考图 1 卡片漂浮) — 在 canvas-card 内部再分卡 */
  .sub-grid-3-2{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:1.4vh 1.4vw;flex:1;align-content:stretch;margin-top:3vh}
  .sub-card{
    background:var(--grey-1);
    padding:2.4vh 1.6vw 2vh;
    display:flex;flex-direction:column;
    position:relative;border-radius:3px;
    min-height:0
  }
  .slide.dark .sub-card{background:rgba(255,255,255,.06)}
  .sub-card.accent{background:var(--accent);color:var(--accent-on)}
  .sub-card.ink{background:var(--ink);color:var(--paper)}
  .sub-card .nb-corner{
    position:absolute;top:1.6vh;right:1.4vw;
    font-family:var(--mono);font-size:max(14px,.8vw);
    letter-spacing:.16em;opacity:.55
  }
  .sub-card .ttl{font-family:var(--sans),var(--sans-zh);font-weight:500;font-size:max(17px,1.5vw);line-height:1.2;letter-spacing:-.015em;margin-bottom:1vh}
  .sub-card .desc{font-family:var(--sans),var(--sans-zh);font-size:max(16px,.94vw);line-height:1.55;opacity:.78;margin-top:auto}
  .sub-card .lucide{width:2.4vw;height:2.4vw;stroke-width:1.4;color:currentColor;margin-bottom:1.6vh;flex-shrink:0}
  .sub-card.accent .lucide{color:var(--accent-on)}

  /* 三层架构纯色块拼图 (参考图 4 + 6) — 横排等高色块 */
  .stack-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6vw;flex:1;margin-top:6vh;align-items:stretch}
  .stack-block{
    display:flex;flex-direction:column;
    padding:3.2vh 1.8vw 2.4vh;
    position:relative;
    min-height:0
  }
  .stack-block.b-accent{background:var(--accent);color:var(--accent-on)}
  .stack-block.b-grey{background:var(--grey-1);color:var(--ink)}
  .stack-block.b-ink{background:var(--ink);color:var(--paper)}
  .stack-block .layer-nb{font-family:var(--mono);font-size:max(14px,.84vw);letter-spacing:.18em;opacity:.65;margin-bottom:auto}
  .stack-block .layer-icon{margin-bottom:1.6vh}
  .stack-block .layer-icon svg{width:3vw;height:3vw}
  .stack-block .layer-icon .stroke{fill:none;stroke:currentColor;stroke-width:1.6}
  .stack-block .layer-ttl{font-family:var(--sans),var(--sans-zh);font-weight:400;font-size:max(17px,2vw);line-height:1.1;margin-top:1vh;letter-spacing:-.02em}
  .stack-block .layer-desc{font-family:var(--sans),var(--sans-zh);font-weight:400;font-size:max(16px,.94vw);line-height:1.55;opacity:.88;margin-top:1.4vh}
  .stack-block .lucide{width:2.6vw;height:2.6vw;stroke-width:1.4;margin-bottom:1.6vh;flex-shrink:0}
  .stack-block .layer-tag{font-family:var(--mono);font-size:max(14px,.74vw);letter-spacing:.16em;text-transform:uppercase;opacity:.7;margin-top:1.6vh;border-top:1px solid currentColor;padding-top:1vh}

  /* 不等高柱状 KPI 塔 (参考图 6) */
  .bar-towers{
    display:grid;grid-template-columns:repeat(4,1fr);
    gap:1.2vw;flex:1;align-items:end;margin-top:auto
  }
  .bar-tower{
    display:flex;flex-direction:column;justify-content:flex-end;
    min-height:0;height:100%
  }
  .bar-tower .cap{
    background:var(--grey-1);
    height:5.6vh;
    display:flex;align-items:center;justify-content:center;
    margin-bottom:.4vh
  }
  .bar-tower .cap svg{width:1.6vw;height:1.6vw;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
  .bar-tower .body-block{
    flex:0 1 auto;
    padding:2vh 1.2vw 2vh;
    display:flex;flex-direction:column;justify-content:flex-end;
    min-height:18vh
  }
  .bar-tower .body-block.h-1{min-height:22vh}
  .bar-tower .body-block.h-2{min-height:30vh}
  .bar-tower .body-block.h-3{min-height:38vh}
  .bar-tower .body-block.h-4{min-height:46vh}
  /* 默认所有 KPI 塔统一为浅描边卡 — 不抢戏;只有 .b-accent 突出为 IKB */
  .bar-tower .body-block{background:var(--paper);color:var(--ink);border:1px solid var(--grey-2)}
  .bar-tower .body-block.b-accent{background:var(--accent);color:var(--accent-on);border-color:var(--accent)}
  .bar-tower .lbl{font-family:var(--mono);font-size:max(14px,.82vw);letter-spacing:.16em;text-transform:uppercase;opacity:.65;margin-bottom:1vh}
  .bar-tower .nb{font-family:var(--sans);font-weight:250;font-size:max(20px,2.8vw);line-height:1;letter-spacing:-.03em;font-feature-settings:"tnum"}
  .bar-tower .body-block.b-accent .nb{font-weight:300}
  .bar-tower .nb .unit{font-size:.36em;font-weight:300;opacity:.7;margin-left:.08em;vertical-align:.4em}
  .bar-tower .sub{font-family:var(--sans),var(--sans-zh);font-size:max(16px,.92vw);opacity:.75;margin-top:1.2vh;line-height:1.5}
  .bar-tower .cap{background:var(--grey-1);color:var(--ink)}
  .bar-tower .lucide{width:1.6vw;height:1.6vw;stroke-width:1.4}

  /* ============ Carbon Productive Type Tokens ============
     用于 PPT 中的"productive 时刻": 列表、表格行、说明文、章节标签
     固定 px 字号,密集紧凑;与 vw-based 的 Expressive 巨字形成双极对比 */

  /* category label / eyebrow / section tag — small, bold, uppercase */
  .t-cat{
    font-family:var(--mono);
    font-size:14px;font-weight:600;
    letter-spacing:.15em;text-transform:uppercase;
    color:var(--text-helper);line-height:1.3
  }
  .t-cat.accent{color:var(--accent)}
  .t-cat.on-dark{color:rgba(255,255,255,.78)}

  /* page chrome / breadcrumb / running header — extra-small mono */
  .t-meta{
    font-family:var(--mono);
    font-size:14px;font-weight:500;
    letter-spacing:.14em;text-transform:uppercase;
    color:var(--text-helper);line-height:1.45
  }

  /* helper / caption — secondary text */
  .t-helper{
    font-family:var(--sans),var(--sans-zh);
    font-size:14px;font-weight:400;
    color:var(--text-helper);line-height:1.5;
    letter-spacing:.005em
  }

  /* body small — list items, table rows, captions */
  .t-body-sm{
    font-family:var(--sans),var(--sans-zh);
    font-size:16px;font-weight:400;
    color:var(--text-secondary);line-height:1.55;
    letter-spacing:0
  }

  /* body — paragraphs, descriptions */
  .t-body{
    font-family:var(--sans),var(--sans-zh);
    font-size:18px;font-weight:400;
    color:var(--text-primary);line-height:1.5;
    letter-spacing:-.005em
  }

  /* body emphasis — 强调正文 */
  .t-body-emp{
    font-family:var(--sans),var(--sans-zh);
    font-size:18px;font-weight:600;       /* SemiBold per Carbon */
    color:var(--text-primary);line-height:1.5;
    letter-spacing:-.005em
  }

  /* productive heading — section title within slide */
  .t-h-prod{
    font-family:var(--sans),var(--sans-zh);
    font-size:22px;font-weight:600;
    color:var(--text-primary);line-height:1.4;
    letter-spacing:-.01em
  }

  /* dark background variants */
  .slide.dark .t-cat,.slide.dark .t-meta,.slide.dark .t-helper{color:rgba(255,255,255,.62)}
  .slide.dark .t-body-sm{color:rgba(255,255,255,.78)}
  .slide.dark .t-body,.slide.dark .t-body-emp,.slide.dark .t-h-prod{color:var(--paper)}
  .split-half .half.b-ink .t-cat,.split-half .half.b-ink .t-meta,.split-half .half.b-ink .t-helper{color:rgba(255,255,255,.62)}
  .split-half .half.b-ink .t-body-sm{color:rgba(255,255,255,.78)}
  .split-half .half.b-ink .t-body,.split-half .half.b-ink .t-body-emp,.split-half .half.b-ink .t-h-prod{color:var(--paper)}

  /* 斜杠点阵装饰 (参考图 6 左下) */
  .hatch{
    background-image:repeating-linear-gradient(135deg,currentColor 0 1px,transparent 1px 8px);
    opacity:.55
  }

  /* ========== V3: 高级点阵装饰 — 圆点 / × 号 / 圆圈 ========== */
  /* 实心圆点矩阵 — 用于大面积装饰 */
  .dot-mat{
    --d:14px;
    background-image:radial-gradient(currentColor 1.4px,transparent 1.6px);
    background-size:var(--d) var(--d);
    background-position:0 0;
    opacity:.5
  }
  .dot-mat.lg{--d:22px}
  .dot-mat.xl{--d:34px}
  .dot-mat.dense{--d:9px;opacity:.62}

  /* 描边圆圈矩阵 — 工业感 */
  .ring-mat{
    --d:18px;
    background-image:
      radial-gradient(circle at 50% 50%,transparent 2px,currentColor 2px,currentColor 2.6px,transparent 2.7px);
    background-size:var(--d) var(--d);
    opacity:.55
  }
  .ring-mat.lg{--d:28px}

  /* × 号矩阵 — SVG mask 实现真正的 × 网格平铺 */
  .cross-mat{
    --d:22px;
    background-color:currentColor;
    -webkit-mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'><g stroke='black' stroke-width='1.4' stroke-linecap='round' fill='none'><line x1='8' y1='8' x2='14' y2='14'/><line x1='14' y1='8' x2='8' y2='14'/></g></svg>");
            mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'><g stroke='black' stroke-width='1.4' stroke-linecap='round' fill='none'><line x1='8' y1='8' x2='14' y2='14'/><line x1='14' y1='8' x2='8' y2='14'/></g></svg>");
    -webkit-mask-size:var(--d) var(--d);
            mask-size:var(--d) var(--d);
    -webkit-mask-repeat:repeat;mask-repeat:repeat;
    opacity:.42
  }
  .cross-mat.lg{--d:32px}

  /* ========== V3: 几何水平柱状图 ========== */
  /* 横向柱图: 标签列 + 柱体列 + 数值列 — 严格瑞士网格 */
  .h-bar-chart{
    display:grid;
    grid-template-columns:11em minmax(0,1fr) 8em;
    gap:1.6vh 1.6vw;
    align-items:center;
    margin-top:2.4vh;
    font-feature-settings:"tnum"
  }
  .h-bar-chart .row-lbl{
    font-family:var(--sans),var(--sans-zh);
    font-weight:500;
    font-size:max(14px,1vw);
    letter-spacing:-.005em;
    text-align:left
  }
  .h-bar-chart .row-track{
    height:3.2vh;
    background:var(--grey-1);
    position:relative;
    overflow:hidden
  }
  .h-bar-chart .row-fill{
    height:100%;
    background:var(--ink);
    transition:width 1s cubic-bezier(.5,0,.2,1)
  }
  .h-bar-chart .row-fill.accent{background:var(--accent)}
  .h-bar-chart .row-fill.grey{background:var(--grey-3)}
  .h-bar-chart .row-val{
    font-family:var(--sans);font-weight:250;
    font-size:max(16px,1.5vw);
    letter-spacing:-.02em;
    line-height:1
  }
  .h-bar-chart .row-val .unit{
    font-size:.5em;opacity:.55;font-weight:300;
    margin-left:.15em;letter-spacing:.04em
  }

  /* 垂直柱图: 用于 KPI 对比页(章节 P8) */
  .v-bar-chart{
    display:grid;
    grid-template-columns:repeat(var(--cols,4),1fr);
    align-items:end;
    gap:1.4vw;
    height:50vh;
    margin-top:3vh
  }
  .v-bar-chart .col{display:flex;flex-direction:column;gap:1.4vh;align-items:stretch;height:100%}
  .v-bar-chart .col-bar{
    flex:1 1 auto;
    background:var(--grey-1);
    border-top:2px solid var(--ink);
    position:relative;
    display:flex;align-items:flex-start;justify-content:center;
    padding-top:1vh
  }
  .v-bar-chart .col-bar.accent{background:var(--accent);border-top-color:var(--accent);color:var(--accent-on)}
  .v-bar-chart .col-bar.ink{background:var(--ink);color:var(--paper);border-top-color:var(--ink)}
  .v-bar-chart .col-bar .v{
    font-family:var(--sans);font-weight:250;
    font-size:max(18px,1.6vw);letter-spacing:-.02em
  }
  .v-bar-chart .col-lbl{
    font-family:var(--mono);font-size:max(14px,.78vw);
    letter-spacing:.14em;text-transform:uppercase;opacity:.6;
    text-align:center;flex:0 0 auto
  }

  /* 对仗对比双栏 (章节 P9) */
  .duo-compare{
    display:grid;grid-template-columns:1fr 1px 1fr;
    gap:0 3.4vw;
    flex:1;align-items:stretch;margin-top:8vh
  }
  .duo-compare .vrule{background:var(--grey-2);width:1px;align-self:stretch}
  .duo-compare .col{display:flex;flex-direction:column;gap:1.6vh;padding:0 .4vw}
  .duo-compare .col-tag{
    font-family:var(--mono);font-size:max(14px,.78vw);
    letter-spacing:.16em;text-transform:uppercase;
    color:var(--grey-3);
    display:flex;align-items:center;gap:.6vw
  }
  .duo-compare .col-tag .num{
    font-weight:600;color:var(--ink);
    border:1px solid var(--ink);
    padding:.2em .6em;font-size:.92em
  }
  .duo-compare .col.accent .col-tag .num{color:var(--accent);border-color:var(--accent)}
  .duo-compare .col-ttl{
    font-family:var(--sans),var(--sans-zh);font-weight:200;
    font-size:3.6vw;line-height:1;letter-spacing:-.03em
  }
  .duo-compare .col.accent .col-ttl{color:var(--accent)}
  .duo-compare .col-desc{
    font-family:var(--sans),var(--sans-zh);
    font-size:max(16px,1.04vw);line-height:1.55;opacity:.78;
    max-width:30vw
  }
  .duo-compare .col-list{
    list-style:none;display:flex;flex-direction:column;gap:1vh;
    margin-top:auto;padding-top:2vh;border-top:1px solid var(--grey-2)
  }
  .duo-compare .col-list li{
    font-family:var(--sans),var(--sans-zh);
    font-size:max(16px,.94vw);line-height:1.5;
    padding-left:1.4em;position:relative
  }
  .duo-compare .col-list li::before{
    content:"";position:absolute;left:0;top:.6em;
    width:.5em;height:1px;background:currentColor;opacity:.55
  }
  .duo-compare .col.accent .col-list li::before{background:var(--accent);opacity:1}

  /* 半屏 statement (参考图 7) */
  .split-half{display:grid;grid-template-columns:1fr 1fr;gap:0;flex:1;align-items:stretch}
  .split-half > .half{padding:5vh 3.4vw;display:flex;flex-direction:column;min-width:0}
  .split-half > .half.r-border{border-left:1px solid rgba(127,127,127,.22)}
  .split-half > .half.b-grey{background:var(--grey-1)}
  .split-half > .half.b-accent{background:var(--accent);color:var(--accent-on)}
  .split-half > .half.b-ink{background:var(--ink);color:var(--paper)}

  /* 极简页眉 — t-meta 风格 (Carbon productive label-01) */
  .canvas-card .chrome-min{
    display:flex;justify-content:space-between;align-items:flex-start;
    font-family:var(--mono);font-size:14px;font-weight:500;
    letter-spacing:.14em;text-transform:uppercase;
    color:var(--text-helper);
    flex:0 0 auto;
    margin-bottom:var(--sp-9);   /* 48px */
  }
  .canvas-card .chrome-min.tight{margin-bottom:var(--sp-7)}   /* 32px */
  .canvas-card .chrome-min .l, .canvas-card .chrome-min .r{
    max-width:48vw;line-height:1.5
  }
  .slide.dark .canvas-card .chrome-min,.split-half .half.b-ink .canvas-card .chrome-min{color:rgba(255,255,255,.62)}

  /* 响应式降级 */
  @media (max-width:900px){
    .h-hero{font-size:16vw}
    .h-hero-zh{font-size:13vw}
    .h-xl{font-size:9vw}
    .h-xl-zh{font-size:8vw}
    .kpi-hero{font-size:32vw}
    .kpi-big{font-size:16vw}
    .pipeline{grid-template-columns:repeat(2,1fr)}
    .grid-2-7-5,.grid-2-6-6,.grid-2-8-4,.grid-2-4-8{grid-template-columns:1fr}
    .grid-12{grid-template-columns:repeat(6,1fr)}
  }

  /* ============================================================
     招新站补齐 · layouts-swiss.md 登记版式中模板缺失的类
     (Step 3.0 预检后补入,集中维护,不 inline 重写)
     ============================================================ */

  /* S12 · Manifesto + Ink Banner */
  .manifesto-top{flex:1;display:grid;grid-template-columns:7fr 5fr;gap:3vw;align-items:start;min-height:0}
  .ink-banner-full{
    background:var(--ink);color:var(--paper);
    margin:4vh -5vw -4.4vh;
    padding:3.4vh 5vw;
    display:flex;justify-content:space-between;align-items:center;gap:3vw
  }

  /* S13 · Three Forces */
  .three-forces{display:grid;grid-template-columns:5fr 11fr;gap:1.6vw;flex:1;min-height:0}
  .hero-ink-col{
    background:var(--ink);color:var(--paper);
    padding:3.2vh 2vw 2.4vh;
    display:flex;flex-direction:column;
    position:relative;overflow:hidden;min-height:0
  }
  .force-stack{display:flex;flex-direction:column;gap:1.4vh;min-height:0}
  .force-stack > .card-fill{flex:1;display:grid;grid-template-columns:auto 1fr;gap:0 2vw;align-items:start;padding:2.2vh 2vw}
  .force-num{
    font-family:var(--sans);font-weight:200;
    font-size:min(5.6vw,9.6vh);line-height:.9;letter-spacing:-.03em;
    color:var(--accent);font-feature-settings:"tnum"
  }

  /* S18 · Why Now */
  .why-now-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2.4vw;flex:1;min-height:0}
  .why-col{display:flex;flex-direction:column;gap:1.2vh;min-height:0;min-width:0}
  .why-num-bottom{
    margin-top:auto;
    font-family:var(--sans);font-weight:200;
    font-size:min(8.4vw,14vh);line-height:.9;letter-spacing:-.04em;
    font-feature-settings:"tnum";color:var(--text-primary)
  }
  .why-num-bottom.accent{color:var(--accent)}

  /* S19 · Four Cards */
  .four-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1.6vw;flex:1;min-height:0}
  .fc-col{display:flex;flex-direction:column;gap:1.2vh;padding-top:1.6vh;border-top:1px solid var(--grey-2);min-width:0}
  .fc-col.accent-top{border-top:2px solid var(--accent)}

  /* 全局宋体修正: 等宽(mono)上下文中的中文统一回退到宋体栈,
     否则系统会用默认黑体渲染 mono 里的 CJK 字符 */
  .chrome,.chrome-min,.foot,.kicker,.tag,.meta,.meta-row,
  .stat-card .stat-label,.pipeline-label,.step-nb,.img-cap,.swiss-img-caption,
  .t-cat,.t-meta,.layer-nb,.layer-tag,.kpi-cell .lbl,
  .timeline-h .th-node .yr,.callout .cite,.callout .callout-src,#hint{
    font-family:var(--mono),var(--sans-zh)
  }

.demo-dot{width:9px;height:9px;border-radius:50%;background:var(--border-strong);display:inline-block}
.demo-btn{display:inline-block;padding:1.4vh 1.4vw;background:var(--paper);color:var(--ink);border:1px solid var(--ink);font-family:var(--mono),var(--sans-zh);font-size:13px;letter-spacing:.1em;cursor:pointer;transition:background .3s,color .3s,box-shadow .3s,border-color .3s}
.demo-btn:hover{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 8px 24px rgba(0,47,167,.35)}
.demo-typing{display:inline-block;width:0;max-width:max-content;overflow:hidden;white-space:nowrap;border-right:2px solid var(--accent);color:var(--paper);font-family:var(--mono);font-size:14px;animation:demo-type 3.4s steps(13,end) infinite}
@keyframes demo-type{0%{width:0}60%{width:13ch}100%{width:13ch}}

.demo-marquee{overflow:hidden;border:1px solid var(--border);min-height:12vh;display:flex;align-items:center;background:var(--paper)}
.demo-marquee .track{display:inline-flex;white-space:nowrap;animation:demo-mar 9s linear infinite}
.demo-marquee .track span{font-family:var(--mono),var(--sans-zh);font-size:13px;letter-spacing:.15em;color:var(--accent)}
@keyframes demo-mar{to{transform:translateX(-50%)}}
.flow-line{position:relative}
.flow-pulse{position:absolute;left:-5px;top:0;width:8px;height:8px;border-radius:50%;background:var(--accent);animation:flow-run 3.2s linear infinite}
@keyframes flow-run{to{top:calc(100% - 8px)}}
.chart{display:flex;align-items:flex-end;gap:3px;height:6.5vh;border-bottom:1px solid var(--border-strong)}
.chart i{flex:1;background:var(--accent);opacity:.85}
.chart.flat i{background:var(--ink);opacity:.3}
.det-frame{position:relative;min-height:12vh;background:var(--ink);background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:22px 22px;overflow:hidden}
.det-box{position:absolute;left:16%;top:20%;width:48%;height:54%;border:1.5px solid var(--accent);animation:det-pop 4.2s ease-in-out infinite}
.det-box::before{content:"安全帽 0.94";position:absolute;top:-1.7em;left:-1.5px;background:var(--accent);color:#fff;font-family:var(--mono),var(--sans-zh);font-size:11px;padding:2px 6px;white-space:nowrap}
@keyframes det-pop{0%{opacity:0;transform:scale(1.15)}12%{opacity:1;transform:scale(1)}82%{opacity:1}100%{opacity:0}}
.prob{display:flex;flex-direction:column;gap:1.2vh}
.prob .row{display:flex;align-items:center;gap:.5vw;font-family:var(--mono),var(--sans-zh);font-size:12px}
.prob .bar{flex:1;height:8px;background:var(--border)}
.prob .bar i{display:block;height:100%;background:var(--accent);animation:prob-in 1.4s ease both}
@keyframes prob-in{from{width:0}}
.pix{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;background:var(--ink);padding:8px;min-height:12vh;align-content:center}
.pix i{aspect-ratio:1;background:rgba(255,255,255,.1)}
.pix i.on{background:var(--paper)}

.slide:not(.active) .demo-typing,.slide:not(.active) .demo-marquee .track,.slide:not(.active) .flow-pulse,.slide:not(.active) .det-box,.slide:not(.active) .prob .bar i{animation:none}

.demo-typing{width:auto;max-width:none;border-right:0;clip-path:inset(0 100% 0 0)}
@keyframes demo-type{0%{clip-path:inset(0 100% 0 0)}60%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 0 0)}}
.demo-typing::after{content:"";display:inline-block;width:.55em;height:1em;background:var(--accent);margin-left:3px;vertical-align:-.12em;animation:caret-blink 1s steps(1) infinite}
@keyframes caret-blink{50%{opacity:0}}
.det-frame{height:12vh}
.pix{height:12vh;grid-template-rows:repeat(7,1fr);align-content:stretch}
.pix i{aspect-ratio:auto}

.demo-marquee{height:18vh}
.demo-btn{font-size:15px;padding:2vh 1.8vw}
.demo-typing{font-size:16px}
.demo-marquee .track span{font-size:14px}
.chart{height:9vh}
.det-frame{height:17vh}
.pix{height:17vh}
.prob .bar{height:10px}
.prob .row{font-size:13px}

.demo-marquee .track span{font-size:15px}
