/* ============================================================================
   assets/pages-worker-1.css — ems-pdu / IDCPDU · 编码包 worker-1
   页面：/ · /about/ · /factory/ · /quality/ · /capabilities/ · /faq/

   &#9940; CSP（_headers: style-src 'self'）：本文无 style="..." 内联属性、无内联事件、
      无第三方 URL；参数化一律走类名（--ig-cols 那套由 design-tokens.css 注册，
      本包不重复注册）。
   &#9940; 类名全部 .w1- 前缀 —— 本文件是**追加**型页面样式表，不与 design-tokens.css /
      assets/site.css / 其他 worker 包的同名类互相覆盖（check-css-conflicts.py）。
   &#9940; aspect-ratio 只出现白名单值：3/2 · 1/1 · 3/4（硬约束 25）。
   &#9940; 反模式：一律 background-color，不用 background 简写。
   &#9940; 不做内容依赖 JS 的入场动画；动效只加在装饰层（hover 位移、颜色过渡）。
   ========================================================================= */

/* ============================ 1 · 版块头与版式原子 ======================== */
.w1-head { max-width: 66ch; }
.w1-head--center { text-align: center; margin-inline: auto; }
/* &#9940; accent **文字**在暗场上用 --brand-ink（6.29:1 on --canvas / 5.85:1 on --surface），
   不用 --brand：site.css 的 .eyebrow 用 --brand，压在 --surface(#171B1D) 上只有 4.41:1，
   不达 AA 4.5:1（本包 .sec--deep 段实测命中 6 处）。亮段仍由 site.css 的
   .is-light .eyebrow（--brand-deep）接管，下面补一条更高特异性的兜底。 */
.w1-head .eyebrow, .w1-band .eyebrow, .w1-cta__body .eyebrow,
.w1-split__body .eyebrow, .w1-rail__body .eyebrow { color: var(--brand-ink); }
.is-light .w1-head .eyebrow { color: var(--brand-deep); }
.w1-head .eyebrow { display: block; }
.w1-head .w1-ico { display: block; margin-bottom: 12px; }
.w1-head .h2 { margin-top: var(--s-sm); }
.w1-head .lede { margin-top: var(--s-md); }
.w1-head--center .lede { margin-inline: auto; }

/* 两栏头：左标题 / 右说明（把「一段话」拆成标签行两侧对读） */
.w1-intro {
  display: grid; grid-template-columns: 1.35fr 1fr;
  gap: var(--gap-split); align-items: end;
}
.w1-intro__note { border-top: 1px solid var(--hair-2); padding-top: 14px; }
.w1-intro__note p { margin: 0; font-size: var(--fs-body-s); color: var(--fg-3); line-height: var(--lh-body); }
.w1-intro__note p + p { margin-top: var(--s-xs); }

/* 等宽小注 / 单位行 */
.w1-note {
  display: block; margin-top: var(--s-sm);
  font-family: var(--f-mono); font-size: var(--fs-micro);
  letter-spacing: .06em; color: var(--fg-label);
}
.w1-note b { color: var(--fg-1); font-weight: var(--w-regular); }

/* 内联图标：内联 SVG sprite（stroke=currentColor 由 symbol 自带） */
.w1-ico { display: inline-block; width: 24px; height: 24px; flex: 0 0 auto; color: var(--brand-ink); }
.w1-ico--lg { width: 28px; height: 28px; }
.w1-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

/* ============================ 2 · 全幅影像带（overlay） ===================
   display_mode: overlay 的图位 —— 影像出血铺满整条带，文字排进影像留白那一列。
   layout=text-left-media-right to 文字左列；layout=text-right-media-left to 文字右列。
   &#9940; 留白侧不留无人使用的空地：另一列由 .w1-band__side 承载数据行。
   ========================================================================= */
.w1-band {
  position: relative; display: flex; align-items: center;
  min-height: var(--band-min); overflow: hidden;
  background-color: var(--ink-void); border-bottom: 1px solid var(--rule);
}
.w1-band--short { min-height: 52svh; }
.w1-band--tall { min-height: 78svh; }
.w1-band__bg { position: absolute; inset: 0; }
.w1-band__bg img {
  width: 100%; height: 100%; object-fit: cover;
  object-position: 62% 46%;
  filter: saturate(.5) brightness(.62) contrast(1.06);
}
/* 主体偏左的图（text-right-media-left）：镜像影像处理，别把主体切掉 */
.w1-band.is-subject-left .w1-band__bg img { object-position: 38% 48%; filter: saturate(.46) brightness(.6) contrast(1.04); }
.w1-band.is-subject-right .w1-band__bg img { object-position: 72% 52%; filter: saturate(.55) brightness(.58) contrast(1.08); }
.w1-band__scrim { position: absolute; inset: 0; background-image: var(--scrim-h), var(--scrim-v); }
/* 文字在右列时，遮罩深色侧要跟着翻到右边 */
.w1-band.is-text-right .w1-band__scrim {
  background-image:
    linear-gradient(270deg, rgba(var(--scrim-base), .95) 0%, rgba(var(--scrim-base), .84) 34%,
                    rgba(var(--scrim-base), .30) 64%, rgba(var(--scrim-base), .70) 100%),
    var(--scrim-v);
}
.w1-band__inner { position: relative; z-index: 3; width: 100%; padding-block: var(--s-2xl); }
.w1-band__grid {
  display: grid; grid-template-columns: 1.05fr 1fr;
  gap: var(--gap-split); align-items: center;
}
.w1-band__body { max-width: 52ch; }
.w1-band__body > * + * { margin-top: var(--s-md); }
.w1-band.is-text-right .w1-band__body { grid-column: 2; grid-row: 1; }
.w1-band.is-text-right .w1-band__side { grid-column: 1; grid-row: 1; }
.w1-band .h2, .w1-band .h3 { text-shadow: var(--text-shadow-hero); }
.w1-band .lede, .w1-band .prose { color: var(--text-2); text-shadow: var(--text-shadow-data); }
.w1-band .eyebrow, .w1-band .label, .w1-band .cap { text-shadow: var(--text-shadow-data); }
/* 带内数据行：半透明深色底板，保证在影像任意亮度上都读得清 */
.w1-band__side {
  border-top: 1px solid var(--hair-2);
  background-color: rgba(8, 10, 11, .58);
  padding: 0 var(--s-md) var(--s-xs);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
}
.w1-band__side > * + * { margin-top: 0; }

/* ============================ 3 · 分屏（强制同高） ========================
   &#9940; 用户铁律 1：分屏图文强制同高 —— align-items:stretch + 图片 absolute cover
      铺满列高（不拉伸、可裁切），禁止「图片比文字矮」。
   ========================================================================= */
.w1-split {
  display: grid; grid-template-columns: var(--split);
  gap: var(--gap-split); align-items: stretch;
}
.w1-split__media { position: relative; min-height: 300px; overflow: hidden; background-color: var(--ink-void); }
.w1-split__media img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: 62% 46%;
  filter: saturate(.5) brightness(.68) contrast(1.05);
}
.w1-split.is-media-right .w1-split__media { order: 2; }
.w1-split.is-media-right .w1-split__body { order: 1; }
.w1-split__body { min-width: 0; }
.w1-split__body > * + * { margin-top: var(--s-md); }
.w1-split--wide { grid-template-columns: 1fr 1fr; }
.w1-split--wide .w1-split__media { min-height: 360px; }

/* ============================ 4 · 参数行 / 面板 =========================== */
.w1-rows { margin: var(--s-md) 0 0; padding: 0; display: grid; gap: 0; }
.w1-rows--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--s-lg); }
.w1-rows > div {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: var(--s-sm); padding: 11px 0;
  border-bottom: 1px solid var(--hair-1);
}
.w1-rows dt {
  font-family: var(--f-mono); font-size: var(--fs-label);
  letter-spacing: .12em; text-transform: uppercase; color: var(--fg-label);
}
/* 窄屏兜底：dt/dd 的 min-content 之和超过行宽时允许折行，别把版心撑破
   （375px 实测：--fg 行 + mono 数值行都会贴到右边缘）。 */
.w1-rows > div, .specband.is-dl-two-col > .w1-dl > div { flex-wrap: wrap; }
.w1-rows dd {
  margin: 0; font-family: var(--f-mono); font-size: var(--fs-data);
  color: var(--fg-1); text-align: right;
}
.w1-rows dd em { font-style: normal; color: var(--brand-ink); }

.w1-panel {
  padding: var(--s-md); background-color: var(--surface-strong);
  border: 1px solid var(--rule); box-shadow: var(--e-1);
}
.w1-panel--void { background-color: rgba(5, 6, 7, .72); }
.w1-panel .label { display: block; }
/* &#9940; --fg-label(#7E878C) 压在 --surface-strong(#1E2427) 上只有 4.29:1（不达 AA）。
   site.css 对弹窗面板的同类裁决是「面板级文本往亮一档压」，这里取 --fg-4（6.37:1）。 */
.w1-panel .label, .w1-panel .w1-note, .w1-scans__meta span, .w1-tile li { color: var(--fg-4); }
.w1-panel .h3 { font-size: var(--fs-h4); margin-top: var(--s-xs); }
.w1-panel p { margin: var(--s-xs) 0 0; font-size: var(--fs-body-s); color: var(--fg-3); line-height: var(--lh-body); }
.w1-panel .w1-ico { margin-bottom: var(--s-xs); }

/* 表格滚动兜底：桌面端不给 min-width（铁律 4），只在窄屏放开 */
.w1-tw { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* &#9940; hero 的 <img> 是**铺底影像**，不是内容图：.hero__bg 已经是绝对定位容器，
   把 img 自己也写成绝对定位（选择器用 `>`，与 site.css 的 `.hero__bg img` 不同串，
   不构成跨文件同选择器双定义）。这样它的角色才与实现一致 ——
   铺底图不该被「独占大图」判据量（layout-edges 的 backdrop 判定要求 img 自身绝对定位）。 */
.hero__bg > img { position: absolute; inset: 0; }

/* 镜像 hero：layout=text-right-media-left 的页（主体偏左，文字排进右侧留白）
   &#9940; 只镜像栅格与遮罩方向；顶沿橙条是全站签名符号，位置不动。 */
.hero.is-text-right .hero__grid { grid-template-columns: 1fr 1.55fr; }
.hero.is-text-right .hero__grid > :first-child { grid-column: 2; grid-row: 1; }
.hero.is-text-right .hero__grid > .rail { grid-column: 1; grid-row: 1; }
.hero.is-text-right .hero__bg img { object-position: 34% 46%; filter: saturate(.44) brightness(.64) contrast(1.05); }
.hero.is-text-right .hero__scrim {
  background-image:
    linear-gradient(270deg, rgba(var(--scrim-base), .95) 0%, rgba(var(--scrim-base), .86) 34%,
                    rgba(var(--scrim-base), .32) 62%, rgba(var(--scrim-base), .62) 100%),
    var(--scrim-v);
}
@media (max-width: 900px) {
  .hero.is-text-right .hero__grid { grid-template-columns: 1fr; }
  .hero.is-text-right .hero__grid > :first-child,
  .hero.is-text-right .hero__grid > .rail { grid-column: 1; grid-row: auto; }
}

/* ============================ 5 · 读数墙（固定列） ========================
   &#9940; 固定列数、禁 auto-fit；卡数 = 列数整倍数（这里 6 = 3×2 / 2×3）。
   ========================================================================= */
.w1-facts { display: grid; gap: 0; margin-top: var(--s-lg); border-top: 1px solid var(--hair-2); }
.w1-facts.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.w1-facts.c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.w1-facts__cell {
  padding: var(--s-md) var(--s-md) var(--s-md) 0;
  border-bottom: 1px solid var(--hair-1);
}
.w1-facts__cell b {
  display: block; font-family: var(--f-mono); font-size: var(--fs-label);
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--fg-label); font-weight: var(--w-regular);
}
.w1-facts__cell strong {
  display: block; margin-top: 6px;
  font-family: var(--f-display); font-weight: var(--w-display);
  font-size: clamp(30px, 3.2vw, 46px); letter-spacing: .5px;
  color: var(--fg-1); line-height: 1;
}
.w1-facts__cell span { display: block; margin-top: 8px; font-size: var(--fs-body-s); color: var(--fg-3); }
.w1-facts__cell .w1-ico { margin-bottom: 10px; }

/* ============================ 6 · 步骤条（&lt;=3 列，3×2） ===================
   &#9940; 用户铁律 2：步骤条 &lt;=3 列；6 步用 3×2，禁 4–6 列。
   &#9940; 不显示时间数字（Day 3-14 类标注已被用户否决）。
   ========================================================================= */
.w1-steps {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-lg); margin-top: var(--s-lg); counter-reset: w1step;
}
.w1-steps__item { position: relative; padding-top: var(--s-md); border-top: 2px solid var(--rule-strong); }
.w1-steps__item::before {
  counter-increment: w1step;
  content: counter(w1step, decimal-leading-zero);
  position: absolute; top: -2px; left: 0; padding-right: 8px;
  font-family: var(--f-mono); font-size: var(--fs-label);
  letter-spacing: .14em; color: var(--brand-ink);
  background-color: var(--canvas);
  box-shadow: 0 -2px 0 0 var(--brand);
}
.w1-steps.is-on-deep .w1-steps__item::before { background-color: var(--surface); }
.w1-steps__item h3 { font-size: var(--fs-h4); margin-top: var(--s-xs); }
.w1-steps__item p { margin: var(--s-xs) 0 0; font-size: var(--fs-body-s); color: var(--fg-3); line-height: var(--lh-copy); }
.w1-steps__item .w1-note { margin-top: var(--s-sm); padding-top: 8px; border-top: 1px solid var(--hair-1); }
.w1-steps.is-on-deep .w1-steps__item p { color: var(--text-2); }

/* 竖向工序轨（同 data，另一形态：编号在左、工序在右） */
.w1-rail { margin: var(--s-lg) 0 0; padding: 0; list-style: none; counter-reset: w1rail; }
.w1-rail__item {
  display: grid; grid-template-columns: 76px 1fr; gap: var(--s-md);
  padding-block: var(--s-md); border-top: 1px solid var(--rule);
}
.w1-rail__item::before {
  counter-increment: w1rail;
  content: counter(w1rail, decimal-leading-zero);
  font-family: var(--f-display); font-size: 30px; line-height: 1;
  color: var(--brand-ink); letter-spacing: .5px;
}
.w1-rail__body { min-width: 0; }
.w1-rail__body h3 { font-size: var(--fs-h4); }
.w1-rail__body p { margin: var(--s-xs) 0 0; font-size: var(--fs-body-s); color: var(--fg-3); line-height: var(--lh-copy); max-width: 78ch; }
.w1-rail__body .w1-rows { margin-top: var(--s-sm); }

/* ============================ 7 · 证书扫描件墙 ===========================
   &#9940; 只写证名 + 持证主体；证书编号不落文字（content-policy site_specific_rules）。
   &#9940; 同一网格全部 3/4 竖版，同一 size（硬约束 51）。
   ========================================================================= */
.w1-scans { display: grid; gap: var(--s-sm); margin-top: var(--s-lg); }
.w1-scans.c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.w1-scans.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.w1-scans.c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.w1-scans__item {
  display: flex; flex-direction: column;
  background-color: var(--surface-strong);
  border: 1px solid var(--rule); box-shadow: var(--e-1);
  transition: var(--transition-ctl);
}
.w1-scans__item:hover { border-color: var(--rule-strong); transform: var(--hover-lift); }
.w1-scans__shot { background-color: var(--paper); padding: var(--s-xs); }
.w1-scans__shot img { width: 100%; aspect-ratio: 3 / 4; object-fit: contain; }
.w1-scans__meta { padding: var(--s-sm); border-top: 1px solid var(--rule); }
.w1-scans__meta b { display: block; font-size: var(--fs-body-s); color: var(--fg-1); font-weight: var(--w-regular); }
.w1-scans__meta span {
  display: block; margin-top: 4px;
  font-family: var(--f-mono); font-size: var(--fs-micro);
  letter-spacing: .06em; color: var(--fg-4);
}

/* ============================ 8 · 图标瓦片（能力矩阵） =================== */
.w1-tiles { display: grid; gap: var(--s-sm); margin-top: var(--s-lg); }
.w1-tiles.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.w1-tiles.c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.w1-tile {
  padding: var(--s-md); background-color: var(--surface-strong);
  border: 1px solid var(--rule); box-shadow: var(--e-1);
}
.w1-tile h3 { font-size: var(--fs-h4); margin-top: var(--s-xs); }
.w1-tile p { margin: var(--s-xs) 0 0; font-size: var(--fs-body-s); color: var(--fg-3); line-height: var(--lh-body); }
.w1-tile ul { margin: var(--s-sm) 0 0; padding: 0; list-style: none; }
.w1-tile li {
  display: flex; justify-content: space-between; gap: var(--s-sm);
  padding: 7px 0; border-top: 1px solid var(--hair-1);
  font-family: var(--f-mono); font-size: var(--fs-micro);
  letter-spacing: .06em; color: var(--fg-label);
}
.w1-tile li b { color: var(--fg-1); font-weight: var(--w-regular); }
.w1-tile .w1-ico { margin-bottom: var(--s-xs); }

/* ============================ 9 · 数据条（横向量级带） =================== */
.w1-strip { display: grid; gap: 0; margin-top: var(--s-lg); border-top: 1px solid var(--hair-2); }
.w1-strip.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.w1-strip__cell { padding: 18px 20px 18px 0; border-bottom: 1px solid var(--hair-1); }
.w1-strip__cell b {
  display: block; font-family: var(--f-mono); font-size: var(--fs-label);
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--fg-label); font-weight: var(--w-regular);
}
.w1-strip__cell strong {
  display: block; margin-top: 4px;
  font-family: var(--f-display); font-size: 36px; line-height: 1;
  color: var(--fg-1); letter-spacing: .5px;
}
.w1-strip__cell i { font-style: normal; font-family: var(--f-mono); font-size: 11.5px; color: var(--fg-label); }

/* ============================ 10 · 收口段（cta-band） ===================
   同页唯一转化段：文案 + 按钮形态 CTA（data-modal-open + 真实 href=/contact/）
   或文档型 linkdoc（**不加** data-modal-open）。
   ========================================================================= */
.w1-cta { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap-split); align-items: center; }
.w1-cta__media { position: relative; overflow: hidden; border: 1px solid var(--rule); background-color: var(--ink-void); }
.w1-cta__media img {
  width: 100%; aspect-ratio: 3 / 2; object-fit: cover;
  object-position: 62% 46%; filter: saturate(.46) brightness(.64) contrast(1.04);
}
.w1-cta.is-media-left .w1-cta__media { order: 1; }
.w1-cta.is-media-left .w1-cta__body { order: 2; }
.w1-cta.is-media-right .w1-cta__media { order: 2; }
.w1-cta.is-media-right .w1-cta__body { order: 1; }
.w1-cta__body { min-width: 0; }
.w1-cta__body > * + * { margin-top: var(--s-md); }
.w1-cta__body .btn-row { margin-top: var(--s-lg); }

/* 全幅带上的引文（不是客户原话：标为设计规则） */
.w1-quoteline {
  margin: 0; max-width: 30ch;
  font-family: var(--f-display); font-size: var(--fs-h3);
  line-height: var(--lh-tight); letter-spacing: var(--ls-title);
  text-transform: uppercase; color: var(--fg-1);
  text-shadow: var(--text-shadow-hero);
}
.w1-cite {
  display: block; margin-top: var(--s-md); font-style: normal;
  font-family: var(--f-mono); font-size: var(--fs-label);
  letter-spacing: var(--ls-nav); text-transform: uppercase; color: var(--fg-4);
}

/* ============================ 11 · 亮段适配 =============================
   站点唯一亮屏（第 4 屏）在本包首页：.sec--light.is-light。下面只补
   本包自有组件的亮段配色（site.css 已覆盖它的 .readout / .mono-strip）。
   ========================================================================= */
.is-light .w1-facts { border-top-color: var(--hair-light); }
.is-light .w1-facts__cell { border-bottom-color: var(--hair-light-soft); }
.is-light .w1-facts__cell b { color: var(--steel-cap); }
.is-light .w1-facts__cell strong { color: var(--on-light); }
.is-light .w1-facts__cell span { color: var(--steel-ink); }
.is-light .w1-facts__cell .w1-ico { color: var(--brand-deep); }
.is-light .w1-strip { border-top-color: var(--hair-light); }
.is-light .w1-strip__cell { border-bottom-color: var(--hair-light-soft); }
.is-light .w1-strip__cell b, .is-light .w1-strip__cell i { color: var(--steel-cap); }
.is-light .w1-strip__cell strong { color: var(--on-light); }
.is-light .w1-rows > div { border-bottom-color: var(--hair-light-soft); }
.is-light .w1-rows dt { color: var(--steel-cap); }
.is-light .w1-rows dd { color: var(--ink); }

/* ============================ 12 · FAQ 嵌入（本包页面用 site.css .faq） == */
.w1-faqhead { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-md); justify-content: space-between; }
.w1-faqhead .w1-note { margin-top: 0; }

/* ============================ 13 · 响应式 =============================== */
@media (max-width: 1080px) {
  .w1-steps { gap: var(--s-md); }
  .w1-rail__item { grid-template-columns: 60px 1fr; }
}
@media (max-width: 900px) {
  .w1-intro { grid-template-columns: 1fr; gap: var(--s-md); align-items: start; }
  .w1-band { min-height: 0; }
  .w1-band__grid { grid-template-columns: 1fr; gap: var(--s-lg); }
  .w1-band.is-text-right .w1-band__body,
  .w1-band.is-text-right .w1-band__side { grid-column: 1; grid-row: auto; }
  .w1-band__inner { padding-block: var(--s-xl); }
  .w1-split { grid-template-columns: 1fr; gap: var(--s-lg); }
  .w1-split.is-media-right .w1-split__media,
  .w1-split.is-media-right .w1-split__body { order: 0; }
  .w1-split__media { aspect-ratio: 3 / 2; min-height: 0; }
  .w1-split--wide .w1-split__media { min-height: 0; }
  .w1-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w1-scans.c4, .w1-scans.c3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w1-tiles.c3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w1-facts.c3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .w1-cta { grid-template-columns: 1fr; gap: var(--s-lg); }
  .w1-cta.is-media-left .w1-cta__media,
  .w1-cta.is-media-left .w1-cta__body,
  .w1-cta.is-media-right .w1-cta__media,
  .w1-cta.is-media-right .w1-cta__body { order: 0; }
  .w1-cta__body { order: 1; }
  .w1-cta__media { order: 2; }
}
@media (max-width: 760px) {
  .w1-tw > table { min-width: 560px; }   /* 窄屏才放开横向滚动（铁律 4 的移动端一半） */
}
@media (max-width: 560px) {
  /* site.css 的 .specband.is-dl-two-col 在窄屏仍是 2 列（无移动端覆盖），
     375px 下每列只剩 ~126px to 长 dd 溢出。选择器用 `>` 与 site.css 的
     `.specband.is-dl-two-col .specband__dl` 不同串（不构成同选择器双定义），
     同特异性靠加载顺序取胜。 */
  .specband.is-dl-two-col > .w1-dl { grid-template-columns: 1fr; }
  .w1-rows--2 { grid-template-columns: 1fr; }
  .w1-facts.c3, .w1-facts.c2, .w1-strip.c3, .w1-tiles.c3, .w1-tiles.c2 { grid-template-columns: 1fr; }
  .w1-scans.c4, .w1-scans.c3, .w1-scans.c2 { grid-template-columns: 1fr; }
  .w1-steps { grid-template-columns: 1fr; }
  .w1-rail__item { grid-template-columns: 1fr; gap: var(--s-xs); }
  .w1-band__side { padding-inline: 0; }
}
